{ "ListFormCode": "App.DevRequests", "KeyFieldName": "Id", "GeneratedAt": "2026-09-30T11:47:47.1306592Z", "Order": 0, "Rows": [ { "Id": "2e84f333-5344-4f28-8cc0-178b46d7c0bc", "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, "Status": "Testing", "Title": "Human Resources -> Ziyaretçi Takip Listesi", "Description": "
Ziyaret Edilen Personel -> Kullanıcı Listesi üzerinden seçilecektir. Firma Adı AutoComplete yapıp ziyaretçi formuna girilen Firmalar listede gelecek istersek yeni Firma Adı girilebilmeli.
Tesise gelen ziyaretçilerin giriş/çıkış kaydının İK ve güvenlik/resepsiyon tarafından tutulması; kimin, hangi firmadan, kimi, ne zaman ve neden ziyaret ettiğinin şube bazında izlenmesi ve o an içeride kimin bulunduğunun görülmesi.
\n\n[image-1] — Liste ekranı + popup düzenleme formu (klasik ListForm).
\nWizard List (ComponentKind 0) — tek tablolu CRUD, lookup'lar ve varsayılan değerlerle karşılanır; özel bileşen, SP ya da servis gerekmez.
\n\nİnsan Kaynakları › Ziyaretçi Takip Listesi
\n| Seviye | Kod | Ad (TR / EN) | İkon | Durum |
|---|---|---|---|---|
| Kök | App.Hr | İnsan Kaynakları / Human Resources | FcConferenceCall | Var |
| Ekran | App.Hr.Visitor | Ziyaretçiler / Visitors | FcBusinessman | Yeni |
ModuleId: Hr · İzin grubu: App.Hr (Var) · Route: /admin/list/App.Hr.Visitor · Wizard: MenuParentCode = App.Hr, MenuParentPath boş (iki seviye).
Yetki: App.Hr › App.Hr.Visitor — ara seviye yok; App.Hr.Visitor Yeni.
Tablo: Hr_T_Visitor — Yeni, tenant kapsamlı (IsTenant = true, IsBranch = false; şube sütunu veridir), audit + soft delete alanları (CreationTime, CreatorId, LastModificationTime, LastModifierId, IsDeleted, DeleterId, DeletionTime).
Tanım tablosu: Hayır — kayıtlar hareket/olay kaydıdır (her ziyaret bir satır), başka ekranın lookup kaynağı değildir; IsActive kolonu yoktur.
| Kolon | Tip | Zorunlu | Açıklama / Lookup |
|---|---|---|---|
| Id | uniqueidentifier (PK) | Evet | @NEWID |
| TenantId | uniqueidentifier | Hayır | Platform doldurur |
| BranchId | uniqueidentifier | Evet | Şube — LookupQueryValues.TenantBranchValues (Sas_T_Branch) |
| VisitorType | nvarchar(50) | Evet | StaticData: Ziyaretçi, Müşteri, Tedarikçi, Taşeron, Kurye |
| VisitDate | date | Evet | Varsayılan @NOW |
| EntryTime | datetime | Evet | Giriş saati, varsayılan @NOW |
| ExitTime | datetime | Hayır | Çıkış saati; boşsa ziyaretçi içeride |
| CardNo | nvarchar(20) | Hayır | Verilen ziyaretçi kartı |
| VisitorFullName | nvarchar(200) | Evet | Ziyaretçi adı soyadı |
| VisitedUserId | uniqueidentifier | Evet | Kullanıcı listesi — SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND IsActive = 'true' AND TenantId = '@TENANTID' ORDER BY Name |
| CompanyName | nvarchar(200) | Hayır | Serbest metin; öneriler aynı tablodaki önceki kayıtlardan — SELECT DISTINCT CompanyName AS [Key], CompanyName AS [Name] FROM Hr_T_Visitor WHERE IsDeleted = 'false' AND CompanyName IS NOT NULL AND TenantId = '@TENANTID' ORDER BY CompanyName |
| VisitReason | nvarchar(MAX) | Hayır | Çok satırlı ziyaret sebebi |
App.Hr.Visitor + menü kaydı (İK kökü altında).App.Hr.Visitor (R), .Create, .Update, .Delete, .Export, .Import, .Note.App.Hr.Visitor, .Title, .Desc ve yeni alan başlıkları (VisitorType, VisitDate, EntryTime, ExitTime, CardNo, VisitorFullName, VisitedUserId, CompanyName, VisitReason; BranchId var olan anahtarı kullanır).dxSelectBox (searchEnabled: true); VisitDate → dxDateBox type date, dd.MM.yyyy; EntryTime / ExitTime → dxDateBox type time, HH:mm:ss, useMaskBehavior; CardNo, VisitorFullName → dxTextBox (maxLength 20 / 200); CompanyName → dxSelectBox acceptCustomValue: true, searchEnabled: true, showDataBeforeSearch: true (Key = Name = firma adı, metin olarak saklanır); VisitReason → dxTextArea, ColSpan tam.App.Hr.Visitor, tablo Hr_T_Visitor — İK önek kuralı (reference §12.4).dxSelectBox + acceptCustomValue ile karşılanır: önceki kayıtlardaki firmalar listelenir, listede olmayan yeni ad yazılabilir; ayrı firma tanım tablosu açılmaz, çünkü talep önerilerin ziyaretçi formuna girilenlerden gelmesini istiyor.datetime kolonda saat editörüyle tutulur; ayrı time tipi kullanılmaz (tarih editörü sözleşmesi Date/DateTime tiplerini destekler).create_table: Hr_T_Visitordeploy_wizard: Visitor.jsonEvet
Hr_T_Visitor oluşturuldu (tenant + tam audit; iş kolonları analizdeki gibi, VisitorType DB varsayılanı 'Ziyaretçi'). Seed: host/sql/object/Hr_T_Visitor.sql.App.Hr.Visitor (Visitor.json) — Grid/Card/Pivot/Chart, popup form \"Ziyaretçi Takip Formu\" (tek grup, 1 kolon), IsTenant = true, IsBranch = false, soft delete./admin/list/App.Hr.Visitor, FcBusinessman); yetkiler App.Hr.Visitor + .Create/.Update/.Delete/.Export/.Import/.Note, izin grubu App.Hr. Roller yetkiyi rol ekranından almalı.acceptCustomValue ile yeni ad yazılabilir).App.Hr.Visitor.Widget.Today/Inside/Exited).EditorScript (@runOnOpen) ile doldurulur; düzenlenen kayıtta değer korunur. Varsayılan sıralama (VisitDate azalan) ve popup başlığı wizard'da taşınamadı — gerekirse ListForm editöründen ayarlanır.Visitor.json.