Project Management

This commit is contained in:
Sedat ÖZTÜRK 2026-10-08 13:51:14 +03:00
parent ddff672eac
commit 0e97c4e081
71 changed files with 44749 additions and 28 deletions

View file

@ -793,7 +793,7 @@ Bir kolonu **başka bir tablodan** çekmek için; view yazmadan tek alanlık joi
| Anahtar | Anlam | | Anahtar | Anlam |
| --- | --- | | --- | --- |
| `JoinType` | `INNER JOIN` \| `LEFT JOIN` \| `RIGHT JOIN` | | `JoinType` | `INNER JOIN` | `LEFT JOIN` | `RIGHT JOIN` — kısaltma (`LEFT`, `INNER`) sorguda tam kalıba çevrilir, tanınmayan değer `LEFT JOIN` olur (`JoinTable.JoinClause`) |
| `TableName` | Join kurulacak tablo | | `TableName` | Join kurulacak tablo |
| `BaseTableJoinFieldName` | Ana tablonun join alanı | | `BaseTableJoinFieldName` | Ana tablonun join alanı |
| `JoinFieldName` | Join kurulan tablonun ilişkili alanı | | `JoinFieldName` | Join kurulan tablonun ilişkili alanı |

View file

@ -884,9 +884,13 @@ Wizard dışı (entity, özel React) modüller bölümünü elle yazar.
1. Bir bölümün beyanındaki `claims=` ekranı sahipleniyorsa o bölüm (başka dalda duran tanım 1. Bir bölümün beyanındaki `claims=` ekranı sahipleniyorsa o bölüm (başka dalda duran tanım
ekranları için). ekranları için).
2. Menüsüz alt form, onu `SubForms` içinde taşıyan ekranın bölümüne gider. 2. Menüsüz alt form, onu `SubForms` içinde taşıyan ekranın bölümüne gider.
3. Menü ağacında kökün altındaki ilk seviye (`App.Hr › App.Hr.Performance › …` → 3. Ekranın kodu bir bölümün anahtarıysa o bölüm (alt formun 2. kuralı bunu ezer).
4. Menü ağacında kökün altındaki ilk seviye (`App.Hr › App.Hr.Performance › …` →
`App.Hr.Performance`); ekran doğrudan kökün altındaysa ekranın kendi kodu. Kök ve dal `App.Hr.Performance`); ekran doğrudan kökün altındaysa ekranın kendi kodu. Kök ve dal
`data/App.Menus.Menu.json`'dan bulunur. `data/App.Menus.Menu.json`'dan bulunur. Ana ekranı henüz deploy edilmemiş menüsüz alt form
(MCP alt formları ana ekrandan önce deploy eder) kök sayılmaz, kendi dosyasını açmaz: kodunun
modül önekinin dosyasında (`App.Prj.ProjectMember` → `App.Prj.md`) geçici bölüm alır; ana ekran
gelince onun bölümüne taşınır, doldurulmamış geçici bölüm silinir.
- **Otomatik kısım:** deploy (`ListFormWizardAppService.Create`), silme, tasarımcı kaydı - **Otomatik kısım:** deploy (`ListFormWizardAppService.Create`), silme, tasarımcı kaydı
(`WizardSeedSynchronizer`) ve import kapanışı `ModuleDocManager.RefreshAllAsync` çağırır: (`WizardSeedSynchronizer`) ve import kapanışı `ModuleDocManager.RefreshAllAsync` çağırır:
dosya yoksa kök başlığı açılır, wizard'ı olan dalın bölümü yoksa iskeleti menü sırasındaki yerine dosya yoksa kök başlığı açılır, wizard'ı olan dalın bölümü yoksa iskeleti menü sırasındaki yerine

View file

@ -20,8 +20,11 @@ namespace Sozsoft.Platform.ListForms;
/// <list type="number"> /// <list type="number">
/// <item>Bir bolum ekranin kodunu beyanla sahiplenmisse (<c>module-doc:section … claims=…</c>) o bolum.</item> /// <item>Bir bolum ekranin kodunu beyanla sahiplenmisse (<c>module-doc:section … claims=…</c>) o bolum.</item>
/// <item>Menusuz alt form, onu <c>SubForms</c> icinde tasiyan ekranin bolumune gider.</item> /// <item>Menusuz alt form, onu <c>SubForms</c> icinde tasiyan ekranin bolumune gider.</item>
/// <item>Ekranin kodu bir bolumun anahtariysa o bolum.</item>
/// <item>Menu agacinda kokun altindaki ilk seviye (<c>App.Hr › App.Hr.Performance › …</c>) bolumdur; /// <item>Menu agacinda kokun altindaki ilk seviye (<c>App.Hr › App.Hr.Performance › …</c>) bolumdur;
/// ekran dogrudan kokun altindaysa ekranin kendi kodu.</item> /// ekran dogrudan kokun altindaysa ekranin kendi kodu. Ana ekrani henuz deploy edilmemis menusuz alt
/// form kok menu degildir: kodunun modul onekinin (<c>App.Prj.ProjectMember</c> → <c>App.Prj</c>)
/// dokumaninda kendi bolumunu alir, ana ekran gelince onun bolumune tasinir.</item>
/// </list> /// </list>
/// Ad sabit bir listeden degil menu agacindan gelir; yeni bir kok menu ilk deploy'unda kendi dosyasini acar. /// Ad sabit bir listeden degil menu agacindan gelir; yeni bir kok menu ilk deploy'unda kendi dosyasini acar.
/// </summary> /// </summary>
@ -42,6 +45,12 @@ public sealed class ModuleDocCatalog
/// <summary>Ekran kodu → (dokuman, bolum) beyanlari.</summary> /// <summary>Ekran kodu → (dokuman, bolum) beyanlari.</summary>
private readonly Dictionary<string, (string Doc, string Section)> claims = new(StringComparer.OrdinalIgnoreCase); private readonly Dictionary<string, (string Doc, string Section)> claims = new(StringComparer.OrdinalIgnoreCase);
/// <summary>
/// Bolum anahtari → (dokuman, bolum). Beyandan ayri tutulur: alt formun ana ekranindan once acilmis
/// bir bolum, alt formu ana ekranin bolumune tasinmaktan alikoymamali.
/// </summary>
private readonly Dictionary<string, (string Doc, string Section)> sectionKeys = new(StringComparer.OrdinalIgnoreCase);
/// <summary>Menu kodu → ust menu kodu ve sirasi (<c>data/App.Menus.Menu.json</c>).</summary> /// <summary>Menu kodu → ust menu kodu ve sirasi (<c>data/App.Menus.Menu.json</c>).</summary>
private readonly Dictionary<string, (string? Parent, int Order)> menus = new(StringComparer.OrdinalIgnoreCase); private readonly Dictionary<string, (string? Parent, int Order)> menus = new(StringComparer.OrdinalIgnoreCase);
@ -88,7 +97,7 @@ public sealed class ModuleDocCatalog
{ {
foreach (var section in ParseSections(await File.ReadAllTextAsync(catalog.DocPath(name)))) foreach (var section in ParseSections(await File.ReadAllTextAsync(catalog.DocPath(name))))
{ {
catalog.claims.TryAdd(section.Key, (name, section.Key)); catalog.sectionKeys.TryAdd(section.Key, (name, section.Key));
foreach (var code in section.Claims) foreach (var code in section.Claims)
catalog.claims.TryAdd(code, (name, section.Key)); catalog.claims.TryAdd(code, (name, section.Key));
} }
@ -198,7 +207,13 @@ public sealed class ModuleDocCatalog
return ResolveTarget(parent, visited); return ResolveTarget(parent, visited);
} }
if (sectionKeys.TryGetValue(listFormCode, out claimed) || sectionKeys.TryGetValue(menuCode, out claimed))
return (claimed.Doc, claimed.Section, RootOfDoc(claimed.Doc, wizard));
var path = MenuPath(wizard); var path = MenuPath(wizard);
if (path.Count == 1 && !wizard.CreateMenu && CodeRoot(menuCode) is { } codeRoot && !Same(codeRoot, menuCode))
path.Insert(0, codeRoot);
var root = path[0]; var root = path[0];
var section = path.Count >= 2 ? path[1] : menuCode; var section = path.Count >= 2 ? path[1] : menuCode;
@ -229,6 +244,15 @@ public sealed class ModuleDocCatalog
return path; return path;
} }
/// <summary>Menu kodunun modul oneki: ilk iki parca (<c>App.Prj.ProjectMember</c> → <c>App.Prj</c>).</summary>
private static string? CodeRoot(string code)
{
var segments = code.Split('.');
return IsValidName(code) && segments.Length >= 2 ? string.Join('.', segments[..2]) : null;
}
private static bool Same(string a, string b) => string.Equals(a, b, StringComparison.OrdinalIgnoreCase);
private string RootOfDoc(string doc, ListFormWizardDto wizard) private string RootOfDoc(string doc, ListFormWizardDto wizard)
{ {
var root = menus.Where(m => string.IsNullOrWhiteSpace(m.Value.Parent)).Select(m => m.Key) var root = menus.Where(m => string.IsNullOrWhiteSpace(m.Value.Parent)).Select(m => m.Key)
@ -294,7 +318,7 @@ public sealed class ModuleDocCatalog
} }
// Bolum anahtari (wizard'i olmayan elle yazilmis bolum de dahil) ya da bir dal kodu. // Bolum anahtari (wizard'i olmayan elle yazilmis bolum de dahil) ya da bir dal kodu.
if (claims.TryGetValue(value, out var claimed)) if (claims.TryGetValue(value, out var claimed) || sectionKeys.TryGetValue(value, out claimed))
return (claimed.Doc, claimed.Section); return (claimed.Doc, claimed.Section);
var branch = Wizards var branch = Wizards
@ -314,11 +338,11 @@ public sealed class ModuleDocCatalog
// ayni dosya ve bolum bulunur. // ayni dosya ve bolum bulunur.
if (path.Count == 0) if (path.Count == 0)
{ {
var segments = value.Split('.'); if (CodeRoot(value) is not { } codeRoot)
if (!IsValidName(value) || segments.Length < 2)
return null; return null;
path = [string.Join('.', segments[..2])]; var segments = value.Split('.');
path = [codeRoot];
if (segments.Length > 2) if (segments.Length > 2)
path.Add(string.Join('.', segments[..3])); path.Add(string.Join('.', segments[..3]));
} }

View file

@ -428,6 +428,40 @@ public class MenuAppService : CrudAppService<
await SyncMenuRowsAsync([.. list.Select(x => x.Code)], SeedSyncOperation.Update); await SyncMenuRowsAsync([.. list.Select(x => x.Code)], SeedSyncOperation.Update);
} }
protected override async Task<Menu> MapToEntityAsync(MenuDto createInput)
{
var entity = await base.MapToEntityAsync(createInput);
NormalizeEmptyToNull(entity);
return entity;
}
protected override async Task MapToEntityAsync(MenuDto updateInput, Menu entity)
{
await base.MapToEntityAsync(updateInput, entity);
NormalizeEmptyToNull(entity);
}
/// <summary>
/// Formdan bos gelen alanlar NULL yazilir: kok menu <c>ParentCode IS NULL</c> ile bulunur,
/// bos metin menuyu agactan dusurur.
/// </summary>
private static void NormalizeEmptyToNull(Menu menu)
{
static string? Clean(string? value) => string.IsNullOrWhiteSpace(value) ? null : value.Trim();
menu.Url = Clean(menu.Url)!;
menu.Icon = Clean(menu.Icon)!;
menu.ParentCode = Clean(menu.ParentCode)!;
menu.CssClass = Clean(menu.CssClass)!;
menu.RequiredPermissionName = Clean(menu.RequiredPermissionName)!;
menu.ModuleId = Clean(menu.ModuleId)!;
menu.Target = Clean(menu.Target)!;
menu.ElementId = Clean(menu.ElementId)!;
menu.UserId = Clean(menu.UserId)!;
menu.RoleId = Clean(menu.RoleId)!;
menu.CultureName = Clean(menu.CultureName)!;
}
/// <summary> /// <summary>
/// Menude secilen modul tanimli degilse olusturur; kok menude girilen kisa kod /// Menude secilen modul tanimli degilse olusturur; kok menude girilen kisa kod
/// dogrudan yeni bir modul olur ve ModuleId yabanci anahtari bos kalmaz. /// dogrudan yeni bir modul olur ve ModuleId yabanci anahtari bos kalmaz.

View file

@ -49,12 +49,23 @@ public class JoinTable : ValueObject
/// </summary> /// </summary>
public string BaseTableJoinFieldName2_OrValue { get; set; } public string BaseTableJoinFieldName2_OrValue { get; set; }
#endregion
/// <summary>
/// Değer metne doğrudan yazıldığı için beyaz listeden geçer; MCP/elle yazılan "LEFT", "left outer join"
/// gibi kısaltmalar sözleşmedeki kalıba çevrilir, tanınmayan değer LEFT JOIN olur.
/// </summary>
public string JoinClause => (JoinType ?? string.Empty).Trim().ToUpperInvariant() switch
{
"INNER" or PlatformConsts.GridColumnOptions.ColumnJoinTypeInner => PlatformConsts.GridColumnOptions.ColumnJoinTypeInner,
"RIGHT" or "RIGHT OUTER JOIN" or PlatformConsts.GridColumnOptions.ColumnJoinTypeRight => PlatformConsts.GridColumnOptions.ColumnJoinTypeRight,
_ => PlatformConsts.GridColumnOptions.ColumnJoinTypeLeft,
};
protected override IEnumerable<object> GetAtomicValues() protected override IEnumerable<object> GetAtomicValues()
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
#endregion
} }

View file

@ -58,7 +58,7 @@ public class SelectField
else else
SelectFieldName = $"\"{JoinOptions.TableName}\".\"{JoinOptions.SelectFieldName}\" AS \"{FieldName}\""; SelectFieldName = $"\"{JoinOptions.TableName}\".\"{JoinOptions.SelectFieldName}\" AS \"{FieldName}\"";
JoinSql = $"{JoinOptions.JoinType} \"{JoinOptions.TableName}\" ON \"{JoinOptions.TableName}\".\"{JoinOptions.JoinFieldName}\" = \"{baseTableName}\".\"{JoinOptions.BaseTableJoinFieldName}\""; JoinSql = $"{JoinOptions.JoinClause} \"{JoinOptions.TableName}\" ON \"{JoinOptions.TableName}\".\"{JoinOptions.JoinFieldName}\" = \"{baseTableName}\".\"{JoinOptions.BaseTableJoinFieldName}\"";
// JOIN bolumunde birden fazla condition var ise // JOIN bolumunde birden fazla condition var ise
if (!string.IsNullOrEmpty(JoinOptions.JoinFieldName2)) if (!string.IsNullOrEmpty(JoinOptions.JoinFieldName2))
@ -405,11 +405,11 @@ public class SelectQueryManager : PlatformDomainService, ISelectQueryManager
if (CurrentTenant.IsAvailable) if (CurrentTenant.IsAvailable)
{ {
whereParts.Add($"\"TenantId\" = '{CurrentTenant.Id}'"); whereParts.Add($"\"{TableName}\".\"TenantId\" = '{CurrentTenant.Id}'");
} }
else else
{ {
whereParts.Add($"\"TenantId\" IS NULL"); whereParts.Add($"\"{TableName}\".\"TenantId\" IS NULL");
} }
} }
@ -423,11 +423,11 @@ public class SelectQueryManager : PlatformDomainService, ISelectQueryManager
var ids = await BranchUsersRepository.GetListAsync((a) => a.UserId == CurrentUser.Id.Value); var ids = await BranchUsersRepository.GetListAsync((a) => a.UserId == CurrentUser.Id.Value);
if (ids.Count > 0) if (ids.Count > 0)
{ {
whereParts.Add($"\"BranchId\" IN ({string.Join(",", ids.Select(a => $"'{a.BranchId}'"))})"); whereParts.Add($"\"{TableName}\".\"BranchId\" IN ({string.Join(",", ids.Select(a => $"'{a.BranchId}'"))})");
} }
else else
{ {
whereParts.Add($"\"BranchId\" = '{Guid.Empty}'"); whereParts.Add($"\"{TableName}\".\"BranchId\" = '{Guid.Empty}'");
} }
} }
@ -441,11 +441,11 @@ public class SelectQueryManager : PlatformDomainService, ISelectQueryManager
var ids = await OuRepository.GetOrganizationUnitIdsWithChildren(CurrentUser.Id.Value); var ids = await OuRepository.GetOrganizationUnitIdsWithChildren(CurrentUser.Id.Value);
if (ids.Count > 0) if (ids.Count > 0)
{ {
whereParts.Add($"\"OrganizationUnitId\" IN ({string.Join(",", ids.Select(a => $"'{a}'"))})"); whereParts.Add($"\"{TableName}\".\"OrganizationUnitId\" IN ({string.Join(",", ids.Select(a => $"'{a}'"))})");
} }
else else
{ {
whereParts.Add($"\"OrganizationUnitId\" = '{Guid.Empty}'"); whereParts.Add($"\"{TableName}\".\"OrganizationUnitId\" = '{Guid.Empty}'");
} }
} }
@ -1030,7 +1030,7 @@ public class SelectQueryManager : PlatformDomainService, ISelectQueryManager
// SQL cümlesi // SQL cümlesi
var sql = $@" var sql = $@"
SELECT {string.Join(", ", selectParts)} SELECT {string.Join(", ", selectParts)}
FROM [{listform.SelectCommand}] FROM [{listform.SelectCommand}] AS ""{TableName}""
{GetWhereString()} {GetWhereString()}
GROUP BY {argumentExpression}"; GROUP BY {argumentExpression}";

View file

@ -33,6 +33,11 @@
"Name": "App.Production", "Name": "App.Production",
"DisplayName": "App.Production", "DisplayName": "App.Production",
"Order": 6 "Order": 6
},
{
"Name": "App.Prj",
"DisplayName": "App.Prj",
"Order": 7
} }
] ]
} }

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -2583,6 +2583,186 @@
"IsDisabled": false, "IsDisabled": false,
"ElementId": null, "ElementId": null,
"ModuleId": "Production" "ModuleId": "Production"
},
{
"Id": "93369cd9-3647-4842-b767-503780e1011e",
"Code": "App.Prj",
"DisplayName": "App.Prj",
"Order": 8,
"Url": null,
"Icon": "FaRProject",
"ParentCode": null,
"RequiredPermissionName": null,
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "7aaffef3-a566-4fc7-9925-c04397166b2a",
"Code": "App.Prj.Definitions",
"DisplayName": "App.Prj.Definitions",
"Order": 1,
"Url": null,
"Icon": "FcFilingCabinet",
"ParentCode": "App.Prj",
"RequiredPermissionName": null,
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "238668e0-8dff-4ff9-af37-11c98bd7b1a6",
"Code": "App.Prj.Tag",
"DisplayName": "App.Prj.Tag",
"Order": 1,
"Url": "/admin/list/App.Prj.Tag",
"Icon": "FcBookmark",
"ParentCode": "App.Prj.Definitions",
"RequiredPermissionName": "App.Prj.Tag",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "b3c51da2-9b80-4e24-83a0-1ba33f09c29f",
"Code": "App.Prj.ProjectRole",
"DisplayName": "App.Prj.ProjectRole",
"Order": 2,
"Url": "/admin/list/App.Prj.ProjectRole",
"Icon": "FcList",
"ParentCode": "App.Prj.Definitions",
"RequiredPermissionName": "App.Prj.ProjectRole",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "36853dbf-95ff-4c68-bae9-cd692038e5f8",
"Code": "App.Prj.UserMonthRate",
"DisplayName": "App.Prj.UserMonthRate",
"Order": 3,
"Url": "/admin/list/App.Prj.UserMonthRate",
"Icon": "FcCalendar",
"ParentCode": "App.Prj.Definitions",
"RequiredPermissionName": "App.Prj.UserMonthRate",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "a6602188-1f1d-4351-afbd-f9973d5e5016",
"Code": "App.Prj.WorkPackage",
"DisplayName": "App.Prj.WorkPackage",
"Order": 3,
"Url": "/admin/list/App.Prj.WorkPackage",
"Icon": "FcGanttChart",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.WorkPackage",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "f56c89b2-e51f-4a82-8ccd-061f2304ef6d",
"Code": "App.Prj.Diary",
"DisplayName": "App.Prj.Diary",
"Order": 4,
"Url": "/admin/list/App.Prj.Diary",
"Icon": "FcPlanner",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.Diary",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "8308498d-4033-48d2-8b9d-4a873c828f9c",
"Code": "App.Prj.Project",
"DisplayName": "App.Prj.Project",
"Order": 2,
"Url": "/admin/list/App.Prj.Project",
"Icon": "FcFolder",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.Project",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "c586d008-f2c8-41d2-9d4c-5572a82fde5f",
"Code": "App.Prj.ManMonth",
"DisplayName": "App.Prj.ManMonth",
"Order": 5,
"Url": "/admin/list/App.Prj.ManMonth",
"Icon": "FcTimeline",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.ManMonth",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "3506e6cb-bc12-42af-865d-d6046def1393",
"Code": "App.Prj.ResourceList",
"DisplayName": "App.Prj.ResourceList",
"Order": 6,
"Url": "/admin/list/App.Prj.ResourceList",
"Icon": "FcViewDetails",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.ResourceList",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "e71d9906-49eb-476f-ad5e-8a415e8b173f",
"Code": "App.Prj.PersonnelManMonth",
"DisplayName": "App.Prj.PersonnelManMonth",
"Order": 7,
"Url": "/admin/list/App.Prj.PersonnelManMonth",
"Icon": "FcBusinessman",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.PersonnelManMonth",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
},
{
"Id": "4cf56645-de80-4097-b78d-622c1af15699",
"Code": "App.Prj.BudgetReport",
"DisplayName": "App.Prj.BudgetReport",
"Order": 8,
"Url": "/admin/list/App.Prj.BudgetReport",
"Icon": "FcComboChart",
"ParentCode": "App.Prj",
"RequiredPermissionName": "App.Prj.BudgetReport",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prj"
} }
] ]
} }

View file

@ -31,6 +31,10 @@
{ {
"Id": "Production", "Id": "Production",
"Name": "Production" "Name": "Production"
},
{
"Id": "Prj",
"Name": "Prj"
} }
] ]
} }

View file

@ -0,0 +1,276 @@
{
"ListFormCode": "App.Prj.ProjectRole",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-08T07:37:04.545097Z",
"Order": 0,
"Rows": [
{
"Name": "Analiz Grubu",
"Id": "6ba57841-7b1b-e247-3dd0-3a242c9e9720"
},
{
"Name": "Apre Örme",
"Id": "8f697f6b-644d-145a-d55c-3a242c9e9720"
},
{
"Name": "Apre Flok Müdürü",
"Id": "9d87cc10-4105-7f69-2637-3a242c9e9720"
},
{
"Name": "Ar Ge Fizik Laboratuvarı",
"Id": "6921efb6-a99f-89dd-d47c-3a242c9e9720"
},
{
"Name": "Ar Ge İleri Araştırmalar Birimi",
"Id": "664e4929-d313-ae19-06c2-3a242c9e9720"
},
{
"Name": "Ar Ge Merkezi Proje Yönetim Ofisi",
"Id": "26e77976-1f5f-07bd-d199-3a242c9e9720"
},
{
"Name": "Ar Ge Merkezi Uygulama ve Kontrol Lab.",
"Id": "52733dfe-bbf4-d939-5096-3a242c9e9720"
},
{
"Name": "Ar Ge Müdürü",
"Id": "466e2a95-1417-9374-ebe1-3a242c9e9720"
},
{
"Name": "Ar Ge Mühendisi",
"Id": "e3c91fe3-d2d1-111d-17b7-3a242c9e9720"
},
{
"Name": "Ar Ge Otomasyon ve Yazılım Geliştirme Birimi",
"Id": "a6677325-8a7e-e0c4-b3de-3a242c9e9720"
},
{
"Name": "Ar Ge Pazar Araştırma Sorumlusu",
"Id": "d5a84606-4325-3508-f630-3a242c9e9720"
},
{
"Name": "Ar Ge Proje Koordinatörü",
"Id": "366dcad7-e0c8-50a6-e0b3-3a242c9e9720"
},
{
"Name": "Ar Ge Proje Yönetim Grubu",
"Id": "6b8c2017-c02a-446d-5197-3a242c9e9720"
},
{
"Name": "Ar Ge Uzmanı",
"Id": "4bece808-b254-181e-dd82-3a242c9e9720"
},
{
"Name": "Ar Ge Ürün Tasarımı ve Konstrüksiyon Geliştirme",
"Id": "c452517f-d80c-b422-4ab5-3a242c9e9720"
},
{
"Name": "Ar Ge Yeni Ürün ve Süreç Geliştirme Birimi",
"Id": "5bfcb007-bbd5-9e71-e1f3-3a242c9e9720"
},
{
"Name": "Ar Ge Yeni Ürün Süreç Takip ve Değerlendirme Brm",
"Id": "73a2501e-8b2b-cb0a-42a8-3a242c9e9720"
},
{
"Name": "Ar Ge Yeni Ürün Süreç Uygulama ve Takip Birimi",
"Id": "36a6dc10-c763-0568-7417-3a242c9e9720"
},
{
"Name": "Bilgi İşlem",
"Id": "84e9def5-dfb6-162f-fcbc-3a242c9e9720"
},
{
"Name": "Boyahane Kimyager",
"Id": "dd33edff-c425-dcb2-ef11-3a242c9e9720"
},
{
"Name": "Boyahane Müdürü",
"Id": "8e9d8ba1-4187-7590-4682-3a242c9e9720"
},
{
"Name": "Çözgü",
"Id": "f8600400-bcd2-916c-5b1e-3a242c9e9720"
},
{
"Name": "Desen Bölge Şefi",
"Id": "bdba0f8f-e21c-ad82-9862-3a242c9e9720"
},
{
"Name": "Desen Tasarım Müdürü",
"Id": "b29ee4b9-130b-4ca9-89fb-3a242c9e9720"
},
{
"Name": "Desen Tasarım Örgü Şefi",
"Id": "6e089f0a-ba6b-7242-ec4e-3a242c9e9720"
},
{
"Name": "Desen Tasarım Uzmanı",
"Id": "2a9d7a5b-8ae0-7683-f789-3a242c9e9720"
},
{
"Name": "Desen Tasarım ve Örgü Geliştirme Birimi",
"Id": "1218549d-30a2-27db-f3e1-3a242c9e9720"
},
{
"Name": "Desen Uzmanı",
"Id": "c3109a3b-b013-0f9c-7d5d-3a242c9e9720"
},
{
"Name": "Desen Örgü Bölge Şefi",
"Id": "fb731079-7f3e-82e8-8ef4-3a242c9e9720"
},
{
"Name": "Desen Örgü Uzmanı",
"Id": "e0e08c77-94f7-212d-f29a-3a242c9e9720"
},
{
"Name": "Desen ve Örgü Geliştirme Sorumlusu",
"Id": "db0ebf48-ef54-c16b-1191-3a242c9e9720"
},
{
"Name": "Desen ve Örgü Geliştirme Uzmanı",
"Id": "5ce72626-96a1-de20-a798-3a242c9e9720"
},
{
"Name": "Dokuma Planlama Müdürü",
"Id": "cda450f7-2361-4ebe-885f-3a242c9e9720"
},
{
"Name": "Dokuma Üretim Müdürü",
"Id": "c39fc186-e4c4-2028-5c2f-3a242c9e9720"
},
{
"Name": "Fabrika Koordinatörü",
"Id": "3dd96e55-d40d-69dc-3928-3a242c9e9720"
},
{
"Name": "Fotoğraf Teknisyeni",
"Id": "7fe854a6-1e7b-401b-5e57-3a242c9e9720"
},
{
"Name": "Hammadde Planlama Müdürü",
"Id": "a4100af4-0ef1-2e14-f579-3a242c9e9720"
},
{
"Name": "İç Pazarlama Satış Müdürü",
"Id": "6100de08-e019-388a-c362-3a242c9e9720"
},
{
"Name": "İhracat Asistanı",
"Id": "72a54e78-4e18-3879-beb4-3a242c9e9720"
},
{
"Name": "İhracat Müdürü",
"Id": "9b50aead-1b03-6ebc-8576-3a242c9e9720"
},
{
"Name": "İnsan Kaynakları Müdürü",
"Id": "d1a03859-684b-c027-8c36-3a242c9e9720"
},
{
"Name": "İplik İşletmeleri Müdür Yardımcısı",
"Id": "18180d26-aba3-aa4e-d12d-3a242c9e9720"
},
{
"Name": "İplik İşletmeleri Müdürü",
"Id": "fe6bef62-f974-21e3-89aa-3a242c9e9720"
},
{
"Name": "Kalite Güvence",
"Id": "20287319-c7f5-c597-8409-3a242c9e9720"
},
{
"Name": "Kalite Güvence Müdürü",
"Id": "6d61e5e0-74ec-d846-2759-3a242c9e9720"
},
{
"Name": "Kalite Güvence Şefi",
"Id": "91ec7be8-bf7a-d266-7fe4-3a242c9e9720"
},
{
"Name": "Kalite Kontrol Müdür Yardımcısı",
"Id": "4f08dea1-112a-27a3-ba24-3a242c9e9720"
},
{
"Name": "Kreatif Renklendirme Sorumlusu",
"Id": "9807b80c-2a2e-3abd-c7ba-3a242c9e9720"
},
{
"Name": "Kreatif Renklendirme Müdürü",
"Id": "c1f3f0bc-51f1-4f23-9ab2-3a242c9e9720"
},
{
"Name": "Numune Dokuma Sorumlusu",
"Id": "4f54a6d9-1662-e879-c3fc-3a242c9e9720"
},
{
"Name": "Pazar Araştırması",
"Id": "b92f5948-b2e2-18b4-7cd6-3a242c9e9720"
},
{
"Name": "Personel İşleri Şefi",
"Id": "6212e20b-35f5-481d-cfee-3a242c9e9720"
},
{
"Name": "Planlama Müdürü",
"Id": "1db5dc27-f9ac-0205-624a-3a242c9e9720"
},
{
"Name": "Renk Uzmanı",
"Id": "a0ead85f-ede4-78c1-4d73-3a242c9e9720"
},
{
"Name": "Tasarım Dokuma Proses Uygulama Sorumlusu",
"Id": "7d54878d-5ea6-a76c-10d8-3a242c9e9720"
},
{
"Name": "Tasarım Dokuma Proses Uygulama Uzmanı",
"Id": "40b3493a-9d56-241a-e4b0-3a242c9e9720"
},
{
"Name": "Tasarım Proje Lideri",
"Id": "9aa0468a-6bf2-f0ee-10a4-3a242c9e9720"
},
{
"Name": "Tasarım Takip Uzmanı",
"Id": "49bc963e-08cb-596a-11c0-3a242c9e9720"
},
{
"Name": "Tasarım Uygulama Birimi",
"Id": "eef06a58-9257-f887-37bd-3a242c9e9720"
},
{
"Name": "Tasarımcı",
"Id": "d78cb3a1-48f1-f885-e738-3a242c9e9720"
},
{
"Name": "Teknik Destek",
"Id": "52472942-a236-a427-cb92-3a242c9e9720"
},
{
"Name": "Teknik Koordinatör",
"Id": "f8efb73f-7ae9-b9a3-dc71-3a242c9e9720"
},
{
"Name": "Teknik Müdürlük Şefi",
"Id": "019b70e9-db0b-635c-23b9-3a242c9e9720"
},
{
"Name": "Üretim Grubu",
"Id": "35f99aff-fe1b-aab7-e85b-3a242c9e9720"
},
{
"Name": "Üretim Koordinatörü",
"Id": "19d81a26-d5b4-adf6-91c3-3a242c9e9720"
},
{
"Name": "Ürün Müdürü",
"Id": "6e140d76-6297-ee69-7f16-3a242c9e9720"
},
{
"Name": "Ürün Teknik Sorumlusu",
"Id": "26596a3d-afad-e048-525f-3a242c9e9720"
}
]
}

View file

@ -0,0 +1,110 @@
{
"ListFormCode": "App.Prj.Tag",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-08T07:36:35.3384537Z",
"Order": 0,
"Rows": [
{
"Name": "Ana Sayfa",
"Color": "#ef4444",
"IsActive": true,
"Id": "98099cad-4ffa-a071-7b60-3a242c9e2509"
},
{
"Name": "Bug",
"Color": "#22c55e",
"IsActive": true,
"Id": "50372f8a-f490-63ee-0df1-3a242c9e2509"
},
{
"Name": "Deneme",
"Color": "#f97316",
"IsActive": true,
"Id": "5bd0603d-7ece-a2dc-b964-3a242c9e2509"
},
{
"Name": "Dış",
"Color": "#d946ef",
"IsActive": true,
"Id": "dfd0cad6-f7fc-d600-0dd3-3a242c9e2509"
},
{
"Name": "Finans",
"Color": "#f97316",
"IsActive": true,
"Id": "4bdbd9d2-fd06-8a0c-208e-3a242c9e2509"
},
{
"Name": "Kullanılabilirlik",
"Color": "#ef4444",
"IsActive": true,
"Id": "196a4d90-a52c-6a04-b416-3a242c9e2509"
},
{
"Name": "Mimari",
"Color": "#ef4444",
"IsActive": true,
"Id": "2003ad4a-21bc-0751-3c70-3a242c9e2509"
},
{
"Name": "Ofis",
"Color": "#f97316",
"IsActive": true,
"Id": "c3c07fcd-a93f-e9b6-5f6d-3a242c9e2509"
},
{
"Name": "Sosyal",
"Color": "#3b82f6",
"IsActive": true,
"Id": "94e6c367-18f9-16c2-989f-3a242c9e2509"
},
{
"Name": "Tasarım",
"Color": "#3b82f6",
"IsActive": true,
"Id": "3b013d97-e309-84f4-76d5-3a242c9e2509"
},
{
"Name": "Toplantı",
"Color": "#1d4ed8",
"IsActive": true,
"Id": "53ab2409-915b-777b-ff19-3a242c9e2509"
},
{
"Name": "Yap",
"Color": "#14b8a6",
"IsActive": true,
"Id": "69bb293f-9cb4-7837-d4d5-3a242c9e2509"
},
{
"Name": "Yeni özellik",
"Color": "#14b8a6",
"IsActive": true,
"Id": "8319c450-eafe-7a8b-2ccb-3a242c9e2509"
},
{
"Name": "Öncelik",
"Color": "#1d4ed8",
"IsActive": true,
"Id": "94e051d4-4ca1-869a-a083-3a242c9e2509"
},
{
"Name": "İç",
"Color": "#a855f7",
"IsActive": true,
"Id": "f6833e9d-0dff-9ae4-b5d8-3a242c9e2509"
},
{
"Name": "İş Mekanı",
"Color": "#22c55e",
"IsActive": true,
"Id": "3b4ad2c5-0611-4423-acaf-3a242c9e2509"
},
{
"Name": "İş",
"Color": "#ca8a04",
"IsActive": true,
"Id": "046f0775-b68a-6740-3936-3a242c9e2509"
}
]
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,22 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_Diary"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProjectId" uuid NOT NULL,
"WorkPackageId" uuid NULL,
"UserId" uuid NOT NULL,
"StartTime" timestamp NOT NULL,
"EndTime" timestamp NULL,
"Minutes" integer NULL,
"Content" text NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_Diary" PRIMARY KEY ("Id")
);
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Diary_ProjectId_StartTime" ON public."Prj_T_Diary" ("ProjectId", "StartTime");

View file

@ -0,0 +1,41 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_Project"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProjectNo" varchar(32) NOT NULL,
"Name" varchar(512) NOT NULL,
"ProjectType" varchar(32) NULL,
"Status" varchar(16) NOT NULL DEFAULT 'Draft',
"StartDate" date NULL,
"EndDate" date NULL,
"ManagerId" uuid NULL,
"Tags" text NULL,
"Summary" text NULL,
"Needs" text NULL,
"Activities" text NULL,
"Innovation" text NULL,
"Outputs" text NULL,
"NationalSupportOrg" varchar(256) NULL,
"InternationalSupportOrg" varchar(256) NULL,
"OwnFundedAmount" numeric(18, 4) NULL,
"SupportAmount" numeric(18, 4) NULL,
"TotalBudget" numeric(18, 4) NULL,
"ServicePurchaseSubject" varchar(256) NULL,
"ServicePurchasePlace" varchar(256) NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_Project" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_Project_TenantId_ProjectNo') THEN
ALTER TABLE public."Prj_T_Project" ADD CONSTRAINT "UQ_Prj_T_Project_TenantId_ProjectNo" UNIQUE ("TenantId", "ProjectNo");
END IF;
END
$$;

View file

@ -0,0 +1,34 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_ProjectMember"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProjectId" uuid NOT NULL,
"UserId" uuid NOT NULL,
"ProjectRoleId" uuid NULL,
"ParentId" uuid NULL,
"AvgMonthlyCost" numeric(18, 4) NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_ProjectMember" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_ProjectMember_TenantId_ProjectId_UserId') THEN
ALTER TABLE public."Prj_T_ProjectMember" ADD CONSTRAINT "UQ_Prj_T_ProjectMember_TenantId_ProjectId_UserId" UNIQUE ("TenantId", "ProjectId", "UserId");
END IF;
END
$$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prj_T_ProjectMember_ProjectId') THEN
ALTER TABLE public."Prj_T_ProjectMember" ADD CONSTRAINT "FK_Prj_T_ProjectMember_ProjectId" FOREIGN KEY ("ProjectId") REFERENCES public."Prj_T_Project" ("Id") ON DELETE NO ACTION ON UPDATE NO ACTION;
END IF;
END
$$;

View file

@ -0,0 +1,23 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_ProjectRole"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(128) NOT NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_ProjectRole" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_ProjectRole_TenantId_Name') THEN
ALTER TABLE public."Prj_T_ProjectRole" ADD CONSTRAINT "UQ_Prj_T_ProjectRole_TenantId_Name" UNIQUE ("TenantId", "Name");
END IF;
END
$$;

View file

@ -0,0 +1,24 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_Tag"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(64) NOT NULL,
"Color" varchar(16) NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_Tag" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_Tag_TenantId_Name') THEN
ALTER TABLE public."Prj_T_Tag" ADD CONSTRAINT "UQ_Prj_T_Tag_TenantId_Name" UNIQUE ("TenantId", "Name");
END IF;
END
$$;

View file

@ -0,0 +1,25 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_UserMonthRate"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"UserId" uuid NOT NULL,
"Year" integer NOT NULL,
"Month" integer NOT NULL,
"Rate" numeric(18, 4) NOT NULL DEFAULT 100,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_UserMonthRate" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_UserMonthRate_TenantId_UserId_Year_Month') THEN
ALTER TABLE public."Prj_T_UserMonthRate" ADD CONSTRAINT "UQ_Prj_T_UserMonthRate_TenantId_UserId_Year_Month" UNIQUE ("TenantId", "UserId", "Year", "Month");
END IF;
END
$$;

View file

@ -0,0 +1,39 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_WorkPackage"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProjectId" uuid NOT NULL,
"ParentId" uuid NULL,
"Code" varchar(16) NOT NULL,
"Name" varchar(512) NOT NULL,
"StartDate" date NOT NULL,
"EndDate" date NOT NULL,
"Months" integer NULL,
"Progress" numeric(18, 4) NOT NULL DEFAULT 0,
"Color" varchar(16) NULL,
"Note" varchar(1024) NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_WorkPackage" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_WorkPackage_TenantId_ProjectId_Code') THEN
ALTER TABLE public."Prj_T_WorkPackage" ADD CONSTRAINT "UQ_Prj_T_WorkPackage_TenantId_ProjectId_Code" UNIQUE ("TenantId", "ProjectId", "Code");
END IF;
END
$$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prj_T_WorkPackage_ProjectId') THEN
ALTER TABLE public."Prj_T_WorkPackage" ADD CONSTRAINT "FK_Prj_T_WorkPackage_ProjectId" FOREIGN KEY ("ProjectId") REFERENCES public."Prj_T_Project" ("Id") ON DELETE NO ACTION ON UPDATE NO ACTION;
END IF;
END
$$;

View file

@ -0,0 +1,31 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_WorkPackageMember"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"WorkPackageId" uuid NOT NULL,
"UserId" uuid NOT NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_WorkPackageMember" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_WorkPackageMember_TenantId_WorkPackageId_UserId') THEN
ALTER TABLE public."Prj_T_WorkPackageMember" ADD CONSTRAINT "UQ_Prj_T_WorkPackageMember_TenantId_WorkPackageId_UserId" UNIQUE ("TenantId", "WorkPackageId", "UserId");
END IF;
END
$$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prj_T_WorkPackageMember_WorkPackageId') THEN
ALTER TABLE public."Prj_T_WorkPackageMember" ADD CONSTRAINT "FK_Prj_T_WorkPackageMember_WorkPackageId" FOREIGN KEY ("WorkPackageId") REFERENCES public."Prj_T_WorkPackage" ("Id") ON DELETE NO ACTION ON UPDATE NO ACTION;
END IF;
END
$$;

View file

@ -0,0 +1,34 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_WorkPackageMonthRate"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"WorkPackageId" uuid NOT NULL,
"UserId" uuid NOT NULL,
"Year" integer NOT NULL,
"Month" integer NOT NULL,
"Rate" numeric(18, 4) NOT NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_WorkPackageMonthRate" PRIMARY KEY ("Id")
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UQ_Prj_T_WorkPackageMonthRate_TenantId_WorkPackageId_UserId_Year_Month') THEN
ALTER TABLE public."Prj_T_WorkPackageMonthRate" ADD CONSTRAINT "UQ_Prj_T_WorkPackageMonthRate_TenantId_WorkPackageId_UserId_Year_Month" UNIQUE ("TenantId", "WorkPackageId", "UserId", "Year", "Month");
END IF;
END
$$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prj_T_WorkPackageMonthRate_WorkPackageId') THEN
ALTER TABLE public."Prj_T_WorkPackageMonthRate" ADD CONSTRAINT "FK_Prj_T_WorkPackageMonthRate_WorkPackageId" FOREIGN KEY ("WorkPackageId") REFERENCES public."Prj_T_WorkPackage" ("Id") ON DELETE NO ACTION ON UPDATE NO ACTION;
END IF;
END
$$;

View file

@ -0,0 +1,39 @@
CREATE TABLE IF NOT EXISTS public."Prj_T_WorkPackageResource"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"WorkPackageId" uuid NOT NULL,
"Kind" varchar(16) NOT NULL DEFAULT 'Planned',
"ResourceType" varchar(32) NOT NULL,
"UserId" uuid NULL,
"ResourceName" varchar(512) NOT NULL,
"OrganizationType" varchar(64) NULL,
"OrganizationName" varchar(256) NULL,
"WorkDone" varchar(256) NULL,
"WorkDescription" varchar(1024) NULL,
"DocumentDate" date NULL,
"DocumentNo" varchar(64) NULL,
"Unit" varchar(16) NULL DEFAULT 'Adet',
"Price" numeric(18, 4) NULL DEFAULT 0,
"Quantity" numeric(18, 4) NULL DEFAULT 1,
"VatRate" numeric(18, 4) NULL DEFAULT 0,
"Cost" numeric(18, 4) NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Prj_T_WorkPackageResource" PRIMARY KEY ("Id")
);
CREATE INDEX IF NOT EXISTS "IX_Prj_T_WorkPackageResource_WorkPackageId_Kind" ON public."Prj_T_WorkPackageResource" ("WorkPackageId", "Kind");
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prj_T_WorkPackageResource_WorkPackageId') THEN
ALTER TABLE public."Prj_T_WorkPackageResource" ADD CONSTRAINT "FK_Prj_T_WorkPackageResource_WorkPackageId" FOREIGN KEY ("WorkPackageId") REFERENCES public."Prj_T_WorkPackage" ("Id") ON DELETE NO ACTION ON UPDATE NO ACTION;
END IF;
END
$$;

View file

@ -0,0 +1,44 @@
CREATE OR REPLACE VIEW public."Prj_V_BudgetMonthly"
AS
WITH base AS (
SELECT x."TenantId", w."ProjectId", x."ResourceType", x."Kind", COALESCE(x."Cost", 0) AS "Cost",
date_trunc('month', COALESCE(x."DocumentDate", w."StartDate"))::date AS "PeriodDate"
FROM public."Prj_T_WorkPackageResource" x
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = x."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE
WHERE x."IsDeleted" = FALSE
),
monthly AS (
SELECT "TenantId", "ProjectId", "ResourceType", "PeriodDate",
SUM(CASE WHEN "Kind" = 'Planned' THEN "Cost" ELSE 0 END) AS "Planned",
SUM(CASE WHEN "Kind" = 'Actual' THEN "Cost" ELSE 0 END) AS "Actual"
FROM base
GROUP BY "TenantId", "ProjectId", "ResourceType", "PeriodDate"
)
SELECT
(m."ProjectId"::text || '|' || m."ResourceType")::varchar(120) AS "Id",
NULL::varchar(120) AS "ParentId",
m."TenantId", m."ProjectId", m."ResourceType", FALSE AS "IsDeleted", 1 AS "RowLevel",
m."ResourceType"::varchar(64) AS "Title",
MIN(m."PeriodDate") AS "StartDate",
(MAX(m."PeriodDate") + INTERVAL '1 month' - INTERVAL '1 day')::date AS "EndDate",
NULL::integer AS "Year", NULL::integer AS "Month",
SUM(m."Planned")::numeric(18,4) AS "Planned",
SUM(m."Actual")::numeric(18,4) AS "Actual",
(CASE WHEN SUM(m."Planned") > 0 THEN SUM(m."Actual") * 100.0 / SUM(m."Planned") ELSE 0 END)::numeric(18,4) AS "Ratio",
(CASE WHEN SUM(m."Planned") > 0 THEN LEAST(SUM(m."Actual") * 100.0 / SUM(m."Planned"), 100) ELSE 0 END)::numeric(18,4) AS "Progress"
FROM monthly m
GROUP BY m."TenantId", m."ProjectId", m."ResourceType"
UNION ALL
SELECT
(m."ProjectId"::text || '|' || m."ResourceType" || '|' || to_char(m."PeriodDate", 'YYYY-MM'))::varchar(120),
(m."ProjectId"::text || '|' || m."ResourceType")::varchar(120),
m."TenantId", m."ProjectId", m."ResourceType", FALSE, 2,
to_char(m."PeriodDate", 'YYYY-MM')::varchar(64),
m."PeriodDate",
(m."PeriodDate" + INTERVAL '1 month' - INTERVAL '1 day')::date,
EXTRACT(YEAR FROM m."PeriodDate")::integer, EXTRACT(MONTH FROM m."PeriodDate")::integer,
m."Planned"::numeric(18,4), m."Actual"::numeric(18,4),
(CASE WHEN m."Planned" > 0 THEN m."Actual" * 100.0 / m."Planned" ELSE 0 END)::numeric(18,4),
(CASE WHEN m."Planned" > 0 THEN LEAST(m."Actual" * 100.0 / m."Planned", 100) ELSE 0 END)::numeric(18,4)
FROM monthly m;

View file

@ -0,0 +1,40 @@
CREATE OR REPLACE VIEW public."Prj_V_ManMonthGantt"
AS
WITH base AS (
SELECT r."TenantId", w."ProjectId", r."UserId", w."Id" AS "WorkPackageId",
w."Code", w."Name", r."Rate", make_date(r."Year", r."Month", 1) AS "PeriodDate"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE
WHERE r."IsDeleted" = FALSE AND r."Rate" > 0
)
SELECT
(b."ProjectId"::text || '|' || b."UserId"::text)::varchar(120) AS "Id",
NULL::varchar(120) AS "ParentId",
b."TenantId", b."ProjectId", b."UserId", NULL::uuid AS "WorkPackageId",
FALSE AS "IsDeleted", 1 AS "RowLevel",
COALESCE(MAX(u."Name" || ' ' || u."Surname"), MAX(u."UserName"))::varchar(256) AS "Title",
MIN(b."PeriodDate") AS "StartDate",
(MAX(b."PeriodDate") + INTERVAL '1 month' - INTERVAL '1 day')::date AS "EndDate",
AVG(b."Rate")::numeric(18,4) AS "Progress",
AVG(b."Rate")::numeric(18,4) AS "AvgRate",
SUM(b."Rate")::numeric(18,4) AS "TotalRate",
COUNT(DISTINCT b."PeriodDate")::integer AS "MonthCount"
FROM base b
LEFT JOIN public."AbpUsers" u ON u."Id" = b."UserId"
GROUP BY b."TenantId", b."ProjectId", b."UserId"
UNION ALL
SELECT
(b."ProjectId"::text || '|' || b."UserId"::text || '|' || b."WorkPackageId"::text)::varchar(120),
(b."ProjectId"::text || '|' || b."UserId"::text)::varchar(120),
b."TenantId", b."ProjectId", b."UserId", b."WorkPackageId",
FALSE, 2,
(MAX(b."Code") || ' ' || MAX(b."Name"))::varchar(256),
MIN(b."PeriodDate"),
(MAX(b."PeriodDate") + INTERVAL '1 month' - INTERVAL '1 day')::date,
AVG(b."Rate")::numeric(18,4),
AVG(b."Rate")::numeric(18,4),
SUM(b."Rate")::numeric(18,4),
COUNT(DISTINCT b."PeriodDate")::integer
FROM base b
GROUP BY b."TenantId", b."ProjectId", b."UserId", b."WorkPackageId";

View file

@ -0,0 +1,21 @@
CREATE OR REPLACE VIEW public."Prj_V_PersonnelManMonth"
AS
SELECT
r."Id", r."TenantId", r."IsDeleted",
p."Id" AS "ProjectId", p."ProjectNo", p."Name" AS "ProjectName",
w."Id" AS "WorkPackageId", w."Code" AS "WorkPackageCode", w."Name" AS "WorkPackageName",
r."Year", r."Month", make_date(r."Year", r."Month", 1) AS "PeriodDate",
r."UserId",
r."Rate" AS "ManMonthValue",
COALESCE(u."Rate", 100)::numeric(18,4) AS "MonthlyRate",
(r."Rate" * COALESCE(u."Rate", 100) / 100.0)::numeric(18,4) AS "EffectiveRate",
COALESCE(pm."AvgMonthlyCost", 0)::numeric(18,4) AS "UnitCost",
(COALESCE(pm."AvgMonthlyCost", 0) * r."Rate" * COALESCE(u."Rate", 100) / 10000.0)::numeric(18,4) AS "TotalCost"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE
LEFT JOIN public."Prj_T_UserMonthRate" u
ON u."UserId" = r."UserId" AND u."Year" = r."Year" AND u."Month" = r."Month"
AND u."TenantId" IS NOT DISTINCT FROM r."TenantId" AND u."IsDeleted" = FALSE
LEFT JOIN public."Prj_T_ProjectMember" pm
ON pm."ProjectId" = p."Id" AND pm."UserId" = r."UserId" AND pm."IsDeleted" = FALSE;

View file

@ -0,0 +1,37 @@
CREATE OR REPLACE VIEW public."Prj_V_ProjectCostSummary"
AS
SELECT
(p."Id"::text || '-' || k."Kind")::varchar(64) AS "Id",
p."TenantId", p."Id" AS "ProjectId", p."IsDeleted", k."Kind", k."SortNo",
COALESCE(mm."ManMonth", 0)::numeric(18,4) AS "ManMonth",
COALESCE(c."PersonnelCost", 0)::numeric(18,4) AS "PersonnelCost",
COALESCE(c."TravelCost", 0)::numeric(18,4) AS "TravelCost",
COALESCE(c."EquipmentCost", 0)::numeric(18,4) AS "EquipmentCost",
COALESCE(c."ConsultingCost", 0)::numeric(18,4) AS "ConsultingCost",
COALESCE(c."ServiceCost", 0)::numeric(18,4) AS "ServiceCost",
COALESCE(c."MaterialCost", 0)::numeric(18,4) AS "MaterialCost",
COALESCE(c."OtherCost", 0)::numeric(18,4) AS "OtherCost",
COALESCE(c."TotalCost", 0)::numeric(18,4) AS "TotalCost"
FROM public."Prj_T_Project" p
CROSS JOIN (VALUES ('Planned', 1), ('Actual', 2)) AS k("Kind", "SortNo")
LEFT JOIN LATERAL (
SELECT
SUM(CASE WHEN x."ResourceType" = 'Personnel' THEN x."Cost" ELSE 0 END) AS "PersonnelCost",
SUM(CASE WHEN x."ResourceType" = 'Travel' THEN x."Cost" ELSE 0 END) AS "TravelCost",
SUM(CASE WHEN x."ResourceType" = 'Equipment' THEN x."Cost" ELSE 0 END) AS "EquipmentCost",
SUM(CASE WHEN x."ResourceType" = 'Consulting' THEN x."Cost" ELSE 0 END) AS "ConsultingCost",
SUM(CASE WHEN x."ResourceType" = 'Service' THEN x."Cost" ELSE 0 END) AS "ServiceCost",
SUM(CASE WHEN x."ResourceType" = 'Material' THEN x."Cost" ELSE 0 END) AS "MaterialCost",
SUM(CASE WHEN x."ResourceType" = 'Other' THEN x."Cost" ELSE 0 END) AS "OtherCost",
SUM(x."Cost") AS "TotalCost"
FROM public."Prj_T_WorkPackageResource" x
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = x."WorkPackageId"
WHERE w."ProjectId" = p."Id" AND x."Kind" = k."Kind"
AND x."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
) c ON TRUE
LEFT JOIN LATERAL (
SELECT SUM(r."Rate") / 100.0 AS "ManMonth"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId"
WHERE w."ProjectId" = p."Id" AND r."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
) mm ON TRUE;

View file

@ -0,0 +1,24 @@
CREATE OR REPLACE VIEW public."Prj_V_ProjectMember"
AS
SELECT
pm."Id",
COALESCE(pc."PackageCount", 0)::integer AS "PackageCount",
COALESCE(mr."ManMonthTotal", 0)::numeric(18,4) AS "ManMonthTotal",
COALESCE(mr."WorkedMonths", 0)::integer AS "WorkedMonths",
(COALESCE(mr."ManMonthTotal", 0) * COALESCE(pm."AvgMonthlyCost", 0))::numeric(18,4) AS "TotalCost"
FROM public."Prj_T_ProjectMember" pm
LEFT JOIN LATERAL (
SELECT COUNT(*) AS "PackageCount"
FROM public."Prj_T_WorkPackageMember" wm
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = wm."WorkPackageId"
WHERE wm."UserId" = pm."UserId" AND w."ProjectId" = pm."ProjectId"
AND wm."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
) pc ON TRUE
LEFT JOIN LATERAL (
SELECT SUM(r."Rate") / 100.0 AS "ManMonthTotal",
COUNT(DISTINCT r."Year" * 100 + r."Month") AS "WorkedMonths"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId"
WHERE r."UserId" = pm."UserId" AND w."ProjectId" = pm."ProjectId"
AND r."IsDeleted" = FALSE AND w."IsDeleted" = FALSE
) mr ON TRUE;

View file

@ -0,0 +1,13 @@
CREATE OR REPLACE VIEW public."Prj_V_ResourceList"
AS
SELECT
x."Id", x."TenantId", x."IsDeleted",
p."Id" AS "ProjectId", p."ProjectNo", p."Name" AS "ProjectName",
w."Id" AS "WorkPackageId", w."Code" AS "WorkPackageCode", w."Name" AS "WorkPackageName",
x."Kind", x."ResourceType", x."UserId", x."ResourceName",
x."Quantity", x."Unit", x."Price", x."VatRate", x."Cost",
x."DocumentDate", x."DocumentNo", x."OrganizationType", x."OrganizationName",
x."WorkDone", x."WorkDescription"
FROM public."Prj_T_WorkPackageResource" x
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = x."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE;

View file

@ -0,0 +1,33 @@
IF OBJECT_ID(N'[dbo].[Prj_T_Diary]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_Diary]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProjectId] uniqueidentifier NOT NULL,
[WorkPackageId] uniqueidentifier NULL,
[UserId] uniqueidentifier NOT NULL,
[StartTime] datetime NOT NULL,
[EndTime] datetime NULL,
[Minutes] int NULL,
[Content] nvarchar(MAX) NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_Diary] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prj_T_Diary]'), 'IX_Prj_T_Diary_ProjectId_StartTime', 'IndexID') IS NULL
BEGIN
CREATE INDEX [IX_Prj_T_Diary_ProjectId_StartTime] ON [dbo].[Prj_T_Diary] ([ProjectId] ASC, [StartTime] ASC);
END
GO

View file

@ -0,0 +1,46 @@
IF OBJECT_ID(N'[dbo].[Prj_T_Project]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_Project]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProjectNo] nvarchar(32) NOT NULL,
[Name] nvarchar(512) NOT NULL,
[ProjectType] nvarchar(32) NULL,
[Status] nvarchar(16) NOT NULL DEFAULT 'Draft',
[StartDate] date NULL,
[EndDate] date NULL,
[ManagerId] uniqueidentifier NULL,
[Tags] nvarchar(MAX) NULL,
[Summary] nvarchar(MAX) NULL,
[Needs] nvarchar(MAX) NULL,
[Activities] nvarchar(MAX) NULL,
[Innovation] nvarchar(MAX) NULL,
[Outputs] nvarchar(MAX) NULL,
[NationalSupportOrg] nvarchar(256) NULL,
[InternationalSupportOrg] nvarchar(256) NULL,
[OwnFundedAmount] decimal(18, 4) NULL,
[SupportAmount] decimal(18, 4) NULL,
[TotalBudget] decimal(18, 4) NULL,
[ServicePurchaseSubject] nvarchar(256) NULL,
[ServicePurchasePlace] nvarchar(256) NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_Project] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_Project_TenantId_ProjectNo]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_Project] ADD CONSTRAINT [UQ_Prj_T_Project_TenantId_ProjectNo] UNIQUE NONCLUSTERED ([TenantId] ASC, [ProjectNo] ASC);
END
GO

View file

@ -0,0 +1,37 @@
IF OBJECT_ID(N'[dbo].[Prj_T_ProjectMember]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_ProjectMember]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProjectId] uniqueidentifier NOT NULL,
[UserId] uniqueidentifier NOT NULL,
[ProjectRoleId] uniqueidentifier NULL,
[ParentId] uniqueidentifier NULL,
[AvgMonthlyCost] decimal(18, 4) NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_ProjectMember] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_ProjectMember_TenantId_ProjectId_UserId]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_ProjectMember] ADD CONSTRAINT [UQ_Prj_T_ProjectMember_TenantId_ProjectId_UserId] UNIQUE NONCLUSTERED ([TenantId] ASC, [ProjectId] ASC, [UserId] ASC);
END
GO
IF OBJECT_ID(N'[dbo].[FK_Prj_T_ProjectMember_ProjectId]', 'F') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_ProjectMember] ADD CONSTRAINT [FK_Prj_T_ProjectMember_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [dbo].[Prj_T_Project] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION;
END
GO

View file

@ -0,0 +1,28 @@
IF OBJECT_ID(N'[dbo].[Prj_T_ProjectRole]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_ProjectRole]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(128) NOT NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_ProjectRole] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_ProjectRole_TenantId_Name]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_ProjectRole] ADD CONSTRAINT [UQ_Prj_T_ProjectRole_TenantId_Name] UNIQUE NONCLUSTERED ([TenantId] ASC, [Name] ASC);
END
GO

View file

@ -0,0 +1,29 @@
IF OBJECT_ID(N'[dbo].[Prj_T_Tag]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_Tag]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(64) NOT NULL,
[Color] nvarchar(16) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_Tag] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_Tag_TenantId_Name]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_Tag] ADD CONSTRAINT [UQ_Prj_T_Tag_TenantId_Name] UNIQUE NONCLUSTERED ([TenantId] ASC, [Name] ASC);
END
GO

View file

@ -0,0 +1,30 @@
IF OBJECT_ID(N'[dbo].[Prj_T_UserMonthRate]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_UserMonthRate]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[UserId] uniqueidentifier NOT NULL,
[Year] int NOT NULL,
[Month] int NOT NULL,
[Rate] decimal(18, 4) NOT NULL DEFAULT 100,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_UserMonthRate] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_UserMonthRate_TenantId_UserId_Year_Month]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_UserMonthRate] ADD CONSTRAINT [UQ_Prj_T_UserMonthRate_TenantId_UserId_Year_Month] UNIQUE NONCLUSTERED ([TenantId] ASC, [UserId] ASC, [Year] ASC, [Month] ASC);
END
GO

View file

@ -0,0 +1,42 @@
IF OBJECT_ID(N'[dbo].[Prj_T_WorkPackage]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_WorkPackage]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProjectId] uniqueidentifier NOT NULL,
[ParentId] uniqueidentifier NULL,
[Code] nvarchar(16) NOT NULL,
[Name] nvarchar(512) NOT NULL,
[StartDate] date NOT NULL,
[EndDate] date NOT NULL,
[Months] int NULL,
[Progress] decimal(18, 4) NOT NULL DEFAULT 0,
[Color] nvarchar(16) NULL,
[Note] nvarchar(1024) NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_WorkPackage] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_WorkPackage_TenantId_ProjectId_Code]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackage] ADD CONSTRAINT [UQ_Prj_T_WorkPackage_TenantId_ProjectId_Code] UNIQUE NONCLUSTERED ([TenantId] ASC, [ProjectId] ASC, [Code] ASC);
END
GO
IF OBJECT_ID(N'[dbo].[FK_Prj_T_WorkPackage_ProjectId]', 'F') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackage] ADD CONSTRAINT [FK_Prj_T_WorkPackage_ProjectId] FOREIGN KEY ([ProjectId]) REFERENCES [dbo].[Prj_T_Project] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION;
END
GO

View file

@ -0,0 +1,34 @@
IF OBJECT_ID(N'[dbo].[Prj_T_WorkPackageMember]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_WorkPackageMember]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[WorkPackageId] uniqueidentifier NOT NULL,
[UserId] uniqueidentifier NOT NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_WorkPackageMember] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_WorkPackageMember_TenantId_WorkPackageId_UserId]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackageMember] ADD CONSTRAINT [UQ_Prj_T_WorkPackageMember_TenantId_WorkPackageId_UserId] UNIQUE NONCLUSTERED ([TenantId] ASC, [WorkPackageId] ASC, [UserId] ASC);
END
GO
IF OBJECT_ID(N'[dbo].[FK_Prj_T_WorkPackageMember_WorkPackageId]', 'F') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackageMember] ADD CONSTRAINT [FK_Prj_T_WorkPackageMember_WorkPackageId] FOREIGN KEY ([WorkPackageId]) REFERENCES [dbo].[Prj_T_WorkPackage] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION;
END
GO

View file

@ -0,0 +1,37 @@
IF OBJECT_ID(N'[dbo].[Prj_T_WorkPackageMonthRate]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_WorkPackageMonthRate]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[WorkPackageId] uniqueidentifier NOT NULL,
[UserId] uniqueidentifier NOT NULL,
[Year] int NOT NULL,
[Month] int NOT NULL,
[Rate] decimal(18, 4) NOT NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_WorkPackageMonthRate] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF OBJECT_ID(N'[dbo].[UQ_Prj_T_WorkPackageMonthRate_TenantId_WorkPackageId_UserId_Year_Month]', 'UQ') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackageMonthRate] ADD CONSTRAINT [UQ_Prj_T_WorkPackageMonthRate_TenantId_WorkPackageId_UserId_Year_Month] UNIQUE NONCLUSTERED ([TenantId] ASC, [WorkPackageId] ASC, [UserId] ASC, [Year] ASC, [Month] ASC);
END
GO
IF OBJECT_ID(N'[dbo].[FK_Prj_T_WorkPackageMonthRate_WorkPackageId]', 'F') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackageMonthRate] ADD CONSTRAINT [FK_Prj_T_WorkPackageMonthRate_WorkPackageId] FOREIGN KEY ([WorkPackageId]) REFERENCES [dbo].[Prj_T_WorkPackage] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION;
END
GO

View file

@ -0,0 +1,48 @@
IF OBJECT_ID(N'[dbo].[Prj_T_WorkPackageResource]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Prj_T_WorkPackageResource]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[WorkPackageId] uniqueidentifier NOT NULL,
[Kind] nvarchar(16) NOT NULL DEFAULT 'Planned',
[ResourceType] nvarchar(32) NOT NULL,
[UserId] uniqueidentifier NULL,
[ResourceName] nvarchar(512) NOT NULL,
[OrganizationType] nvarchar(64) NULL,
[OrganizationName] nvarchar(256) NULL,
[WorkDone] nvarchar(256) NULL,
[WorkDescription] nvarchar(1024) NULL,
[DocumentDate] date NULL,
[DocumentNo] nvarchar(64) NULL,
[Unit] nvarchar(16) NULL DEFAULT 'Adet',
[Price] decimal(18, 4) NULL DEFAULT 0,
[Quantity] decimal(18, 4) NULL DEFAULT 1,
[VatRate] decimal(18, 4) NULL DEFAULT 0,
[Cost] decimal(18, 4) NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Prj_T_WorkPackageResource] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prj_T_WorkPackageResource]'), 'IX_Prj_T_WorkPackageResource_WorkPackageId_Kind', 'IndexID') IS NULL
BEGIN
CREATE INDEX [IX_Prj_T_WorkPackageResource_WorkPackageId_Kind] ON [dbo].[Prj_T_WorkPackageResource] ([WorkPackageId] ASC, [Kind] ASC);
END
GO
IF OBJECT_ID(N'[dbo].[FK_Prj_T_WorkPackageResource_WorkPackageId]', 'F') IS NULL
BEGIN
ALTER TABLE [dbo].[Prj_T_WorkPackageResource] ADD CONSTRAINT [FK_Prj_T_WorkPackageResource_WorkPackageId] FOREIGN KEY ([WorkPackageId]) REFERENCES [dbo].[Prj_T_WorkPackage] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION;
END
GO

View file

@ -0,0 +1,45 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_BudgetMonthly]
AS
WITH base AS (
SELECT x.[TenantId], w.[ProjectId], x.[ResourceType], x.[Kind], ISNULL(x.[Cost], 0) AS [Cost],
DATEFROMPARTS(YEAR(COALESCE(x.[DocumentDate], w.[StartDate])), MONTH(COALESCE(x.[DocumentDate], w.[StartDate])), 1) AS [PeriodDate]
FROM [dbo].[Prj_T_WorkPackageResource] x
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = x.[WorkPackageId] AND w.[IsDeleted] = 0
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
WHERE x.[IsDeleted] = 0
),
monthly AS (
SELECT [TenantId], [ProjectId], [ResourceType], [PeriodDate],
SUM(CASE WHEN [Kind] = 'Planned' THEN [Cost] ELSE 0 END) AS [Planned],
SUM(CASE WHEN [Kind] = 'Actual' THEN [Cost] ELSE 0 END) AS [Actual]
FROM base
GROUP BY [TenantId], [ProjectId], [ResourceType], [PeriodDate]
)
SELECT
CAST(CONCAT(CAST(m.[ProjectId] AS nvarchar(36)), '|', m.[ResourceType]) AS nvarchar(120)) AS [Id],
CAST(NULL AS nvarchar(120)) AS [ParentId],
m.[TenantId], m.[ProjectId], m.[ResourceType], CAST(0 AS bit) AS [IsDeleted], 1 AS [RowLevel],
CAST(m.[ResourceType] AS nvarchar(64)) AS [Title],
MIN(m.[PeriodDate]) AS [StartDate],
EOMONTH(MAX(m.[PeriodDate])) AS [EndDate],
CAST(NULL AS int) AS [Year], CAST(NULL AS int) AS [Month],
CAST(SUM(m.[Planned]) AS decimal(18, 4)) AS [Planned],
CAST(SUM(m.[Actual]) AS decimal(18, 4)) AS [Actual],
CAST(CASE WHEN SUM(m.[Planned]) > 0 THEN SUM(m.[Actual]) * 100.0 / SUM(m.[Planned]) ELSE 0 END AS decimal(18, 4)) AS [Ratio],
CAST(CASE WHEN SUM(m.[Planned]) > 0 THEN CASE WHEN SUM(m.[Actual]) * 100.0 / SUM(m.[Planned]) > 100 THEN 100 ELSE SUM(m.[Actual]) * 100.0 / SUM(m.[Planned]) END ELSE 0 END AS decimal(18, 4)) AS [Progress]
FROM monthly m
GROUP BY m.[TenantId], m.[ProjectId], m.[ResourceType]
UNION ALL
SELECT
CAST(CONCAT(CAST(m.[ProjectId] AS nvarchar(36)), '|', m.[ResourceType], '|', FORMAT(m.[PeriodDate], 'yyyy-MM')) AS nvarchar(120)),
CAST(CONCAT(CAST(m.[ProjectId] AS nvarchar(36)), '|', m.[ResourceType]) AS nvarchar(120)),
m.[TenantId], m.[ProjectId], m.[ResourceType], CAST(0 AS bit), 2,
CAST(FORMAT(m.[PeriodDate], 'yyyy-MM') AS nvarchar(64)),
m.[PeriodDate],
EOMONTH(m.[PeriodDate]),
YEAR(m.[PeriodDate]), MONTH(m.[PeriodDate]),
CAST(m.[Planned] AS decimal(18, 4)), CAST(m.[Actual] AS decimal(18, 4)),
CAST(CASE WHEN m.[Planned] > 0 THEN m.[Actual] * 100.0 / m.[Planned] ELSE 0 END AS decimal(18, 4)),
CAST(CASE WHEN m.[Planned] > 0 THEN CASE WHEN m.[Actual] * 100.0 / m.[Planned] > 100 THEN 100 ELSE m.[Actual] * 100.0 / m.[Planned] END ELSE 0 END AS decimal(18, 4))
FROM monthly m
GO

View file

@ -0,0 +1,41 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_ManMonthGantt]
AS
WITH base AS (
SELECT r.[TenantId], w.[ProjectId], r.[UserId], w.[Id] AS [WorkPackageId],
w.[Code], w.[Name], r.[Rate], DATEFROMPARTS(r.[Year], r.[Month], 1) AS [PeriodDate]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId] AND w.[IsDeleted] = 0
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
WHERE r.[IsDeleted] = 0 AND r.[Rate] > 0
)
SELECT
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36))) AS nvarchar(120)) AS [Id],
CAST(NULL AS nvarchar(120)) AS [ParentId],
b.[TenantId], b.[ProjectId], b.[UserId], CAST(NULL AS uniqueidentifier) AS [WorkPackageId],
CAST(0 AS bit) AS [IsDeleted], 1 AS [RowLevel],
CAST(COALESCE(MAX(u.[Name] + N' ' + u.[Surname]), MAX(u.[UserName])) AS nvarchar(256)) AS [Title],
MIN(b.[PeriodDate]) AS [StartDate],
EOMONTH(MAX(b.[PeriodDate])) AS [EndDate],
CAST(AVG(b.[Rate]) AS decimal(18, 4)) AS [Progress],
CAST(AVG(b.[Rate]) AS decimal(18, 4)) AS [AvgRate],
CAST(SUM(b.[Rate]) AS decimal(18, 4)) AS [TotalRate],
COUNT(DISTINCT b.[PeriodDate]) AS [MonthCount]
FROM base b
LEFT JOIN [dbo].[AbpUsers] u ON u.[Id] = b.[UserId]
GROUP BY b.[TenantId], b.[ProjectId], b.[UserId]
UNION ALL
SELECT
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36)), '|', CAST(b.[WorkPackageId] AS nvarchar(36))) AS nvarchar(120)),
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36))) AS nvarchar(120)),
b.[TenantId], b.[ProjectId], b.[UserId], b.[WorkPackageId],
CAST(0 AS bit), 2,
CAST(MAX(b.[Code]) + N' ' + MAX(b.[Name]) AS nvarchar(256)),
MIN(b.[PeriodDate]),
EOMONTH(MAX(b.[PeriodDate])),
CAST(AVG(b.[Rate]) AS decimal(18, 4)),
CAST(AVG(b.[Rate]) AS decimal(18, 4)),
CAST(SUM(b.[Rate]) AS decimal(18, 4)),
COUNT(DISTINCT b.[PeriodDate])
FROM base b
GROUP BY b.[TenantId], b.[ProjectId], b.[UserId], b.[WorkPackageId]
GO

View file

@ -0,0 +1,22 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_PersonnelManMonth]
AS
SELECT
r.[Id], r.[TenantId], r.[IsDeleted],
p.[Id] AS [ProjectId], p.[ProjectNo], p.[Name] AS [ProjectName],
w.[Id] AS [WorkPackageId], w.[Code] AS [WorkPackageCode], w.[Name] AS [WorkPackageName],
r.[Year], r.[Month], DATEFROMPARTS(r.[Year], r.[Month], 1) AS [PeriodDate],
r.[UserId],
r.[Rate] AS [ManMonthValue],
CAST(ISNULL(u.[Rate], 100) AS decimal(18, 4)) AS [MonthlyRate],
CAST(r.[Rate] * ISNULL(u.[Rate], 100) / 100.0 AS decimal(18, 4)) AS [EffectiveRate],
CAST(ISNULL(pm.[AvgMonthlyCost], 0) AS decimal(18, 4)) AS [UnitCost],
CAST(ISNULL(pm.[AvgMonthlyCost], 0) * r.[Rate] * ISNULL(u.[Rate], 100) / 10000.0 AS decimal(18, 4)) AS [TotalCost]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId] AND w.[IsDeleted] = 0
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
LEFT JOIN [dbo].[Prj_T_UserMonthRate] u
ON u.[UserId] = r.[UserId] AND u.[Year] = r.[Year] AND u.[Month] = r.[Month]
AND (u.[TenantId] = r.[TenantId] OR (u.[TenantId] IS NULL AND r.[TenantId] IS NULL)) AND u.[IsDeleted] = 0
LEFT JOIN [dbo].[Prj_T_ProjectMember] pm
ON pm.[ProjectId] = p.[Id] AND pm.[UserId] = r.[UserId] AND pm.[IsDeleted] = 0
GO

View file

@ -0,0 +1,38 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_ProjectCostSummary]
AS
SELECT
CAST(CONCAT(CAST(p.[Id] AS nvarchar(36)), '-', k.[Kind]) AS nvarchar(64)) AS [Id],
p.[TenantId], p.[Id] AS [ProjectId], p.[IsDeleted], k.[Kind], k.[SortNo],
CAST(ISNULL(mm.[ManMonth], 0) AS decimal(18, 4)) AS [ManMonth],
CAST(ISNULL(c.[PersonnelCost], 0) AS decimal(18, 4)) AS [PersonnelCost],
CAST(ISNULL(c.[TravelCost], 0) AS decimal(18, 4)) AS [TravelCost],
CAST(ISNULL(c.[EquipmentCost], 0) AS decimal(18, 4)) AS [EquipmentCost],
CAST(ISNULL(c.[ConsultingCost], 0) AS decimal(18, 4)) AS [ConsultingCost],
CAST(ISNULL(c.[ServiceCost], 0) AS decimal(18, 4)) AS [ServiceCost],
CAST(ISNULL(c.[MaterialCost], 0) AS decimal(18, 4)) AS [MaterialCost],
CAST(ISNULL(c.[OtherCost], 0) AS decimal(18, 4)) AS [OtherCost],
CAST(ISNULL(c.[TotalCost], 0) AS decimal(18, 4)) AS [TotalCost]
FROM [dbo].[Prj_T_Project] p
CROSS JOIN (VALUES ('Planned', 1), ('Actual', 2)) AS k([Kind], [SortNo])
OUTER APPLY (
SELECT
SUM(CASE WHEN x.[ResourceType] = 'Personnel' THEN x.[Cost] ELSE 0 END) AS [PersonnelCost],
SUM(CASE WHEN x.[ResourceType] = 'Travel' THEN x.[Cost] ELSE 0 END) AS [TravelCost],
SUM(CASE WHEN x.[ResourceType] = 'Equipment' THEN x.[Cost] ELSE 0 END) AS [EquipmentCost],
SUM(CASE WHEN x.[ResourceType] = 'Consulting' THEN x.[Cost] ELSE 0 END) AS [ConsultingCost],
SUM(CASE WHEN x.[ResourceType] = 'Service' THEN x.[Cost] ELSE 0 END) AS [ServiceCost],
SUM(CASE WHEN x.[ResourceType] = 'Material' THEN x.[Cost] ELSE 0 END) AS [MaterialCost],
SUM(CASE WHEN x.[ResourceType] = 'Other' THEN x.[Cost] ELSE 0 END) AS [OtherCost],
SUM(x.[Cost]) AS [TotalCost]
FROM [dbo].[Prj_T_WorkPackageResource] x
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = x.[WorkPackageId]
WHERE w.[ProjectId] = p.[Id] AND x.[Kind] = k.[Kind]
AND x.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) c
OUTER APPLY (
SELECT SUM(r.[Rate]) / 100.0 AS [ManMonth]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId]
WHERE w.[ProjectId] = p.[Id] AND r.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) mm
GO

View file

@ -0,0 +1,25 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_ProjectMember]
AS
SELECT
pm.[Id],
ISNULL(pc.[PackageCount], 0) AS [PackageCount],
CAST(ISNULL(mr.[ManMonthTotal], 0) AS decimal(18, 4)) AS [ManMonthTotal],
ISNULL(mr.[WorkedMonths], 0) AS [WorkedMonths],
CAST(ISNULL(mr.[ManMonthTotal], 0) * ISNULL(pm.[AvgMonthlyCost], 0) AS decimal(18, 4)) AS [TotalCost]
FROM [dbo].[Prj_T_ProjectMember] pm
OUTER APPLY (
SELECT COUNT(*) AS [PackageCount]
FROM [dbo].[Prj_T_WorkPackageMember] wm
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = wm.[WorkPackageId]
WHERE wm.[UserId] = pm.[UserId] AND w.[ProjectId] = pm.[ProjectId]
AND wm.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) pc
OUTER APPLY (
SELECT SUM(r.[Rate]) / 100.0 AS [ManMonthTotal],
COUNT(DISTINCT r.[Year] * 100 + r.[Month]) AS [WorkedMonths]
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId]
WHERE r.[UserId] = pm.[UserId] AND w.[ProjectId] = pm.[ProjectId]
AND r.[IsDeleted] = 0 AND w.[IsDeleted] = 0
) mr
GO

View file

@ -0,0 +1,14 @@
CREATE OR ALTER VIEW [dbo].[Prj_V_ResourceList]
AS
SELECT
x.[Id], x.[TenantId], x.[IsDeleted],
p.[Id] AS [ProjectId], p.[ProjectNo], p.[Name] AS [ProjectName],
w.[Id] AS [WorkPackageId], w.[Code] AS [WorkPackageCode], w.[Name] AS [WorkPackageName],
x.[Kind], x.[ResourceType], x.[UserId], x.[ResourceName],
x.[Quantity], x.[Unit], x.[Price], x.[VatRate], x.[Cost],
x.[DocumentDate], x.[DocumentNo], x.[OrganizationType], x.[OrganizationName],
x.[WorkDone], x.[WorkDescription]
FROM [dbo].[Prj_T_WorkPackageResource] x
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = x.[WorkPackageId] AND w.[IsDeleted] = 0
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
GO

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,917 @@
{
"Wizard": {
"ComponentKind": 0,
"WizardName": "ProjectActivities",
"WizardCode": "App.Prj.ProjectActivities",
"SeededAt": "2026-10-08T07:43:14.1504045Z",
"CustomComponentName": null,
"PermissionGroupName": "App.Prj",
"ModuleId": "Prj",
"Menu": {
"MenuParentCode": null,
"MenuParentIcon": null,
"CreateMenu": false,
"MenuCode": "App.Prj.ProjectActivities",
"MenuOrder": 0,
"MenuUrl": "/admin/list/App.Prj.ProjectActivities",
"MenuIcon": "FcWorkflow"
},
"Language": {
"MenuParentEn": null,
"MenuParentTr": null,
"PermissionGroupEn": "Project Management",
"PermissionGroupTr": "Proje Yönetimi",
"MenuEn": "Activities",
"MenuTr": "Faaliyetler",
"TitleEn": "Activities",
"TitleTr": "Faaliyetler",
"DescEn": "Activities — the activities planned and carried out within the project, written in a rich HTML editor.\nWhere: Project Management › Projects › Activities tab.\nFields: Activities (HTML).\nEdits the same project record as the main card; there is no separate table.",
"DescTr": "Faaliyetler — proje kapsamında planlanan ve yürütülen faaliyetler; HTML editörle yazılır.\nNerede: Proje Yönetimi › Projeler ekranının Faaliyetler sekmesi.\nAlanlar: Faaliyetler (HTML).\nAna kartla aynı proje kaydını düzenler; ayrı tablo yoktur."
},
"Groups": [
{
"Items": [
{
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"En": "Id",
"Tr": "Kimlik"
},
{
"FieldName": "Activities",
"CaptionName": "App.Listform.ListformField.Activities",
"En": "Activities",
"Tr": "Faaliyetler"
}
]
}
]
},
"ListForm": {
"EditType": null,
"DataSourceCode": "Default",
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
"SelectCommand": "Prj_T_Project",
"SelectCommandType": 1,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prj_T_Project\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@ID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"InsertCommand": null,
"InsertBeforeCommand": null,
"InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
"FieldDbType": 6,
"Value": "@NOW",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "CreatorId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "IsDeleted",
"FieldDbType": 3,
"Value": "false",
"CustomValueType": 1,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@NEWID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
"UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [],
"FormFieldsDefaultValueDto": [],
"WidgetsDto": [],
"ExtraFilterEditDto": [],
"ListFormCode": "App.Prj.ProjectActivities",
"CultureName": "en",
"Name": "App.Prj.ProjectActivities",
"KeyFieldName": "Id",
"Title": "App.Prj.ProjectActivities.Title",
"SortMode": "single",
"PageSize": 10,
"Width": 0,
"Height": 0,
"FullHeight": false,
"Description": "App.Prj.ProjectActivities.Desc",
"FilterRowDto": {
"Visible": true,
"ApplyFilter": "auto",
"AllowUserUiFilterSave": true
},
"RowDto": {
"RowHeight": "auto",
"WhiteSpace": "normal",
"OverflowWrap": "break-word"
},
"HeaderFilterDto": {
"Visible": true,
"AllowSearch": false,
"Height": 325,
"SearchTimeout": 500,
"Width": 252
},
"FilterPanelDto": {
"Visible": false,
"Texts": null,
"FilterEnabled": false,
"CustomizeText": null
},
"SearchPanelDto": {
"Visible": true,
"Width": 160
},
"GroupPanelDto": {
"Visible": true,
"AutoExpandAll": false
},
"SelectionDto": {
"Mode": "none",
"AllowSelectAll": false,
"SelectAllMode": "allPages",
"ShowCheckBoxesMode": "always"
},
"ColumnOptionDto": {
"ShowBorders": true,
"ShowRowLines": true,
"ShowColumnLines": false,
"RowAlternationEnabled": true,
"AllowColumnReordering": true,
"AllowColumnResizing": true,
"ColumnResizingMode": "widget",
"ColumnAutoWidth": true,
"RtlEnabled": false,
"ColumnFixingEnabled": true,
"ColumnChooserEnabled": true,
"ColumnChooserMode": "dragAndDrop",
"HoverStateEnabled": false,
"ColumnHidingEnabled": true,
"FocusedRowEnabled": true,
"ShowColumnHeaders": true
},
"PivotOptionDto": {
"ColumnChooserEnabled": false,
"AllowFieldDragging": true,
"ShowFieldPanel": true,
"ShowDataFields": true,
"ShowColumnFields": true,
"ShowRowFields": true,
"ShowFilterFields": true,
"ShowChart": false,
"ChartHeight": 320,
"ChartCommonSeriesType": "bar"
},
"TreeOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null
},
"GanttOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"ScaleType": "weeks",
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null,
"EditingEnabled": false,
"AllowTaskAdding": false,
"AllowTaskUpdating": false,
"AllowTaskResourceUpdating": false,
"AllowTaskDeleting": false,
"AllowDependencyAdding": false,
"AllowDependencyDeleting": false,
"AllowResourceAdding": false,
"AllowResourceUpdating": false,
"AllowResourceDeleting": false
},
"SchedulerOptionDto": {
"TextExpr": null,
"UserNameExpr": null,
"DescriptionExpr": null,
"StartDateExpr": null,
"EndDateExpr": null,
"AllDayExpr": null,
"RecurrenceRuleExpr": null,
"RecurrenceExceptionExpr": null,
"StartDayHour": 8,
"EndDayHour": 20,
"DefaultView": "week",
"ShowAllDayPanel": true,
"CellDuration": 30,
"FirstDayOfWeek": 1,
"CrossScrollingEnabled": false,
"AllowResizing": false,
"AllowDragging": false,
"AllowDeleting": false,
"AllowEditing": false,
"AllowAdding": false
},
"TodoOptionDto": {
"TitleExpr": null,
"StatusExpr": null,
"DescriptionExpr": null,
"AnalysisExpr": null,
"DueDateExpr": null,
"TagExpr": null,
"AssigneeExpr": null,
"PriorityExpr": null,
"CompletedExpr": null,
"OrderExpr": null,
"TimesheetExpr": null,
"SubTaskExpr": null,
"StatusOrder": null,
"AllowDragging": true
},
"PagerOptionDto": {
"Visible": true,
"ShowPageSizeSelector": true,
"ShowInfo": false,
"ShowNavigationButtons": true,
"AllowedPageSizes": "10,20,50,100",
"InfoText": "Page {0} of {1} ({2} items)",
"DisplayMode": "adaptive",
"ScrollingMode": "standard",
"LoadPanelEnabled": "auto",
"LoadPanelText": "Loading..."
},
"EditingOptionDto": {
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
"AllowDetail": false,
"AllowDeleting": false,
"AllowAllDeleting": false,
"AllowAdding": false,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
"SelectTextOnEditStart": false,
"StartEditAction": "click",
"EditColumnName": null,
"Popup": {
"Title": "App.Prj.ProjectActivities.Title",
"ShowTitle": true,
"Width": 400,
"Height": 200,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
"DragEnabled": true,
"RestorePosition": true,
"Position": "center"
},
"SendOnlyChangedFormValuesUpdate": false,
"AddPageUrl": null,
"AddDialogName": null,
"AddDialogParameters": null
},
"EditingFormDto": [
{
"Order": 1,
"ItemType": "group",
"Caption": "",
"ColCount": 1,
"ColSpan": 1
}
],
"PermissionDto": {
"C": "App.Prj.ProjectActivities.Create",
"R": "App.Prj.ProjectActivities",
"U": "App.Prj.ProjectActivities.Update",
"D": "App.Prj.ProjectActivities.Delete",
"E": "App.Prj.ProjectActivities.Export",
"I": "App.Prj.ProjectActivities.Import",
"N": "App.Prj.ProjectActivities.Note"
},
"CommandColumnDto": [],
"StateStoringDto": {
"Enabled": true,
"Type": "custom",
"StorageKey": "listFormGridStorage-App.Prj.ProjectActivities",
"SavingTimeout": 5000
},
"CustomJsSources": [],
"CustomStyleSources": [],
"UpdateServiceAddress": "list-form-data/update",
"InsertServiceAddress": "list-form-data/insert",
"DeleteServiceAddress": "list-form-data/delete",
"IsTenant": true,
"IsBranch": false,
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
"ShowNote": false,
"SubFormsListFormType": "Form",
"SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
"Card": true,
"Pivot": true,
"Chart": true,
"Tree": false,
"Gantt": false,
"Scheduler": false,
"Todo": false,
"DefaultLayout": "grid"
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
"ApprovalDateFieldName": null,
"ApprovalStatusFieldName": null,
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
"Criteria": []
},
"UserId": null,
"RoleId": null,
"CommonDto": {
"AdjustOnZoom": true,
"ContainerBackgroundColor": "#FFFFFF",
"Palette": "Material",
"PaletteExtensionMode": "blend",
"DefaultPane": null,
"Disabled": false,
"Theme": "generic.light"
},
"AdaptivelayoutDto": {
"Height": 80,
"Width": 80,
"KeepLabels": true
},
"AnimationDto": {
"Duration": 1000,
"Easing": "easeOutCubic",
"Enabled": true,
"MaxPointCountSupported": 300
},
"AnnotationsDto": [],
"ArgumentAxisDto": {
"ArgumentType": null,
"AggregationInterval": null,
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"HoverMode": "none",
"Label": {
"DisplayMode": "standard",
"RotationAngle": 90,
"OverlappingBehavior": "hide"
},
"Position": "bottom",
"Title": null,
"Visible": true,
"Width": 1,
"WorkdaysOnly": false
},
"CommonAnnotationSettingsDto": {
"Argument": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Description": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Height": -1,
"Image": null,
"OffsetX": -1,
"OffsetY": -1,
"PaddingLeftRight": 10,
"PaddingTopBottom": 10,
"Series": null,
"Text": null,
"TooltipEnabled": true,
"Type": null,
"Value": null,
"Width": 0,
"WordWrap": "normal",
"X": 0,
"Y": 0
},
"CommonAxisSettingsDto": {
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"Title": null,
"Visible": true,
"Width": 1
},
"CommonPaneSettingsDto": {
"BackgroundColor": null
},
"CommonSeriesSettingsDto": {
"ArgumentField": "arg",
"Axis": null,
"BarOverlapGroup": null,
"BarPadding": 0,
"BarWidth": 0,
"Color": null,
"CornerRadius": 0,
"DashStyle": "solid",
"IgnoreEmptyPoints": false,
"Pane": null,
"RangeValue1Field": "val1",
"RangeValue2Field": "val2",
"SelectionMode": "none",
"ShowInLegend": true,
"Type": null,
"ValueField": null,
"Visible": true,
"Width": 2,
"Label": null
},
"CrosshairDto": {
"Color": "#f05b41",
"DashStyle": "dot",
"Enabled": false,
"Width": 1,
"HorizontalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
},
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"VerticalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
}
},
"ExportDto": {
"BackgroundColor": "#FFFFFF",
"Enabled": true,
"AllowExportSelectedData": false,
"Margin": 10,
"PrintingEnabled": true
},
"LegendDto": {
"BackgroundColor": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"ColumnCount": 0,
"Orientation": "vertical",
"Position": "outside",
"RowCount": 0,
"Title": null,
"Visible": true
},
"MarginDto": {
"Bottom": 0,
"Left": 0,
"Right": 0,
"Top": 0
},
"PanesDto": [],
"ScrollBarDto": {
"Color": "gray",
"Offset": 5,
"Position": "top",
"Visible": false,
"Width": 10
},
"SeriesDto": [],
"SizeDto": {
"UseSize": false,
"Width": 400,
"Height": 200
},
"TitleDto": {
"Text": null,
"VerticalAlignment": "top",
"HorizontalAlignment": "center",
"Subtitle": null,
"TextOverflow": "ellipsis",
"WordWrap": null
},
"TooltipDto": {
"ArgumentFormat": null,
"ArrowLength": 10,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Enabled": false,
"Font": {
"Color": "#000000",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Format": null,
"Location": "center",
"PaddingLeftRight": 18,
"PaddingTopBottom": 15,
"Shared": false
},
"ValueAxisDto": [],
"ZoomAndPanDto": {
"AllowMouseWheel": true,
"AllowTouchGestures": true,
"ArgumentAxis": "none",
"DragToZoom": false,
"PanKey": "shift",
"ValueAxis": "none",
"DragBoxStyle": {
"Color": null,
"Opacity": 0
}
},
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
"Fields": [
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectActivities",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 1,
"SourceDbType": 9,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectActivities.Create",
"R": "App.Prj.ProjectActivities",
"U": "App.Prj.ProjectActivities.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectActivities",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Activities",
"CaptionName": "App.Listform.ListformField.Activities",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectActivities.Create",
"R": "App.Prj.ProjectActivities",
"U": "App.Prj.ProjectActivities.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": 1,
"EditGroupOrderNo": 1,
"EditorType2": "dxHtmlEditor",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
"IsCreatedField": true,
"InsertedRecords": {
"LanguageKeys": [
"App.Prj.ProjectActivities",
"App.Prj.ProjectActivities.Title",
"App.Prj.ProjectActivities.Desc",
"App.Listform.ListformField.Activities"
],
"PermissionGroupNames": [],
"PermissionNames": [
"App.Prj.ProjectActivities",
"App.Prj.ProjectActivities.Create",
"App.Prj.ProjectActivities.Update",
"App.Prj.ProjectActivities.Delete",
"App.Prj.ProjectActivities.Export",
"App.Prj.ProjectActivities.Import",
"App.Prj.ProjectActivities.Note"
],
"MenuCodes": [],
"DataSourceCodes": [],
"ModuleIds": []
},
"DevRequest": {
"Id": "94639b65-1bb7-454a-ae73-3e1c5c9fe23a",
"Title": "Proje Modülü"
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,917 @@
{
"Wizard": {
"ComponentKind": 0,
"WizardName": "ProjectInnovation",
"WizardCode": "App.Prj.ProjectInnovation",
"SeededAt": "2026-10-08T07:43:28.5069777Z",
"CustomComponentName": null,
"PermissionGroupName": "App.Prj",
"ModuleId": "Prj",
"Menu": {
"MenuParentCode": null,
"MenuParentIcon": null,
"CreateMenu": false,
"MenuCode": "App.Prj.ProjectInnovation",
"MenuOrder": 0,
"MenuUrl": "/admin/list/App.Prj.ProjectInnovation",
"MenuIcon": "FcElectricity"
},
"Language": {
"MenuParentEn": null,
"MenuParentTr": null,
"PermissionGroupEn": "Project Management",
"PermissionGroupTr": "Proje Yönetimi",
"MenuEn": "Innovative Aspect",
"MenuTr": "Yenilikçi Yönü",
"TitleEn": "Innovative Aspect",
"TitleTr": "Yenilikçi Yönü",
"DescEn": "Innovative Aspect — what is new and innovative about the project, written in a rich HTML editor.\nWhere: Project Management › Projects › Innovative Aspect tab.\nFields: Innovation (HTML).\nEdits the same project record as the main card; there is no separate table.",
"DescTr": "Yenilikçi Yönü — projenin yenilikçi ve özgün yönleri; HTML editörle yazılır.\nNerede: Proje Yönetimi › Projeler ekranının Yenilikçi Yönü sekmesi.\nAlanlar: Yenilikçi Yönü (HTML).\nAna kartla aynı proje kaydını düzenler; ayrı tablo yoktur."
},
"Groups": [
{
"Items": [
{
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"En": "Id",
"Tr": "Kimlik"
},
{
"FieldName": "Innovation",
"CaptionName": "App.Listform.ListformField.Innovation",
"En": "Innovative Aspect",
"Tr": "Yenilikçi Yönü"
}
]
}
]
},
"ListForm": {
"EditType": null,
"DataSourceCode": "Default",
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
"SelectCommand": "Prj_T_Project",
"SelectCommandType": 1,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prj_T_Project\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@ID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"InsertCommand": null,
"InsertBeforeCommand": null,
"InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
"FieldDbType": 6,
"Value": "@NOW",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "CreatorId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "IsDeleted",
"FieldDbType": 3,
"Value": "false",
"CustomValueType": 1,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@NEWID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
"UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [],
"FormFieldsDefaultValueDto": [],
"WidgetsDto": [],
"ExtraFilterEditDto": [],
"ListFormCode": "App.Prj.ProjectInnovation",
"CultureName": "en",
"Name": "App.Prj.ProjectInnovation",
"KeyFieldName": "Id",
"Title": "App.Prj.ProjectInnovation.Title",
"SortMode": "single",
"PageSize": 10,
"Width": 0,
"Height": 0,
"FullHeight": false,
"Description": "App.Prj.ProjectInnovation.Desc",
"FilterRowDto": {
"Visible": true,
"ApplyFilter": "auto",
"AllowUserUiFilterSave": true
},
"RowDto": {
"RowHeight": "auto",
"WhiteSpace": "normal",
"OverflowWrap": "break-word"
},
"HeaderFilterDto": {
"Visible": true,
"AllowSearch": false,
"Height": 325,
"SearchTimeout": 500,
"Width": 252
},
"FilterPanelDto": {
"Visible": false,
"Texts": null,
"FilterEnabled": false,
"CustomizeText": null
},
"SearchPanelDto": {
"Visible": true,
"Width": 160
},
"GroupPanelDto": {
"Visible": true,
"AutoExpandAll": false
},
"SelectionDto": {
"Mode": "none",
"AllowSelectAll": false,
"SelectAllMode": "allPages",
"ShowCheckBoxesMode": "always"
},
"ColumnOptionDto": {
"ShowBorders": true,
"ShowRowLines": true,
"ShowColumnLines": false,
"RowAlternationEnabled": true,
"AllowColumnReordering": true,
"AllowColumnResizing": true,
"ColumnResizingMode": "widget",
"ColumnAutoWidth": true,
"RtlEnabled": false,
"ColumnFixingEnabled": true,
"ColumnChooserEnabled": true,
"ColumnChooserMode": "dragAndDrop",
"HoverStateEnabled": false,
"ColumnHidingEnabled": true,
"FocusedRowEnabled": true,
"ShowColumnHeaders": true
},
"PivotOptionDto": {
"ColumnChooserEnabled": false,
"AllowFieldDragging": true,
"ShowFieldPanel": true,
"ShowDataFields": true,
"ShowColumnFields": true,
"ShowRowFields": true,
"ShowFilterFields": true,
"ShowChart": false,
"ChartHeight": 320,
"ChartCommonSeriesType": "bar"
},
"TreeOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null
},
"GanttOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"ScaleType": "weeks",
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null,
"EditingEnabled": false,
"AllowTaskAdding": false,
"AllowTaskUpdating": false,
"AllowTaskResourceUpdating": false,
"AllowTaskDeleting": false,
"AllowDependencyAdding": false,
"AllowDependencyDeleting": false,
"AllowResourceAdding": false,
"AllowResourceUpdating": false,
"AllowResourceDeleting": false
},
"SchedulerOptionDto": {
"TextExpr": null,
"UserNameExpr": null,
"DescriptionExpr": null,
"StartDateExpr": null,
"EndDateExpr": null,
"AllDayExpr": null,
"RecurrenceRuleExpr": null,
"RecurrenceExceptionExpr": null,
"StartDayHour": 8,
"EndDayHour": 20,
"DefaultView": "week",
"ShowAllDayPanel": true,
"CellDuration": 30,
"FirstDayOfWeek": 1,
"CrossScrollingEnabled": false,
"AllowResizing": false,
"AllowDragging": false,
"AllowDeleting": false,
"AllowEditing": false,
"AllowAdding": false
},
"TodoOptionDto": {
"TitleExpr": null,
"StatusExpr": null,
"DescriptionExpr": null,
"AnalysisExpr": null,
"DueDateExpr": null,
"TagExpr": null,
"AssigneeExpr": null,
"PriorityExpr": null,
"CompletedExpr": null,
"OrderExpr": null,
"TimesheetExpr": null,
"SubTaskExpr": null,
"StatusOrder": null,
"AllowDragging": true
},
"PagerOptionDto": {
"Visible": true,
"ShowPageSizeSelector": true,
"ShowInfo": false,
"ShowNavigationButtons": true,
"AllowedPageSizes": "10,20,50,100",
"InfoText": "Page {0} of {1} ({2} items)",
"DisplayMode": "adaptive",
"ScrollingMode": "standard",
"LoadPanelEnabled": "auto",
"LoadPanelText": "Loading..."
},
"EditingOptionDto": {
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
"AllowDetail": false,
"AllowDeleting": false,
"AllowAllDeleting": false,
"AllowAdding": false,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
"SelectTextOnEditStart": false,
"StartEditAction": "click",
"EditColumnName": null,
"Popup": {
"Title": "App.Prj.ProjectInnovation.Title",
"ShowTitle": true,
"Width": 400,
"Height": 200,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
"DragEnabled": true,
"RestorePosition": true,
"Position": "center"
},
"SendOnlyChangedFormValuesUpdate": false,
"AddPageUrl": null,
"AddDialogName": null,
"AddDialogParameters": null
},
"EditingFormDto": [
{
"Order": 1,
"ItemType": "group",
"Caption": "",
"ColCount": 1,
"ColSpan": 1
}
],
"PermissionDto": {
"C": "App.Prj.ProjectInnovation.Create",
"R": "App.Prj.ProjectInnovation",
"U": "App.Prj.ProjectInnovation.Update",
"D": "App.Prj.ProjectInnovation.Delete",
"E": "App.Prj.ProjectInnovation.Export",
"I": "App.Prj.ProjectInnovation.Import",
"N": "App.Prj.ProjectInnovation.Note"
},
"CommandColumnDto": [],
"StateStoringDto": {
"Enabled": true,
"Type": "custom",
"StorageKey": "listFormGridStorage-App.Prj.ProjectInnovation",
"SavingTimeout": 5000
},
"CustomJsSources": [],
"CustomStyleSources": [],
"UpdateServiceAddress": "list-form-data/update",
"InsertServiceAddress": "list-form-data/insert",
"DeleteServiceAddress": "list-form-data/delete",
"IsTenant": true,
"IsBranch": false,
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
"ShowNote": false,
"SubFormsListFormType": "Form",
"SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
"Card": true,
"Pivot": true,
"Chart": true,
"Tree": false,
"Gantt": false,
"Scheduler": false,
"Todo": false,
"DefaultLayout": "grid"
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
"ApprovalDateFieldName": null,
"ApprovalStatusFieldName": null,
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
"Criteria": []
},
"UserId": null,
"RoleId": null,
"CommonDto": {
"AdjustOnZoom": true,
"ContainerBackgroundColor": "#FFFFFF",
"Palette": "Material",
"PaletteExtensionMode": "blend",
"DefaultPane": null,
"Disabled": false,
"Theme": "generic.light"
},
"AdaptivelayoutDto": {
"Height": 80,
"Width": 80,
"KeepLabels": true
},
"AnimationDto": {
"Duration": 1000,
"Easing": "easeOutCubic",
"Enabled": true,
"MaxPointCountSupported": 300
},
"AnnotationsDto": [],
"ArgumentAxisDto": {
"ArgumentType": null,
"AggregationInterval": null,
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"HoverMode": "none",
"Label": {
"DisplayMode": "standard",
"RotationAngle": 90,
"OverlappingBehavior": "hide"
},
"Position": "bottom",
"Title": null,
"Visible": true,
"Width": 1,
"WorkdaysOnly": false
},
"CommonAnnotationSettingsDto": {
"Argument": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Description": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Height": -1,
"Image": null,
"OffsetX": -1,
"OffsetY": -1,
"PaddingLeftRight": 10,
"PaddingTopBottom": 10,
"Series": null,
"Text": null,
"TooltipEnabled": true,
"Type": null,
"Value": null,
"Width": 0,
"WordWrap": "normal",
"X": 0,
"Y": 0
},
"CommonAxisSettingsDto": {
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"Title": null,
"Visible": true,
"Width": 1
},
"CommonPaneSettingsDto": {
"BackgroundColor": null
},
"CommonSeriesSettingsDto": {
"ArgumentField": "arg",
"Axis": null,
"BarOverlapGroup": null,
"BarPadding": 0,
"BarWidth": 0,
"Color": null,
"CornerRadius": 0,
"DashStyle": "solid",
"IgnoreEmptyPoints": false,
"Pane": null,
"RangeValue1Field": "val1",
"RangeValue2Field": "val2",
"SelectionMode": "none",
"ShowInLegend": true,
"Type": null,
"ValueField": null,
"Visible": true,
"Width": 2,
"Label": null
},
"CrosshairDto": {
"Color": "#f05b41",
"DashStyle": "dot",
"Enabled": false,
"Width": 1,
"HorizontalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
},
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"VerticalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
}
},
"ExportDto": {
"BackgroundColor": "#FFFFFF",
"Enabled": true,
"AllowExportSelectedData": false,
"Margin": 10,
"PrintingEnabled": true
},
"LegendDto": {
"BackgroundColor": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"ColumnCount": 0,
"Orientation": "vertical",
"Position": "outside",
"RowCount": 0,
"Title": null,
"Visible": true
},
"MarginDto": {
"Bottom": 0,
"Left": 0,
"Right": 0,
"Top": 0
},
"PanesDto": [],
"ScrollBarDto": {
"Color": "gray",
"Offset": 5,
"Position": "top",
"Visible": false,
"Width": 10
},
"SeriesDto": [],
"SizeDto": {
"UseSize": false,
"Width": 400,
"Height": 200
},
"TitleDto": {
"Text": null,
"VerticalAlignment": "top",
"HorizontalAlignment": "center",
"Subtitle": null,
"TextOverflow": "ellipsis",
"WordWrap": null
},
"TooltipDto": {
"ArgumentFormat": null,
"ArrowLength": 10,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Enabled": false,
"Font": {
"Color": "#000000",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Format": null,
"Location": "center",
"PaddingLeftRight": 18,
"PaddingTopBottom": 15,
"Shared": false
},
"ValueAxisDto": [],
"ZoomAndPanDto": {
"AllowMouseWheel": true,
"AllowTouchGestures": true,
"ArgumentAxis": "none",
"DragToZoom": false,
"PanKey": "shift",
"ValueAxis": "none",
"DragBoxStyle": {
"Color": null,
"Opacity": 0
}
},
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
"Fields": [
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectInnovation",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 1,
"SourceDbType": 9,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectInnovation.Create",
"R": "App.Prj.ProjectInnovation",
"U": "App.Prj.ProjectInnovation.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectInnovation",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Innovation",
"CaptionName": "App.Listform.ListformField.Innovation",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectInnovation.Create",
"R": "App.Prj.ProjectInnovation",
"U": "App.Prj.ProjectInnovation.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": 1,
"EditGroupOrderNo": 1,
"EditorType2": "dxHtmlEditor",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
"IsCreatedField": true,
"InsertedRecords": {
"LanguageKeys": [
"App.Prj.ProjectInnovation",
"App.Prj.ProjectInnovation.Title",
"App.Prj.ProjectInnovation.Desc",
"App.Listform.ListformField.Innovation"
],
"PermissionGroupNames": [],
"PermissionNames": [
"App.Prj.ProjectInnovation",
"App.Prj.ProjectInnovation.Create",
"App.Prj.ProjectInnovation.Update",
"App.Prj.ProjectInnovation.Delete",
"App.Prj.ProjectInnovation.Export",
"App.Prj.ProjectInnovation.Import",
"App.Prj.ProjectInnovation.Note"
],
"MenuCodes": [],
"DataSourceCodes": [],
"ModuleIds": []
},
"DevRequest": {
"Id": "94639b65-1bb7-454a-ae73-3e1c5c9fe23a",
"Title": "Proje Modülü"
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,917 @@
{
"Wizard": {
"ComponentKind": 0,
"WizardName": "ProjectNeeds",
"WizardCode": "App.Prj.ProjectNeeds",
"SeededAt": "2026-10-08T07:43:02.4814879Z",
"CustomComponentName": null,
"PermissionGroupName": "App.Prj",
"ModuleId": "Prj",
"Menu": {
"MenuParentCode": null,
"MenuParentIcon": null,
"CreateMenu": false,
"MenuCode": "App.Prj.ProjectNeeds",
"MenuOrder": 0,
"MenuUrl": "/admin/list/App.Prj.ProjectNeeds",
"MenuIcon": "FcIdea"
},
"Language": {
"MenuParentEn": null,
"MenuParentTr": null,
"PermissionGroupEn": "Project Management",
"PermissionGroupTr": "Proje Yönetimi",
"MenuEn": "Needs",
"MenuTr": "İhtiyaçlar",
"TitleEn": "Needs",
"TitleTr": "İhtiyaçlar",
"DescEn": "Needs — the problems and needs that led to the project, written in a rich HTML editor.\nWhere: Project Management › Projects › Needs tab.\nFields: Needs (HTML).\nEdits the same project record as the main card; there is no separate table.",
"DescTr": "İhtiyaçlar — projeyi doğuran sorun ve ihtiyaçlar; HTML editörle yazılır.\nNerede: Proje Yönetimi › Projeler ekranının İhtiyaçlar sekmesi.\nAlanlar: İhtiyaçlar (HTML).\nAna kartla aynı proje kaydını düzenler; ayrı tablo yoktur."
},
"Groups": [
{
"Items": [
{
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"En": "Id",
"Tr": "Kimlik"
},
{
"FieldName": "Needs",
"CaptionName": "App.Listform.ListformField.Needs",
"En": "Needs",
"Tr": "İhtiyaçlar"
}
]
}
]
},
"ListForm": {
"EditType": null,
"DataSourceCode": "Default",
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
"SelectCommand": "Prj_T_Project",
"SelectCommandType": 1,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prj_T_Project\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@ID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"InsertCommand": null,
"InsertBeforeCommand": null,
"InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
"FieldDbType": 6,
"Value": "@NOW",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "CreatorId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "IsDeleted",
"FieldDbType": 3,
"Value": "false",
"CustomValueType": 1,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@NEWID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
"UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [],
"FormFieldsDefaultValueDto": [],
"WidgetsDto": [],
"ExtraFilterEditDto": [],
"ListFormCode": "App.Prj.ProjectNeeds",
"CultureName": "en",
"Name": "App.Prj.ProjectNeeds",
"KeyFieldName": "Id",
"Title": "App.Prj.ProjectNeeds.Title",
"SortMode": "single",
"PageSize": 10,
"Width": 0,
"Height": 0,
"FullHeight": false,
"Description": "App.Prj.ProjectNeeds.Desc",
"FilterRowDto": {
"Visible": true,
"ApplyFilter": "auto",
"AllowUserUiFilterSave": true
},
"RowDto": {
"RowHeight": "auto",
"WhiteSpace": "normal",
"OverflowWrap": "break-word"
},
"HeaderFilterDto": {
"Visible": true,
"AllowSearch": false,
"Height": 325,
"SearchTimeout": 500,
"Width": 252
},
"FilterPanelDto": {
"Visible": false,
"Texts": null,
"FilterEnabled": false,
"CustomizeText": null
},
"SearchPanelDto": {
"Visible": true,
"Width": 160
},
"GroupPanelDto": {
"Visible": true,
"AutoExpandAll": false
},
"SelectionDto": {
"Mode": "none",
"AllowSelectAll": false,
"SelectAllMode": "allPages",
"ShowCheckBoxesMode": "always"
},
"ColumnOptionDto": {
"ShowBorders": true,
"ShowRowLines": true,
"ShowColumnLines": false,
"RowAlternationEnabled": true,
"AllowColumnReordering": true,
"AllowColumnResizing": true,
"ColumnResizingMode": "widget",
"ColumnAutoWidth": true,
"RtlEnabled": false,
"ColumnFixingEnabled": true,
"ColumnChooserEnabled": true,
"ColumnChooserMode": "dragAndDrop",
"HoverStateEnabled": false,
"ColumnHidingEnabled": true,
"FocusedRowEnabled": true,
"ShowColumnHeaders": true
},
"PivotOptionDto": {
"ColumnChooserEnabled": false,
"AllowFieldDragging": true,
"ShowFieldPanel": true,
"ShowDataFields": true,
"ShowColumnFields": true,
"ShowRowFields": true,
"ShowFilterFields": true,
"ShowChart": false,
"ChartHeight": 320,
"ChartCommonSeriesType": "bar"
},
"TreeOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null
},
"GanttOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"ScaleType": "weeks",
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null,
"EditingEnabled": false,
"AllowTaskAdding": false,
"AllowTaskUpdating": false,
"AllowTaskResourceUpdating": false,
"AllowTaskDeleting": false,
"AllowDependencyAdding": false,
"AllowDependencyDeleting": false,
"AllowResourceAdding": false,
"AllowResourceUpdating": false,
"AllowResourceDeleting": false
},
"SchedulerOptionDto": {
"TextExpr": null,
"UserNameExpr": null,
"DescriptionExpr": null,
"StartDateExpr": null,
"EndDateExpr": null,
"AllDayExpr": null,
"RecurrenceRuleExpr": null,
"RecurrenceExceptionExpr": null,
"StartDayHour": 8,
"EndDayHour": 20,
"DefaultView": "week",
"ShowAllDayPanel": true,
"CellDuration": 30,
"FirstDayOfWeek": 1,
"CrossScrollingEnabled": false,
"AllowResizing": false,
"AllowDragging": false,
"AllowDeleting": false,
"AllowEditing": false,
"AllowAdding": false
},
"TodoOptionDto": {
"TitleExpr": null,
"StatusExpr": null,
"DescriptionExpr": null,
"AnalysisExpr": null,
"DueDateExpr": null,
"TagExpr": null,
"AssigneeExpr": null,
"PriorityExpr": null,
"CompletedExpr": null,
"OrderExpr": null,
"TimesheetExpr": null,
"SubTaskExpr": null,
"StatusOrder": null,
"AllowDragging": true
},
"PagerOptionDto": {
"Visible": true,
"ShowPageSizeSelector": true,
"ShowInfo": false,
"ShowNavigationButtons": true,
"AllowedPageSizes": "10,20,50,100",
"InfoText": "Page {0} of {1} ({2} items)",
"DisplayMode": "adaptive",
"ScrollingMode": "standard",
"LoadPanelEnabled": "auto",
"LoadPanelText": "Loading..."
},
"EditingOptionDto": {
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
"AllowDetail": false,
"AllowDeleting": false,
"AllowAllDeleting": false,
"AllowAdding": false,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
"SelectTextOnEditStart": false,
"StartEditAction": "click",
"EditColumnName": null,
"Popup": {
"Title": "App.Prj.ProjectNeeds.Title",
"ShowTitle": true,
"Width": 400,
"Height": 200,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
"DragEnabled": true,
"RestorePosition": true,
"Position": "center"
},
"SendOnlyChangedFormValuesUpdate": false,
"AddPageUrl": null,
"AddDialogName": null,
"AddDialogParameters": null
},
"EditingFormDto": [
{
"Order": 1,
"ItemType": "group",
"Caption": "",
"ColCount": 1,
"ColSpan": 1
}
],
"PermissionDto": {
"C": "App.Prj.ProjectNeeds.Create",
"R": "App.Prj.ProjectNeeds",
"U": "App.Prj.ProjectNeeds.Update",
"D": "App.Prj.ProjectNeeds.Delete",
"E": "App.Prj.ProjectNeeds.Export",
"I": "App.Prj.ProjectNeeds.Import",
"N": "App.Prj.ProjectNeeds.Note"
},
"CommandColumnDto": [],
"StateStoringDto": {
"Enabled": true,
"Type": "custom",
"StorageKey": "listFormGridStorage-App.Prj.ProjectNeeds",
"SavingTimeout": 5000
},
"CustomJsSources": [],
"CustomStyleSources": [],
"UpdateServiceAddress": "list-form-data/update",
"InsertServiceAddress": "list-form-data/insert",
"DeleteServiceAddress": "list-form-data/delete",
"IsTenant": true,
"IsBranch": false,
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
"ShowNote": false,
"SubFormsListFormType": "Form",
"SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
"Card": true,
"Pivot": true,
"Chart": true,
"Tree": false,
"Gantt": false,
"Scheduler": false,
"Todo": false,
"DefaultLayout": "grid"
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
"ApprovalDateFieldName": null,
"ApprovalStatusFieldName": null,
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
"Criteria": []
},
"UserId": null,
"RoleId": null,
"CommonDto": {
"AdjustOnZoom": true,
"ContainerBackgroundColor": "#FFFFFF",
"Palette": "Material",
"PaletteExtensionMode": "blend",
"DefaultPane": null,
"Disabled": false,
"Theme": "generic.light"
},
"AdaptivelayoutDto": {
"Height": 80,
"Width": 80,
"KeepLabels": true
},
"AnimationDto": {
"Duration": 1000,
"Easing": "easeOutCubic",
"Enabled": true,
"MaxPointCountSupported": 300
},
"AnnotationsDto": [],
"ArgumentAxisDto": {
"ArgumentType": null,
"AggregationInterval": null,
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"HoverMode": "none",
"Label": {
"DisplayMode": "standard",
"RotationAngle": 90,
"OverlappingBehavior": "hide"
},
"Position": "bottom",
"Title": null,
"Visible": true,
"Width": 1,
"WorkdaysOnly": false
},
"CommonAnnotationSettingsDto": {
"Argument": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Description": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Height": -1,
"Image": null,
"OffsetX": -1,
"OffsetY": -1,
"PaddingLeftRight": 10,
"PaddingTopBottom": 10,
"Series": null,
"Text": null,
"TooltipEnabled": true,
"Type": null,
"Value": null,
"Width": 0,
"WordWrap": "normal",
"X": 0,
"Y": 0
},
"CommonAxisSettingsDto": {
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"Title": null,
"Visible": true,
"Width": 1
},
"CommonPaneSettingsDto": {
"BackgroundColor": null
},
"CommonSeriesSettingsDto": {
"ArgumentField": "arg",
"Axis": null,
"BarOverlapGroup": null,
"BarPadding": 0,
"BarWidth": 0,
"Color": null,
"CornerRadius": 0,
"DashStyle": "solid",
"IgnoreEmptyPoints": false,
"Pane": null,
"RangeValue1Field": "val1",
"RangeValue2Field": "val2",
"SelectionMode": "none",
"ShowInLegend": true,
"Type": null,
"ValueField": null,
"Visible": true,
"Width": 2,
"Label": null
},
"CrosshairDto": {
"Color": "#f05b41",
"DashStyle": "dot",
"Enabled": false,
"Width": 1,
"HorizontalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
},
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"VerticalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
}
},
"ExportDto": {
"BackgroundColor": "#FFFFFF",
"Enabled": true,
"AllowExportSelectedData": false,
"Margin": 10,
"PrintingEnabled": true
},
"LegendDto": {
"BackgroundColor": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"ColumnCount": 0,
"Orientation": "vertical",
"Position": "outside",
"RowCount": 0,
"Title": null,
"Visible": true
},
"MarginDto": {
"Bottom": 0,
"Left": 0,
"Right": 0,
"Top": 0
},
"PanesDto": [],
"ScrollBarDto": {
"Color": "gray",
"Offset": 5,
"Position": "top",
"Visible": false,
"Width": 10
},
"SeriesDto": [],
"SizeDto": {
"UseSize": false,
"Width": 400,
"Height": 200
},
"TitleDto": {
"Text": null,
"VerticalAlignment": "top",
"HorizontalAlignment": "center",
"Subtitle": null,
"TextOverflow": "ellipsis",
"WordWrap": null
},
"TooltipDto": {
"ArgumentFormat": null,
"ArrowLength": 10,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Enabled": false,
"Font": {
"Color": "#000000",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Format": null,
"Location": "center",
"PaddingLeftRight": 18,
"PaddingTopBottom": 15,
"Shared": false
},
"ValueAxisDto": [],
"ZoomAndPanDto": {
"AllowMouseWheel": true,
"AllowTouchGestures": true,
"ArgumentAxis": "none",
"DragToZoom": false,
"PanKey": "shift",
"ValueAxis": "none",
"DragBoxStyle": {
"Color": null,
"Opacity": 0
}
},
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
"Fields": [
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectNeeds",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 1,
"SourceDbType": 9,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectNeeds.Create",
"R": "App.Prj.ProjectNeeds",
"U": "App.Prj.ProjectNeeds.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectNeeds",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Needs",
"CaptionName": "App.Listform.ListformField.Needs",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectNeeds.Create",
"R": "App.Prj.ProjectNeeds",
"U": "App.Prj.ProjectNeeds.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": 1,
"EditGroupOrderNo": 1,
"EditorType2": "dxHtmlEditor",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
"IsCreatedField": true,
"InsertedRecords": {
"LanguageKeys": [
"App.Prj.ProjectNeeds",
"App.Prj.ProjectNeeds.Title",
"App.Prj.ProjectNeeds.Desc",
"App.Listform.ListformField.Needs"
],
"PermissionGroupNames": [],
"PermissionNames": [
"App.Prj.ProjectNeeds",
"App.Prj.ProjectNeeds.Create",
"App.Prj.ProjectNeeds.Update",
"App.Prj.ProjectNeeds.Delete",
"App.Prj.ProjectNeeds.Export",
"App.Prj.ProjectNeeds.Import",
"App.Prj.ProjectNeeds.Note"
],
"MenuCodes": [],
"DataSourceCodes": [],
"ModuleIds": []
},
"DevRequest": {
"Id": "94639b65-1bb7-454a-ae73-3e1c5c9fe23a",
"Title": "Proje Modülü"
}
}

View file

@ -0,0 +1,917 @@
{
"Wizard": {
"ComponentKind": 0,
"WizardName": "ProjectOutputs",
"WizardCode": "App.Prj.ProjectOutputs",
"SeededAt": "2026-10-08T07:43:43.2077701Z",
"CustomComponentName": null,
"PermissionGroupName": "App.Prj",
"ModuleId": "Prj",
"Menu": {
"MenuParentCode": null,
"MenuParentIcon": null,
"CreateMenu": false,
"MenuCode": "App.Prj.ProjectOutputs",
"MenuOrder": 0,
"MenuUrl": "/admin/list/App.Prj.ProjectOutputs",
"MenuIcon": "FcApproval"
},
"Language": {
"MenuParentEn": null,
"MenuParentTr": null,
"PermissionGroupEn": "Project Management",
"PermissionGroupTr": "Proje Yönetimi",
"MenuEn": "Outputs and Benefits",
"MenuTr": "Çıktı ve Faydaları",
"TitleEn": "Outputs and Benefits",
"TitleTr": "Çıktı ve Faydaları",
"DescEn": "Outputs and Benefits — expected outputs of the project and the benefits they bring, written in a rich HTML editor.\nWhere: Project Management › Projects › Outputs and Benefits tab.\nFields: Outputs (HTML).\nEdits the same project record as the main card; there is no separate table.",
"DescTr": "Çıktı ve Faydaları — projenin beklenen çıktıları ve sağlayacağı faydalar; HTML editörle yazılır.\nNerede: Proje Yönetimi › Projeler ekranının Çıktı ve Faydaları sekmesi.\nAlanlar: Çıktı ve Faydalar (HTML).\nAna kartla aynı proje kaydını düzenler; ayrı tablo yoktur."
},
"Groups": [
{
"Items": [
{
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"En": "Id",
"Tr": "Kimlik"
},
{
"FieldName": "Outputs",
"CaptionName": "App.Listform.ListformField.Outputs",
"En": "Outputs and Benefits",
"Tr": "Çıktı ve Faydalar"
}
]
}
]
},
"ListForm": {
"EditType": null,
"DataSourceCode": "Default",
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
"SelectCommand": "Prj_T_Project",
"SelectCommandType": 1,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prj_T_Project\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@ID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"InsertCommand": null,
"InsertBeforeCommand": null,
"InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
"FieldDbType": 6,
"Value": "@NOW",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "CreatorId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "IsDeleted",
"FieldDbType": 3,
"Value": "false",
"CustomValueType": 1,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@NEWID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
"UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [],
"FormFieldsDefaultValueDto": [],
"WidgetsDto": [],
"ExtraFilterEditDto": [],
"ListFormCode": "App.Prj.ProjectOutputs",
"CultureName": "en",
"Name": "App.Prj.ProjectOutputs",
"KeyFieldName": "Id",
"Title": "App.Prj.ProjectOutputs.Title",
"SortMode": "single",
"PageSize": 10,
"Width": 0,
"Height": 0,
"FullHeight": false,
"Description": "App.Prj.ProjectOutputs.Desc",
"FilterRowDto": {
"Visible": true,
"ApplyFilter": "auto",
"AllowUserUiFilterSave": true
},
"RowDto": {
"RowHeight": "auto",
"WhiteSpace": "normal",
"OverflowWrap": "break-word"
},
"HeaderFilterDto": {
"Visible": true,
"AllowSearch": false,
"Height": 325,
"SearchTimeout": 500,
"Width": 252
},
"FilterPanelDto": {
"Visible": false,
"Texts": null,
"FilterEnabled": false,
"CustomizeText": null
},
"SearchPanelDto": {
"Visible": true,
"Width": 160
},
"GroupPanelDto": {
"Visible": true,
"AutoExpandAll": false
},
"SelectionDto": {
"Mode": "none",
"AllowSelectAll": false,
"SelectAllMode": "allPages",
"ShowCheckBoxesMode": "always"
},
"ColumnOptionDto": {
"ShowBorders": true,
"ShowRowLines": true,
"ShowColumnLines": false,
"RowAlternationEnabled": true,
"AllowColumnReordering": true,
"AllowColumnResizing": true,
"ColumnResizingMode": "widget",
"ColumnAutoWidth": true,
"RtlEnabled": false,
"ColumnFixingEnabled": true,
"ColumnChooserEnabled": true,
"ColumnChooserMode": "dragAndDrop",
"HoverStateEnabled": false,
"ColumnHidingEnabled": true,
"FocusedRowEnabled": true,
"ShowColumnHeaders": true
},
"PivotOptionDto": {
"ColumnChooserEnabled": false,
"AllowFieldDragging": true,
"ShowFieldPanel": true,
"ShowDataFields": true,
"ShowColumnFields": true,
"ShowRowFields": true,
"ShowFilterFields": true,
"ShowChart": false,
"ChartHeight": 320,
"ChartCommonSeriesType": "bar"
},
"TreeOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null
},
"GanttOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"ScaleType": "weeks",
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null,
"EditingEnabled": false,
"AllowTaskAdding": false,
"AllowTaskUpdating": false,
"AllowTaskResourceUpdating": false,
"AllowTaskDeleting": false,
"AllowDependencyAdding": false,
"AllowDependencyDeleting": false,
"AllowResourceAdding": false,
"AllowResourceUpdating": false,
"AllowResourceDeleting": false
},
"SchedulerOptionDto": {
"TextExpr": null,
"UserNameExpr": null,
"DescriptionExpr": null,
"StartDateExpr": null,
"EndDateExpr": null,
"AllDayExpr": null,
"RecurrenceRuleExpr": null,
"RecurrenceExceptionExpr": null,
"StartDayHour": 8,
"EndDayHour": 20,
"DefaultView": "week",
"ShowAllDayPanel": true,
"CellDuration": 30,
"FirstDayOfWeek": 1,
"CrossScrollingEnabled": false,
"AllowResizing": false,
"AllowDragging": false,
"AllowDeleting": false,
"AllowEditing": false,
"AllowAdding": false
},
"TodoOptionDto": {
"TitleExpr": null,
"StatusExpr": null,
"DescriptionExpr": null,
"AnalysisExpr": null,
"DueDateExpr": null,
"TagExpr": null,
"AssigneeExpr": null,
"PriorityExpr": null,
"CompletedExpr": null,
"OrderExpr": null,
"TimesheetExpr": null,
"SubTaskExpr": null,
"StatusOrder": null,
"AllowDragging": true
},
"PagerOptionDto": {
"Visible": true,
"ShowPageSizeSelector": true,
"ShowInfo": false,
"ShowNavigationButtons": true,
"AllowedPageSizes": "10,20,50,100",
"InfoText": "Page {0} of {1} ({2} items)",
"DisplayMode": "adaptive",
"ScrollingMode": "standard",
"LoadPanelEnabled": "auto",
"LoadPanelText": "Loading..."
},
"EditingOptionDto": {
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
"AllowDetail": false,
"AllowDeleting": false,
"AllowAllDeleting": false,
"AllowAdding": false,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
"SelectTextOnEditStart": false,
"StartEditAction": "click",
"EditColumnName": null,
"Popup": {
"Title": "App.Prj.ProjectOutputs.Title",
"ShowTitle": true,
"Width": 400,
"Height": 200,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
"DragEnabled": true,
"RestorePosition": true,
"Position": "center"
},
"SendOnlyChangedFormValuesUpdate": false,
"AddPageUrl": null,
"AddDialogName": null,
"AddDialogParameters": null
},
"EditingFormDto": [
{
"Order": 1,
"ItemType": "group",
"Caption": "",
"ColCount": 1,
"ColSpan": 1
}
],
"PermissionDto": {
"C": "App.Prj.ProjectOutputs.Create",
"R": "App.Prj.ProjectOutputs",
"U": "App.Prj.ProjectOutputs.Update",
"D": "App.Prj.ProjectOutputs.Delete",
"E": "App.Prj.ProjectOutputs.Export",
"I": "App.Prj.ProjectOutputs.Import",
"N": "App.Prj.ProjectOutputs.Note"
},
"CommandColumnDto": [],
"StateStoringDto": {
"Enabled": true,
"Type": "custom",
"StorageKey": "listFormGridStorage-App.Prj.ProjectOutputs",
"SavingTimeout": 5000
},
"CustomJsSources": [],
"CustomStyleSources": [],
"UpdateServiceAddress": "list-form-data/update",
"InsertServiceAddress": "list-form-data/insert",
"DeleteServiceAddress": "list-form-data/delete",
"IsTenant": true,
"IsBranch": false,
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
"ShowNote": false,
"SubFormsListFormType": "Form",
"SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
"Card": true,
"Pivot": true,
"Chart": true,
"Tree": false,
"Gantt": false,
"Scheduler": false,
"Todo": false,
"DefaultLayout": "grid"
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
"ApprovalDateFieldName": null,
"ApprovalStatusFieldName": null,
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
"Criteria": []
},
"UserId": null,
"RoleId": null,
"CommonDto": {
"AdjustOnZoom": true,
"ContainerBackgroundColor": "#FFFFFF",
"Palette": "Material",
"PaletteExtensionMode": "blend",
"DefaultPane": null,
"Disabled": false,
"Theme": "generic.light"
},
"AdaptivelayoutDto": {
"Height": 80,
"Width": 80,
"KeepLabels": true
},
"AnimationDto": {
"Duration": 1000,
"Easing": "easeOutCubic",
"Enabled": true,
"MaxPointCountSupported": 300
},
"AnnotationsDto": [],
"ArgumentAxisDto": {
"ArgumentType": null,
"AggregationInterval": null,
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"HoverMode": "none",
"Label": {
"DisplayMode": "standard",
"RotationAngle": 90,
"OverlappingBehavior": "hide"
},
"Position": "bottom",
"Title": null,
"Visible": true,
"Width": 1,
"WorkdaysOnly": false
},
"CommonAnnotationSettingsDto": {
"Argument": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Description": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Height": -1,
"Image": null,
"OffsetX": -1,
"OffsetY": -1,
"PaddingLeftRight": 10,
"PaddingTopBottom": 10,
"Series": null,
"Text": null,
"TooltipEnabled": true,
"Type": null,
"Value": null,
"Width": 0,
"WordWrap": "normal",
"X": 0,
"Y": 0
},
"CommonAxisSettingsDto": {
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"Title": null,
"Visible": true,
"Width": 1
},
"CommonPaneSettingsDto": {
"BackgroundColor": null
},
"CommonSeriesSettingsDto": {
"ArgumentField": "arg",
"Axis": null,
"BarOverlapGroup": null,
"BarPadding": 0,
"BarWidth": 0,
"Color": null,
"CornerRadius": 0,
"DashStyle": "solid",
"IgnoreEmptyPoints": false,
"Pane": null,
"RangeValue1Field": "val1",
"RangeValue2Field": "val2",
"SelectionMode": "none",
"ShowInLegend": true,
"Type": null,
"ValueField": null,
"Visible": true,
"Width": 2,
"Label": null
},
"CrosshairDto": {
"Color": "#f05b41",
"DashStyle": "dot",
"Enabled": false,
"Width": 1,
"HorizontalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
},
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"VerticalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
}
},
"ExportDto": {
"BackgroundColor": "#FFFFFF",
"Enabled": true,
"AllowExportSelectedData": false,
"Margin": 10,
"PrintingEnabled": true
},
"LegendDto": {
"BackgroundColor": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"ColumnCount": 0,
"Orientation": "vertical",
"Position": "outside",
"RowCount": 0,
"Title": null,
"Visible": true
},
"MarginDto": {
"Bottom": 0,
"Left": 0,
"Right": 0,
"Top": 0
},
"PanesDto": [],
"ScrollBarDto": {
"Color": "gray",
"Offset": 5,
"Position": "top",
"Visible": false,
"Width": 10
},
"SeriesDto": [],
"SizeDto": {
"UseSize": false,
"Width": 400,
"Height": 200
},
"TitleDto": {
"Text": null,
"VerticalAlignment": "top",
"HorizontalAlignment": "center",
"Subtitle": null,
"TextOverflow": "ellipsis",
"WordWrap": null
},
"TooltipDto": {
"ArgumentFormat": null,
"ArrowLength": 10,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Enabled": false,
"Font": {
"Color": "#000000",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Format": null,
"Location": "center",
"PaddingLeftRight": 18,
"PaddingTopBottom": 15,
"Shared": false
},
"ValueAxisDto": [],
"ZoomAndPanDto": {
"AllowMouseWheel": true,
"AllowTouchGestures": true,
"ArgumentAxis": "none",
"DragToZoom": false,
"PanKey": "shift",
"ValueAxis": "none",
"DragBoxStyle": {
"Color": null,
"Opacity": 0
}
},
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
"Fields": [
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectOutputs",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 1,
"SourceDbType": 9,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectOutputs.Create",
"R": "App.Prj.ProjectOutputs",
"U": "App.Prj.ProjectOutputs.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectOutputs",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Outputs",
"CaptionName": "App.Listform.ListformField.Outputs",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectOutputs.Create",
"R": "App.Prj.ProjectOutputs",
"U": "App.Prj.ProjectOutputs.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": "left",
"Format": null,
"EditOrderNo": 1,
"EditGroupOrderNo": 1,
"EditorType2": "dxHtmlEditor",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
"IsCreatedField": true,
"InsertedRecords": {
"LanguageKeys": [
"App.Prj.ProjectOutputs",
"App.Prj.ProjectOutputs.Title",
"App.Prj.ProjectOutputs.Desc",
"App.Listform.ListformField.Outputs"
],
"PermissionGroupNames": [],
"PermissionNames": [
"App.Prj.ProjectOutputs",
"App.Prj.ProjectOutputs.Create",
"App.Prj.ProjectOutputs.Update",
"App.Prj.ProjectOutputs.Delete",
"App.Prj.ProjectOutputs.Export",
"App.Prj.ProjectOutputs.Import",
"App.Prj.ProjectOutputs.Note"
],
"MenuCodes": [],
"DataSourceCodes": [],
"ModuleIds": []
},
"DevRequest": {
"Id": "94639b65-1bb7-454a-ae73-3e1c5c9fe23a",
"Title": "Proje Modülü"
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,917 @@
{
"Wizard": {
"ComponentKind": 0,
"WizardName": "ProjectSummary",
"WizardCode": "App.Prj.ProjectSummary",
"SeededAt": "2026-10-08T07:42:28.4371002Z",
"CustomComponentName": null,
"PermissionGroupName": "App.Prj",
"ModuleId": "Prj",
"Menu": {
"MenuParentCode": null,
"MenuParentIcon": null,
"CreateMenu": false,
"MenuCode": "App.Prj.ProjectSummary",
"MenuOrder": 0,
"MenuUrl": "/admin/list/App.Prj.ProjectSummary",
"MenuIcon": "FcDocument"
},
"Language": {
"MenuParentEn": null,
"MenuParentTr": null,
"PermissionGroupEn": "Project Management",
"PermissionGroupTr": "Proje Yönetimi",
"MenuEn": "Project Summary",
"MenuTr": "Proje Özeti",
"TitleEn": "Project Summary",
"TitleTr": "Proje Özeti",
"DescEn": "Project Summary — the free-text summary of the project written in a rich HTML editor.\nWhere: Project Management › Projects › Project Summary tab.\nFields: Summary (HTML).\nEdits the same project record as the main card; there is no separate table.",
"DescTr": "Proje Özeti — projenin HTML editörle yazılan serbest metin özeti.\nNerede: Proje Yönetimi › Projeler ekranının Proje Özeti sekmesi.\nAlanlar: Özet (HTML).\nAna kartla aynı proje kaydını düzenler; ayrı tablo yoktur."
},
"Groups": [
{
"Items": [
{
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"En": "Id",
"Tr": "Kimlik"
},
{
"FieldName": "Summary",
"CaptionName": "App.Listform.ListformField.ProjectSummary",
"En": "Project Summary",
"Tr": "Proje Özeti"
}
]
}
]
},
"ListForm": {
"EditType": null,
"DataSourceCode": "Default",
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
"SelectCommand": "Prj_T_Project",
"SelectCommandType": 1,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prj_T_Project\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@ID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"InsertCommand": null,
"InsertBeforeCommand": null,
"InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
"FieldDbType": 6,
"Value": "@NOW",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "CreatorId",
"FieldDbType": 9,
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": null
},
{
"FieldName": "IsDeleted",
"FieldDbType": 3,
"Value": "false",
"CustomValueType": 1,
"SqlQuery": null
},
{
"FieldName": "Id",
"FieldDbType": 9,
"Value": "@NEWID",
"CustomValueType": 2,
"SqlQuery": null
}
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
"UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [],
"FormFieldsDefaultValueDto": [],
"WidgetsDto": [],
"ExtraFilterEditDto": [],
"ListFormCode": "App.Prj.ProjectSummary",
"CultureName": "en",
"Name": "App.Prj.ProjectSummary",
"KeyFieldName": "Id",
"Title": "App.Prj.ProjectSummary.Title",
"SortMode": "single",
"PageSize": 10,
"Width": 0,
"Height": 0,
"FullHeight": false,
"Description": "App.Prj.ProjectSummary.Desc",
"FilterRowDto": {
"Visible": true,
"ApplyFilter": "auto",
"AllowUserUiFilterSave": true
},
"RowDto": {
"RowHeight": "auto",
"WhiteSpace": "normal",
"OverflowWrap": "break-word"
},
"HeaderFilterDto": {
"Visible": true,
"AllowSearch": false,
"Height": 325,
"SearchTimeout": 500,
"Width": 252
},
"FilterPanelDto": {
"Visible": false,
"Texts": null,
"FilterEnabled": false,
"CustomizeText": null
},
"SearchPanelDto": {
"Visible": true,
"Width": 160
},
"GroupPanelDto": {
"Visible": true,
"AutoExpandAll": false
},
"SelectionDto": {
"Mode": "none",
"AllowSelectAll": false,
"SelectAllMode": "allPages",
"ShowCheckBoxesMode": "always"
},
"ColumnOptionDto": {
"ShowBorders": true,
"ShowRowLines": true,
"ShowColumnLines": false,
"RowAlternationEnabled": true,
"AllowColumnReordering": true,
"AllowColumnResizing": true,
"ColumnResizingMode": "widget",
"ColumnAutoWidth": true,
"RtlEnabled": false,
"ColumnFixingEnabled": true,
"ColumnChooserEnabled": true,
"ColumnChooserMode": "dragAndDrop",
"HoverStateEnabled": false,
"ColumnHidingEnabled": true,
"FocusedRowEnabled": true,
"ShowColumnHeaders": true
},
"PivotOptionDto": {
"ColumnChooserEnabled": false,
"AllowFieldDragging": true,
"ShowFieldPanel": true,
"ShowDataFields": true,
"ShowColumnFields": true,
"ShowRowFields": true,
"ShowFilterFields": true,
"ShowChart": false,
"ChartHeight": 320,
"ChartCommonSeriesType": "bar"
},
"TreeOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null
},
"GanttOptionDto": {
"KeyExpr": null,
"ParentIdExpr": null,
"HasItemsExpr": null,
"RootValue": null,
"ExpandedRowKeys": [],
"AutoExpandAll": false,
"RecursiveSelection": false,
"TitleExpr": null,
"ScaleType": "weeks",
"StartExpr": null,
"EndExpr": null,
"ProgressExpr": null,
"EditingEnabled": false,
"AllowTaskAdding": false,
"AllowTaskUpdating": false,
"AllowTaskResourceUpdating": false,
"AllowTaskDeleting": false,
"AllowDependencyAdding": false,
"AllowDependencyDeleting": false,
"AllowResourceAdding": false,
"AllowResourceUpdating": false,
"AllowResourceDeleting": false
},
"SchedulerOptionDto": {
"TextExpr": null,
"UserNameExpr": null,
"DescriptionExpr": null,
"StartDateExpr": null,
"EndDateExpr": null,
"AllDayExpr": null,
"RecurrenceRuleExpr": null,
"RecurrenceExceptionExpr": null,
"StartDayHour": 8,
"EndDayHour": 20,
"DefaultView": "week",
"ShowAllDayPanel": true,
"CellDuration": 30,
"FirstDayOfWeek": 1,
"CrossScrollingEnabled": false,
"AllowResizing": false,
"AllowDragging": false,
"AllowDeleting": false,
"AllowEditing": false,
"AllowAdding": false
},
"TodoOptionDto": {
"TitleExpr": null,
"StatusExpr": null,
"DescriptionExpr": null,
"AnalysisExpr": null,
"DueDateExpr": null,
"TagExpr": null,
"AssigneeExpr": null,
"PriorityExpr": null,
"CompletedExpr": null,
"OrderExpr": null,
"TimesheetExpr": null,
"SubTaskExpr": null,
"StatusOrder": null,
"AllowDragging": true
},
"PagerOptionDto": {
"Visible": true,
"ShowPageSizeSelector": true,
"ShowInfo": false,
"ShowNavigationButtons": true,
"AllowedPageSizes": "10,20,50,100",
"InfoText": "Page {0} of {1} ({2} items)",
"DisplayMode": "adaptive",
"ScrollingMode": "standard",
"LoadPanelEnabled": "auto",
"LoadPanelText": "Loading..."
},
"EditingOptionDto": {
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
"AllowDetail": false,
"AllowDeleting": false,
"AllowAllDeleting": false,
"AllowAdding": true,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
"SelectTextOnEditStart": false,
"StartEditAction": "click",
"EditColumnName": null,
"Popup": {
"Title": "App.Prj.ProjectSummary.Title",
"ShowTitle": true,
"Width": 400,
"Height": 200,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
"DragEnabled": true,
"RestorePosition": true,
"Position": "center"
},
"SendOnlyChangedFormValuesUpdate": false,
"AddPageUrl": null,
"AddDialogName": null,
"AddDialogParameters": null
},
"EditingFormDto": [
{
"Order": 1,
"ItemType": "group",
"Caption": "",
"ColCount": 1,
"ColSpan": 1
}
],
"PermissionDto": {
"C": "App.Prj.ProjectSummary.Create",
"R": "App.Prj.ProjectSummary",
"U": "App.Prj.ProjectSummary.Update",
"D": "App.Prj.ProjectSummary.Delete",
"E": "App.Prj.ProjectSummary.Export",
"I": "App.Prj.ProjectSummary.Import",
"N": "App.Prj.ProjectSummary.Note"
},
"CommandColumnDto": [],
"StateStoringDto": {
"Enabled": true,
"Type": "custom",
"StorageKey": "listFormGridStorage-App.Prj.ProjectSummary",
"SavingTimeout": 5000
},
"CustomJsSources": [],
"CustomStyleSources": [],
"UpdateServiceAddress": "list-form-data/update",
"InsertServiceAddress": "list-form-data/insert",
"DeleteServiceAddress": "list-form-data/delete",
"IsTenant": true,
"IsBranch": false,
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
"ShowNote": false,
"SubFormsListFormType": "Form",
"SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
"Card": true,
"Pivot": true,
"Chart": true,
"Tree": false,
"Gantt": false,
"Scheduler": false,
"Todo": false,
"DefaultLayout": "grid"
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
"ApprovalDateFieldName": null,
"ApprovalStatusFieldName": null,
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
"Criteria": []
},
"UserId": null,
"RoleId": null,
"CommonDto": {
"AdjustOnZoom": true,
"ContainerBackgroundColor": "#FFFFFF",
"Palette": "Material",
"PaletteExtensionMode": "blend",
"DefaultPane": null,
"Disabled": false,
"Theme": "generic.light"
},
"AdaptivelayoutDto": {
"Height": 80,
"Width": 80,
"KeepLabels": true
},
"AnimationDto": {
"Duration": 1000,
"Easing": "easeOutCubic",
"Enabled": true,
"MaxPointCountSupported": 300
},
"AnnotationsDto": [],
"ArgumentAxisDto": {
"ArgumentType": null,
"AggregationInterval": null,
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"HoverMode": "none",
"Label": {
"DisplayMode": "standard",
"RotationAngle": 90,
"OverlappingBehavior": "hide"
},
"Position": "bottom",
"Title": null,
"Visible": true,
"Width": 1,
"WorkdaysOnly": false
},
"CommonAnnotationSettingsDto": {
"Argument": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Description": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Height": -1,
"Image": null,
"OffsetX": -1,
"OffsetY": -1,
"PaddingLeftRight": 10,
"PaddingTopBottom": 10,
"Series": null,
"Text": null,
"TooltipEnabled": true,
"Type": null,
"Value": null,
"Width": 0,
"WordWrap": "normal",
"X": 0,
"Y": 0
},
"CommonAxisSettingsDto": {
"Grid": {
"Color": "#d3d3d3",
"Visible": false,
"Width": 1
},
"Title": null,
"Visible": true,
"Width": 1
},
"CommonPaneSettingsDto": {
"BackgroundColor": null
},
"CommonSeriesSettingsDto": {
"ArgumentField": "arg",
"Axis": null,
"BarOverlapGroup": null,
"BarPadding": 0,
"BarWidth": 0,
"Color": null,
"CornerRadius": 0,
"DashStyle": "solid",
"IgnoreEmptyPoints": false,
"Pane": null,
"RangeValue1Field": "val1",
"RangeValue2Field": "val2",
"SelectionMode": "none",
"ShowInLegend": true,
"Type": null,
"ValueField": null,
"Visible": true,
"Width": 2,
"Label": null
},
"CrosshairDto": {
"Color": "#f05b41",
"DashStyle": "dot",
"Enabled": false,
"Width": 1,
"HorizontalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
},
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"VerticalLine": {
"Color": "#f05b41",
"DashStyle": "dot",
"Label": {
"BackgroundColor": "#f05b41",
"CustomizeText": null,
"Font": {
"Color": "#FFFFFF",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Visible": false,
"Format": null
},
"Visible": true,
"Width": 1
}
},
"ExportDto": {
"BackgroundColor": "#FFFFFF",
"Enabled": true,
"AllowExportSelectedData": false,
"Margin": 10,
"PrintingEnabled": true
},
"LegendDto": {
"BackgroundColor": null,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"ColumnCount": 0,
"Orientation": "vertical",
"Position": "outside",
"RowCount": 0,
"Title": null,
"Visible": true
},
"MarginDto": {
"Bottom": 0,
"Left": 0,
"Right": 0,
"Top": 0
},
"PanesDto": [],
"ScrollBarDto": {
"Color": "gray",
"Offset": 5,
"Position": "top",
"Visible": false,
"Width": 10
},
"SeriesDto": [],
"SizeDto": {
"UseSize": false,
"Width": 400,
"Height": 200
},
"TitleDto": {
"Text": null,
"VerticalAlignment": "top",
"HorizontalAlignment": "center",
"Subtitle": null,
"TextOverflow": "ellipsis",
"WordWrap": null
},
"TooltipDto": {
"ArgumentFormat": null,
"ArrowLength": 10,
"Border": {
"Color": "#d3d3d3",
"CornerRadius": 0,
"DashStyle": "solid",
"Visible": false,
"Width": 1
},
"Color": "#ffffff",
"Enabled": false,
"Font": {
"Color": "#000000",
"Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif",
"Size": 12,
"Weight": 400
},
"Format": null,
"Location": "center",
"PaddingLeftRight": 18,
"PaddingTopBottom": 15,
"Shared": false
},
"ValueAxisDto": [],
"ZoomAndPanDto": {
"AllowMouseWheel": true,
"AllowTouchGestures": true,
"ArgumentAxis": "none",
"DragToZoom": false,
"PanKey": "shift",
"ValueAxis": "none",
"DragBoxStyle": {
"Color": null,
"Opacity": 0
}
},
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
"Fields": [
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectSummary",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Id",
"CaptionName": "App.Listform.ListformField.Id",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 1,
"SourceDbType": 9,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectSummary.Create",
"R": "App.Prj.ProjectSummary",
"U": "App.Prj.ProjectSummary.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": null,
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
{
"EditType": null,
"ListFormCode": "App.Prj.ProjectSummary",
"RoleId": null,
"UserId": null,
"ColumnJoinTableDto": {
"JoinType": null,
"TableName": null,
"JoinFieldName": null,
"BaseTableJoinFieldName": null,
"SelectFieldName": null,
"FieldNameAlias": null,
"JoinCondition2": "AND",
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
"FieldName": "Summary",
"CaptionName": "App.Listform.ListformField.ProjectSummary",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
"AllowAdding": true,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
"ColumnFilterDto": {
"AllowFiltering": true,
"FilterOperations": null,
"SelectedFilterOperation": null,
"FilterValue": null
},
"ColumnHeaderDto": {
"AllowHeaderFiltering": true,
"AllowSearch": false,
"DataSource": null,
"DataSourceString": ""
},
"ColumnGroupingDto": {
"AllowGrouping": true,
"GroupIndex": null,
"AutoExpandGroup": false
},
"ColumnCustomizationDto": {
"Fixed": false,
"FixedPosition": "left",
"AllowReordering": true
},
"ColumnTotalSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"ColumnGroupSummaryDto": {
"SummaryType": null,
"ValueFormat": null,
"ShowInGroupFooter": false,
"AlignByColumn": false,
"DisplayFormat": null,
"ShowInColumn": null
},
"LookupDto": {
"DataSourceType": 0,
"ValueExpr": "Key",
"DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": null
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
"C": "App.Prj.ProjectSummary.Create",
"R": "App.Prj.ProjectSummary",
"U": "App.Prj.ProjectSummary.Update",
"E": true,
"I": true
},
"CanRead": false,
"CanCreate": false,
"CanUpdate": false,
"CanExport": false,
"DefaultValue": null,
"DefaultValueType": 0,
"PivotSettingsDto": {
"IsPivot": true,
"Expanded": false,
"SortOrder": "asc",
"Area": "filter",
"Format": null,
"SummaryType": null,
"GroupInterval": "",
"WordWrapEnabled": false
},
"Alignment": null,
"Format": null,
"EditOrderNo": 1,
"EditGroupOrderNo": 1,
"EditorType2": "dxHtmlEditor",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
"EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
"IsCreatedField": true,
"InsertedRecords": {
"LanguageKeys": [
"App.Prj.ProjectSummary",
"App.Prj.ProjectSummary.Title",
"App.Prj.ProjectSummary.Desc",
"App.Listform.ListformField.ProjectSummary"
],
"PermissionGroupNames": [],
"PermissionNames": [
"App.Prj.ProjectSummary",
"App.Prj.ProjectSummary.Create",
"App.Prj.ProjectSummary.Update",
"App.Prj.ProjectSummary.Delete",
"App.Prj.ProjectSummary.Export",
"App.Prj.ProjectSummary.Import",
"App.Prj.ProjectSummary.Note"
],
"MenuCodes": [],
"DataSourceCodes": [],
"ModuleIds": []
},
"DevRequest": {
"Id": "94639b65-1bb7-454a-ae73-3e1c5c9fe23a",
"Title": "Proje Modülü"
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -46,6 +46,13 @@ const validationSchema = Yup.object().shape({
target: Yup.string().nullable(), target: Yup.string().nullable(),
elementId: Yup.string().nullable(), elementId: Yup.string().nullable(),
isDisabled: Yup.boolean(), isDisabled: Yup.boolean(),
// Modül kök menüde tanımlanır; alt menüler kök menünün modülünü taşır.
moduleId: Yup.string()
.nullable()
.when('parentCode', {
is: (parentCode?: string) => !parentCode?.trim(),
then: (schema) => schema.trim().required(),
}),
}) })
const inputClass = 'h-8 text-sm px-2 dark:bg-gray-900 dark:text-gray-100' const inputClass = 'h-8 text-sm px-2 dark:bg-gray-900 dark:text-gray-100'
@ -63,6 +70,7 @@ export interface MenuItemComponentProps {
canIndent?: boolean canIndent?: boolean
canOutdent?: boolean canOutdent?: boolean
permissions: SelectBoxOption[] permissions: SelectBoxOption[]
modules: SelectBoxOption[]
refetch: () => void refetch: () => void
onToggleExpand?: (id: string) => void onToggleExpand?: (id: string) => void
onIndent?: (id: string) => void onIndent?: (id: string) => void
@ -84,6 +92,7 @@ const MenuItemComponentBase: React.FC<MenuItemComponentProps> = ({
canIndent = false, canIndent = false,
canOutdent = false, canOutdent = false,
permissions, permissions,
modules,
refetch, refetch,
onToggleExpand, onToggleExpand,
onIndent, onIndent,
@ -126,8 +135,9 @@ const MenuItemComponentBase: React.FC<MenuItemComponentProps> = ({
target: '', target: '',
isDisabled: false, isDisabled: false,
elementId: '', elementId: '',
moduleId: item.moduleId ?? '',
}), }),
[childCount, item.code], [childCount, item.code, item.moduleId],
) )
const editInitialValues = useMemo<Partial<MenuDto>>( const editInitialValues = useMemo<Partial<MenuDto>>(
@ -144,6 +154,7 @@ const MenuItemComponentBase: React.FC<MenuItemComponentProps> = ({
target: item.target ?? '', target: item.target ?? '',
isDisabled: item.isDisabled ?? false, isDisabled: item.isDisabled ?? false,
elementId: item.elementId ?? '', elementId: item.elementId ?? '',
moduleId: item.moduleId ?? '',
}), }),
[item], [item],
) )
@ -515,6 +526,36 @@ const MenuItemComponentBase: React.FC<MenuItemComponentProps> = ({
</Field> </Field>
</FormItem> </FormItem>
<FormItem
label={`${translate('::App.WizardStep1.ModuleId')}${values.parentCode ? '' : ' *'}`}
className="mb-2"
invalid={Boolean(errors.moduleId && touched.moduleId)}
errorMessage={errors.moduleId as string}
>
{values.parentCode ? (
<Input
disabled
value={values.moduleId ?? ''}
className="h-8 text-sm px-2 bg-gray-100 dark:bg-gray-800 dark:text-gray-300"
/>
) : (
<Field name="moduleId">
{({ field, form }: FieldProps<SelectBoxOption>) => (
<Select
isClearable
maxMenuHeight={220}
menuPortalTarget={document.body}
field={field}
form={form}
options={modules}
value={modules.find((option) => option.value === values.moduleId) ?? null}
onChange={(option) => form.setFieldValue(field.name, option?.value ?? '')}
/>
)}
</Field>
)}
</FormItem>
<FormItem label={translate('::App.Listform.ListformField.CssClass')} className="mb-2"> <FormItem label={translate('::App.Listform.ListformField.CssClass')} className="mb-2">
<Field type="text" name="cssClass" component={Input} className={inputClass} /> <Field type="text" name="cssClass" component={Input} className={inputClass} />
</FormItem> </FormItem>

View file

@ -22,6 +22,7 @@ import { findMenuItem, indentMenuItem, moveMenuItem, outdentMenuItem } from './m
import { MenuItem } from '@/proxy/menus/menu' import { MenuItem } from '@/proxy/menus/menu'
import { PermissionDefinitionRecord } from '@/proxy/admin/models' import { PermissionDefinitionRecord } from '@/proxy/admin/models'
import { getPermissionsList } from '@/services/identity.service' import { getPermissionsList } from '@/services/identity.service'
import { getModules } from '@/services/menu.service'
import { SelectBoxOption } from '@/types/shared' import { SelectBoxOption } from '@/types/shared'
interface SortableMenuTreeProps { interface SortableMenuTreeProps {
@ -72,6 +73,7 @@ export const SortableMenuTree: React.FC<SortableMenuTreeProps> = ({
refetch, refetch,
}) => { }) => {
const [permissions, setPermissions] = useState<SelectBoxOption[]>([]) const [permissions, setPermissions] = useState<SelectBoxOption[]>([])
const [modules, setModules] = useState<SelectBoxOption[]>([])
const [activeItem, setActiveItem] = useState<MenuItem | null>(null) const [activeItem, setActiveItem] = useState<MenuItem | null>(null)
// Filtre açıkken ara düğümler gizli olduğu için sürükle-bırak kapatılır. // Filtre açıkken ara düğümler gizli olduğu için sürükle-bırak kapatılır.
@ -103,6 +105,15 @@ export const SortableMenuTree: React.FC<SortableMenuTreeProps> = ({
if (!cancelled) setPermissions([]) if (!cancelled) setPermissions([])
}) })
getModules()
.then((response) => {
if (cancelled) return
setModules((response?.data ?? []).map((module) => ({ value: module.key, label: module.name })))
})
.catch(() => {
if (!cancelled) setModules([])
})
return () => { return () => {
cancelled = true cancelled = true
} }
@ -158,6 +169,7 @@ export const SortableMenuTree: React.FC<SortableMenuTreeProps> = ({
isExpanded={isExpanded} isExpanded={isExpanded}
isHighlighted={Boolean(matchedIds?.has(id))} isHighlighted={Boolean(matchedIds?.has(id))}
item={item} item={item}
modules={modules}
permissions={permissions} permissions={permissions}
refetch={refetch} refetch={refetch}
onIndent={handleIndent} onIndent={handleIndent}
@ -208,6 +220,7 @@ export const SortableMenuTree: React.FC<SortableMenuTreeProps> = ({
depth={0} depth={0}
isDesignMode={isDesignMode} isDesignMode={isDesignMode}
item={activeItem} item={activeItem}
modules={modules}
permissions={permissions} permissions={permissions}
refetch={refetch} refetch={refetch}
/> />