sozsoft-platform/configs/seeds/docs/modules/App.Prj.md
2026-10-08 14:20:54 +03:00

1127 lines
57 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Proje (`App.Prj`)
> Menünün altındaki her dal bu dosyada bir bölümdür (`module-doc:section`); dosya ve bölümler ilk deploy'da otomatik açılır. `module-doc:todo` işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (`lowcode.instructions.md` §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alınamaz. "Ek — Ekran envanteri" bölümü wizard dosyalarından üretilir, elle düzenlenmez.
<!-- module-doc:section App.Prj.Definitions -->
## Tanımlamalar (`App.Prj.Definitions`)
### 1. Amaç ve kapsam
Proje modülünün ortak tanımlarını tutar: projelere bağlanan renkli **Etiketler**, takım üyelerinin projedeki **Görevleri** ve personelin yıl-ay bazındaki genel **Aylık Adam/Ay Oranları** (Ar-Ge merkezi raporlaması için). Kullanıcı: proje yöneticisi, Ar-Ge merkezi sorumlusu.
### 2. Analiz ve kararlar
- Tanımlamalar alt menüsü Proje kökünün ilk sırasındadır (talep girdisi).
- Etiketler ve Görevler tanım tablosudur (`IsActive`, varsayılan aktif); Aylık Adam/Ay Oranları tanım değil, personel-dönem verisidir.
- Görev Listesi İK pozisyonlarından ayrı, projeye özgü görev tanımıdır.
- Demo veri: 17 etiket ve 67 görev (talep görsellerinden). Aylık oran demo satırları eklenmedi; görseldeki personel sistemde kullanıcı olarak yok.
### 3. Menü ve ekranlar
`Proje › Tanımlamalar › Etiketler | Görevler | Aylık Adam/Ay Oranları` — üçü de liste + popup form, Grid/Card/Pivot/Chart görünümleri ve özet widget'ları ile.
### 4. Veri modeli
- `Prj_T_Tag`: Name (64, kiracıda benzersiz), Color, IsActive.
- `Prj_T_ProjectRole`: Name (128, kiracıda benzersiz), IsActive.
- `Prj_T_UserMonthRate`: UserId → AbpUsers, Year, Month (1–12), Rate (varsayılan 100); kiracı+personel+yıl+ay benzersiz.
Tümü kiracı + tam audit + soft delete.
### 5. İş kuralları ve hesaplar
- Projede ve Takım sekmesinde yalnızca aktif etiket/görev seçilebilir.
- Aylık oran 0–100 arasıdır; Personel Adam/Ay Oranları raporunda iş paketi oranıyla çarpılır (kayıt yoksa %100 kabul edilir).
### 6. Yetki ve görünürlük
İzin grubu `App.Prj` › `App.Prj.Definitions` › her ekran için R + Create/Update/Delete/Export/Import/Note.
### 7. Entegrasyonlar
Personel listesi `AbpUsers`'tan okunur. Başka entegrasyon yok.
### 8. Akış örneği
Ar-Ge sorumlusu Ağustos 2026 için bir personelin genel çalışma oranını %50 girer → o personelin bu ay iş paketinde %100 görünen oranı Personel Adam/Ay Oranları raporunda %50 "aya düşen oran" olarak hesaplanır.
### 9. Sık sorulanlar
- *Etiket rengini değiştirince projelerdeki etiket değişir mi?* Projede etiket adı saklanır; renk listeden okunduğu için yeni renk görünür.
- *Pasif görev eski takım kayıtlarında kaybolur mu?* Hayır, yalnızca yeni seçimde listelenmez.
### 10. Dosyalar ve geri alma
Wizard: `Tag.json`, `ProjectRole.json`, `UserMonthRate.json`; tablolar `sql|postgres/object/Prj_T_Tag.sql`, `Prj_T_ProjectRole.sql`, `Prj_T_UserMonthRate.sql`; demo veri `data/App.Prj.Tag.json`, `data/App.Prj.ProjectRole.json`. Geri alma: Wizard Manager'dan wizard'ları silmek (tablo isteğe bağlı düşürülür).
<!-- module-doc:section App.Prj.WorkPackage -->
## İş Paketleri (`App.Prj.WorkPackage`)
### 1. Amaç ve kapsam
Projelerin hiyerarşik iş planı (1 → 1.01, 1.02 …) ay ölçeğinde Gantt olarak tutulur; her paketin personeli, personel bazında aylık oranları, planlanan kaynakları ve gerçekleşen masrafları paket detayından girilir.
### 2. Analiz ve kararlar
- "İşler birbirine bağlı" üst-alt paket hiyerarşisi (ParentId) olarak uygulandı; Gantt bağımlılık okları kaydedilmez.
- Seyahat/Ekipman/Danışmanlık/Hizmet/Malzeme/Diğer sekmeleri tek tabloda `ResourceType` ile birleştirildi; sekmeler Planlanan Kaynaklar ve Gerçekleşen Masraflar (`Kind` = Planned/Actual) olarak ikiye indi (talep izni).
- Maliyet = Fiyat × Adet × (1 + KDV/100) (onaylı karar).
- Personelin paketteki aylık oranı Adam/Ay sekmesinden girilir; Adam/Ay Oranları ekranı salt okunurdur.
- Gantt başlığı paket adıdır, kod ayrı kolondadır. Personel seçimleri tüm kullanıcıları listeler (alt formda proje takımına süzme yok); kaynak tipine göre alan gizleme yok.
### 3. Menü ve ekranlar
`Proje › İş Paketleri` (Gantt varsayılan; Tree/Grid/Pivot de açık) ve proje kartının İş Paketleri sekmesi. Detay sekmeleri: Personel (`App.Prj.WorkPackageMember`), Adam/Ay (`App.Prj.WorkPackageMonthRate`), Planlanan Kaynaklar (`App.Prj.WorkPackagePlanned`), Gerçekleşen Masraflar (`App.Prj.WorkPackageActual`) — hepsi menüsüz.
### 4. Veri modeli
- `Prj_T_WorkPackage`: ProjectId → Prj_T_Project, ParentId, Code (proje içinde benzersiz), Name, StartDate, EndDate, Months, Progress, Color, Note.
- `Prj_T_WorkPackageMember`: WorkPackageId, UserId (paket+personel benzersiz).
- `Prj_T_WorkPackageMonthRate`: WorkPackageId, UserId, Year, Month, Rate.
- `Prj_T_WorkPackageResource`: WorkPackageId, Kind, ResourceType, UserId, ResourceName, OrganizationType/Name, WorkDone, WorkDescription, DocumentDate/No, Unit (Adet), Price, Quantity (1), VatRate (0), Cost.
### 5. İş kuralları ve hesaplar
- Ay = başlangıç–bitiş gün farkı / 30,44 (yuvarlanır, en az 1); formda otomatik.
- Maliyet formda Fiyat, Adet veya KDV değişince yeniden hesaplanır.
- Planlanan/Gerçekleşen sekmeleri `Kind` filtresiyle aynı tabloyu gösterir; yeni satır sekmenin türüyle eklenir.
### 6. Yetki ve görünürlük
`App.Prj › App.Prj.WorkPackage` (+ C/U/D/E/I/N); alt formlar `… › App.Prj.WorkPackage › App.Prj.WorkPackage{Member|MonthRate|Planned|Actual}`.
### 7. Entegrasyonlar
Personel `AbpUsers`'tan. Satırlar Takım toplamlarını, Adam/Ay Oranları, Kaynak Listesi, Personel Adam/Ay Oranları, maliyet özeti ve Bütçe Raporu view'larını besler.
### 8. Akış örneği
Proje yöneticisi "1. Veri Toplama ve Analiz" paketini, altına 1.01 "Veri Kaynaklarının Belirlenmesi"ni (07/2025–08/2027) ekler → Personel sekmesinde 11 kişiyi seçer → Adam/Ay sekmesinde her kişi için aylık %50 girer → Gerçekleşen Masraflar'a faturaları (Diğer, Yapay Zeka, 839,40 TL) yazar.
### 9. Sık sorulanlar
- *Gantt'ta çubuğu sürüklemek tarihi değiştirir mi?* Evet, Gantt düzenlemesi açık; başlangıç/bitiş kayda yazılır.
- *Belge tarihi olmayan planlanan kalem bütçede hangi aya düşer?* Paketin başlangıç ayına.
### 10. Dosyalar ve geri alma
Wizard: `WorkPackage.json`, `WorkPackageMember.json`, `WorkPackageMonthRate.json`, `WorkPackagePlanned.json`, `WorkPackageActual.json`; tablolar `Prj_T_WorkPackage*.sql`. Geri alma: önce alt form wizard'ları, sonra `WorkPackage.json` (Project.json'un bağımlısıdır, önce o silinir). PostgreSQL'de `UQ_Prj_T_WorkPackageMonthRate_…` kısıt adı 63 karakteri aştığı için tasarımcıdan kısaltılmalıdır.
### 11. Sekmeler (alt formlar)
Dört sekme de menüsüzdür, İş Paketleri ekranının detayında açılır; yetkileri `App.Prj › App.Prj.WorkPackage › …` altındadır (C/U/D).
#### Personel (`App.Prj.WorkPackageMember`)
- **Amaç:** seçili iş paketinde çalışan personeli listeler ([image-14] görselindeki Personel sekmesi).
- **Veri:** `Prj_T_WorkPackageMember` — WorkPackageId, UserId; aynı personel bir pakete yalnızca bir kez eklenir. Personel `AbpUsers`'tan gelir.
- **Karar:** personel seçimi tüm kullanıcıları listeler; alt form üst kaydın proje bilgisine erişemediği için liste proje takımıyla sınırlanmadı.
- **Kullanıldığı yer:** Takım sekmesindeki Paket Adedi kolonunu besler.
- **Örnek:** 1.01 paketine 11 personel eklenir.
- **Dosyalar:** `WorkPackageMember.json`, `Prj_T_WorkPackageMember.sql`.
#### Adam/Ay (`App.Prj.WorkPackageMonthRate`)
- **Amaç:** personelin ilgili ayda pakete ayırdığı çalışma yüzdesi buradan girilir; Adam/Ay Oranları ekranı bu kayıtları yalnızca gösterir (onaylı karar).
- **Veri:** `Prj_T_WorkPackageMonthRate` — WorkPackageId, UserId, Year, Month, Rate; paket + personel + yıl + ay benzersiz.
- **Kural:** oran 0–100 arasıdır. Takım toplamlarını, Adam/Ay Oranları, Personel Adam/Ay Oranları ve maliyet özetini besler.
- **Örnek:** bir personel için Temmuz–Aralık 2025 her ay %50 girilir.
- **Dosyalar:** `WorkPackageMonthRate.json`, `Prj_T_WorkPackageMonthRate.sql`.
- **Dikkat:** benzersiz kısıtın adı 63 karakteri aşar; PostgreSQL'de tablo tasarımcısından kısaltılmalıdır.
#### Planlanan Kaynaklar (`App.Prj.WorkPackagePlanned`)
- **Amaç:** paketin bütçelenen maliyetleri: personel, seyahat, ekipman, danışmanlık, hizmet, malzeme, diğer.
- **Karar:** tip bazlı sekmeler tek tabloda birleştirildi (`ResourceType`, talep izni); ekran `Prj_T_WorkPackageResource`'u `Kind = 'Planned'` ile gösterir, yeni satır Planned türüyle eklenir. Kaynak tipine göre alan gizleme yok.
- **Hesap:** Maliyet = Fiyat × Adet × (1 + KDV/100); salt okunurdur, fiyat/adet/KDV değişince yeniden hesaplanır.
- **Kullanıldığı yer:** Kaynak Listesi, maliyet özeti, Bütçe Raporu (Planlanan kolonu). Bütçede kalem belge tarihinin ayına, belge tarihi yoksa paketin başlangıç ayına yazılır.
- **Örnek:** Malzeme seçilir, kalem adı yazılır, fiyat 74.000, adet 1 → maliyet 74.000.
- **Dosyalar:** `WorkPackagePlanned.json`, `Prj_T_WorkPackageResource.sql` (Gerçekleşen Masraflar ile ortak).
#### Gerçekleşen Masraflar (`App.Prj.WorkPackageActual`)
- **Amaç:** paketin gerçekleşen maliyetleri; giriş biçimi Planlanan Kaynaklar ile aynıdır.
- **Karar:** aynı tablo `Kind = 'Actual'` filtresiyle kullanılır; yeni satır Actual türüyle eklenir.
- **Hesap:** Maliyet = Fiyat × Adet × (1 + KDV/100); bütçe raporunda ay belge tarihinden belirlenir.
- **Kullanıldığı yer:** Kaynak Listesi (Türü = Gerçek), maliyet özeti, Bütçe Raporu (Gerçek kolonu).
- **Örnek:** Diğer, Kuruluş "Muhtelif", açıklama "Yapay Zeka", belge tarihi 22/09/2025, fiyat 839,40, adet 1 → maliyet 839,40.
- **Dosyalar:** `WorkPackageActual.json`, `Prj_T_WorkPackageResource.sql`.
<!-- module-doc:section App.Prj.Diary -->
## Günce Listesi (`App.Prj.Diary`)
### 1. Amaç ve kapsam
Personelin proje ve iş paketine göre günlük yaptığı çalışmaları yazdığı liste; günce metni HTML editörle girilir.
### 2. Analiz ve kararlar
- Günce sütunu `dxHtmlEditor` (talep girdisi).
- Kullanıcı varsayılan olarak oturumdaki kullanıcıdır; dakika başlangıç–bitiş farkından hesaplanır.
- Hem menülü ekran hem proje kartının Günce sekmesidir; yetkisi kendi menü dalındadır.
### 3. Menü ve ekranlar
`Proje › Günce Listesi`; ayrıca `Projeler` kartında Günce sekmesi (ProjectId ilişkisiyle). Widget'lar: toplam kayıt, bugünkü kayıt, toplam saat.
### 4. Veri modeli
`Prj_T_Diary`: ProjectId, WorkPackageId (projeye göre süzülür), UserId, StartTime, EndTime, Minutes, Content (nvarchar(MAX), HTML). Kiracı + audit + soft delete.
### 5. İş kuralları ve hesaplar
Dakika = (Bitiş − Başlangıç) saat × 60, yuvarlanır, negatif olamaz; formda otomatik. Proje değişince iş paketi seçimi temizlenir.
### 6. Yetki ve görünürlük
`App.Prj › App.Prj.Diary` (+ C/U/D/E/I/N). Kayıtlar kiracı içinde tüm yetkililere görünür.
### 7. Entegrasyonlar
Kullanıcı `AbpUsers`, proje/paket `Prj_T_Project` / `Prj_T_WorkPackage`. Başka entegrasyon yok.
### 8. Akış örneği
Personel günün sonunda yeni kayıt açar → projeyi ve 1.01 paketini seçer → 09:00–12:30 girer (Dakika 210 dolar) → yaptığı işi madde madde HTML olarak yazar ve kaydeder.
### 9. Sık sorulanlar
- *Başka kullanıcı adına günce girilebilir mi?* Evet, Kullanıcı alanı değiştirilebilir; varsayılan oturumdaki kullanıcıdır.
### 10. Dosyalar ve geri alma
Wizard `Diary.json`; tablo `sql|postgres/object/Prj_T_Diary.sql`. Project.json'un bağımlısıdır; geri almada önce Project.json silinir.
<!-- module-doc:section App.Prj.Project -->
## Projeler (`App.Prj.Project`)
### 1. Amaç ve kapsam
Ar-Ge ve destekli projelerin (TÜBİTAK, KOSGEB, Ar-Ge Merkezi, AB, iç proje) ana kartı. Başvuru metinleri, destek bilgileri, takım, iş paketleri, maliyet özeti ve günce tek kartta sekmeler halinde yönetilir.
### 2. Analiz ve kararlar
- Detay `App.Definitions.Contact` gibi sekmelidir (talep girdisi). Proje Özeti, İhtiyaçlar, Faaliyetler, Yenilikçi Yönü ve Çıktı ve Faydaları sekmeleri HtmlEditor'dür.
- Bu metin sekmeleri ve Destek sekmesi ayrı tablo değildir; aynı proje kaydının alanlarını `Form` sekmesi olarak düzenler.
- Takım ağaç yapısındadır (ParentId = takım lideri). Hesaplanan kolonlar `Prj_V_ProjectMember` view'ından join ile gelir.
- Etiketler, renkli dxTagBox ile Etiketler tanımından seçilir (Contact.Tags kalıbı).
### 3. Menü ve ekranlar
`Proje › Projeler`, popup 1400×800. Sekmeler sırasıyla:
- Proje Özeti, Destek, İhtiyaçlar, Faaliyetler, Yenilikçi Yönü, Çıktı ve Faydaları (Form sekmeleri).
- Takım (`App.Prj.ProjectMember`, ağaç).
- İş Paketleri (`App.Prj.WorkPackage`, Gantt, menülü).
- Adam / Ay Oranları ve Detaylı Maliyet Raporu (`App.Prj.ProjectCostSummary`, salt okunur).
- Günce (`App.Prj.Diary`, menülü).
Widget'lar: toplam, aktif, tamamlanan proje sayısı ve toplam bütçe.
### 4. Veri modeli
`Prj_T_Project` alanları:
- Kimlik: ProjectNo (kiracı içinde benzersiz), Name, ProjectType, Status (varsayılan Draft), StartDate, EndDate, ManagerId, Tags.
- HTML metinler: Summary, Needs, Activities, Innovation, Outputs (hepsi nvarchar(MAX)).
- Destek: NationalSupportOrg, InternationalSupportOrg, OwnFundedAmount, SupportAmount, TotalBudget, ServicePurchaseSubject, ServicePurchasePlace.
`Prj_T_ProjectMember` alanları: ProjectId, UserId (projede benzersiz), ProjectRoleId, ParentId, AvgMonthlyCost.
View'lar: `Prj_V_ProjectMember` (takım hesapları) ve `Prj_V_ProjectCostSummary` (Planlanan ve Gerçek satırları).
### 5. İş kuralları ve hesaplar
- **Takım:**
- Paket Adedi: personelin bu projede bulunduğu iş paketi sayısı.
- Adam/Ay Toplamı: Σ iş paketi oranı / 100.
- Çalışılan Ay: oran girilmiş farklı ay sayısı.
- Toplam Maliyet: Adam/Ay × Ortalama Aylık Maliyet.
- **Maliyet özeti:** Planlanan ve Gerçek için kaynak tipine göre maliyet toplamları ile projenin toplam adam/ay değeri.
### 6. Yetki ve görünürlük
`App.Prj › App.Prj.Project` (+ C/U/D/E/I/N). Menüsüz sekmelerin yetkisi `… › App.Prj.Project › App.Prj.Project{Summary|Support|Needs|Activities|Innovation|Outputs|Member|CostSummary}` altındadır. Metin sekmelerinde silme kapalıdır.
### 7. Entegrasyonlar
Yönetici ve takım üyeleri `AbpUsers`'tan, görevler `Prj_T_ProjectRole`'den, etiketler `Prj_T_Tag`'den gelir. Maliyet özeti, iş paketi kaynaklarından ve aylık oranlardan hesaplanır.
### 8. Akış örneği
1. Proje kartı açılır: proje no, ad, TÜBİTAK, Aktif, tarihler, yönetici ve etiketler girilir.
2. Destek sekmesine destek kurumu ve bütçe yazılır; Özet ve İhtiyaçlar HTML olarak doldurulur.
3. Takım sekmesinde önce takım lideri, sonra ona bağlı personel eklenir (Yönetici alanıyla).
4. İş Paketleri sekmesinde plan kurulur; maliyet özeti sekmesi planlanan ve gerçekleşen tutarları gösterir.
### 9. Sık sorulanlar
- *Destek ve metin sekmeleri neden boş kayıt açmıyor?* Hepsi aynı proje satırını düzenler; proje kaydedildikten sonra doldurulur.
- *Takım toplamları neden sıfır?* İş paketlerinin Adam/Ay sekmesinde oran girilmemiştir.
### 10. Dosyalar ve geri alma
- Wizard'lar: `Project.json`, `ProjectSummary.json`, `ProjectSupport.json`, `ProjectNeeds.json`, `ProjectActivities.json`, `ProjectInnovation.json`, `ProjectOutputs.json`, `ProjectMember.json`, `ProjectCostSummary.json`.
- Tablolar ve view'lar: `Prj_T_Project.sql`, `Prj_T_ProjectMember.sql`, `Prj_V_ProjectMember.sql`, `Prj_V_ProjectCostSummary.sql`.
- Geri alma: önce `Project.json`, ardından sekme wizard'ları silinir.
### 11. Sekmeler (alt formlar)
Sekmeler menüsüzdür, Projeler kartında açılır; yetkileri `App.Prj › App.Prj.Project › …` altındadır. Metin ve Destek sekmeleri ayrı tablo değildir, proje kaydını düzenleyen `Form` sekmesidir (ekleme/düzenleme açık, silme kapalı); proje kaydedildikten sonra doldurulur. İş Paketleri ve Günce sekmeleri menülü ekranlardır, kendi bölümlerinde anlatılır.
#### Proje Özeti, İhtiyaçlar, Faaliyetler, Yenilikçi Yönü, Çıktı ve Faydaları
| Sekme | Ekran | Alan (`Prj_T_Project`, nvarchar(MAX)) | İçerik |
| --- | --- | --- | --- |
| Proje Özeti | `App.Prj.ProjectSummary` | `Summary` | Projenin serbest metin özeti |
| İhtiyaçlar | `App.Prj.ProjectNeeds` | `Needs` | Projeyi doğuran sorun ve ihtiyaçlar |
| Faaliyetler | `App.Prj.ProjectActivities` | `Activities` | Planlanan ve yürütülen faaliyetler |
| Yenilikçi Yönü | `App.Prj.ProjectInnovation` | `Innovation` | Yenilikçi ve özgün yönler |
| Çıktı ve Faydaları | `App.Prj.ProjectOutputs` | `Outputs` | Beklenen çıktılar ve faydalar |
- Hepsi talep gereği HtmlEditor'dür; hesap ve entegrasyon yoktur. Faaliyetler sekmesinin görseli ([image-8]) iletilmediği için sekme metindeki tanıma göre üretildi.
- **Akış:** kullanıcı sekmeye metni madde madde yazar ve kaydeder.
- **Dosyalar:** `ProjectSummary.json`, `ProjectNeeds.json`, `ProjectActivities.json`, `ProjectInnovation.json`, `ProjectOutputs.json`.
#### Destek (`App.Prj.ProjectSupport`)
- **Amaç:** projenin destek ve bütçe bilgileri; alanlar [image-6] görselinden alındı.
- **Veri:** `Prj_T_Project` — NationalSupportOrg, InternationalSupportOrg, OwnFundedAmount, SupportAmount, TotalBudget, ServicePurchaseSubject, ServicePurchasePlace.
- **Kural:** hesap yoktur; TotalBudget Projeler ekranındaki Toplam Bütçe widget'ını besler.
- **Örnek:** ulusal destek kurumu TÜBİTAK yazılır, ardından destek tutarı ve toplam bütçe girilir.
- **Dosyalar:** `ProjectSupport.json`.
#### Takım (`App.Prj.ProjectMember`)
- **Amaç:** projede çalışan personel ağaç yapısında: takım lideri ve altında ona bağlı çalışanlar (ParentId, talep girdisi). Varsayılan görünüm Tree.
- **Veri:** `Prj_T_ProjectMember` — ProjectId, UserId, ProjectRoleId, ParentId, AvgMonthlyCost; personel projede bir kez yer alır. Hesaplanan kolonlar `Prj_V_ProjectMember` view'ından join ile okunur, kayıt tablo üzerinden düzenlenir.
- **Hesap:** Paket Adedi = personelin projedeki iş paketi sayısı · Adam/Ay Toplamı = Σ paket oranı / 100 · Çalışılan Ay = oran girilmiş farklı ay sayısı · Toplam Maliyet = Adam/Ay Toplamı × Ortalama Aylık Maliyet.
- **Entegrasyon:** personel `AbpUsers`, görev `Prj_T_ProjectRole`. Ortalama aylık maliyet Personel Adam/Ay Oranları raporunda gerçek maliyeti hesaplar. Yetki C/U/D.
- **Akış:** takım lideri yönetici alanı boş eklenir → çalışanlar yönetici olarak lider seçilerek eklenir → ağaçta liderin altında görünür.
- **SSS:** *Toplamlar neden boş?* İş paketlerinde bu personel için Adam/Ay oranı girilmemiştir.
- **Dosyalar:** `ProjectMember.json`, `Prj_T_ProjectMember.sql`, `Prj_V_ProjectMember.sql`.
#### Adam / Ay Oranları ve Detaylı Maliyet Raporu (`App.Prj.ProjectCostSummary`)
- **Amaç:** projenin salt okunur maliyet özeti ([image-11]); Planlanan ve Gerçek için birer satır, kolonlar adam/ay ve kaynak tipine göre maliyet.
- **Veri:** `Prj_V_ProjectCostSummary` (anahtar `ProjectId-Kind`) — Kind, SortNo, ManMonth, PersonnelCost, TravelCost, EquipmentCost, ConsultingCost, ServiceCost, MaterialCost, OtherCost, TotalCost.
- **Hesap:** her maliyet kolonu ilgili `ResourceType` + `Kind` için iş paketi kaynaklarının toplamı; Adam/Ay = projedeki paket oranları toplamı / 100, iki satırda aynıdır.
- **Entegrasyon:** `Prj_T_WorkPackageResource`, `Prj_T_WorkPackageMonthRate`.
- **Örnek:** Planlanan satırında Seyahat 9.000, Toplam 200.400; Gerçek satırında Toplam 34.368.
- **SSS:** *Gerçek personel maliyeti neden 0?* Gerçekleşen Masraflar'a "Personel Gideri" tipinde kayıt girilmemiştir.
- **Dosyalar:** `ProjectCostSummary.json`, `Prj_V_ProjectCostSummary.sql`.
<!-- module-doc:section App.Prj.ManMonth -->
## Adam/Ay Oranları (`App.Prj.ManMonth`)
### 1. Amaç ve kapsam
Proje bazında personelin ilgili aylarda iş paketlerinde geçirdiği yüzdesel çalışma oranlarını gösterir. Görünüm ay ölçeğinde Gantt'tır ve ekran salt okunurdur.
### 2. Analiz ve kararlar
- Talep ekranın GanttView olarak, yalnızca ay ölçeğinde sunulmasını istiyor; `ScaleType: months` ile karşılandı.
- Oranlar İş Paketi › Adam/Ay sekmesinden girilir; bu ekranda kayıt düzenlenmez (onaylı karar).
- Gantt hücreye sayı yazmaz. Aylık yüzdeleri hücre olarak görmek için aynı ekranda Pivot görünümü açıktır.
### 3. Menü ve ekranlar
`Proje › Adam/Ay Oranları`. Varsayılan görünüm Gantt; Tree, Grid ve Pivot da açıktır. Projeye göre süzmek için ProjectId filtresi kullanılır.
### 4. Veri modeli
Kaynak `Prj_V_ManMonthGantt` view'ıdır ve iki seviye satır üretir:
- **Personel satırı:** Id = ProjectId|UserId, ParentId boş.
- **İş paketi satırı:** Id = ProjectId|UserId|WorkPackageId, ParentId = personel satırı.
Her satırda şu kolonlar bulunur: Title, StartDate, EndDate, Progress, AvgRate (OAA), TotalRate (TAA), MonthCount (TÇA).
### 5. İş kuralları ve hesaplar
- **Çubuk:** oranı 0'dan büyük olan ilk ayın başından son ayın sonuna kadar uzanır.
- **İlerleme ve OAA:** ortalama oran.
- **TAA:** oranların toplamı.
- **TÇA:** oran girilmiş farklı ay sayısı.
### 6. Yetki ve görünürlük
`App.Prj › App.Prj.ManMonth`. Ekleme, düzenleme ve silme kapalıdır.
### 7. Entegrasyonlar
Veri `Prj_T_WorkPackageMonthRate`, `Prj_T_WorkPackage` ve `Prj_T_Project` tablolarından, personel adı `AbpUsers`'tan okunur.
### 8. Akış örneği
1. Proje filtresi uygulanır.
2. Personel satırı açıldığında altında çalıştığı paketler görünür.
3. Pivot görünümüne geçildiğinde ay kolonlarında yüzdeler listelenir.
### 9. Sık sorulanlar
- *Burada oran değiştirebilir miyim?* Hayır. Oranlar İş Paketleri ekranının Adam/Ay sekmesinden değiştirilir.
### 10. Dosyalar ve geri alma
- Wizard: `ManMonth.json`.
- View: `sql|postgres/object/Prj_V_ManMonthGantt.sql`.
- Geri alma: wizard'ı silmek yeterlidir; view ayrıca kaldırılabilir.
<!-- module-doc:section App.Prj.ResourceList -->
## Kaynak Listesi (`App.Prj.ResourceList`)
### 1. Amaç ve kapsam
Bu ekran, tüm projelerin planlanan ve gerçekleşen kaynaklarını tek listede gösterir. Liste salt okunurdur; Excel'e aktarma ve filtreleme için kullanılır.
### 2. Analiz ve kararlar
- Talep, bu listeye yeni kayıt eklenmemesini ve yalnızca listeleme için kullanılmasını istiyor. Bu nedenle ekleme, düzenleme ve silme kapalıdır.
- Kaynak, iş paketi ve proje tablolarını birleştiren `Prj_V_ResourceList` view'ıdır.
### 3. Menü ve ekranlar
`Proje › Kaynak Listesi`. Grid, Card, Pivot ve Chart görünümleri açıktır. Widget'lar toplam planlanan ve toplam gerçekleşen maliyeti gösterir.
### 4. Veri modeli
`Prj_V_ResourceList` view'ı şu kolonları döndürür:
- **Proje ve iş paketi:** ProjectId, ProjectNo, ProjectName, WorkPackageId, WorkPackageCode, WorkPackageName.
- **Kaynak:** Kind, ResourceType, UserId, ResourceName.
- **Tutar:** Quantity, Unit, Price, VatRate, Cost.
- **Belge ve kuruluş:** DocumentDate, DocumentNo, OrganizationType, OrganizationName, WorkDone, WorkDescription.
Silinmiş iş paketi ve projelere ait kaynaklar listede yer almaz.
### 5. İş kuralları ve hesaplar
Ekranda ayrıca bir hesap yapılmaz. Maliyet değeri, giriş sırasında iş paketi sekmesinde hesaplanan `Cost` alanından gelir.
### 6. Yetki ve görünürlük
Yetki dalı `App.Prj › App.Prj.ResourceList` altındadır. Ekran yalnızca okuma ve dışa aktarma için kullanılır.
### 7. Entegrasyonlar
Veriler `Prj_T_WorkPackageResource`, `Prj_T_WorkPackage` ve `Prj_T_Project` tablolarından okunur.
### 8. Akış örneği
1. Mali işler sorumlusu listeyi açar.
2. Türü = Gerçek ve tarih aralığı filtrelerini uygular.
3. Sonucu Excel'e aktarır ve destek kurumuna gönderilecek gider listesini hazırlar.
### 9. Sık sorulanlar
- **Kaydı nereden düzeltebilirim?** Kayıtlar İş Paketleri ekranının Planlanan Kaynaklar veya Gerçekleşen Masraflar sekmesinden düzeltilir.
### 10. Dosyalar ve geri alma
- Wizard dosyası: `ResourceList.json`.
- View scripti: `Prj_V_ResourceList.sql`.
- Geri almak için wizard silinir. View, başka bir ekran kullanmıyorsa kaldırılabilir.
<!-- module-doc:section App.Prj.PersonnelManMonth -->
## Personel Adam/Ay Oranları (`App.Prj.PersonnelManMonth`)
### 1. Amaç ve kapsam
Bu ekran, tüm projelerde personelin aylık iş paketi oranlarını ve bu oranlardan çıkan gerçek personel maliyetini salt okunur bir liste olarak gösterir. Ar-Ge merkezi raporlaması için kullanılır.
### 2. Analiz ve kararlar
- Talep gereği listeye kayıt eklenmez; ekran yalnızca listeleme içindir.
- Gerçek personel maliyeti, takımdaki ortalama aylık maliyet ile aya düşen oran çarpılarak hesaplanır. Bu, analizde onaylanmış bir karardır.
- Personelin o ay için Aylık Adam/Ay Oranı kaydı yoksa oran %100 kabul edilir.
### 3. Menü ve ekranlar
Ekran `Proje › Personel Adam/Ay Oranları` menüsündedir. Grid, Card, Pivot ve Chart görünümleri açıktır.
### 4. Veri modeli
Kaynak `Prj_V_PersonnelManMonth` view'ıdır. Satır anahtarı oran kaydının Id'sidir. Kolonlar:
- **Proje ve iş paketi:** ProjectNo, ProjectName, WorkPackageCode, WorkPackageName
- **Dönem ve personel:** Year, Month, PeriodDate, UserId
- **Oranlar:** ManMonthValue, MonthlyRate, EffectiveRate
- **Maliyet:** UnitCost, TotalCost
### 5. İş kuralları ve hesaplar
- **Aya düşen oran** = paket oranı × aylık çalışma oranı / 100
- **Gerçek birim maliyet** = Takım sekmesindeki ortalama aylık maliyet
- **Gerçek toplam maliyet** = birim maliyet × aya düşen oran / 100
### 6. Yetki ve görünürlük
Yetki yolu `App.Prj › App.Prj.PersonnelManMonth` şeklindedir. Ekran salt okunurdur.
### 7. Entegrasyonlar
Veri şu tablolardan okunur: `Prj_T_WorkPackageMonthRate`, `Prj_T_UserMonthRate`, `Prj_T_ProjectMember`, `Prj_T_WorkPackage`, `Prj_T_Project`.
### 8. Akış örneği
Bir personelin Kasım ayında paket oranı %25, aylık çalışma oranı %100 ve ortalama aylık maliyeti 40.000 TL olsun. Bu durumda:
- Aya düşen oran = 25 × 100 / 100 = **%25**
- Gerçek toplam maliyet = 40.000 × 25 / 100 = **10.000 TL**
### 9. Sık sorulanlar
**Gerçek maliyet neden 0 görünüyor?**
Personelin Takım sekmesinde Ortalama Aylık Maliyet alanı boş bırakılmıştır.
### 10. Dosyalar ve geri alma
- **Wizard dosyası:** `PersonnelManMonth.json`
- **View scripti:** `Prj_V_PersonnelManMonth.sql`
- **Geri alma:** Wizard'ı silmek yeterlidir.
<!-- module-doc:section App.Prj.BudgetReport -->
## Proje Bütçe Raporu (`App.Prj.BudgetReport`)
### 1. Amaç ve kapsam
Bu rapor, projelerin planlanan ve gerçekleşen maliyetlerini ay bazında takip etmek için kullanılır. Gider kalemleri ay ölçeğinde Gantt görünümünde listelenir. Rapor salt okunurdur.
### 2. Analiz ve kararlar
- Talep gereği rapor GanttView ile ve yalnızca ay ölçeğinde gösterilir. Görseldeki çeyrek bazlı dönem yerine ay bazlı dönem kullanılır.
- Sayısal ay kolonları için ekranda Pivot görünümü de açıktır.
- Belge tarihi boş olan kalemler, bağlı oldukları iş paketinin başlangıç ayına yazılır.
### 3. Menü ve ekranlar
Ekran `Proje › Proje Bütçe Raporu` menüsündedir.
- Varsayılan görünüm Gantt'tır. Tree, Grid ve Pivot görünümleri de kullanılabilir.
- Belirli bir projenin verisini görmek için ProjectId filtresi kullanılır.
### 4. Veri modeli
Raporun kaynağı `Prj_V_BudgetMonthly` view'ıdır. View iki seviyede satır üretir:
- **Gider kalemi satırı:** Id = ProjectId|ResourceType
- **Ay satırı:** Id = ProjectId|ResourceType|YYYY-MM; ParentId olarak gider kalemi satırını gösterir.
Kolonlar: Title, StartDate, EndDate, Year, Month, Planned, Actual, Ratio, Progress.
### 5. İş kuralları ve hesaplar
- **Planlanan:** Planned türündeki kalemlerin maliyet toplamı.
- **Gerçek:** Actual türündeki kalemlerin maliyet toplamı.
- **Oran:** Gerçek × 100 / Planlanan. Planlanan tutar 0 ise oran 0 kabul edilir.
- **Gantt ilerlemesi:** Oran değeridir; en fazla 100 gösterilir.
- **Ay:** Belge tarihinin ayıdır. Belge tarihi yoksa iş paketinin başlangıç ayı kullanılır.
### 6. Yetki ve görünürlük
Yetki dalı `App.Prj › App.Prj.BudgetReport`'tur. Rapor salt okunurdur.
### 7. Entegrasyonlar
Veriler `Prj_T_WorkPackageResource`, `Prj_T_WorkPackage` ve `Prj_T_Project` tablolarından okunur.
### 8. Akış örneği
1. Proje yöneticisi raporu açar ve "BİLGİ İŞLEM 02" projesine göre filtreler.
2. "Personnel" gider kaleminin altında ayları görür.
3. Gantt çubuğundaki ilerleme oranından gerçekleşmenin planı ne kadar aştığını ya da gerisinde kaldığını izler.
### 9. Sık sorulanlar
**Neden çeyrek bazında değil?**
Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı toplam gerekirse Pivot görünümünde tarih alanı çeyreğe göre gruplanabilir.
### 10. Dosyalar ve geri alma
- **Wizard dosyası:** `BudgetReport.json`
- **View scripti:** `Prj_V_BudgetMonthly.sql`
- **Geri alma:** Wizard'ı silmek yeterlidir.
<!-- module-doc:auto:begin -->
## Ek — Ekran envanteri (otomatik)
> Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.
### Tanımlamalar (`App.Prj.Definitions`)
#### Etiketler — `App.Prj.Tag`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Tag.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj.Definitions` › `App.Prj.Tag` (sıra 1) |
| Yetki | `App.Prj.Tag` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Etiketler — projelere eklenen, gruplama ve filtreleme için kullanılan renkli etiketler. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Tag` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` |
| Form varsayılanları | IsActive=true |
| Veri aynası | `data/App.Prj.Tag.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `Color` | Renk | dxColorBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Görevler — `App.Prj.ProjectRole`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectRole.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj.Definitions` › `App.Prj.ProjectRole` (sıra 2) |
| Yetki | `App.Prj.ProjectRole` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Görev Listesi — personelin projelerde üstlendiği görevler (ör. Ar-Ge Mühendisi, Proje Koordinatörü). |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_ProjectRole` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` |
| Form varsayılanları | IsActive=true |
| Veri aynası | `data/App.Prj.ProjectRole.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Görev Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Aylık Adam/Ay Oranları — `App.Prj.UserMonthRate`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/UserMonthRate.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj.Definitions` › `App.Prj.UserMonthRate` (sıra 3) |
| Yetki | `App.Prj.UserMonthRate` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Aylık Adam/Ay Oranları — personelin yıl ve ay bazındaki genel çalışma oranı (%); Ar-Ge merkezi raporlaması için kullanılır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_UserMonthRate` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total`, `App.Widget.Personnel` |
| Form varsayılanları | Rate=100 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Personel Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Month` | Ay | dxSelectBox | ✓ | ✓ | liste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
| `Year` | Yıl | dxNumberBox | ✓ | ✓ | |
| `Rate` | Oran (%) | dxNumberBox | ✓ | ✓ | |
### İş Paketleri (`App.Prj.WorkPackage`)
#### İş Paketleri — `App.Prj.WorkPackage`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkPackage.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.WorkPackage` (sıra 2) |
| Yetki | `App.Prj.WorkPackage` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Paketleri — projelerin hiyerarşik iş planı; ay ölçeğinde Gantt olarak gösterilir (1 → 1.01, 1.02 …). |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_WorkPackage` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Tree, Gantt (açılış gantt) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Prj.WorkPackageMember` (Id → WorkPackageId), `App.Prj.WorkPackageMonthRate` (Id → WorkPackageId), `App.Prj.WorkPackagePlanned` (Id → WorkPackageId), `App.Prj.WorkPackageActual` (Id → WorkPackageId) |
| Form varsayılanları | Progress=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectId` | Proje | dxSelectBox | ✓ | ✓ | sorgu: Prj_T_Project |
| `Code` | İş Paket No | dxTextBox | ✓ | ✓ | |
| `Name` | İş Paketi | dxTextBox | ✓ | ✓ | |
| `ParentId` | Üst İş Paketi | dxSelectBox | | ✓ | sorgu: Prj_T_WorkPackage (← ProjectId) |
| `StartDate` | Başlangıç | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | script |
| `Months` | Ay | dxNumberBox | | ✓ | |
| `Progress` | İlerleme (%) | dxNumberBox | | ✓ | |
| `Color` | Renk | dxColorBox | | ✓ | |
| `Note` | Not | dxTextBox | | ✓ | |
#### İş Paketi Personeli — `App.Prj.WorkPackageMember`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkPackageMember.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.WorkPackageMember` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Paketi Personeli — seçili iş paketinde çalışan personel. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_WorkPackageMember` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkPackageId` | İş Paketi | dxSelectBox | | | sorgu: Prj_T_WorkPackage |
| `UserId` | Personel Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
#### İş Paketi Adam/Ay — `App.Prj.WorkPackageMonthRate`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkPackageMonthRate.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.WorkPackageMonthRate` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Paketi Adam/Ay — personelin ilgili ayda seçili iş paketine ayırdığı yüzde. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_WorkPackageMonthRate` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | Rate=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkPackageId` | İş Paketi | dxSelectBox | | | sorgu: Prj_T_WorkPackage |
| `UserId` | Personel Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Month` | Ay | dxSelectBox | ✓ | ✓ | liste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
| `Year` | Yıl | dxNumberBox | ✓ | ✓ | |
| `Rate` | Oran (%) | dxNumberBox | ✓ | ✓ | |
#### Planlanan Kaynaklar — `App.Prj.WorkPackagePlanned`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkPackagePlanned.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.WorkPackagePlanned` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Planlanan Kaynaklar — seçili iş paketinin bütçelenen maliyetleri: personel, seyahat, ekipman, danışmanlık, hizmet, malzeme ve diğer. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_WorkPackageResource` · filtre `"IsDeleted" = 'false' AND "Kind" = 'Planned'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | Unit=Adet, Price=0, Quantity=1, VatRate=0, Cost=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkPackageId` | İş Paketi | dxSelectBox | | | sorgu: Prj_T_WorkPackage |
| `ResourceType` | Kaynak Tipi | dxSelectBox | ✓ | ✓ | liste: Personnel, Travel, Equipment, Consulting, Service, Material, Other |
| `UserId` | Personel Adı | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `ResourceName` | Kaynak / Ad ve Açıklama | dxTextBox | ✓ | ✓ | |
| `OrganizationType` | Kuruluş Türü | dxTextBox | | ✓ | |
| `OrganizationName` | Kuruluş Adı | dxTextBox | | ✓ | |
| `WorkDone` | Yaptırılan İş | dxTextBox | | ✓ | |
| `WorkDescription` | Yaptırılan İş Açıklama | dxTextBox | | ✓ | |
| `DocumentDate` | Belge Tarihi | dxDateBox | | ✓ | |
| `DocumentNo` | Belge No | dxTextBox | | ✓ | |
| `Unit` | Birim | dxTextBox | | ✓ | |
| `Price` | Fiyat | dxNumberBox | | ✓ | script |
| `Quantity` | Adet / Miktar | dxNumberBox | | ✓ | script |
| `VatRate` | KDV (%) | dxNumberBox | | ✓ | script |
| `Cost` | Maliyet | dxNumberBox | | ✓ | |
#### Gerçekleşen Masraflar — `App.Prj.WorkPackageActual`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/WorkPackageActual.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.WorkPackageActual` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Gerçekleşen Masraflar — seçili iş paketinin gerçekleşen maliyetleri; planlanan kaynaklarla aynı biçimde girilir. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_WorkPackageResource` · filtre `"IsDeleted" = 'false' AND "Kind" = 'Actual'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | Unit=Adet, Price=0, Quantity=1, VatRate=0, Cost=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkPackageId` | İş Paketi | dxSelectBox | | | sorgu: Prj_T_WorkPackage |
| `ResourceType` | Kaynak Tipi | dxSelectBox | ✓ | ✓ | liste: Personnel, Travel, Equipment, Consulting, Service, Material, Other |
| `UserId` | Personel Adı | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `ResourceName` | Kaynak / Ad ve Açıklama | dxTextBox | ✓ | ✓ | |
| `OrganizationType` | Kuruluş Türü | dxTextBox | | ✓ | |
| `OrganizationName` | Kuruluş Adı | dxTextBox | | ✓ | |
| `WorkDone` | Yaptırılan İş | dxTextBox | | ✓ | |
| `WorkDescription` | Yaptırılan İş Açıklama | dxTextBox | | ✓ | |
| `DocumentDate` | Belge Tarihi | dxDateBox | | ✓ | |
| `DocumentNo` | Belge No | dxTextBox | | ✓ | |
| `Unit` | Birim | dxTextBox | | ✓ | |
| `Price` | Fiyat | dxNumberBox | | ✓ | script |
| `Quantity` | Adet / Miktar | dxNumberBox | | ✓ | script |
| `VatRate` | KDV (%) | dxNumberBox | | ✓ | script |
| `Cost` | Maliyet | dxNumberBox | | ✓ | |
### Günce Listesi (`App.Prj.Diary`)
#### Günce Listesi — `App.Prj.Diary`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Diary.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.Diary` (sıra 3) |
| Yetki | `App.Prj.Diary` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Günce Listesi — personelin proje ve iş paketine göre günlük yaptığı çalışmaları yazdığı liste. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Diary` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total`, `App.Widget.Today`, `App.Widget.TotalHours` |
| Form varsayılanları | UserId=@USERID |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectId` | Proje | dxSelectBox | ✓ | ✓ | sorgu: Prj_T_Project |
| `WorkPackageId` | İş Paketi | dxSelectBox | | ✓ | sorgu: Prj_T_WorkPackage (← ProjectId) |
| `StartTime` | Başlangıç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndTime` | Bitiş Tarihi | dxDateBox | | ✓ | script |
| `Minutes` | Dakika | dxNumberBox | | ✓ | |
| `UserId` | Kullanıcı Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Content` | Günce | dxHtmlEditor | | ✓ | |
### Projeler (`App.Prj.Project`)
#### Projeler — `App.Prj.Project`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Project.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.Project` (sıra 4) |
| Yetki | `App.Prj.Project` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Proje Listesi — Ar-Ge ve destekli projeler (TÜBİTAK, KOSGEB, Ar-Ge Merkezi, AB, iç proje); takım, iş paketleri, maliyetler ve günce ile birlikte. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Prj.ProjectSummary` (Id → Id), `App.Prj.ProjectSupport` (Id → Id), `App.Prj.ProjectNeeds` (Id → Id), `App.Prj.ProjectActivities` (Id → Id), `App.Prj.ProjectInnovation` (Id → Id), `App.Prj.ProjectOutputs` (Id → Id), `App.Prj.ProjectMember` (Id → ProjectId), `App.Prj.WorkPackage` (Id → ProjectId), `App.Prj.ProjectCostSummary` (Id → ProjectId), `App.Prj.Diary` (Id → ProjectId) |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Completed`, `App.Widget.TotalBudget` |
| Form varsayılanları | Status=Draft |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectNo` | Proje No | dxTextBox | ✓ | ✓ | |
| `Name` | Proje Adı | dxTextBox | ✓ | ✓ | |
| `ProjectType` | Proje Tipi | dxSelectBox | | ✓ | liste: TUBITAK, KOSGEB, ArgeCenter, EU, Internal |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, Active, Completed, Cancelled |
| `StartDate` | Başlangıç Tarihi | dxDateBox | | ✓ | |
| `EndDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `ManagerId` | Proje Yöneticisi | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `Tags` | Etiketler | dxTagBox | | ✓ | sorgu: Prj_T_Tag |
#### Proje Özeti — `App.Prj.ProjectSummary`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectSummary.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectSummary` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Proje Özeti — projenin HTML editörle yazılan serbest metin özeti. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Summary` | Proje Özeti | dxHtmlEditor | | ✓ | |
#### Destek — `App.Prj.ProjectSupport`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectSupport.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectSupport` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Destek — projenin destek ve bütçe bilgileri. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `NationalSupportOrg` | Ulusal Ar-Ge Destek Kurumu | dxTextBox | | ✓ | |
| `InternationalSupportOrg` | Uluslararası Ar-Ge Destek Kurumu | dxTextBox | | ✓ | |
| `OwnFundedAmount` | Öz Kaynakla Karşılanan Tutar (TL) | dxNumberBox | | ✓ | |
| `SupportAmount` | Destek Tutarı (TL) | dxNumberBox | | ✓ | |
| `TotalBudget` | Toplam Proje Bütçesi (TL) | dxNumberBox | | ✓ | |
| `ServicePurchaseSubject` | Hizmet Alımı Konusu | dxTextBox | | ✓ | |
| `ServicePurchasePlace` | Hizmet Alımı Yapılan Yer | dxTextBox | | ✓ | |
#### İhtiyaçlar — `App.Prj.ProjectNeeds`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectNeeds.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectNeeds` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İhtiyaçlar — projeyi doğuran sorun ve ihtiyaçlar; HTML editörle yazılır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Needs` | İhtiyaçlar | dxHtmlEditor | | ✓ | |
#### Faaliyetler — `App.Prj.ProjectActivities`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectActivities.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectActivities` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Faaliyetler — proje kapsamında planlanan ve yürütülen faaliyetler; HTML editörle yazılır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Activities` | Faaliyetler | dxHtmlEditor | | ✓ | |
#### Yenilikçi Yönü — `App.Prj.ProjectInnovation`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectInnovation.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectInnovation` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Yenilikçi Yönü — projenin yenilikçi ve özgün yönleri; HTML editörle yazılır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Innovation` | Yenilikçi Yönü | dxHtmlEditor | | ✓ | |
#### Çıktı ve Faydaları — `App.Prj.ProjectOutputs`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectOutputs.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectOutputs` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Çıktı ve Faydaları — projenin beklenen çıktıları ve sağlayacağı faydalar; HTML editörle yazılır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Outputs` | Çıktı ve Faydalar | dxHtmlEditor | | ✓ | |
#### Takım — `App.Prj.ProjectMember`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectMember.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectMember` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Takım — projede çalışan personel; ağaç yapısında tutulur: önce takım lideri, sonra ona bağlı personel (Yönetici alanı). |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_T_ProjectMember` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Tree (açılış tree) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | AvgMonthlyCost=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectId` | Proje | dxSelectBox | | | sorgu: Prj_T_Project |
| `UserId` | Personel Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `ProjectRoleId` | Görev Adı | dxSelectBox | | ✓ | sorgu: Prj_T_ProjectRole |
| `ParentId` | Yönetici Adı | dxSelectBox | | ✓ | sorgu: Prj_T_ProjectMember |
| `AvgMonthlyCost` | Ort. Aylık Maliyet | dxNumberBox | | ✓ | |
| `PackageCount` | Paket Adedi | | | | |
| `ManMonthTotal` | Adam/Ay Toplamı | | | | |
| `WorkedMonths` | Çalışılan Ay | | | | |
| `TotalCost` | Toplam Maliyet | | | | |
#### Adam / Ay Oranları ve Detaylı Maliyet Raporu — `App.Prj.ProjectCostSummary`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ProjectCostSummary.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prj.ProjectCostSummary` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Adam / Ay Oranları ve Detaylı Maliyet Raporu — projenin salt okunur özeti: Planlanan ve Gerçek için birer satır. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_V_ProjectCostSummary` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectId` | Proje | dxTextBox | | | |
| `Kind` | Tipi | dxSelectBox | | | liste: Planned, Actual |
| `ManMonth` | Adam / Ay | dxNumberBox | | | |
| `PersonnelCost` | Personel Maliyet | dxNumberBox | | | |
| `TravelCost` | Seyahat Maliyet | dxNumberBox | | | |
| `EquipmentCost` | Ekipman Maliyet | dxNumberBox | | | |
| `ConsultingCost` | Danışmanlık Maliyet | dxNumberBox | | | |
| `ServiceCost` | Hizmet Maliyet | dxNumberBox | | | |
| `MaterialCost` | Malzeme Maliyet | dxNumberBox | | | |
| `OtherCost` | Diğer Maliyet | dxNumberBox | | | |
| `TotalCost` | Toplam Maliyet | dxNumberBox | | | |
### Adam/Ay Oranları (`App.Prj.ManMonth`)
#### Adam/Ay Oranları — `App.Prj.ManMonth`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ManMonth.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.ManMonth` (sıra 5) |
| Yetki | `App.Prj.ManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Adam/Ay Oranları — proje bazında personelin ilgili aylarda iş paketlerinde geçirdiği yüzdesel çalışma oranları; ay ölçeğinde Gantt olarak gösterilir. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_V_ManMonthGantt` |
| Görünümler | Grid, Card, Pivot, Chart, Tree, Gantt (açılış gantt) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ParentId` | Üst | dxTextBox | | | |
| `ProjectId` | Proje | dxSelectBox | | | sorgu: Prj_T_Project |
| `Title` | Personel / İş Adı | dxTextBox | | | |
| `StartDate` | Başlangıç | dxDateBox | | | |
| `EndDate` | Bitiş | dxDateBox | | | |
| `Progress` | İlerleme | dxNumberBox | | | |
| `AvgRate` | OAA | dxNumberBox | | | |
| `TotalRate` | TAA | dxNumberBox | | | |
| `MonthCount` | TÇA | dxNumberBox | | | |
### Kaynak Listesi (`App.Prj.ResourceList`)
#### Kaynak Listesi — `App.Prj.ResourceList`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/ResourceList.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.ResourceList` (sıra 6) |
| Yetki | `App.Prj.ResourceList` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Kaynak Listesi — tüm projelerin planlanan ve gerçekleşen kaynaklarının tek yerde salt okunur listesi. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_V_ResourceList` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.StaticLookup.Planned`, `App.StaticLookup.Actual` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectNo` | Proje No | dxTextBox | | | |
| `ProjectName` | Proje Adı | dxTextBox | | | |
| `WorkPackageCode` | İş Paket No | dxTextBox | | | |
| `WorkPackageName` | İş Adı | dxTextBox | | | |
| `ResourceType` | Tipi | dxSelectBox | | | liste: Personnel, Travel, Equipment, Consulting, Service, Material, Other |
| `ResourceName` | Kaynak | dxTextBox | | | |
| `Quantity` | Adet | dxNumberBox | | | |
| `Unit` | Birim | dxTextBox | | | |
| `Price` | Fiyat | dxNumberBox | | | |
| `Cost` | Maliyet | dxNumberBox | | | |
| `Kind` | Türü | dxSelectBox | | | liste: Planned, Actual |
| `DocumentDate` | Belge Tarihi | dxDateBox | | | |
| `DocumentNo` | Belge No | dxTextBox | | | |
| `OrganizationType` | Kuruluş Türü | dxTextBox | | | |
| `WorkDone` | Yaptırılan İş | dxTextBox | | | |
| `WorkDescription` | Yaptırılan İş Açıklama | dxTextBox | | | |
### Personel Adam/Ay Oranları (`App.Prj.PersonnelManMonth`)
#### Personel Adam/Ay Oranları — `App.Prj.PersonnelManMonth`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/PersonnelManMonth.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.PersonnelManMonth` (sıra 7) |
| Yetki | `App.Prj.PersonnelManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Personel Adam/Ay Oranları — tüm projelerde personelin aylık iş paketi oranlarının ve bunlardan çıkan gerçek maliyetin salt okunur listesi. |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_V_PersonnelManMonth` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectNo` | Proje No | dxTextBox | | | |
| `ProjectName` | Proje Adı | dxTextBox | | | |
| `WorkPackageCode` | İş Paket No | dxTextBox | | | |
| `WorkPackageName` | İş Adı | dxTextBox | | | |
| `PeriodDate` | Tarih | dxDateBox | | | |
| `UserId` | Personel Adı | dxSelectBox | | | sorgu: AbpUsers |
| `ManMonthValue` | Adam/Ay Değeri | dxNumberBox | | | |
| `MonthlyRate` | Aylık Çalışma Oranı | dxNumberBox | | | |
| `EffectiveRate` | Aya Düşen Çalışma Oranı | dxNumberBox | | | |
| `UnitCost` | Gerçek Birim Maliyet | dxNumberBox | | | |
| `TotalCost` | Gerçek Toplam Maliyet | dxNumberBox | | | |
### Proje Bütçe Raporu (`App.Prj.BudgetReport`)
#### Proje Bütçe Raporu — `App.Prj.BudgetReport`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/BudgetReport.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Prj` › `App.Prj.BudgetReport` (sıra 8) |
| Yetki | `App.Prj.BudgetReport` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Proje Bütçe Raporu — projelerin planlanan ve gerçekleşen maliyetlerinin aylık takibi; ay ölçeğinde Gantt olarak gösterilir (salt okunur). |
| Geliştirme talebi | Proje Modülü |
| Kaynak | `Prj_V_BudgetMonthly` |
| Görünümler | Grid, Card, Pivot, Chart, Tree, Gantt (açılış gantt) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ProjectId` | Proje | dxSelectBox | | | sorgu: Prj_T_Project |
| `ParentId` | Üst | dxTextBox | | | |
| `Title` | Gider Kalemi | dxTextBox | | | |
| `ResourceType` | Kaynak Tipi | dxSelectBox | | | liste: Personnel, Travel, Equipment, Consulting, Service, Material, Other |
| `StartDate` | Başlangıç | dxDateBox | | | |
| `EndDate` | Bitiş | dxDateBox | | | |
| `Year` | Yıl | dxNumberBox | | | |
| `Month` | Ay | dxNumberBox | | | |
| `Planned` | Planlanan | dxNumberBox | | | |
| `Actual` | Gerçek | dxNumberBox | | | |
| `Ratio` | Gerçek Oran (%) | dxNumberBox | | | |
| `Progress` | İlerleme | dxNumberBox | | | |
<!-- module-doc:auto:end -->