{ "ListFormCode": "App.DevRequests", "KeyFieldName": "Id", "GeneratedAt": "2026-10-02T06:15:41.395351Z", "Order": 0, "Rows": [ { "Id": "b0b200d4-f3f6-4fe3-9f11-5bff3040a110", "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, "Status": "Testing", "Title": "Human Resources -> Araçlar", "Description": "
Araç Belgeleri : Araçlarda kullanılmak üzere belge tanımlama listesidir.
Araçlar : Şubeye ait araçların listesidir. Araç listesinin detay formu ile aşağıdaki form açılacaktır. detay formunda araç belgeleri ve pdf, resim vs. belgeleri uplaod edilebilmelidir.
Gidilecek Yerler: Araçlar ile gidilebilecek tanımlı yerlerin listesidir.
Şoför Tanımlama : Şirket araçlarını kullanan kullanıcıların listesidir. SubFormlardaki Belge Adı bilgisi Araç Belgelerinden gelmektedir. Ayrıca bu belgeleri pdf, image vs dosyalarını subformlara upload edilebilmelidir.
Masraf Tanımlama: Araçlara ait masrafların listesidir.
Masraf Girişleri : Her araç için girilen masrafların tanımlandığı alandır. Masraf Girişleri Listesi üzerinden detay formu ile ulaşılabilir. Firma Adı sütunu aslında Gidilecek Yerler listesinden seçilecektir. Yine Belge adı bilgisi Araç Belgelerinden seçilmelidir. Ayrıca dosya upoad edilebilmelidir.
Araç Giriş-Çıkış Takip Listesi: Bu liste aracın şirkette mi yoksa dışarıda mı olduğunu takip eder. Ayrıca araçların giriş ve çıkış km bilgilerinin kaydedildiği bir listedir. Durum bilgisi içeride ve dışarıda gibi bir bilgi olabilir. Eğer giriş km yazıldıysa Durum otomatik değişecektir.
İK / idari işler ekibinin şirket araçlarını, şoförlerini, araç ve şoför belgelerini, araç masraflarını ve güvenlik noktasındaki araç giriş-çıkış hareketlerini (km ve Geldi/Gitti durumu) tek menü altında takip etmesi.
\n\nTümü Wizard List: yedi menülü liste ekranı + beş menüsüz alt form (List sekmesi). Dosya yükleme, Eğitim talebindeki App.Hr.TrainingFile kalıbıyla (FileName + FileContent nvarchar(MAX), dxImageUpload). Otomatik durum/km güncellemesi EditorScript ve InsertAfterCommand/UpdateAfterCommand SQL'iyle yapılır; custom component gerekmez.
İnsan Kaynakları › Araçlar › {Ekran}
\n| Seviye | Kod | Ad (TR / EN) | İkon | Durum |
|---|---|---|---|---|
| Kök | App.Hr | İnsan Kaynakları / Human Resources | — | Var |
| Ara | App.Hr.Vehicles | Araçlar / Vehicles | FcAutomotive | Yeni |
| Ekran | App.Hr.VehicleDocument | Araç Belgeleri / Vehicle Documents | FcDocument | Yeni |
| Ekran | App.Hr.Vehicle | Araçlar / Vehicles | FcAutomotive | Yeni |
| Ekran | App.Hr.VehicleDestination | Gidilecek Yerler / Destinations | FcGlobe | Yeni |
| Ekran | App.Hr.Driver | Şoför Tanımlama / Drivers | FcBusinessman | Yeni |
| Ekran | App.Hr.VehicleExpenseDefinition | Masraf Tanımlama / Expense Definitions | FcList | Yeni |
| Ekran | App.Hr.VehicleExpense | Masraf Girişleri / Vehicle Expenses | FcMoneyTransfer | Yeni |
| Ekran | App.Hr.VehicleMovement | Araç Giriş-Çıkış Takip / Vehicle Gate Log | FcInspection | Yeni |
ModuleId: Hr · İzin grubu: App.Hr · Route: /admin/list/{ListFormCode} · MenuParentCode: App.Hr.Vehicles, MenuParentPath: [App.Hr].
Yetki: App.Hr › App.Hr.Vehicles (Yeni) › {ListFormCode}. Alt formlar: … › App.Hr.Vehicle › App.Hr.VehicleFile; … › App.Hr.Driver › App.Hr.DriverDocument / App.Hr.DriverPenalty / App.Hr.DriverAccident; … › App.Hr.VehicleExpense › App.Hr.VehicleExpenseLine.
Tüm tablolar yeni, kiracı + audit + soft delete (standing default). Dosya kolonları: FileName nvarchar(256), FileContent nvarchar(MAX).
Hr_T_VehicleDocument — Tanım tablosu: Evet (başka ekranların \"Belge Adı\" lookup kaynağı). DocumentGroup nvarchar(16) zorunlu (Vehicle/Driver, ekranda ARAÇ/ŞOFÖR); DocumentType nvarchar(32) zorunlu (Insurance, Document, Tax, Toll, Inspection, Maintenance, Penalty, Accident; TR karşılıkları statik lookup); Name nvarchar(128) zorunlu; IsActive bit=1 zorunlu.
Hr_T_VehicleDestination — Tanım: Evet (Gidilen Yer ve Firma lookup kaynağı). Name nvarchar(128) zorunlu; Distance decimal(18,2) (km); IsActive.
\nHr_T_VehicleExpenseDefinition — Tanım: Evet. ExpenseType nvarchar(32) zorunlu (SİGORTA, VERGİ, BAKIM, MUAYENE, GEÇİŞ, CEZA, YAKIT — serbest metin, görseldeki gibi); Name nvarchar(128) zorunlu; IsActive.
\nHr_T_Vehicle — Tanım: Evet (Aktif/Pasif görselde var; şoför, masraf ve hareket lookup kaynağı). BranchId uniqueidentifier zorunlu (Sas_T_Branch); Name nvarchar(128) zorunlu; Brand, Model, BodyType, UsagePlace nvarchar(64); RegistrationDate date; PlateNumber nvarchar(16) zorunlu; IsActive; Status nvarchar(16) varsayılan Arrived (Geldi, salt okunur); CurrentKm int varsayılan 0 (salt okunur, hareketlerden hesaplanır); InspectionStart/End, InsuranceStart/End, EmissionStart/End, TachographStart/End date.
Hr_T_VehicleFile — Tanım: Hayır. VehicleId zorunlu; VehicleDocumentId zorunlu (Group=Vehicle); FileName zorunlu; FileContent zorunlu.
\nHr_T_Driver — Tanım: Hayır (kişi kaydı; pasiflik kullanıcı kaydında). UserId uniqueidentifier zorunlu, tekil (AbpUsers); Name/Surname kullanıcıdan salt okunur gösterilir (tabloda tutulmaz); Vehicle1Id…Vehicle5Id uniqueidentifier (Hr_T_Vehicle); TotalKm int varsayılan 0 (salt okunur, hareketlerden hesaplanır).
\nHr_T_DriverDocument — DriverId, VehicleDocumentId (Group=Driver, Type≠Penalty/Accident), FileName, FileContent.
\nHr_T_DriverPenalty — DriverId, PenaltyDate date zorunlu, Amount decimal(18,2), Description nvarchar(512), VehicleDocumentId (Type=Penalty), FileName, FileContent.
\nHr_T_DriverAccident — DriverId, AccidentDate date zorunlu, Description nvarchar(512), VehicleDocumentId (Type=Accident), FileName, FileContent.
\nHr_T_VehicleExpense — VehicleId zorunlu; InvoiceNo nvarchar(32) zorunlu; InvoiceDate date zorunlu; DestinationId (Hr_T_VehicleDestination, ekranda \"Firma Adı\"); VehicleDocumentId (Group=Vehicle); FileName; FileContent.
\nHr_T_VehicleExpenseLine — VehicleExpenseId zorunlu; ExpenseDefinitionId zorunlu; DetailName nvarchar(128); Quantity decimal(18,2) varsayılan 1; Amount decimal(18,2); DiscountRate decimal(5,2) varsayılan 0; NetAmount decimal(18,2) (salt okunur, hesaplı); Description nvarchar(512).
\nHr_T_VehicleMovement — MovementNo int (otomatik, kiracı içi MAX+1, salt okunur); VehicleId zorunlu; ExitBranchId (oturumdaki şube, salt okunur); ExitDate date zorunlu (bugün); ExitTime nvarchar(5) zorunlu (SS:dd); ExitKm int zorunlu; SenderUserId, SecurityUserId, DriverUserId (AbpUsers, DriverUserId zorunlu); DestinationId; Reason nvarchar(MAX); EntrySecurityUserId; EntryBranchId (salt okunur); EntryDate date; EntryTime nvarchar(5); EntryKm int; TravelledKm int (salt okunur); Status nvarchar(16) (Left=Gitti / Arrived=Geldi, salt okunur); DurationMinutes int (salt okunur); Location nvarchar(128); ExpectedKm int (salt okunur).
| Sekme | Hedef ListFormCode | TabType | Menü | İlişki | Ekle / Düzenle / Sil | Yetki yolu |
|---|---|---|---|---|---|---|
| Araç Belgeleri | App.Hr.VehicleFile | List | Menüsüz | Id → VehicleId | ✓ / ✓ / ✓ | … › App.Hr.Vehicle › App.Hr.VehicleFile |
| Şoför Belgeleri | App.Hr.DriverDocument | List | Menüsüz | Id → DriverId | ✓ / ✓ / ✓ | … › App.Hr.Driver › App.Hr.DriverDocument |
| Ceza Belgeleri | App.Hr.DriverPenalty | List | Menüsüz | Id → DriverId | ✓ / ✓ / ✓ | … › App.Hr.Driver › App.Hr.DriverPenalty |
| Kaza Belgeleri | App.Hr.DriverAccident | List | Menüsüz | Id → DriverId | ✓ / ✓ / ✓ | … › App.Hr.Driver › App.Hr.DriverAccident |
| Masraf Kalemleri | App.Hr.VehicleExpenseLine | List | Menüsüz | Id → VehicleExpenseId | ✓ / ✓ / ✓ | … › App.Hr.VehicleExpense › App.Hr.VehicleExpenseLine |
Silme talepte Gör/Sil butonlarıyla açıkça istendiği için tüm alt listelerde açıktır.
\n\nApp.Hr.Vehicles ve aynı kodlu ara yetki; 12 ekranın C/R/U/D/E/I/N yetkileri.NetAmount = Quantity × Amount × (1 − DiscountRate/100); Amount ve NetAmount sütunlarında toplam (sum) özeti.Arrived (Geldi), değilse Left (Gitti); EntryKm girilince TravelledKm = EntryKm − ExitKm, EntryBranchId=oturum şubesi, DurationMinutes = (EntryDate+EntryTime) − (ExitDate+ExitTime) dakika.Status'unu hareketin Status'una, EntryKm doluysa CurrentKm'ini EntryKm'e günceller; şoförün (Hr_T_Driver.UserId = DriverUserId) TotalKm'ini o kullanıcının hareketlerindeki TravelledKm toplamıyla yeniler. DeleteAfterCommand aynı yeniden hesaplamayı yapar (aracın CurrentKm'i son girişli hareketin EntryKm'i, yoksa 0). MovementNo InsertBeforeCommand'de MAX+1.BranchId kolonu taşır ve IsBranch: true — talep \"Şubeye ait araçlar\" diyor. Hareket ekranı da IsBranch: true (çıkış şubesi). Tanım ekranları ve Şoför şubeden bağımsız.Arrived) / Gitti (Left); yeni araç Geldi başlar (kullanıcı onayladı; karşı değer \"Gitti\" analiz kararı).nvarchar(5) SS:dd maskeli; tarih alanları ayrı (görsel düzeni).Evet
Tablolar (12): Hr_T_VehicleDocument, Hr_T_Vehicle, Hr_T_VehicleFile, Hr_T_VehicleDestination, Hr_T_Driver, Hr_T_DriverDocument, Hr_T_DriverPenalty, Hr_T_DriverAccident, Hr_T_VehicleExpenseDefinition, Hr_T_VehicleExpense, Hr_T_VehicleExpenseLine, Hr_T_VehicleMovement.
\nEkranlar: İnsan Kaynakları › Araçlar altında 7 menülü ekran (VehicleDocument, Vehicle, VehicleDestination, Driver, VehicleExpenseDefinition, VehicleExpense, VehicleMovement) ve 5 menüsüz alt form (VehicleFile, DriverDocument, DriverPenalty, DriverAccident, VehicleExpenseLine). Demo veri: Araç Belgeleri 17, Masraf Tanımları 9 satır.
\nDB Migrate bekleyen wizard'lar: 12 wizard'ın tamamı.
\nAnalizden sapmalar / varsayımlar:
\nBranchId olarak açıldı (IsBranch filtresi bu kolonu kullanır). Çıkış/Giriş Şube alanları seçilebilir lookup: oturum şubesi için bir varsayılan token'ı yok.