AIFA AKADEMI · Kurumsal Wiki
4.330 makale
Ana sayfa Kurumsal Wiki › Hata Bilgi Bankası › EKB-HEALTH-CHECK

Database Health Check — Veritabanı Sağlık Kontrolleri

ERROR_KBERPGOLD_COREACTIVEAIFASOFT_INTERNALDERIVED
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

58 salt-okunur veritabanı sağlık kuralı, 11 başlık: işlem/bakiye/stok/history bütünlüğü, duplicate, kur=0, orphan, broken dependency, disabled trigger, missing object/column.

Künye (front-matter) · EKB-HEALTH-CHECK · reality [SUPPORT_OBSERVED, SOURCE_IMPLEMENTED, GENERATED_PROPOSAL]
idEKB-HEALTH-CHECK
titleHealth Check
entity_typeERROR_KB
moduleMOD-KALITE
audience[SUPPORT, DEVELOPER, QA]
confidentialityAIFASOFT_INTERNAL
product_scopeERPGOLD_CORE
customer_scopeALL
reality[SUPPORT_OBSERVED, SOURCE_IMPLEMENTED, GENERATED_PROPOSAL]
lifecycleACTIVE
confidenceMEDIUM
version_fromVERSION_UNKNOWN
version_to-
created_at2026-09-13
last_verified2026-09-13
source_hashes[]
sources[DOCUMENT:ERPGOLD_ERROR_MASTER.xlsx, DOCUMENT:ERPGOLD_HATA_KOK_NEDEN_BILGI_BANKASI.md, SRC-TKT-ERP, SOURCE_CODE:ERPPRO, DB_CATALOG:INST-ERPGOLDV2]
aliases[Health Check]
tags[error-kb]
wiki_versionv1.5
source_packageERPGOLD_HATA_BILGI_BANKASI_v1 / Wiki_23_Hata_Bilgi_Bankasi
sql_objects160 nesne
runtime_statusRULES_ONLY — hiçbir kurulumda otomatik PASS yazılmadı; Runtime Certification: PENDING

VERİTABANI SAĞLIK KONTROLLERİ — 58 salt-okunur kural. Her kural yalnızca SELECT içerir; hiçbir kural veri değiştirmez. Sonuçlar PASS / WARN / FAIL olarak yorumlanır. Kaynak: ERPGOLD_HEALTH_CHECK.sql (Hata Bilgi Bankası paketi) + BASE Runtime Certification kontrol seti. Bu kurallar bir kurulumun BASE'e uygunluğunu ölçer; BASE'in kendisi henüz CANDIDATE_CANONICAL statüsündedir.

Başlıklar

  1. Cari İşlem Bütünlüğü (14)
  2. Bakiye Tutarlılığı (5)
  3. Stok Hareket Tutarlılığı (6)
  4. History / İz Tutarlılığı (2)
  5. Duplicate İşlemler (6)
  6. Kur = 0 / Kur Tutarsızlığı (5)
  7. Orphan Kayıtlar (2)
  8. Broken Dependency (2)
  9. Disabled Trigger (4)
  10. Missing Object (3)
  11. Missing Column (1)
  12. Diğer: tohum veri, performans, veri tipi (8)

Özet

Kural58
SeverityS1 13 · S2 31 · S3 13 · S4 1
FAIL kuralı / WARN kuralı35 / 23
ÇalıştırmaSSMS'de salt-okunur oturum; her sorgu tek başına çalıştırılabilir. Sonuç 0 → PASS.

1. Cari İşlem Bütünlüğü

HC INV-01 — Aktif işlemin bakiye hareketi eksik S1 · 0 → PASS, aksi FAIL
CheckIdINV-01
DescriptionAktif işlemin bakiye hareketi eksik
RiskS1 · Cari.AcceptTransaction satır 263-558; BR-DEFTER-URETIMI; BR-BAKIYE-001/003/004
RelatedObjectsCari.Islemler, Cari.BakiyeIslem, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-034 · ERR-OBS-037 · ERR-OBS-040 · ERR-OBS-043 · ERR-OBS-048 · ERR-OBS-057 · ERR-OBS-058
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.IslemKodu, I.IslemTuru, I.IslemTipi, I.HesapId, I.Tarih
FROM Cari.Islemler I
WHERE I.IsDeleted = 0
  AND I.IslemTipi NOT IN (1, 11, 12)
  AND (
        (I.IslemKodu IN (1,2,9,4,5,6) AND ((I.BakiyeId > 0 AND I.Miktar <> 0) OR ISNULL(I.Tutar,0) <> 0))
     OR (I.IslemKodu IN (0,14))
     OR (I.IslemKodu NOT IN (0,1,2,4,5,6,9,14) AND ISNULL(I.Tutar,0) <> 0)
      )
  AND NOT EXISTS (SELECT 1 FROM Cari.BakiyeIslem B WHERE B.IslemId = I.Id)) x
HC INV-02 — Silinmiş / belge tipli (11,12) işlemin kalan türetilmiş kaydı S1 · 0 → PASS, aksi FAIL
CheckIdINV-02
DescriptionSilinmiş / belge tipli (11,12) işlemin kalan türetilmiş kaydı
RiskS1 · Cari.AcceptTransaction satır 256-263; BR-TIP-004
RelatedObjectsCari.BakiyeIslem, Cari.Islemler, Stok.StokHaraketleri, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-001 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'BakiyeIslem' AS Kaynak, B.IslemId FROM Cari.BakiyeIslem B
JOIN Cari.Islemler I ON I.Id = B.IslemId
WHERE I.IsDeleted = 1 OR I.IslemTipi IN (11,12)
UNION ALL
SELECT 'StokHaraketleri', H.IslemId FROM Stok.StokHaraketleri H
JOIN Cari.Islemler I ON I.Id = H.IslemId AND H.Bolum = 0
WHERE I.IsDeleted = 1 OR I.IslemTipi IN (11,12)) x
HC INV-03 — PEŞİN işlemin bakiye satırı S2 · 0 → PASS, aksi FAIL
CheckIdINV-03
DescriptionPEŞİN işlemin bakiye satırı
RiskS2 · Cari.AcceptTransaction satır 346, 352, 389, 419; BR-TIP-002
RelatedObjectsCari.BakiyeIslem, Cari.Islemler, Cari.AcceptTransaction
RelatedErrorsERR-SIL-075
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT B.IslemId, I.IslemKodu, B.BirimId, B.Bakiye
FROM Cari.BakiyeIslem B JOIN Cari.Islemler I ON I.Id = B.IslemId
WHERE I.IslemTipi = 1 AND I.IslemKodu NOT IN (0,14)) x
HC INV-11 — İşlemde sahipsiz hesap / şube / kasa S2 · 0 → PASS, aksi FAIL
CheckIdINV-11
Descriptionİşlemde sahipsiz hesap / şube / kasa
RiskS2 · Cari.AcceptTransaction satır 180-185; Cari.Islem.vb:508
RelatedObjectsCari.Islemler, Cari.Hesaplar, Sistem.Subeler, Sistem.Kasalar, Cari.AcceptTransaction
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-043 · ERR-OBS-048 · ERR-OBS-018 · ERR-OBS-041
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.HesapId, I.SubeId, I.KasaId
FROM Cari.Islemler I
WHERE I.IsDeleted = 0 AND (
      I.HesapId = 0 OR NOT EXISTS (SELECT 1 FROM Cari.Hesaplar H WHERE H.Id = I.HesapId)
   OR I.SubeId = 0  OR NOT EXISTS (SELECT 1 FROM Sistem.Subeler S WHERE S.Id = I.SubeId)
   OR I.KasaId = 0  OR NOT EXISTS (SELECT 1 FROM Sistem.Kasalar K WHERE K.Id = I.KasaId))) x
HC INV-14 — Negatif miktar / adet / tutar S2 · 0 → PASS, aksi FAIL
CheckIdINV-14
DescriptionNegatif miktar / adet / tutar
RiskS2 · Cari.AcceptTransaction satır 274, 336; Cari.Islem.vb:513
RelatedObjectsCari.Islemler, Cari.AcceptTransaction
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-005 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT Id, IslemKodu, IslemTuru, Miktar, Adet, Tutar
FROM Cari.Islemler
WHERE IsDeleted = 0 AND (Miktar < 0 OR Adet < 0 OR Tutar < 0)) x
HC INV-17 — İptal edilmiş işlemin belge detayı S3 · 0 → PASS, aksi WARN
CheckIdINV-17
Descriptionİptal edilmiş işlemin belge detayı
RiskS3 · Cari.UpdateTransaction (tek satır değişkeni); BR-BELGE-HAVUZU
RelatedObjectsCari.IslemDetaylari, Cari.Islemler, Cari.UpdateTransaction
RelatedErrorsERR-OBS-001 · ERR-OBS-009 · ERR-OBS-018 · ERR-OBS-012 · ERR-OBS-014 · ERR-SIL-030 · ERR-SIL-059
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT D.IslemId, D.ETTN, D.Durum FROM Cari.IslemDetaylari D JOIN Cari.Islemler I ON I.Id = D.IslemId
WHERE I.IsDeleted = 1 AND (ISNULL(D.ETTN,'') = '' OR ISNULL(D.Durum,'') <> 'EIPTAL')) x
HC INV-24 — Tarihsiz türetilmiş kayıt (devir öncesi kontrol) S2 · 0 → PASS, aksi FAIL
CheckIdINV-24
DescriptionTarihsiz türetilmiş kayıt (devir öncesi kontrol)
RiskS2 · Sistem.Devir (Tarih<@Tarih / Tarih>=@Tarih); H-108
RelatedObjectsCari.BakiyeIslem, Stok.StokHaraketleri, Cari.Islemler, Sistem.Devir
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-001 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'BakiyeIslem' AS Tablo, COUNT(*) FROM Cari.BakiyeIslem WHERE Tarih IS NULL
UNION ALL SELECT 'StokHaraketleri', COUNT(*) FROM Stok.StokHaraketleri WHERE Tarih IS NULL
UNION ALL SELECT 'Islemler', COUNT(*) FROM Cari.Islemler WHERE Tarih IS NULL AND IsDeleted = 0) x
HC INV-26 — Fiş numarası tekil gün/hesap S3 · 0 → PASS, aksi WARN
CheckIdINV-26
DescriptionFiş numarası tekil gün/hesap
RiskS3 · Cari.IslemEx.vb:256 (GetNewFisNo); iScreen.vb:723; H-102; CTR-016
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT FisNo, KasaId, COUNT(DISTINCT Tarih) AS GunSayisi, COUNT(DISTINCT HesapId) AS HesapSayisi
FROM Cari.Islemler WHERE IsDeleted = 0
GROUP BY FisNo, KasaId HAVING COUNT(DISTINCT Tarih) > 1 OR COUNT(DISTINCT HesapId) > 1) x
HC INV-27 — Çift bacaklı işlemlerin eşi mevcut S2 · 0 → PASS, aksi FAIL
CheckIdINV-27
DescriptionÇift bacaklı işlemlerin eşi mevcut
RiskS2 · iFormBase.SendTo; iFNakit.SaveCashTransaction; BR-VIRMAN-002; BR-TIP-011; H-106
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'VIRMAN' AS Tip, RefNo, COUNT(*) AS Adet FROM Cari.Islemler WHERE IsDeleted = 0 AND IslemKodu = 11 GROUP BY RefNo HAVING COUNT(*) <> 2
UNION ALL
SELECT 'PARITE', CONVERT(nvarchar(72), a.Id), 1 FROM Cari.Islemler a
WHERE a.IsDeleted = 0 AND a.IslemKodu = 3 AND a.VaryantId = -1
  AND NOT EXISTS (SELECT 1 FROM Cari.Islemler b WHERE b.VaryantId = a.Id AND b.IsDeleted = 0)) x
HC INV-21 — Son 30 günde pasif şubeye yazılmış işlem S3 · 0 → PASS, aksi WARN
CheckIdINV-21
DescriptionSon 30 günde pasif şubeye yazılmış işlem
RiskS3 ·
RelatedObjectsCari.Islemler, Sistem.Subeler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-018 · ERR-OBS-041
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler I JOIN Sistem.Subeler S ON S.Id = I.SubeId WHERE I.IsDeleted = 0 AND S.IsActive = 0 AND I.InsertDate > DATEADD(day,-30,GETDATE())
HC SQLR-054 — Cari.Islemler.Tag sayısal olmayan değer (Conversion failed riski) S3 · 0 → PASS, aksi WARN
CheckIdSQLR-054
DescriptionCari.Islemler.Tag sayısal olmayan değer (Conversion failed riski)
RiskS3 ·
RelatedObjectsCari.Islemler
RelatedErrorsSQLR-054 · ERR-POT-121
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE Tag IS NOT NULL AND TRY_CONVERT(int, Tag) IS NULL
HC SQLR-061 — Cari.Islemler.HesapType NULL S2 · 0 → PASS, aksi WARN
CheckIdSQLR-061
DescriptionCari.Islemler.HesapType NULL
RiskS2 ·
RelatedObjectsCari.Islemler
RelatedErrorsSQLR-061 · ERR-POT-126
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE HesapType IS NULL
HC SQLR-070 — Silinmiş işlemin ETTN'siz belge detayı (kalıntı) S3 · 0 → PASS, aksi WARN
CheckIdSQLR-070
DescriptionSilinmiş işlemin ETTN'siz belge detayı (kalıntı)
RiskS3 ·
RelatedObjectsCari.IslemDetaylari, Cari.Islemler
RelatedErrorsSQLR-070 · ERR-SIL-030
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.IslemDetaylari D JOIN Cari.Islemler I ON I.Id = D.IslemId WHERE I.IsDeleted = 1 AND ISNULL(D.ETTN,'') = ''
HC IDN-01 — Cari.Islemler identity mevcut değeri ile MAX(Id) uyumu (reseed/çakışma riski) S2 · 0 → PASS, aksi FAIL
CheckIdIDN-01
DescriptionCari.Islemler identity mevcut değeri ile MAX(Id) uyumu (reseed/çakışma riski)
RiskS2 ·
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT CASE WHEN IDENT_CURRENT('Cari.Islemler') < (SELECT ISNULL(MAX(Id),0) FROM Cari.Islemler) THEN 1 ELSE 0 END

2. Bakiye Tutarlılığı

HC INV-08 — Tutar bakiye satırı işlem tutarına eşit S2 · 0 → PASS, aksi FAIL
CheckIdINV-08
DescriptionTutar bakiye satırı işlem tutarına eşit
RiskS2 · Cari.AcceptTransaction satır 352-356, 389-393, 419-431
RelatedObjectsCari.Islemler, Cari.BakiyeIslem, Cari.AcceptTransaction
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-005 · ERR-OBS-027 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.Tutar, B.Bakiye
FROM Cari.Islemler I JOIN Cari.BakiyeIslem B ON B.IslemId = I.Id AND B.BirimId = I.BirimId
WHERE I.IsDeleted = 0 AND I.IslemTipi NOT IN (1,11,12) AND I.IslemKodu NOT IN (0,14)
  AND ISNULL(I.Tutar,0) <> 0 AND ABS(ABS(B.Bakiye) - ABS(I.Tutar)) > 0.005) x
HC INV-09 — Bakiye satırı yönü işlem yönü ile uyumlu S2 · 0 → PASS, aksi FAIL
CheckIdINV-09
DescriptionBakiye satırı yönü işlem yönü ile uyumlu
RiskS2 · BR-YON-002/003/004; Cari.AcceptTransaction satır 334-344, 371-381, 409-417
RelatedObjectsCari.Islemler, Cari.BakiyeIslem, Cari.AcceptTransaction
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-005 · ERR-OBS-027 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.IslemKodu, I.IslemTuru, B.BirimId, B.Bakiye
FROM Cari.Islemler I JOIN Cari.BakiyeIslem B ON B.IslemId = I.Id AND B.BirimId = I.BirimId
WHERE I.IsDeleted = 0 AND I.IslemTipi NOT IN (1,10,11,12) AND I.IslemKodu NOT IN (0,14)
  AND ISNULL(I.Tutar,0) <> 0
  AND ((I.IslemTuru % 2 = 0 AND B.Bakiye > 0) OR (I.IslemTuru % 2 = 1 AND B.Bakiye < 0))) x
HC INV-12 — Bakiye satırı geçerli birim taşımalı S2 · 0 → PASS, aksi FAIL
CheckIdINV-12
DescriptionBakiye satırı geçerli birim taşımalı
RiskS2 · Cari.AcceptTransaction satır 64-67, 318-330; Cari.IslemEx.vb:303
RelatedObjectsCari.BakiyeIslem, Sistem.Birimler, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-023 · ERR-OBS-040 · ERR-OBS-212 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT B.BirimId, COUNT(*) AS Adet, SUM(B.Bakiye) AS Toplam
FROM Cari.BakiyeIslem B
WHERE B.BirimId IS NULL OR (B.BirimId <> -1 AND NOT EXISTS (SELECT 1 FROM Sistem.Birimler Br WHERE Br.Id = B.BirimId))
GROUP BY B.BirimId) x
HC INV-15 — Hesap bazında bakiye toplamı = işlemlerden beklenen toplam (has/tutar) S1 · 0 → PASS, aksi FAIL
CheckIdINV-15
DescriptionHesap bazında bakiye toplamı = işlemlerden beklenen toplam (has/tutar)
RiskS1 · Cari.AcceptTransaction; BR-YON-002/004; PB-028 (SYM-BAKIYE)
RelatedObjectsCari.Islemler, Cari.BakiyeIslem, Cari.AcceptTransaction
RelatedErrorsERR-OBS-184 · ERR-OBS-185 · ERR-OBS-186 · ERR-OBS-187 · ERR-OBS-188 · ERR-OBS-189 · ERR-OBS-190 · ERR-OBS-191 · ERR-OBS-192 · ERR-OBS-193
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
CTE:WITH Beklenen AS (
  SELECT I.HesapId, I.BirimId,
         SUM(CASE WHEN I.IslemTuru % 2 = 0 THEN -ABS(I.Tutar) ELSE ABS(I.Tutar) END) AS Tutar
  FROM Cari.Islemler I
  WHERE I.IsDeleted = 0 AND I.IslemTipi NOT IN (1,10,11,12) AND I.IslemKodu NOT IN (0,14) AND ISNULL(I.Tutar,0) <> 0
  GROUP BY I.HesapId, I.BirimId),
Gercek AS (
  SELECT B.HesapId, B.BirimId, SUM(B.Bakiye) AS Bakiye
  FROM Cari.BakiyeIslem B JOIN Cari.Islemler I ON I.Id = B.IslemId AND B.BirimId = I.BirimId
  WHERE I.IslemKodu NOT IN (0,14) AND I.IslemTipi <> 10
  GROUP BY B.HesapId, B.BirimId)
SELECT @n = COUNT(*)
FROM Beklenen e FULL JOIN Gercek g ON g.HesapId = e.HesapId AND g.BirimId = e.BirimId
WHERE ABS(ISNULL(e.Tutar,0) - ISNULL(g.Bakiye,0)) > 0.01
HC INV-23 — Limit kontrolü veri tazeliği (Cari.BakiyeDun) S2 · 0 → PASS, aksi FAIL
CheckIdINV-23
DescriptionLimit kontrolü veri tazeliği (Cari.BakiyeDun)
RiskS2 · Cari.ToplamBakiye, Bakiye.DunkiBakiyeler; GAP-DB-03
RelatedObjectsSistem.Subeler, Cari.BakiyeDun, Cari.ToplamBakiye, Bakiye.DunkiBakiyeler
RelatedErrorsERR-OBS-014 · ERR-OBS-018 · ERR-OBS-041 · ERR-SIL-034 · ERR-SIL-070
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT (SELECT COUNT(*) FROM Sistem.Subeler WHERE IsLimitControl = 1 AND IsDeleted = 0) AS LimitKontrolluSube,
       (SELECT COUNT(*) FROM Cari.BakiyeDun) AS BakiyeDunSatir,
       (SELECT MAX(Tarih) FROM Cari.BakiyeDun) AS SonTarih,
       DATEADD(day,-1,CONVERT(date,GETDATE())) AS Beklenen) x

3. Stok Hareket Tutarlılığı

HC INV-04 — Aktif işlemin stok hareketi eksik S1 · 0 → PASS, aksi FAIL
CheckIdINV-04
DescriptionAktif işlemin stok hareketi eksik
RiskS1 · Cari.AcceptTransaction satır 271-302; BR-STOK-001/002/003/004, BR-TIP-003/005
RelatedObjectsCari.Islemler, Stok.StokHaraketleri, Cari.AcceptTransaction
RelatedErrorsERR-OBS-184 · ERR-OBS-185 · ERR-OBS-186 · ERR-OBS-187 · ERR-OBS-188 · ERR-OBS-189 · ERR-OBS-190 · ERR-OBS-191 · ERR-OBS-192 · ERR-OBS-193
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.IslemKodu, I.IslemTipi, I.KasaId
FROM Cari.Islemler I
WHERE I.IsDeleted = 0 AND I.IslemTipi NOT IN (11,12)
  AND (I.IslemKodu IN (0,1,2,8,9) OR (I.IslemKodu = 3 AND I.IslemTipi <> 4) OR I.IslemTipi = 1)
  AND NOT EXISTS (SELECT 1 FROM Stok.StokHaraketleri H WHERE H.IslemId = I.Id AND H.Bolum = 0)) x
HC INV-06 — Stok hareketi işareti işlem yönü ile uyumlu S2 · 0 → PASS, aksi FAIL
CheckIdINV-06
DescriptionStok hareketi işareti işlem yönü ile uyumlu
RiskS2 · Cari.AcceptTransaction satır 274-301; BR-STOK-001
RelatedObjectsStok.StokHaraketleri, Cari.Islemler, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-001 · ERR-OBS-014 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT H.IslemId, H.StokTipi, H.IslemTuru, H.Miktar, H.Adet
FROM Stok.StokHaraketleri H JOIN Cari.Islemler I ON I.Id = H.IslemId AND H.Bolum = 0
WHERE NOT (I.IslemTipi = 1 AND H.StokTipi = 2 AND H.StokId = I.BirimId)    
  AND ((H.IslemTuru = 0 AND (H.Miktar < 0 OR H.Adet < 0)) OR (H.IslemTuru = 1 AND (H.Miktar > 0 OR H.Adet > 0)))) x
HC INV-07 — Has tutarlılığı: işlem × milyem = stok has = bakiye has S2 · 0 → PASS, aksi FAIL
CheckIdINV-07
DescriptionHas tutarlılığı: işlem × milyem = stok has = bakiye has
RiskS2 · BR-HESAP-001; Cari.AcceptTransaction satır 73, 274, 349; columns.json (Bakiye 18,2 / Has 18,5)
RelatedObjectsCari.Islemler, Stok.StokHaraketleri, Cari.BakiyeIslem, Cari.AcceptTransaction
RelatedErrorsERR-OBS-184 · ERR-OBS-185 · ERR-OBS-186 · ERR-OBS-187 · ERR-OBS-188 · ERR-OBS-189 · ERR-OBS-190 · ERR-OBS-191 · ERR-OBS-192 · ERR-OBS-193
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT I.Id, I.Miktar * I.AuMilyem AS HasHesap, H.Has AS StokHas, B.Bakiye AS BakiyeHas
FROM Cari.Islemler I
LEFT JOIN Stok.StokHaraketleri H ON H.IslemId = I.Id AND H.Bolum = 0 AND H.StokTipi = 1
LEFT JOIN Cari.BakiyeIslem B ON B.IslemId = I.Id AND B.BirimId = I.BakiyeId AND I.BakiyeId > 0
WHERE I.IsDeleted = 0 AND I.IslemKodu IN (1,2) AND I.IslemTipi NOT IN (1,11,12)
  AND ( (H.IslemId IS NOT NULL AND ABS(ABS(H.Has) - ABS(I.Miktar * I.AuMilyem)) > 0.0001)
     OR (B.IslemId IS NOT NULL AND ABS(ABS(B.Bakiye) - ABS(I.Miktar * I.AuMilyem)) > 0.0051) )) x
HC INV-22 — Transfer stok hareketi sayısı S2 · 0 → PASS, aksi FAIL
CheckIdINV-22
DescriptionTransfer stok hareketi sayısı
RiskS2 · Cari.TransferUpdateSTatus (StokTipi=-2 silme); Cari.Transferler.vb:222
RelatedObjectsCari.Transferler, Stok.StokHaraketleri, Cari.TransferUpdateSTatus
RelatedErrorsERR-OBS-251 · ERR-POT-110 · ERR-POT-136 · ERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT T.Id, T.Status, T.IsDeleted, COUNT(H.IslemId) AS HareketSayisi
FROM Cari.Transferler T
LEFT JOIN Stok.StokHaraketleri H ON H.IslemId = T.Id AND H.Bolum = 2
GROUP BY T.Id, T.Status, T.IsDeleted
HAVING (T.Status = 1 AND T.IsDeleted = 0 AND COUNT(H.IslemId) <> 2)
    OR ((T.Status <> 1 OR T.IsDeleted = 1) AND COUNT(H.IslemId) > 0)) x
HC INV-25 — Takoz adet stoğu 0 veya 1 S2 · 0 → PASS, aksi FAIL
CheckIdINV-25
DescriptionTakoz adet stoğu 0 veya 1
RiskS2 · Stok.GetTakozAdet; Cari.AcceptTransaction satır 225-247; BR-STOK-002; H-130
RelatedObjectsStok.StokHaraketleri, Stok.GetTakozAdet, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-POT-135 · ERR-POT-138 · ERR-SIL-049 · ERR-OBS-006 · ERR-OBS-009
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT StokId, SUM(Adet) AS Adet FROM Stok.StokHaraketleri WHERE StokTipi = 3 GROUP BY StokId HAVING SUM(Adet) NOT IN (0,1)) x
HC INV-29 — Stok hareketi milyem ve has iç tutarlılığı S2 · 0 → PASS, aksi FAIL
CheckIdINV-29
DescriptionStok hareketi milyem ve has iç tutarlılığı
RiskS2 · Devir.vb:67 (Sum(Milyem)); Sistem.Devir (Has=0); BR-HESAP-001
RelatedObjectsStok.StokHaraketleri, Sistem.Devir
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-036 · ERR-OBS-251 · ERR-SIL-065
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT IslemId, Bolum, StokId, Miktar, Milyem, Has FROM Stok.StokHaraketleri
WHERE StokTipi = 1 AND (Milyem > 1 OR (Milyem <> 0 AND ABS(Has - Miktar * Milyem) > 0.0001))) x

4. History / İz Tutarlılığı

HC INV-16 — Cari.History eksik / sahipsiz S3 · 0 → PASS, aksi WARN
CheckIdINV-16
DescriptionCari.History eksik / sahipsiz
RiskS3 · Cari.InsertTransaction, Cari.UpdateTransaction, Cari.DeleteTransaction; Sistem.Devir
RelatedObjectsCari.Islemler, Cari.History, Cari.InsertTransaction, Cari.UpdateTransaction, Cari.DeleteTransaction, Sistem.Devir
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014 · ERR-OBS-030 · ERR-OBS-037
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'HISTORY_YOK' AS Sorun, I.Id FROM Cari.Islemler I
WHERE NOT EXISTS (SELECT 1 FROM Cari.History H WHERE H.TransactionId = I.Id)
UNION ALL
SELECT 'ORPHAN_HISTORY', H.TransactionId FROM Cari.History H
WHERE NOT EXISTS (SELECT 1 FROM Cari.Islemler I WHERE I.Id = H.TransactionId)
  AND H.LogDate >= (SELECT MIN(InsertDate) FROM Cari.Islemler)) x
HC SQLR-065 — Sistem.SilAciklama sahipsiz IslemId S3 · 0 → PASS, aksi WARN
CheckIdSQLR-065
DescriptionSistem.SilAciklama sahipsiz IslemId
RiskS3 ·
RelatedObjectsSistem.SilAciklama, Cari.Islemler
RelatedErrorsSQLR-065 · ERR-OBS-251
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Sistem.SilAciklama S WHERE NOT EXISTS (SELECT 1 FROM Cari.Islemler I WHERE I.Id = S.TransID)

5. Duplicate İşlemler

HC INV-10 — Çift kayıt (duplicate posting) S2 · 0 → PASS, aksi FAIL
CheckIdINV-10
DescriptionÇift kayıt (duplicate posting)
RiskS2 · Cari.Islem.vb:694-709; InternalDb.vb:69-81; TD-01
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT a.Id AS Id1, b.Id AS Id2, a.HesapId, a.Tarih, a.IslemKodu, a.Kodu, a.Miktar, a.Tutar, a.InsertDate AS InsertDate1, b.InsertDate AS InsertDate2
FROM Cari.Islemler a
JOIN Cari.Islemler b ON b.Id > a.Id AND b.HesapId = a.HesapId AND b.Tarih = a.Tarih
  AND b.IslemKodu = a.IslemKodu AND b.IslemTuru = a.IslemTuru AND ISNULL(b.Kodu,'') = ISNULL(a.Kodu,'')
  AND b.Miktar = a.Miktar AND ISNULL(b.Tutar,0) = ISNULL(a.Tutar,0)
  AND ABS(DATEDIFF(second, a.InsertDate AS InsertDate1, b.InsertDate AS InsertDate2)) <= 60
WHERE a.IsDeleted = 0 AND b.IsDeleted = 0 AND a.IslemKodu <> 11) x
HC SQLR-064 — Sistem.Activity ActivitySubeId mükerrer (MERGE 8672 riski) S1 · 0 → PASS, aksi FAIL
CheckIdSQLR-064
DescriptionSistem.Activity ActivitySubeId mükerrer (MERGE 8672 riski)
RiskS1 ·
RelatedObjectsSistem.Activity
RelatedErrorsSQLR-064 · ERR-POT-128
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT ActivitySubeId FROM Sistem.Activity GROUP BY ActivitySubeId HAVING COUNT(*) > 1) x
HC SQLR-068 — Cari.Hesaplar aynı şubede mükerrer VergiNo (skaler alt sorgu 512 riski) S2 · 0 → PASS, aksi WARN
CheckIdSQLR-068
DescriptionCari.Hesaplar aynı şubede mükerrer VergiNo (skaler alt sorgu 512 riski)
RiskS2 ·
RelatedObjectsCari.Hesaplar
RelatedErrorsSQLR-068 · ERR-POT-130
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT VergiNo, SubeId FROM Cari.Hesaplar WHERE IsDeleted = 0 AND ISNULL(VergiNo,'') <> '' GROUP BY VergiNo, SubeId HAVING COUNT(*) > 1) x
HC SQLR-069 — Cari.RSReferans SenderID mükerrer S2 · 0 → PASS, aksi WARN
CheckIdSQLR-069
DescriptionCari.RSReferans SenderID mükerrer
RiskS2 ·
RelatedObjectsCari.RSReferans
RelatedErrorsSQLR-069 · ERR-POT-131
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT SenderID FROM Cari.RSReferans GROUP BY SenderID HAVING COUNT(*) > 1) x
HC INV-19 — Sistem.Birimler kod benzersizliği S2 · 0 → PASS, aksi FAIL
CheckIdINV-19
DescriptionSistem.Birimler kod benzersizliği
RiskS2 · Cari.ToplamBakiye, Bilanco.OzetBilanco, Pozisyon.Write; H-023/H-131
RelatedObjectsSistem.Birimler, Cari.ToplamBakiye, Bilanco.OzetBilanco, Pozisyon.Write
RelatedErrorsERR-OBS-023 · ERR-OBS-040 · ERR-OBS-212 · ERR-SIL-034 · ERR-SIL-070 · ERR-SIL-063
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT Kodu, COUNT(*) FROM Sistem.Birimler WHERE IsDeleted = 0 GROUP BY Kodu HAVING COUNT(*) > 1) x
HC SEED-03 — Sistem.Birimler kod benzersizliği (aktif) S2 · 0 → PASS, aksi FAIL
CheckIdSEED-03
DescriptionSistem.Birimler kod benzersizliği (aktif)
RiskS2 ·
RelatedObjectsSistem.Birimler
RelatedErrorsERR-OBS-023 · ERR-OBS-040 · ERR-OBS-212
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT Kodu FROM Sistem.Birimler WHERE IsDeleted = 0 GROUP BY Kodu HAVING COUNT(*) > 1) x

6. Kur = 0 / Kur Tutarsızlığı

HC INV-13 — Kur sıfır / eksik / mükerrer / ileri tarihli S2 · 0 → PASS, aksi FAIL
CheckIdINV-13
DescriptionKur sıfır / eksik / mükerrer / ileri tarihli
RiskS2 · Sistem.GetKurListesi, Sistem.GetLastKur, FN.GetKur; indexes.json; H-107/H-124
RelatedObjectsSistem.Kurlar, Sistem.Birimler, Sistem.GetKurListesi, Sistem.GetLastKur, FN.GetKur
RelatedErrorsERR-OBS-005 · ERR-OBS-019 · ERR-OBS-045 · ERR-OBS-023 · ERR-OBS-040 · ERR-OBS-212
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'SIFIR' AS Sorun, K.Id, K.BirimId, K.Tarih FROM Sistem.Kurlar K WHERE K.IsDeleted = 0 AND (ISNULL(K.Alis,0) <= 0 OR ISNULL(K.Satis,0) <= 0)
UNION ALL
SELECT 'MUKERRER', MIN(Id), BirimId, Tarih FROM Sistem.Kurlar WHERE IsDeleted = 0 GROUP BY BirimId, Tarih HAVING COUNT(*) > 1
UNION ALL
SELECT 'ILERI_TARIH', Id, BirimId, Tarih FROM Sistem.Kurlar WHERE IsDeleted = 0 AND Tarih > CONVERT(date, GETDATE())
UNION ALL
SELECT 'BUGUN_YOK', B.Id, B.Id, CONVERT(date, GETDATE()) FROM Sistem.Birimler B
WHERE B.IsDeleted = 0 AND B.IsComputed = 0
  AND NOT EXISTS (SELECT 1 FROM Sistem.Kurlar K WHERE K.BirimId = B.Id AND K.Tarih = CONVERT(date, GETDATE()) AND K.IsDeleted = 0)) x
HC INV-28 — Kur fotoğrafı anlamlı S3 · 0 → PASS, aksi WARN
CheckIdINV-28
DescriptionKur fotoğrafı anlamlı
RiskS3 · Program.vb:260-268; Cari.Islem.vb:607-612; BR-KUR-001
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT Id, Tarih, HasKur, GumKur, UsdKur, EurKur, BirimKur FROM Cari.Islemler
WHERE IsDeleted = 0 AND (ISNULL(HasKur,0) IN (0,1) OR ISNULL(UsdKur,0) IN (0,1) OR ISNULL(BirimKur,0) = 0)) x
HC SQLR-049 — Takoz işlemlerinde HasKur/IscilikBirimKur = 0 (bölme/yanlış maliyet riski) S2 · 0 → PASS, aksi WARN
CheckIdSQLR-049
DescriptionTakoz işlemlerinde HasKur/IscilikBirimKur = 0 (bölme/yanlış maliyet riski)
RiskS2 ·
RelatedObjectsCari.Islemler
RelatedErrorsSQLR-049 · ERR-SIL-026
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE IsDeleted = 0 AND (ISNULL(HasKur,0) = 0 OR ISNULL(IscilikBirimKur,0) = 0) AND IslemKodu = 0
HC SQLR-050 — HAS (BirimId=1) kur satırında Alis=0 S2 · 0 → PASS, aksi WARN
CheckIdSQLR-050
DescriptionHAS (BirimId=1) kur satırında Alis=0
RiskS2 ·
RelatedObjectsSistem.Kurlar
RelatedErrorsSQLR-050 · ERR-POT-119
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Sistem.Kurlar WHERE BirimId = 1 AND ISNULL(Alis,0) = 0 AND IsDeleted = 0
HC SQLR-051 — Son 3 ayda UsdKur/HasKur = 0 olan işlem S2 · 0 → PASS, aksi WARN
CheckIdSQLR-051
DescriptionSon 3 ayda UsdKur/HasKur = 0 olan işlem
RiskS2 ·
RelatedObjectsCari.Islemler
RelatedErrorsSQLR-051 · ERR-POT-120
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE IsDeleted = 0 AND (ISNULL(UsdKur,0) = 0 OR ISNULL(HasKur,0) = 0) AND Tarih >= DATEADD(month,-3,GETDATE())

7. Orphan Kayıtlar

HC INV-05 — Türetilmiş kayıtların sahipsiz (orphan) olması S2 · 0 → PASS, aksi FAIL
CheckIdINV-05
DescriptionTüretilmiş kayıtların sahipsiz (orphan) olması
RiskS2 · Sistem.Devir (IslemId=-1); Cari.AcceptTransaction; H-108
RelatedObjectsCari.BakiyeIslem, Cari.Islemler, Stok.StokHaraketleri, Sistem.Devir, Cari.AcceptTransaction
RelatedErrorsERR-OBS-005 · ERR-OBS-012 · ERR-OBS-027 · ERR-OBS-001 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT 'BakiyeIslem' AS Kaynak, COUNT(*) AS Adet FROM Cari.BakiyeIslem B
WHERE B.IslemId <> -1 AND NOT EXISTS (SELECT 1 FROM Cari.Islemler I WHERE I.Id = B.IslemId)
UNION ALL
SELECT 'StokHaraketleri(Bolum=0)', COUNT(*) FROM Stok.StokHaraketleri H
WHERE H.Bolum = 0 AND H.IslemId <> -1 AND NOT EXISTS (SELECT 1 FROM Cari.Islemler I WHERE I.Id = H.IslemId)) x
HC SEED-05 — Sistem.UserDetails sahipsiz kullanıcı/şube/kasa/grup S3 · 0 → PASS, aksi WARN
CheckIdSEED-05
DescriptionSistem.UserDetails sahipsiz kullanıcı/şube/kasa/grup
RiskS3 ·
RelatedObjectsSistem.UserDetails, Sistem.Users, Sistem.Subeler, Sistem.Kasalar, Sistem.UserGroup
RelatedErrorsERR-SIL-029 · ERR-OBS-010 · ERR-OBS-013 · ERR-OBS-029 · ERR-OBS-014 · ERR-OBS-018 · ERR-OBS-041
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM Sistem.UserDetails D WHERE D.IsDeleted = 0 AND (NOT EXISTS (SELECT 1 FROM Sistem.Users U WHERE U.Id = D.UserId) OR NOT EXISTS (SELECT 1 FROM Sistem.Subeler S WHERE S.Id = D.SubeId) OR NOT EXISTS (SELECT 1 FROM Sistem.Kasalar K WHERE K.Id = D.KasaId) OR NOT EXISTS (SELECT 1 FROM Sistem.UserGroup G WHERE G.Id = D.GroupId))

8. Broken Dependency

HC DEP-01 — Kırık SQL bağımlılığı (sys.sql_expression_dependencies referenced_id IS NULL, aynı DB) S2 · 0 → PASS, aksi WARN
CheckIdDEP-01
DescriptionKırık SQL bağımlılığı (sys.sql_expression_dependencies referenced_id IS NULL, aynı DB)
RiskS2 · Bilinen: LiveUpdate.Version→VersionHistory_, Sistem.FromERP→dbo.firmalar/birimler_
RelatedObjectsLiveUpdate.Version, Sistem.FromERP
RelatedErrorsERR-POT-102 · ERR-POT-103 · ERR-POT-133 · ERR-POT-139
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(DISTINCT CONCAT(d.referencing_id,'|',d.referenced_schema_name,'.',d.referenced_entity_name)) FROM sys.sql_expression_dependencies d WHERE d.referenced_id IS NULL AND d.is_ambiguous = 0 AND d.referenced_class = 1 AND (d.referenced_database_name IS NULL OR d.referenced_database_name = DB_NAME()) AND ISNULL(d.referenced_schema_name,'') NOT IN ('sys','INFORMATION_SCHEMA')
HC DEP-02 — Cross-database bağımlılık (DOCUMENTS / ERPGLOBAL) — hedef DB sunucuda var mı S1 · 0 → PASS, aksi FAIL
CheckIdDEP-02
DescriptionCross-database bağımlılık (DOCUMENTS / ERPGLOBAL) — hedef DB sunucuda var mı
RiskS1 · Genel.Dosyalar view'ı DOCUMENTS DB'ye bakar; AcceptTransaction → GetGerekliEvraklar → Genel.Dosyalar (SQLR-031)
RelatedObjectsGenel.Dosyalar
RelatedErrorsERR-POT-101 · ERR-POT-138 · ERR-POT-139
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT DISTINCT d.referenced_database_name AS db FROM sys.sql_expression_dependencies d WHERE d.referenced_database_name IS NOT NULL AND d.referenced_database_name NOT IN (DB_NAME(),'master','msdb','tempdb')) x WHERE DB_ID(x.db) IS NULL

9. Disabled Trigger

HC TRG-01 — Devre dışı tetikleyici S1 · 0 → PASS, aksi FAIL
CheckIdTRG-01
DescriptionDevre dışı tetikleyici
RiskS1 ·
RelatedObjects
RelatedErrors
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM sys.triggers WHERE is_disabled = 1 AND parent_class = 1
HC TRG-02 — Cari.Islemler üzerinde 4 tetikleyici (AcceptTransaction, InsertTransaction, UpdateTransaction, DeleteTransaction) mevcut S1 · 0 → PASS, aksi FAIL
CheckIdTRG-02
DescriptionCari.Islemler üzerinde 4 tetikleyici (AcceptTransaction, InsertTransaction, UpdateTransaction, DeleteTransaction) mevcut
RiskS1 ·
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT 4 - COUNT(*) FROM sys.triggers WHERE parent_id = OBJECT_ID('Cari.Islemler') AND name IN ('AcceptTransaction','InsertTransaction','UpdateTransaction','DeleteTransaction')
HC TRG-03 — Diğer çekirdek tetikleyiciler (Sistem.CreateKasa, Cari.HesapInsert/HesapUpdate, Cari.TransferUpdateSTatus, Uretim.TrBakiyeHesapla, Siparis.Kontrol, Sistem.SilOnayUpdateTrigger, AifaDev.ExQueryBuilder) S2 · 0 → PASS, aksi FAIL
CheckIdTRG-03
DescriptionDiğer çekirdek tetikleyiciler (Sistem.CreateKasa, Cari.HesapInsert/HesapUpdate, Cari.TransferUpdateSTatus, Uretim.TrBakiyeHesapla, Siparis.Kontrol, Sistem.SilOnayUpdateTrigger, AifaDev.ExQueryBuilder)
RiskS2 ·
RelatedObjectsSistem.CreateKasa, Cari.HesapInsert, Cari.HesapUpdate, Cari.TransferUpdateSTatus, Uretim.TrBakiyeHesapla, Siparis.Kontrol, Sistem.SilOnayUpdateTrigger, AifaDev.ExQueryBuilder
RelatedErrorsERR-POT-130 · ERR-POT-136
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (VALUES ('Sistem.CreateKasa'),('Cari.HesapInsert'),('Cari.HesapUpdate'),('Cari.TransferUpdateSTatus'),('Uretim.TrBakiyeHesapla'),('Siparis.Kontrol'),('Sistem.SilOnayUpdateTrigger'),('AifaDev.ExQueryBuilder')) v(n) WHERE OBJECT_ID(v.n) IS NULL
HC SQLR-075 — RECURSIVE_TRIGGERS açık mı (tetikleyici zinciri riski) S3 · 0 → PASS, aksi WARN
CheckIdSQLR-075
DescriptionRECURSIVE_TRIGGERS açık mı (tetikleyici zinciri riski)
RiskS3 ·
RelatedObjects
RelatedErrorsSQLR-075 · ERR-POT-136
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT CAST(is_recursive_triggers_on AS int) FROM sys.databases WHERE name = DB_NAME()

10. Missing Object

HC OBJ-01 — Uygulama kodunun doğrudan kullandığı SQL nesneleri (BASE-CORE, 311) mevcut S1 · 0 → PASS, aksi FAIL
CheckIdOBJ-01
DescriptionUygulama kodunun doğrudan kullandığı SQL nesneleri (BASE-CORE, 311) mevcut
RiskS1 · Eksik nesne = Invalid object name / Could not find stored procedure
RelatedObjectsAgent.Agent, Agent.Controller, Agent.FeedBack, AifaDev.Dashboard, AifaDev.DosReport, AifaDev.DosReportFields, AifaDev.DynamicForms, AifaDev.FaturaDesign, AifaDev.FormSize, AifaDev.Forms, AifaDev.GridLayouts, AifaDev.Layouts, AifaDev.ReportLayouts, AifaDev.Reports, AifaDev.ReportsFilter, AifaDev.RepositoryData, AifaDev.RepositoryItems, AifaDev.RibbonGroup, AifaDev.RibbonItem, AifaDev.RibbonPage, Bakiye.GetBakiye, Bakiye.GetDateOfBakiye, Bakiye.GetFisBakiyesi, Bakiye.GetVadeliBakiye, Bilanco.BilancoDevirleri, Bilanco.BilancoListesi, Bilanco.Bilancolar, Bilanco.GetKurFarki, Bilanco.OzetBilanco, Bilanco.Patron, Bilanco.SaveAll, Cari.AccountLog, Cari.AnaBakiyeIslem, Cari.BakiyeIslem, Cari.DosyaBilgileri, Cari.ExLimit, Cari.FaturaBilgileri, Cari.FaturaDetay, Cari.FaturaYaz, Cari.Faturalar … (+42)
RelatedErrorsERR-POT-133
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (VALUES (N'Agent.Agent'),(N'Agent.Controller'),(N'Agent.FeedBack'),(N'AifaDev.Dashboard'),(N'AifaDev.DosReport'),(N'AifaDev.DosReportFields'),(N'AifaDev.DynamicForms'),(N'AifaDev.FaturaDesign'),(N'AifaDev.FormSize'),(N'AifaDev.Forms'),(N'AifaDev.GridLayouts'),(N'AifaDev.Layouts'),(N'AifaDev.ReportLayouts'),(N'AifaDev.Reports'),(N'AifaDev.ReportsFilter'),(N'AifaDev.RepositoryData'),(N'AifaDev.RepositoryItems'),(N'AifaDev.RibbonGroup'),(N'AifaDev.RibbonItem'),(N'AifaDev.RibbonPage'),(N'Bakiye.GetBakiye'),(N'Bakiye.GetDateOfBakiye'),(N'Bakiye.GetFisBakiyesi'),(N'Bakiye.GetVadeliBakiye'),(N'Bilanco.BilancoDevirleri'),(N'Bilanco.BilancoListesi'),(N'Bilanco.Bilancolar'),(N'Bilanco.GetKurFarki'),(N'Bilanco.OzetBilanco'),(N'Bilanco.Patron'),(N'Bilanco.SaveAll'),(N'Cari.AccountLog'),(N'Cari.AnaBakiyeIslem'),(N'Cari.BakiyeIslem'),(N'Cari.DosyaBilgileri'),(N'Cari.ExLimit'),(N'Cari.FaturaBilgileri'),(N'Cari.FaturaDetay'),(N'Cari.FaturaYaz'),(N'Cari.Faturalar'),(N'Cari.FindTaxInfo'),(N'Cari.FisIslemDetay'),(N'Cari.Fiyatlar'),(N'Cari.GelenIslemler'),(N'Cari.GetAccountLog'),(N'Cari.GetBakiyeDetay'),(N'Cari.GetEFaturaBilgileri'),(N'Cari.GetEfaturaListesi'),(N'Cari.GetFaturaBilgileri'),(N'Cari.GetFaturaDetay'),(N'Cari.GetFaturaListesi'),(N'Cari.GetFisPesinKontrol'),(N'Cari.GetFiyatListesi'),(N'Cari.GetGunlukNetBakiyeler'),(N'Cari.GetHesapListesi'),(N'Cari.GetHesaplar'),(N'Cari.GetIslemler'),(N'Cari.GetMarginKontrol'),(N'Cari.GetNewSiraNo'),(N'Cari.GetProformaDetay'),(N'Cari.GetProformaListesi'),(N'Cari.GetProvizyon'),(N'Cari.GetTransferler'),(N'Cari.GidenIslemler'),(N'Cari.HesapBilgileri'),(N'Cari.HesapListesi'),(N'Cari.Hesaplar'),(N'Cari.History'),(N'Cari.HistoryDetails'),(N'Cari.HistoryListesi'),(N'Cari.IslemDetaylari'),(N'Cari.IslemListesi'),(N'Cari.Islemler'),(N'Cari.Kartlar'),(N'Cari.Proforma'),(N'Cari.ProformaDetay'),(N'Cari.Provizyon'),(N'Cari.RSAktar'),(N'Cari.Teminatlar'),(N'Cari.Transferler'),(N'Design.FormControls'),(N'Design.Forms'),(N'Design.GetRibb
HC OBJ-02 — Bağımlılık nesneleri (BASE-DEPENDENCY, 44) mevcut S1 · 0 → PASS, aksi FAIL
CheckIdOBJ-02
DescriptionBağımlılık nesneleri (BASE-DEPENDENCY, 44) mevcut
RiskS1 ·
RelatedObjectsBakiye.GetBakiyeFisNo, Cari.BakiyeDun, Cari.BakiyeGun, Cari.BakiyeKodlari, Cari.GetFaturaTutarlari, Cari.GetGerekliEvraklar, Cari.GetProformaTutarlari, Cari.GetTotalBalance, Cari.Istatistik, Cari.RSReferans, Cari.ToplamBakiye, FN.GenerateTakozCode, FN.GetKur, FN.Katsayı, FN.OlcuHesapla, Finans.BankaAltinOperasyonMiktarlari, Genel.DokumanIzinDetay, LiveUpdate.VersionHistory, Muhasebe.EDovizKontrolRaporuBTrans, Muhasebe.Islemler, Muhasebe.IslemlerBTrans, Muhasebe.StokHaraketleri, NET.GetPrice, NET.NetSiparisOzet, Organizasyon.GetOrganizasyonAdi, Pozisyon.Pozisyonlar, Sistem.Activity, Sistem.GetBirimToId, Sistem.GetIdToBirim, Sistem.GetLastKur, Sistem.GetMizanBakiye, Sistem.GetMizanBakiyeIslem, Sistem.GetMizanBakiyeleri, Sistem.MizanCTE, Stok.DevirCesniStoklari, Stok.GetMadenMaliyeti, Stok.GetOrtMilyem, Stok.GetTakozAdet, Stok.GetTakozSirketStoklari, Uretim.BakiyeDetay … (+4)
RelatedErrorsERR-OBS-192 · ERR-SIL-034
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (VALUES (N'Bakiye.GetBakiyeFisNo'),(N'Cari.BakiyeDun'),(N'Cari.BakiyeGun'),(N'Cari.BakiyeKodlari'),(N'Cari.GetFaturaTutarlari'),(N'Cari.GetGerekliEvraklar'),(N'Cari.GetProformaTutarlari'),(N'Cari.GetTotalBalance'),(N'Cari.Istatistik'),(N'Cari.RSReferans'),(N'Cari.ToplamBakiye'),(N'FN.GenerateTakozCode'),(N'FN.GetKur'),(N'FN.Katsayı'),(N'FN.OlcuHesapla'),(N'Finans.BankaAltinOperasyonMiktarlari'),(N'Genel.DokumanIzinDetay'),(N'LiveUpdate.VersionHistory'),(N'Muhasebe.EDovizKontrolRaporuBTrans'),(N'Muhasebe.Islemler'),(N'Muhasebe.IslemlerBTrans'),(N'Muhasebe.StokHaraketleri'),(N'NET.GetPrice'),(N'NET.NetSiparisOzet'),(N'Organizasyon.GetOrganizasyonAdi'),(N'Pozisyon.Pozisyonlar'),(N'Sistem.Activity'),(N'Sistem.GetBirimToId'),(N'Sistem.GetIdToBirim'),(N'Sistem.GetLastKur'),(N'Sistem.GetMizanBakiye'),(N'Sistem.GetMizanBakiyeIslem'),(N'Sistem.GetMizanBakiyeleri'),(N'Sistem.MizanCTE'),(N'Stok.DevirCesniStoklari'),(N'Stok.GetMadenMaliyeti'),(N'Stok.GetOrtMilyem'),(N'Stok.GetTakozAdet'),(N'Stok.GetTakozSirketStoklari'),(N'Uretim.BakiyeDetay'),(N'Uretim.KatkiHesapla'),(N'dbo.BakiyeIslem'),(N'dbo.Pano'),(N'dbo.YaziIle')) v(n) WHERE OBJECT_ID(v.n) IS NULL
HC OBJ-03 — Kodda SQL üretilen ama referans katalogda olmayan nesneler (30) — bu kurulumda var mı? S2 · 0 → PASS, aksi WARN
CheckIdOBJ-03
DescriptionKodda SQL üretilen ama referans katalogda olmayan nesneler (30) — bu kurulumda var mı?
RiskS2 · GAP-BASE-CODE-ONLY-OBJECTS; eksikse ilgili ekranlar Invalid object name verir
RelatedObjects
RelatedErrors
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (VALUES (N'Cari.GETOdemeKasaOzeti'),(N'Cari.GETOdemeListesi'),(N'Cari.GetRiskRaporu'),(N'Cari.Odemeler'),(N'Genel.IptalOnay'),(N'Organizasyon.GelenGorevler'),(N'Organizasyon.GidenGorevler'),(N'Organizasyon.GorevDagitim'),(N'Organizasyon.Gorevler'),(N'Siparis.FiyatListesi'),(N'Siparis.GetFiyatListesi'),(N'Siparis.GetLastPrice'),(N'Siparis.GetPaketHesapListesi'),(N'Siparis.GetUyumluPaketler'),(N'Siparis.ModelAyarBlackList'),(N'Siparis.PaketHesaplari'),(N'Siparis.modelayarBlacklist'),(N'Sistem.iException'),(N'Stok.GetTakozIsciligi'),(N'Uretim.Eritme'),(N'Uretim.Formul'),(N'Uretim.FormulDetay'),(N'Uretim.GetEritmeListesi'),(N'Uretim.GetFormulDetay'),(N'Uretim.GetFormuls'),(N'Uretim.GetModelPartiBilgiListesi'),(N'Uretim.GetPartiModelListesi'),(N'Uretim.GetPartiler'),(N'Uretim.ModelPartiBilgileri'),(N'Uretim.Partiler')) v(n) WHERE OBJECT_ID(v.n) IS NULL

11. Missing Column

HC COL-01 — Kodun kullandığı ama katalogda bulunmayan/kurulum bazlı kolonlar (8) S2 · 0 → PASS, aksi WARN
CheckIdCOL-01
DescriptionKodun kullandığı ama katalogda bulunmayan/kurulum bazlı kolonlar (8)
RiskS2 · Invalid column name riski (SQLR-040..046)
RelatedObjectsCari.Transferler, Siparis.Paket, Siparis.TakimKartlari, Sistem.CariIslemTipi, Cari.Provizyon, Sistem.Users, Cari.IslemDetaylari, Cari.Islemler
RelatedErrorsERR-OBS-251 · ERR-POT-110 · ERR-POT-136 · ERR-POT-111 · ERR-POT-125 · ERR-POT-112 · ERR-POT-117
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (VALUES (N'Cari.Transferler',N'Aciklama'),(N'Siparis.Paket',N'IsPublic'),(N'Siparis.TakimKartlari',N'Grup'),(N'Sistem.CariIslemTipi',N'IsDeleted'),(N'Cari.Provizyon',N'IsDeleted'),(N'Sistem.Users',N'SubeId'),(N'Cari.IslemDetaylari',N'ETTN'),(N'Cari.Islemler',N'IsArbitiraj')) v(t,c) WHERE COL_LENGTH(v.t, v.c) IS NULL

12. Diğer: tohum veri, performans, veri tipi

HC SEED-01 — Sistem.Settings tam olarak 1 satır S1 · 0 → PASS, aksi FAIL
CheckIdSEED-01
DescriptionSistem.Settings tam olarak 1 satır
RiskS1 · Settings.Save TRUNCATE+INSERT yapar; 0 satır → AcceptTransaction sembol bulamaz; >1 satır → 'Subquery returned more than 1 value' (SQLR-067)
RelatedObjectsSistem.Settings
RelatedErrorsERR-OBS-012 · ERR-OBS-031 · ERR-OBS-037
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT ABS(1 - (SELECT COUNT(*) FROM Sistem.Settings))
HC SEED-02 — Settings sembolleri (HAS/GUM/USD/EUR/PLT/PLD) Sistem.Birimler'de tam bir eşleşmeyle var S1 · 0 → PASS, aksi FAIL
CheckIdSEED-02
DescriptionSettings sembolleri (HAS/GUM/USD/EUR/PLT/PLD) Sistem.Birimler'de tam bir eşleşmeyle var
RiskS1 · 0 eşleşme → bakiye üretilmez; >1 → 512 hatası
RelatedObjectsSistem.Settings, Sistem.Birimler
RelatedErrorsERR-OBS-012 · ERR-OBS-031 · ERR-OBS-037 · ERR-OBS-023 · ERR-OBS-040 · ERR-OBS-212
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT s.HasSymbol AS k UNION ALL SELECT s.GumSymbol UNION ALL SELECT s.UsdSymbol UNION ALL SELECT s.EurSymbol UNION ALL SELECT s.PltSymbol UNION ALL SELECT s.PldSymbol FROM (SELECT TOP 1 * FROM Sistem.Settings) s) x WHERE x.k IS NOT NULL AND (SELECT COUNT(*) FROM Sistem.Birimler b WHERE b.IsDeleted = 0 AND b.Kodu = x.k) <> 1
HC SEED-04 — Sistem.Users Id=1 (yönetici; menü izin süzgeci) mevcut S2 · 0 → PASS, aksi FAIL
CheckIdSEED-04
DescriptionSistem.Users Id=1 (yönetici; menü izin süzgeci) mevcut
RiskS2 ·
RelatedObjectsSistem.Users
RelatedErrorsERR-OBS-010 · ERR-OBS-013 · ERR-OBS-029
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT 1 - COUNT(*) FROM Sistem.Users WHERE Id = 1
HC SEED-06 — İşlem kodu sözlükleri dolu (Sistem.CariIslemKodu / CariIslemTuru / CariIslemTipi) S1 · 0 → PASS, aksi FAIL
CheckIdSEED-06
Descriptionİşlem kodu sözlükleri dolu (Sistem.CariIslemKodu / CariIslemTuru / CariIslemTipi)
RiskS1 ·
RelatedObjectsSistem.CariIslemKodu, Sistem.CariIslemTuru, Sistem.CariIslemTipi
RelatedErrorsERR-POT-131 · ERR-POT-140 · ERR-POT-113
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). FAIL: en az bir bulgu; kurulum ERPGOLD için güvenli değildir — düzeltilmeden üretime alınmaz.
SQL (salt okunur)
SELECT CASE WHEN (SELECT COUNT(*) FROM Sistem.CariIslemKodu) = 0 OR (SELECT COUNT(*) FROM Sistem.CariIslemTuru) = 0 OR (SELECT COUNT(*) FROM Sistem.CariIslemTipi) = 0 THEN 1 ELSE 0 END
HC SEED-07 — OnsCarpan makul (31.10 – 31.11) ve BSMV 0–10 aralığında S3 · 0 → PASS, aksi WARN
CheckIdSEED-07
DescriptionOnsCarpan makul (31.10 – 31.11) ve BSMV 0–10 aralığında
RiskS3 ·
RelatedObjectsSistem.Settings
RelatedErrorsERR-OBS-012 · ERR-OBS-031 · ERR-OBS-037
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM (SELECT TOP 1 OnsCarpan, BSMV FROM Sistem.Settings) s WHERE ISNULL(s.OnsCarpan,0) NOT BETWEEN 31.10 AND 31.11 OR ISNULL(s.BSMV,0) NOT BETWEEN 0 AND 10
HC PERF-01 — Cari.Islemler üzerinde aynı anahtarlı yinelenen indeks sayısı (deadlock/timeout katkısı) S3 · 0 → PASS, aksi WARN
CheckIdPERF-01
DescriptionCari.Islemler üzerinde aynı anahtarlı yinelenen indeks sayısı (deadlock/timeout katkısı)
RiskS3 ·
RelatedObjectsCari.Islemler
RelatedErrorsERR-OBS-001 · ERR-OBS-012 · ERR-OBS-014
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) - COUNT(DISTINCT k.cols) FROM (SELECT i.index_id, STUFF((SELECT ',' + c.name FROM sys.index_columns ic JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id WHERE ic.object_id = i.object_id AND ic.index_id = i.index_id AND ic.is_included_column = 0 ORDER BY ic.key_ordinal FOR XML PATH('')),1,1,'') AS cols FROM sys.indexes i WHERE i.object_id = OBJECT_ID('Cari.Islemler') AND i.index_id > 0) k
HC SQLR-055 — AifaDev.RepositoryData sayısal tipte sayısal olmayan değer S3 · 0 → PASS, aksi WARN
CheckIdSQLR-055
DescriptionAifaDev.RepositoryData sayısal tipte sayısal olmayan değer
RiskS3 ·
RelatedObjectsAifaDev.RepositoryData, AifaDev.RepositoryItems
RelatedErrorsSQLR-055 · ERR-POT-122
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM AifaDev.RepositoryData D JOIN AifaDev.RepositoryItems I ON I.Id = D.ItemId WHERE I.DataType IN (2,4,5) AND TRY_CONVERT(decimal(18,5), D.Value) IS NULL AND D.Value IS NOT NULL
HC SQLR-079 — Legacy text/ntext/image kolonlar S4 · 0 → PASS, aksi WARN
CheckIdSQLR-079
DescriptionLegacy text/ntext/image kolonlar
RiskS4 ·
RelatedObjects
RelatedErrorsSQLR-079 · ERR-POT-140
PASS / WARN / FAIL MeaningPASS: sorgu 0 satır/değer döner (sorun yok). WARN: en az bir bulgu; inceleme gerekir; ürün çalışır ama veri/performans riski vardır.
SQL (salt okunur)
SELECT COUNT(*) FROM sys.columns WHERE system_type_id IN (35,34,99)

Invariantlar (30) — sessiz hata sınırları

INV-* kuralları ERPGOLD_SESSIZ_HESAPLAMA_RISKLERI.xlsx "Invariantlar" sayfasındaki iş kurallarıdır; kural metni ve kaynak kod satırı:

IdAdKuralTablolarSev.Kaynak
INV-01Aktif işlemin bakiye hareketi eksikIsDeleted=0 ve IslemTipi ∉ {1,11,12} olan ve tetikleyici kuralına göre bakiye üretmesi gereken her Cari.Islemler satırı için Cari.BakiyeIslem'de en az bir satır bulunmalıdır. (Kodu 1,2,9,4,5,6: (BakiyeId>0 ve Miktar≠0) veya Tutar≠0; Kodu 0 ve 14: her zaman; diğer kodlar: Tutar≠0.)Cari.Islemler, Cari.BakiyeIslemS1Cari.AcceptTransaction satır 263-558; BR-DEFTER-URETIMI; BR-BAKIYE-001/003/004
INV-02Silinmiş / belge tipli (11,12) işlemin kalan türetilmiş kaydıIsDeleted=1 veya IslemTipi ∈ {11,12} olan işlemlerin Cari.BakiyeIslem ve Stok.StokHaraketleri (Bolum=0) satırı olmamalıdır.Cari.Islemler, Cari.BakiyeIslem, Stok.StokHaraketleriS1Cari.AcceptTransaction satır 256-263; BR-TIP-004
INV-03PEŞİN işlemin bakiye satırıIslemTipi=1 (PEŞİN) olan işlemlerde tutar bakiye satırı yazılmaz; maden/hurda için has satırı da yazılmaz. PEŞİN işlem için BakiyeIslem satırı bulunmamalıdır (istisna: IslemKodu 0/14 tip 1 ile kaydedilmez).Cari.Islemler, Cari.BakiyeIslemS2Cari.AcceptTransaction satır 346, 352, 389, 419; BR-TIP-002
INV-04Aktif işlemin stok hareketi eksikIsDeleted=0, IslemTipi ∉ {11,12} ve IslemKodu ∈ {0,1,2,8,9} veya (IslemKodu=3 ve IslemTipi≠4) veya IslemTipi=1 olan işlemler için Stok.StokHaraketleri'nde Bolum=0 satırı bulunmalıdır.Cari.Islemler, Stok.StokHaraketleriS1Cari.AcceptTransaction satır 271-302; BR-STOK-001/002/003/004, BR-TIP-003/005
INV-05Türetilmiş kayıtların sahipsiz (orphan) olmasıCari.BakiyeIslem ve Stok.StokHaraketleri (Bolum=0) satırlarının IslemId'si Cari.Islemler'de bulunmalı veya devir satırı (-1) olmalıdır.Cari.BakiyeIslem, Stok.StokHaraketleri, Cari.IslemlerS2Sistem.Devir (IslemId=-1); Cari.AcceptTransaction; H-108
INV-06Stok hareketi işareti işlem yönü ile uyumluBolum=0 stok hareketlerinde IslemTuru=0 (giriş) için Miktar/Adet ≥ 0, IslemTuru=1 (çıkış) için ≤ 0 olmalıdır (PEŞİN nakit karşılık satırı hariç: orada işaret terstir).Stok.StokHaraketleri, Cari.IslemlerS2Cari.AcceptTransaction satır 274-301; BR-STOK-001
INV-07Has tutarlılığı: işlem × milyem = stok has = bakiye hasMaden/hurda/model işleminde Stok.StokHaraketleri.Has = ±Miktar×AuMilyem (5 hane) ve BakiyeIslem has satırı |Bakiye| = Round(Miktar×AuMilyem,2) (±0,01) olmalıdır.Cari.Islemler, Stok.StokHaraketleri, Cari.BakiyeIslemS2BR-HESAP-001; Cari.AcceptTransaction satır 73, 274, 349; columns.json (Bakiye 18,2 / Has 18,5)
INV-08Tutar bakiye satırı işlem tutarına eşitTip ∉ {1,11,12} ve Tutar≠0 olan işlemlerde BirimId=Islemler.BirimId olan BakiyeIslem satırının |Bakiye| değeri |Tutar| olmalıdır (takoz ve çeşni hariç).Cari.Islemler, Cari.BakiyeIslemS2Cari.AcceptTransaction satır 352-356, 389-393, 419-431
INV-09Bakiye satırı yönü işlem yönü ile uyumluMaden/hurda/model ve diğer stok işlemlerinde giriş (IslemTuru çift) tutar satırı negatif, çıkış (tek) pozitif olmalı; çevir/vadeli/hizmette has satırı ters işaretli olmalıdır (BR-YON-002/003/004).Cari.Islemler, Cari.BakiyeIslemS2BR-YON-002/003/004; Cari.AcceptTransaction satır 334-344, 371-381, 409-417
INV-10Çift kayıt (duplicate posting)Aynı hesap, tarih, işlem kodu, yön, stok kodu, miktar ve tutar ile 60 saniye içinde ikinci bir aktif işlem bulunmamalıdır.Cari.IslemlerS2Cari.Islem.vb:694-709; InternalDb.vb:69-81; TD-01
INV-11İşlemde sahipsiz hesap / şube / kasaHer Cari.Islemler satırının HesapId, SubeId ve KasaId değeri ilgili tabloda bulunmalı ve 0 olmamalıdır.Cari.Islemler, Cari.Hesaplar, Sistem.Subeler, Sistem.KasalarS2Cari.AcceptTransaction satır 180-185; Cari.Islem.vb:508
INV-12Bakiye satırı geçerli birim taşımalıCari.BakiyeIslem.BirimId, Sistem.Birimler'de bulunmalı veya -1 (TAKOZ) olmalı; 0/NULL olmamalıdır.Cari.BakiyeIslem, Sistem.BirimlerS2Cari.AcceptTransaction satır 64-67, 318-330; Cari.IslemEx.vb:303
INV-13Kur sıfır / eksik / mükerrer / ileri tarihliSistem.Kurlar'da silinmemiş satırlarda Alis ve Satis > 0 olmalı; (BirimId,Tarih) benzersiz olmalı; Tarih > bugün olmamalı; her aktif hesaplanmayan birim için bugünün kuru bulunmalıdır.Sistem.Kurlar, Sistem.BirimlerS2Sistem.GetKurListesi, Sistem.GetLastKur, FN.GetKur; indexes.json; H-107/H-124
INV-14Negatif miktar / adet / tutarAktif işlemlerde Miktar, Adet ve Tutar negatif olmamalıdır (yön IslemTuru ile ifade edilir).Cari.IslemlerS2Cari.AcceptTransaction satır 274, 336; Cari.Islem.vb:513
INV-15Hesap bazında bakiye toplamı = işlemlerden beklenen toplam (has/tutar)Bir hesabın tutar bakiyesi (birim bazında) aktif işlemlerinin işaretli tutar toplamına eşit olmalıdır (devir -1 satırları hariç). Bakiye kartı ile işlem listesi mutabakatı.Cari.BakiyeIslem, Cari.IslemlerS1Cari.AcceptTransaction; BR-YON-002/004; PB-028 (SYM-BAKIYE)
INV-16Cari.History eksik / sahipsizHer Cari.Islemler satırının en az bir History ('Yeni Kayıt') satırı olmalı; History.TransactionId Cari.Islemler'de bulunmalı (devir sonrası arşivlenen dönem hariç).Cari.Islemler, Cari.HistoryS3Cari.InsertTransaction, Cari.UpdateTransaction, Cari.DeleteTransaction; Sistem.Devir
INV-17İptal edilmiş işlemin belge detayıIsDeleted=1 ve e-belge (ETTN) taşımayan işlemin Cari.IslemDetaylari satırı kalmamalı; ETTN'li ise Durum='EIPTAL' olmalıdır.Cari.Islemler, Cari.IslemDetaylariS3Cari.UpdateTransaction (tek satır değişkeni); BR-BELGE-HAVUZU
INV-18 (yalnız invariant; HC kuralı yok)Sistem.Settings tek satır ve sembol eşleşmesiSistem.Settings tam 1 satır içermeli; HasSymbol/GumSymbol/PltSymbol/PldSymbol/UsdSymbol/EurSymbol Sistem.Birimler'de (IsDeleted=0) tam bir satırla eşleşmeli; BSMV, OnsCarpan makul aralıkta olmalıdır.Sistem.Settings, Sistem.BirimlerS1Settings.vb:121-138; Cari.AcceptTransaction satır 64-67; GAP-DB-06; GAP-SEC-ONS-01
INV-19Sistem.Birimler kod benzersizliğiSilinmemiş birimlerde Kodu benzersiz olmalıdır (kur listesi ve bakiye toplamları kod ile birleştirilir).Sistem.BirimlerS2Cari.ToplamBakiye, Bilanco.OzetBilanco, Pozisyon.Write; H-023/H-131
INV-20 (yalnız invariant; HC kuralı yok)Tetikleyiciler etkinCari.Islemler üzerindeki 4 tetikleyici (AcceptTransaction, InsertTransaction, UpdateTransaction, DeleteTransaction), Cari.Transferler ve Uretim.UretimIslemleri tetikleyicileri devre dışı olmamalıdır.Cari.Islemler, Cari.Transferler, Uretim.UretimIslemleriS1dbclean/trg.json; Sistem.Devir (DISABLE/ENABLE TRIGGER ALL); H-006
INV-21Sistem kullanıcısı (Id=1) ve pasif şube kontrolüSistem.Users tablosunda Id=1 kaydı bulunmalı; işlem yapılan şubeler IsActive=1 olmalıdır.Sistem.Users, Sistem.Subeler, Cari.IslemlerS3Cari.AcceptTransaction satır 92-98; Devir.vb (arşiv şubeleri IsActive=False)
INV-22Transfer stok hareketi sayısıStatus=1 ve silinmemiş her Cari.Transferler satırı için tam 2 adet Bolum=2 stok hareketi; Status≠1 veya IsDeleted=1 için 0 olmalıdır.Cari.Transferler, Stok.StokHaraketleriS2Cari.TransferUpdateSTatus (StokTipi=-2 silme); Cari.Transferler.vb:222
INV-23Limit kontrolü veri tazeliği (Cari.BakiyeDun)Limit kontrolü kullanılıyorsa (Sube.IsLimitControl=1) Cari.BakiyeDun dolu ve Tarih = dün olmalıdır.Cari.BakiyeDun, Sistem.SubelerS2Cari.ToplamBakiye, Bakiye.DunkiBakiyeler; GAP-DB-03
INV-24Tarihsiz türetilmiş kayıt (devir öncesi kontrol)Cari.BakiyeIslem ve Stok.StokHaraketleri'nde Tarih NULL satır olmamalıdır (devir bu satırları kaybeder).Cari.BakiyeIslem, Stok.StokHaraketleri, Cari.IslemlerS2Sistem.Devir (Tarih<@Tarih / Tarih>=@Tarih); H-108
INV-25Takoz adet stoğu 0 veya 1Her takoz için StokTipi=3 hareketlerinin Adet toplamı 0 veya 1 olmalıdır (negatif = çıkışı girişten fazla, >1 = çift giriş).Stok.StokHaraketleri, Stok.TakozS2Stok.GetTakozAdet; Cari.AcceptTransaction satır 225-247; BR-STOK-002; H-130
INV-26Fiş numarası tekil gün/hesapAynı kasada aynı FisNo yalnız tek bir güne ve tek hesaba ait olmalıdır (fiş ile toplu iptal bu varsayıma dayanır).Cari.IslemlerS3Cari.IslemEx.vb:256 (GetNewFisNo); iScreen.vb:723; H-102; CTR-016
INV-27Çift bacaklı işlemlerin eşi mevcutVirman (IslemKodu=11) RefNo'su tam 2 aktif satır taşımalı; parite birinci bacağının (VaryantId=-1) ikinci bacağı (VaryantId=Id) aktif olmalıdır.Cari.IslemlerS2iFormBase.SendTo; iFNakit.SaveCashTransaction; BR-VIRMAN-002; BR-TIP-011; H-106
INV-28Kur fotoğrafı anlamlıAktif işlemlerde HasKur, GumKur, UsdKur, EurKur, BirimKur 0 veya 1 (bulunamadı varsayılanı) olmamalıdır.Cari.IslemlerS3Program.vb:260-268; Cari.Islem.vb:607-612; BR-KUR-001
INV-29Stok hareketi milyem ve has iç tutarlılığıStok.StokHaraketleri'nde Milyem ≤ 1 olmalı; StokTipi=1 satırlarında Has = Miktar×Milyem (±0,0001) olmalıdır (devir açılış satırları dahil).Stok.StokHaraketleriS2Devir.vb:67 (Sum(Milyem)); Sistem.Devir (Has=0); BR-HESAP-001
INV-30 (yalnız invariant; HC kuralı yok)Devir öncesi/sonrası bakiye toplamı korunurDevir sonrası hesap+birim bazında (devir satırı + yeni hareketler) toplamı, arşiv veritabanındaki aynı kesim tarihli toplama eşit olmalıdır.Cari.BakiyeIslemS1Sistem.Devir; Devir.vb; H-108; BR-DEVIR-001