Tip: VIEW · Şema: KYC · Modül: MOD-KYC · Temizlik sınıfı: MANUAL_REVIEW (kategori D, güven 70) · Kapsam: KYC_VARIANT / ALL
Kullanım haritası (13.09.2026)
| Kategori | F — MANUAL REVIEW · F-EXTERNAL_PRODUCT |
| Güven | 90 |
| Gerekçe | ERPGOLD dışı ürün/servis şeması: AifaUyum KYC/MASAK modülü — ERPGOLD kodu çağırmaz ama başka uygulama kullanır |
| Referans veren (gerekli olmayan) | KYC.vHesapListesi |
Bkz. Database Usage Map · Manual Review. Hiçbir DB değişikliği yapılmadı; SAFETY > CLEANUP.
Temizlik kanıtı
| Kontrol | Sonuç |
|---|---|
| app | NO |
| report | NO |
| config | NO |
| dynamic | NO |
| db_in | YES |
| db_out | YES |
| trigger | NO |
| fk | NO |
| computed | NO |
| crossdb | NO |
| runtime | UNKNOWN |
| external | RISK |
Gerekçe: EXTERNAL USE RISK: AifaUyum KYC/MASAK modülü — ERPGOLD dışı AIFASOFT ürünü; nesneler 2026-09-10 oluşturulmuş
KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)
Tür: VIEW (V) · Modül: MOD-KYC · Uzunluk: 144 satır
Özet
[GAP] Kaynakta açıklama yorumu yok; davranış aşağıdaki SQL tanımından ve ilişkilerden okunur.
Bağımlılıklar (bu nesne → hedef)
| İlişki | Hedef | Tip |
|---|---|---|
| READS | KYC.Dokumanlar | TABLE |
| READS | KYC.Firmalar | TABLE |
| READS | KYC.IlgiliKisiler | TABLE |
| CALLS | KYC.vHesaplar | VIEW |
Bu nesneyi kullananlar
| Nesne | Tip |
|---|---|
| KYC.vHesapListesi | VIEW |
SQL tanımı (AS-IMPLEMENTED, örnek DB)
CREATE VIEW [KYC].[vHesapKimlik]
AS
SELECT
v.HesapId,
v.HesapAdi,
ISNULL(v.IsActive, 1) AS IsActive,
/* --- unvan --- */
CAST(ISNULL(NULLIF(LTRIM(RTRIM(f.Unvan)), N''),
NULLIF(LTRIM(RTRIM(v.TicariUnvan)), N'')) AS NVARCHAR(200))
AS Unvan,
CAST(CASE WHEN NULLIF(LTRIM(RTRIM(f.Unvan)), N'') IS NOT NULL THEN N'K'
WHEN NULLIF(LTRIM(RTRIM(v.TicariUnvan)), N'') IS NOT NULL THEN N'H'
ELSE N'' END AS NVARCHAR(1)) AS UnvanKaynak,
/* --- vergi no --- */
CAST(ISNULL(NULLIF(LTRIM(RTRIM(f.VergiNo)), N''),
NULLIF(LTRIM(RTRIM(v.VergiNo)), N'')) AS NVARCHAR(50))
AS VergiNo,
CAST(CASE WHEN NULLIF(LTRIM(RTRIM(f.VergiNo)), N'') IS NOT NULL THEN N'K'
WHEN NULLIF(LTRIM(RTRIM(v.VergiNo)), N'') IS NOT NULL THEN N'H'
ELSE N'' END AS NVARCHAR(1)) AS VergiNoKaynak,
/* --- TCKN --- */
CAST(ISNULL(NULLIF(LTRIM(RTRIM(f.Tckn)), N''),
NULLIF(LTRIM(RTRIM(v.TCNo)), N'')) AS NVARCHAR(50))
AS Tckn,
CAST(CASE WHEN NULLIF(LTRIM(RTRIM(f.Tckn)), N'') IS NOT NULL THEN N'K'
WHEN NULLIF(LTRIM(RTRIM(v.TCNo)), N'') IS NOT NULL THEN N'H'
ELSE N'' END AS NVARCHAR(1)) AS TcknKaynak,
/* --- pasaport --- */
CAST(ISNULL(NULLIF(LTRIM(RTRIM(f.PasaportNo)), N''),
NULLIF(LTRIM(RTRIM(v.PassaportNo)), N'')) AS NVARCHAR(50))
AS PasaportNo,
CAST(CASE WHEN NULLIF(LTRIM(RTRIM(f.PasaportNo)), N'') IS NOT NULL THEN N'K'
WHEN NULLIF(LTRIM(RTRIM(v.PassaportNo)), N'') IS NOT NULL THEN N'H'
ELSE N'' END AS NVARCHAR(1)) AS PasaportKaynak,
/* --- çakışma --- */
CAST(CASE WHEN
(NULLIF(LTRIM(RTRIM(f.VergiNo)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.VergiNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.VergiNo)) <> LTRIM(RTRIM(v.VergiNo)))
OR (NULLIF(LTRIM(RTRIM(f.Tckn)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.TCNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.Tckn)) <> LTRIM(RTRIM(v.TCNo)))
OR (NULLIF(LTRIM(RTRIM(f.PasaportNo)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.PassaportNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.PasaportNo)) <> LTRIM(RTRIM(v.PassaportNo)))
THEN 1 ELSE 0 END AS BIT) AS Cakisma,
CAST(
CASE WHEN NULLIF(LTRIM(RTRIM(f.VergiNo)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.VergiNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.VergiNo)) <> LTRIM(RTRIM(v.VergiNo))
THEN N'VKN ' ELSE N'' END
+ CASE WHEN NULLIF(LTRIM(RTRIM(f.Tckn)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.TCNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.Tckn)) <> LTRIM(RTRIM(v.TCNo))
THEN N'TCKN ' ELSE N'' END
+ CASE WHEN NULLIF(LTRIM(RTRIM(f.PasaportNo)), N'') IS NOT NULL
AND NULLIF(LTRIM(RTRIM(v.PassaportNo)), N'') IS NOT NULL
AND LTRIM(RTRIM(f.PasaportNo)) <> LTRIM(RTRIM(v.PassaportNo))
THEN N'Pasaport ' ELSE N'' END
AS NVARCHAR(60)) AS CakismaAlan,
/* --- KYC tarafı --- */
v.KycVar,
v.KisiTipi,
v.KisiTipiKaynak,
v.KycDurumu,
v.RiskSeviyesi,
f.RiskNedeni,
v.SonGozdenGecirme,
v.SonrakiGozdenGecirme,
f.OnaylayanUserId,
f.OnayTarihi,
v.EksikSayisi,
v.ZorunluEksikSayisi,
/* Tüzel kişide kural sayısını belirleyen şey. */
ISNULL(kk.Adet, 0) AS KayitliKisi,
/* Dosyada en son ne zaman bir belge hareketi oldu (yükleme, karar,
silme). Onayın hâlâ geçerli olup olmadığını bununla ölçüyoruz. */
dh.SonHareket AS SonBelgeHareketi,
/* KARAR BEKLEYEN BELGE SAYISI (1.6.0).
Izgarada sütun oldu. Sebebi: bu sayı yalnız Onay kuyruğu sekmesinde
görünüyordu; hesap listesine bakan operatör "bu dosyada benden bir
şey bekleniyor mu" sorusunu ancak sekme değiştirerek cevaplıyordu. */
ISNULL(db.Adet, 0) AS BekleyenBelge,
/* --- BAYAT ONAY: türetilir, saklanmaz -------------------------------
Onaylı bir dosya iki şekilde bayatlar:
1) zorunlu eksik doğdu (belge süresi doldu, belge reddedildi,
kural değişti) — çoğunun OLAYI YOKTUR, sadece tarih geçer,
2) onaydan sonra dosyaya belge hareketi oldu.
İkisi de her açılışta yeniden hesaplanıyor. */
CAST(CASE WHEN v.KycDurumu = 2 AND f.OnayTarihi IS NOT NULL
AND (v.ZorunluEksikSayisi > 0
OR (dh.SonHareket IS NOT NULL
AND dh.SonHareket > f.OnayTarihi))
THEN 1 ELSE 0 END AS BIT) AS OnayBayat,
/* --- ROZET: ekranda görünen BEŞ durumun TEK KAYNAĞI -----------------
0 KYC yok kayıt açılmadı, hiçbir kural uygulanmadı
1 Kişi tipi yok kayıt var, tip yok — kural YİNE uygulanmıyor
4 Ortak yok tüzel kişi ama kayıtlı ortak/yetkili yok; kişi
düzeyli kurallar HİÇ DOĞMADI, eksik sayısı EKSİK
2 Eksik var kural uygulandı, karşılanmadı
3 Tam kural uygulandı, karşılandı
0, 1 ve 4'te eksik sayısı GÜVENİLİR DEĞİLDİR. */
CAST(CASE WHEN v.KycVar = 0 THEN 0
WHEN ISNULL(v.KisiTipi, 0) = 0 THEN 1
WHEN v.KisiTipi = 2
AND ISNULL(kk.Adet, 0) = 0 THEN 4
WHEN v.ZorunluEksikSayisi > 0 THEN 2
ELSE 3 END AS TINYINT) AS RozetKod
FROM Kyc.vHesaplar v
LEFT JOIN Kyc.Firmalar f
ON f.HesapId = v.HesapId AND f.IsDeleted = 0
LEFT JOIN (
SELECT HesapId, COUNT(*) AS Adet
FROM Kyc.IlgiliKisiler
WHERE IsDeleted = 0
GROUP BY HesapId
) kk ON kk.HesapId = v.HesapId
LEFT JOIN (
SELECT HesapId, MAX(ISNULL(LastDate, InsertDate)) AS SonHareket
FROM Kyc.Dokumanlar
WHERE IsDeleted = 0
GROUP BY HesapId
) dh ON dh.HesapId = v.HesapId
LEFT JOIN (
SELECT HesapId, COUNT(*) AS Adet
FROM Kyc.Dokumanlar
WHERE IsDeleted = 0 AND Durum = 0 -- 0 = karar bekliyor
GROUP BY HesapId
) db ON db.HesapId = v.HesapId;
Kaynaklar
- SRC-DB-MODULES —
sys.sql_modulestanımı (salt okunur); gizli sabitler[REDACTED_SECRET]ile değiştirildi.
Bilinmeyenler
- Hangi sürümde eklendiği:
createdDB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).
