sozsoft-platform/configs/seeds/host/docs/modules/HrVehicles.md

546 lines
29 KiB
Markdown
Raw Normal View History

2026-10-04 15:04:16 +00:00
# İK › Araçlar (`App.Hr.Vehicles`)
Şirket araç filosu yönetimi: araç ve şoför kayıtları, araç/şoför belgeleri (ruhsat, sigorta,
muayene, ehliyet, psikoteknik), trafik cezaları ve kazalar, fatura bazlı araç masrafları ve
güvenlik kulübesinden araç giriş–çıkış takibi (km, süre, gidilen yer). Tamamı konfigürasyondur
(Wizard + SQL); entity, migration ya da React kodu yoktur.
> Bu doküman modülün tek "nasıl çalışır" kaynağıdır. Modülde yapılan her değişiklik aynı commit'te
> buraya yansır (`lowcode.instructions.md` §0.13).
---
## 1. Amaç ve kapsam
| Persona | Ne yapar | Ekran |
| --- | --- | --- |
| Filo / idari işler sorumlusu | Araç, şoför, belge ve masraf tanımlarını yönetir; araç belgelerini ve masraf faturalarını girer | Araç Belgeleri · Araçlar · Gidilecek Yerler · Şoför Tanımlama · Masraf Tanımlama · Masraf Girişleri |
| Güvenlik personeli | Aracın çıkışını ve dönüşünü (km, saat, kullanan personel) kaydeder | Araç Giriş-Çıkış Takip |
| Yönetim | Dışarıdaki araç sayısı, toplam km ve masrafı izler | Widget'lar, Pivot, Chart |
Kapsam: kiracı (`IsTenant`). Araç bir şubeye (tesis) bağlıdır; satır süzmesi yoktur.
---
## 2. Analiz ve kararlar
> Modül §0.13 kuralından önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan (wizard,
> SQL, seed, commit'ler `7be0b4ed` "Human Resources -> Araçlar" ve `021a8a34` "Araçlar düzenlemesi")
> okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Wizard ekranları; aracın altında Belgeler, şoförün altında Belgeler / Cezalar / Kazalar, masraf girişinin altında Kalemler (menüsüz alt formlar) |
| Belge tanımı | Tek tanım tablosu (`Hr_T_VehicleDocument`) iki eksenle ayrılır: **grup** (Vehicle / Driver) ve **tip** (Insurance, Document, Tax, Toll, Inspection, Maintenance, Penalty, Accident). Her alt form kendi kümesini süzer |
| Araç durumu | `Arrived` (Geldi — şirkette) / `Left` (Gitti — dışarıda); giriş–çıkış kaydından güncellenir |
| Araç km'si | `CurrentKm` giriş–çıkış kaydının giriş km'sinden güncellenir; yeni çıkışta önerilen çıkış km'si budur |
| Zimmet | Şoföre en fazla **5 araç** zimmetlenir (`Vehicle1Id`…`Vehicle5Id` sabit kolonlar) |
| Şoför km'si | Şoförün `TotalKm`'si, kullandığı tüm hareketlerin yapılan km toplamıdır (SQL) |
| Masraf | Fatura başlığı + kalemler; `Net Tutar = Miktar × Tutar × (1 − İskonto% / 100)` formda hesaplanır |
| Muayene/sigorta tarihleri | Araç kaydında başlangıç–bitiş tarihleri olarak tutulur; **hatırlatma/bildirim yoktur** |
| Hareket numarası | `MovementNo` kiracı bazında `MAX + 1` (insert sonrası SQL) |
---
## 3. Menü ve ekranlar
`İnsan Kaynakları › Araçlar` (`App.Hr.Vehicles`, ikon `FcAutomotive`)
| Sıra | Menü (TR / EN) | `ListFormCode` | Alt formlar | Widget'lar |
| --- | --- | --- | --- | --- |
| 1 | Araç Belgeleri / Vehicle Documents | `App.Hr.VehicleDocument` | — | Toplam · Aktif · Pasif |
| 2 | Araçlar / Vehicles | `App.Hr.Vehicle` | `VehicleFile` (`Id → VehicleId`) | Toplam · Geldi · Gitti · Pasif |
| 3 | Gidilecek Yerler / Destinations | `App.Hr.VehicleDestination` | — | Toplam · Aktif · Pasif |
| 4 | Şoför Tanımlama / Drivers | `App.Hr.Driver` | `DriverDocument`, `DriverPenalty`, `DriverAccident` (`Id → DriverId`) | Toplam · Zimmetli Araçlı · Toplam Km |
| 5 | Masraf Tanımlama / Expense Definitions | `App.Hr.VehicleExpenseDefinition` | — | Toplam · Aktif · Pasif |
| 6 | Masraf Girişleri / Vehicle Expenses | `App.Hr.VehicleExpense` | `VehicleExpenseLine` (`Id → VehicleExpenseId`) | Toplam · Bugün · Toplam Tutar (net kalemler) |
| 7 | Araç Giriş-Çıkış Takip / Vehicle Gate Log | `App.Hr.VehicleMovement` | — | Toplam · Gitti · Bugün |
Tüm ekranlar Grid, Card, Pivot, Chart görünümleriyle gelir; özel görünüm (Todo, Scheduler) yoktur.
Seed verisi:
- 17 belge tanımı (`data/App.Hr.VehicleDocument.json`). Örnekler: trafik sigortası, ruhsat, K2, MTV, OGS/HGS, egzoz/genel muayene, takograf (araç); sürücü belgesi, psikoteknik, SRC 4, kırmızı ışık ve hız cezası (şoför).
- 9 masraf tanımı (`data/App.Hr.VehicleExpenseDefinition.json`): sigorta, vergi, bakım, muayene ×2, geçiş ×2, ceza, yakıt.
---
## 4. Veri modeli
```
Sas_T_Branch ──< Hr_T_Vehicle ──< Hr_T_VehicleFile >── Hr_T_VehicleDocument (grup Vehicle)
│ ▲
│ └── Hr_T_Driver.Vehicle1..5Id ── AbpUsers (UserId)
│ ├──< Hr_T_DriverDocument >── VehicleDocument (grup Driver, ceza/kaza hariç)
│ ├──< Hr_T_DriverPenalty >── VehicleDocument (tip Penalty)
│ └──< Hr_T_DriverAccident >── VehicleDocument (tip Accident)
├──< Hr_T_VehicleExpense ──< Hr_T_VehicleExpenseLine >── Hr_T_VehicleExpenseDefinition
│ └── Hr_T_VehicleDestination (firma)
└──< Hr_T_VehicleMovement >── AbpUsers (gönderen, güvenlik, kullanan), Hr_T_VehicleDestination
```
| Tablo | Önemli kolonlar |
| --- | --- |
| `Hr_T_VehicleDocument` | `DocumentGroup` (Vehicle/Driver), `DocumentType` (8 tip), `Name`, `IsActive` |
| `Hr_T_Vehicle` | `BranchId` (tesis), `Name`, `Brand`, `Model`, `BodyType`, `UsagePlace`, `RegistrationDate`, `PlateNumber`, `Status` (Arrived/Left), `CurrentKm`, muayene / sigorta / egzoz / takograf başlangıç–bitiş tarihleri, `IsActive` |
| `Hr_T_VehicleFile` | `VehicleId`, `VehicleDocumentId`, `FileName`, `FileContent` |
| `Hr_T_VehicleDestination` | `Name`, `Distance` (km), `IsActive` |
| `Hr_T_Driver` | `UserId`, `Vehicle1Id`…`Vehicle5Id`, `TotalKm` |
| `Hr_T_DriverDocument` | `DriverId`, `VehicleDocumentId`, `FileName`, `FileContent` |
| `Hr_T_DriverPenalty` | `DriverId`, `PenaltyDate`, `Amount`, `Description`, `VehicleDocumentId`, dosya |
| `Hr_T_DriverAccident` | `DriverId`, `AccidentDate`, `VehicleDocumentId`, `Description`, dosya |
| `Hr_T_VehicleExpenseDefinition` | `ExpenseType`, `Name`, `IsActive` |
| `Hr_T_VehicleExpense` | `VehicleId`, `InvoiceNo`, `InvoiceDate`, `DestinationId` (firma), `VehicleDocumentId`, dosya |
| `Hr_T_VehicleExpenseLine` | `VehicleExpenseId`, `ExpenseDefinitionId`, `DetailName`, `Quantity`, `Amount`, `DiscountRate`, `NetAmount`, `Description` |
| `Hr_T_VehicleMovement` | `MovementNo`, `ExitDate`, `ExitTime` (SS:dd metin), `BranchId`, `ExitKm`, `SenderUserId`, `SecurityUserId`, `DriverUserId`, `VehicleId`, `DestinationId`, `Reason`, `Location`, `EntrySecurityUserId`, `EntryDate`, `EntryBranchId`, `EntryTime`, `EntryKm`, `TravelledKm`, `Status`, `DurationMinutes`, `ExpectedKm` |
Tablo düzeyinde CHECK ya da tekil indeks yoktur (plaka tekilliği zorlanmaz); kurallar form ve SQL'dedir.
---
## 5. İş kuralları ve hesaplar
### 5.1 Giriş–çıkış (`App.Hr.VehicleMovement`)
Form script'leri:
| Olay | Kural |
| --- | --- |
| Form açılışı | Çıkış tarihi bugün, çıkış saati şimdi, durum `Left` |
| Araç seçimi | `ExpectedKm` = aracın `CurrentKm`'si; çıkış km boşsa aynı değer yazılır |
| Çıkış km | `ExpectedKm`'den küçükse uyarı + `ExpectedKm` yazılır; giriş km varsa yapılan km yeniden hesaplanır |
| Giriş km | Çıkış km'den küçükse uyarı + geri alınır. Doluysa durum `Arrived`, `TravelledKm = EntryKm − ExitKm`, giriş tarihi/saati boşsa şimdi. Boşsa durum `Left`, yapılan km boş |
| Tarih/saat değişimi | `DurationMinutes` = giriş − çıkış (dakika; saat `SS:dd` biçiminde olmalı) |
Sunucu komutları:
| Komut | Etki |
| --- | --- |
| Insert sonrası | `MovementNo` atanır; aracın `Status`'u ve (giriş km varsa) `CurrentKm`'si hareketten yazılır; kullanan personelin şoför kaydındaki `TotalKm` yeniden toplanır |
| Delete sonrası | Şoför `TotalKm` yeniden toplanır; aracın `CurrentKm`'si son girişin km'sine, `Status`'u son hareketin durumuna döner (hareket yoksa `Arrived`) |
| Update sonrası | **Yok** — bkz. §9 |
### 5.2 Masraf
`NetAmount = round(Quantity × Amount × (1 − DiscountRate / 100), 2)`; miktar, tutar ya da iskonto
değişince formda hesaplanır. Fatura tarihi yeni kayıtta bugündür. "Toplam Tutar" widget'ı
silinmemiş tüm kalemlerin toplamıdır.
### 5.3 Belge süzmesi
| Ekran | Listelenen belge tanımları |
| --- | --- |
| Araç › Belgeler, Masraf Girişi | `DocumentGroup = 'Vehicle'` |
| Şoför › Belgeler | `DocumentGroup = 'Driver'` ve tip `Penalty`/`Accident` dışı |
| Şoför › Cezalar | `DocumentType = 'Penalty'` |
| Şoför › Kazalar | `DocumentType = 'Accident'` |
---
## 6. Yetki ve görünürlük
İzin grubu `App.Hr`, modül `Sas|Hr`. Yetki ağacı menüyü izler: `App.Hr.Vehicles` ara yetkisinin
altında yedi ekranın kökü + `.Create/.Update/.Delete/.Export/.Import/.Note`; alt formlar (`VehicleFile`,
`DriverDocument`, `DriverPenalty`, `DriverAccident`, `VehicleExpenseLine`) ana ekranlarının altındadır.
Satır süzmesi yoktur. Hiçbir yetki role otomatik atanmaz.
| Rol | Yetkiler |
| --- | --- |
| Filo sorumlusu | `App.Hr.Vehicles` dalının tamamı |
| Güvenlik | `App.Hr.VehicleMovement` (+ `.Create/.Update`) |
| Muhasebe (masraf) | `App.Hr.VehicleExpense`, `App.Hr.VehicleExpenseLine` |
---
## 7. Entegrasyonlar
| Kaynak | Kullanım |
| --- | --- |
| `Sas_T_Branch` | Aracın tesisi; hareketin çıkış/giriş şubesi |
| `AbpUsers` | Şoför, gönderen personel, güvenlik personeli, kullanan personel |
Bildirim, zamanlanmış iş ya da rapor şablonu yoktur.
---
## 8. Akış örneği
1. Filo sorumlusu **Araçlar**'a "34 ABC 123"ü girer (şube Merkez, km 45.000, muayene/sigorta bitiş
tarihleri); **Belgeler** sekmesine ruhsat ve trafik sigortasını yükler.
2. **Şoför Tanımlama**'da personeli şoför yapar, aracı zimmet 1'e bağlar; sürücü belgesini yükler.
3. Güvenlik **Araç Giriş-Çıkış Takip**'te yeni kayıt açar: tarih/saat dolar, araç seçilince çıkış
km 45.000 olur; kullanan personel ve gidilen yer seçilir → araç **Dışarıda**.
4. Dönüşte giriş km'si (45.180) girilir → durum Şirkette, yapılan km 180, süre dakika olarak hesaplanır.
5. Yakıt faturası **Masraf Girişleri**'ne başlık + kalem (yakıt, 40 lt × 45 ₺) olarak girilir.
6. Gelen hız cezası şoförün **Cezalar** sekmesine tutar ve belgeyle eklenir.
---
## 9. Sık sorulanlar ve bilinen sınırlar
**Plakası aynı iki araç girilebiliyor mu?** Evet; tabloda tekil kısıt yoktur.
**Muayene/sigorta bitişi yaklaşınca uyarı geliyor mu?** Hayır; tarihler yalnızca kayıttadır.
Hatırlatma için zamanlanmış iş + bildirim tipi eklenmelidir (yok).
**Bir şoföre 5'ten fazla araç zimmetlenebilir mi?** Hayır; kolonlar sabittir.
**Masraf girişindeki "Firma Adı" neden Gidilecek Yerler'den geliyor?** Masraf firması ayrı bir
tanım olarak açılmamış, gidilecek yer tanımı kullanılmıştır.
**Kontrol edilmeli — dönüş güncellemeyle girildiğinde araç/şoför güncellenmiyor.** Giriş–çıkış
ekranında yalnızca insert ve delete sonrası komut vardır. Çıkış kaydı açılıp dönüş **aynı kaydı
düzenleyerek** girildiğinde aracın `Status`/`CurrentKm`'si ve şoförün `TotalKm`'si güncellenmez
(bir sonraki ekleme ya da silmeye kadar).
**Kontrol edilmeli — yalnız çıkış girilen kayıtta aracın km'si.** Formda `EntryKm` varsayılanı
`0`'dır. Insert sonrası komut `@EntryKm` boş değilse aracın `CurrentKm`'sini ona eşitler. Giriş km
temizlenmeden kaydedilen bir çıkış kaydı aracın km'sini 0'a çekebilir.
---
## 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/host/sql/object/Hr_T_{VehicleDocument,Vehicle,VehicleFile,VehicleDestination,Driver,DriverDocument,DriverPenalty,DriverAccident,VehicleExpenseDefinition,VehicleExpense,VehicleExpenseLine,VehicleMovement}.sql` | Tablolar |
| `configs/seeds/host/wizard/{VehicleDocument,Vehicle,VehicleFile,VehicleDestination,Driver,DriverDocument,DriverPenalty,DriverAccident,VehicleExpenseDefinition,VehicleExpense,VehicleExpenseLine,VehicleMovement}.json` | 12 wizard |
| `configs/seeds/host/data/App.Hr.{VehicleDocument,VehicleExpenseDefinition}.json` | Tanım verisi |
| `configs/seeds/host/data/App.Menus.Menu.json`, `Abp.Identity.Permissions.json`, `App.Languages.LanguageText.json` | Menü, yetki, dil satırları |
Kurulum: DB Migrate. Geri alma: Wizard Manager'dan alt formlar önce, ana ekranlar sonra silinir;
tablolar yalnızca onayda seçilirse düşer.
<!-- 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.
### Araç Belgeleri — `App.Hr.VehicleDocument`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleDocument.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDocument` (sıra 1) |
| Yetki | `App.Hr.VehicleDocument` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Araç Belgeleri — araç ve şoför kayıtlarında kullanılan belge tanımları (ruhsat, sigorta, muayene, MTV, OGS/HGS, ehliyet, psikoteknik, ceza ve kaza belgeleri). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleDocument` · 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.Hr.VehicleDocument.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DocumentGroup` | Belge Grubu | dxSelectBox | ✓ | ✓ | liste: Vehicle, Driver |
| `DocumentType` | Belge Tipi | dxSelectBox | ✓ | ✓ | liste: Insurance, Document, Tax, Toll, Inspection, Maintenance, Penalty, Accident |
| `Name` | Belge Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
### Araçlar — `App.Hr.Vehicle`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Vehicle.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.Vehicle` (sıra 2) |
| Yetki | `App.Hr.Vehicle` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Araçlar — şubeye ait şirket araçları, anlık durumu (şirkette/dışarıda), güncel km'si ve muayene/sigorta tarihleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_Vehicle` · 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.Hr.VehicleFile` (Id → VehicleId) |
| Widget'lar | `App.Widget.Total`, `App.Hr.Vehicle.Widget.Arrived`, `App.Hr.Vehicle.Widget.Left`, `App.Widget.Passive` |
| Form varsayılanları | IsActive=true |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `BranchId` | Tesis Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `Name` | Araç Adı | dxTextBox | ✓ | ✓ | |
| `Brand` | Markası | dxTextBox | | ✓ | |
| `Model` | Modeli | dxTextBox | | ✓ | |
| `BodyType` | Cinsi | dxTextBox | | ✓ | |
| `UsagePlace` | Kullanıldığı Yer | dxTextBox | | ✓ | |
| `RegistrationDate` | Tescil Tarihi | dxDateBox | | ✓ | |
| `PlateNumber` | Plakası | dxTextBox | ✓ | ✓ | |
| `Status` | Durumu | dxSelectBox | | ✓ | liste: Arrived, Left |
| `CurrentKm` | Araç Km'si | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
| `InspectionStart` | Muayene Başlangıç | dxDateBox | | ✓ | |
| `InspectionEnd` | Muayene Bitiş | dxDateBox | | ✓ | |
| `InsuranceStart` | Sigorta Başlangıç | dxDateBox | | ✓ | |
| `InsuranceEnd` | Sigorta Bitiş | dxDateBox | | ✓ | |
| `EmissionStart` | Egzoz Muayene Başlangıç | dxDateBox | | ✓ | |
| `EmissionEnd` | Egzoz Muayene Bitiş | dxDateBox | | ✓ | |
| `TachographStart` | Takograf Kalib. Başlangıç | dxDateBox | | ✓ | |
| `TachographEnd` | Takograf Kalib. Bitiş | dxDateBox | | ✓ | |
### Gidilecek Yerler — `App.Hr.VehicleDestination`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleDestination.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDestination` (sıra 3) |
| Yetki | `App.Hr.VehicleDestination` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Gidilecek Yerler — araçlarla gidilen tanımlı yerler ve uzaklıkları. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleDestination` · 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 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Gidilecek Yerin Adı | dxTextBox | ✓ | ✓ | |
| `Distance` | Uzaklığı (km) | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
### Şoför Tanımlama — `App.Hr.Driver`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Driver.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.Driver` (sıra 4) |
| Yetki | `App.Hr.Driver` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Şoför Tanımlama — şirket araçlarını kullanan personel, zimmetli araçları ve sürüş geçmişi. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_Driver` · 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.Hr.DriverDocument` (Id → DriverId), `App.Hr.DriverPenalty` (Id → DriverId), `App.Hr.DriverAccident` (Id → DriverId) |
| Widget'lar | `App.Widget.Total`, `App.Hr.Driver.Widget.WithVehicle`, `App.Hr.Driver.Widget.TotalKm` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Sicil No / Adı Soyadı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Vehicle1Id` | Zimmetli Araç 1 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle2Id` | Zimmetli Araç 2 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle3Id` | Zimmetli Araç 3 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle4Id` | Zimmetli Araç 4 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle5Id` | Zimmetli Araç 5 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `TotalKm` | Yapılan KM | dxNumberBox | | ✓ | |
### Masraf Tanımlama — `App.Hr.VehicleExpenseDefinition`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleExpenseDefinition.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpenseDefinition` (sıra 5) |
| Yetki | `App.Hr.VehicleExpenseDefinition` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Masraf Tanımlama — araç masraf kalemleri (sigorta, vergi, bakım, muayene, geçiş, ceza, yakıt…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpenseDefinition` · 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.Hr.VehicleExpenseDefinition.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ExpenseType` | Masraf Tipi | dxTextBox | ✓ | ✓ | |
| `Name` | Masraf Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
### Masraf Girişleri — `App.Hr.VehicleExpense`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleExpense.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpense` (sıra 6) |
| Yetki | `App.Hr.VehicleExpense` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpense` · 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.Hr.VehicleExpenseLine` (Id → VehicleExpenseId) |
| Widget'lar | `App.Widget.Total`, `App.Widget.Today`, `App.Widget.TotalRevenue` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `VehicleId` | Araç Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle |
| `InvoiceNo` | Fatura No | dxTextBox | ✓ | ✓ | |
| `InvoiceDate` | Fatura Tarihi | dxDateBox | ✓ | ✓ | script |
| `DestinationId` | Firma Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
### Araç Giriş-Çıkış Takip — `App.Hr.VehicleMovement`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleMovement.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleMovement` (sıra 7) |
| Yetki | `App.Hr.VehicleMovement` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Araç Giriş-Çıkış Takip — güvenliğin tuttuğu araç hareket defteri: araç şirketten ne zaman, kimle, hangi km ile çıktı, ne zaman döndü. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleMovement` · 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.Hr.Vehicle.Widget.Left`, `App.Widget.Today` |
| Komutlar | InsertAfter: SQL · DeleteAfter: SQL |
| Form varsayılanları | EntryKm=0 |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MovementNo` | Hareket No | dxNumberBox | | | |
| `ExitDate` | Çıkış Tarihi | dxDateBox | ✓ | ✓ | script |
| `BranchId` | Çıkış Şube | dxSelectBox | | ✓ | sorgu: Sas_T_Branch |
| `ExitTime` | Çıkış Saati | dxTextBox | ✓ | ✓ | script |
| `ExitKm` | Çıkış Km | dxNumberBox | ✓ | ✓ | script |
| `SenderUserId` | Gönderen Personel | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `SecurityUserId` | Güvenlik Personeli | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DriverUserId` | Kullanan Personel | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `VehicleId` | Araç Adı / Plaka | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle · script |
| `DestinationId` | Gidilen Yer | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination |
| `Reason` | Gidiş Sebebi | dxTextBox | | ✓ | |
| `Location` | Konum | dxTextBox | | ✓ | |
| `EntrySecurityUserId` | Giriş Yapan Güvenlik Per. | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `EntryDate` | Giriş Tarihi | dxDateBox | | ✓ | script |
| `EntryBranchId` | Giriş Şube | dxSelectBox | | ✓ | sorgu: Sas_T_Branch |
| `EntryTime` | Giriş Saati | dxTextBox | | ✓ | script |
| `EntryKm` | Giriş Km | dxNumberBox | | ✓ | script |
| `TravelledKm` | Yapılan Km | dxNumberBox | | ✓ | |
| `Status` | Durum | dxSelectBox | | ✓ | liste: Arrived, Left |
| `DurationMinutes` | Gezinti Süresi / Dk | dxNumberBox | | ✓ | |
| `ExpectedKm` | Olması Gereken Km | dxNumberBox | | ✓ | |
### Araç Belgeleri — `App.Hr.VehicleFile`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleFile.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.VehicleFile` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Araç Dosyaları — araca yüklenen belgeler (ruhsat, poliçe, muayene raporu…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleFile` · 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 |
| --- | --- | --- | --- | --- | --- |
| `VehicleId` | Araç | dxSelectBox | | | sorgu: Hr_T_Vehicle |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
### Şoför Belgeleri — `App.Hr.DriverDocument`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/DriverDocument.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverDocument` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Şoför Belgeleri — şoföre ait belgeler (sürücü belgesi, psikoteknik, SRC…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverDocument` · 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 |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
### Ceza Belgeleri — `App.Hr.DriverPenalty`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/DriverPenalty.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverPenalty` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Şoför Cezaları — şoföre kesilen trafik cezaları. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverPenalty` · 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 |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `PenaltyDate` | Ceza Tarihi | dxDateBox | ✓ | ✓ | |
| `Amount` | Tutarı | dxNumberBox | | ✓ | |
| `Description` | Ceza Açıklama | dxTextBox | | ✓ | |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
### Kaza Belgeleri — `App.Hr.DriverAccident`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/DriverAccident.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverAccident` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Şoför Kazaları — şoförün karıştığı trafik kazaları ve belgeleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverAccident` · 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 |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `AccidentDate` | Kaza Tarihi | dxDateBox | ✓ | ✓ | |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `Description` | Kaza Açıklama | dxTextBox | | ✓ | |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
### Masraf Kalemleri — `App.Hr.VehicleExpenseLine`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/VehicleExpenseLine.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.VehicleExpenseLine` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Masraf Kalemleri — bir masraf faturasının satırları. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpenseLine` · 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 |
| --- | --- | --- | --- | --- | --- |
| `VehicleExpenseId` | Masraf Girişi | dxTextBox | | | |
| `ExpenseDefinitionId` | Masraf Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleExpenseDefinition |
| `DetailName` | Masraf Detay Adı | dxTextBox | | ✓ | |
| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | script |
| `Amount` | Tutarı | dxNumberBox | ✓ | ✓ | script |
| `DiscountRate` | İskonto Oranı (%) | dxNumberBox | ✓ | ✓ | script |
| `NetAmount` | Net Tutar | dxNumberBox | ✓ | ✓ | |
| `Description` | Masraf Açıklama | dxTextBox | | ✓ | |
<!-- module-doc:auto:end -->