| ERR-OBS-007 | GÖZLEMLENMİŞ | S2 | Fatura kesilemiyor / fatura basma / fatura problemi (genel) | E20 — Bilinmeyen / Araştırılması Gereken | [Ekip tarafından doldurulacak] (başlık belirti vermiyor) | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Belirtiyi yeniden üret: fatura problemi; erp fatura problemi; fatura; fatura sorunu; e-döviz fatura sorunu; fatura kontrol raporu | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 8, '2022': 106, '2023': 88, '2024': 29, '2025': 38, '2026': 26}; kategori: Yazılım Destek / Fatur |
| ERR-OBS-009 | GÖZLEMLENMİŞ | S2 | ETTN atama / boş ETTN / ETTN güncellemesi | E20 — Bilinmeyen / Araştırılması Gereken | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Belirtiyi yeniden üret: ettn no atama; ettn no ataması yapıldı; ettn no; ettn; ettn ataması yapıldı.; ettn no güncelleme | [Ekip tarafından atanacak] | Yıllara göre: {'2022': 14, '2023': 15, '2024': 73, '2025': 103, '2026': 62}; kategori: Yazılım Destek / Eğitim / Destek |
| ERR-OBS-014 | GÖZLEMLENMİŞ | S2 | Belgelendirilmiş işlem / ResmiKasa (legacy teknik ad) desteği — belirtisiz | E20 — Bilinmeyen / Araştırılması Gereken | [Ekip tarafından doldurulacak] (başlık yalnız 'resmi işlem' der) | [Ekip tarafından doldurulacak] | Çağrı kapanışında belirti etiketi zorunlu (SYM-EGITIM kalıcı önlem) — 'resmi işlem' tek başına ölçülemez. | Belirtiyi yeniden üret: ticket ifadesi: resmi işlem; ticket ifadesi: resmi; ticket ifadesi: resmi işlemler; ticket ifadesi: resmi kasa girişi; ticket ifadesi: resmi fatura; ticket ifad | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 5, '2022': 36, '2023': 16, '2024': 16, '2025': 70, '2026': 78}; kategori: Yazılım Destek / Resmi |
| ERR-OBS-044 | GÖZLEMLENMİŞ | S3 | Genel tanımlama / ayar / düzenleme (belirtisiz) | E09 — Konfigürasyon Hatası | [Ekip tarafından doldurulacak] (başlık yalnız 'tanımlama'/'düzenleme' der) | [Ekip tarafından doldurulacak] | Çağrı kapanışında konu etiketi zorunlu. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 2, '2022': 11, '2023': 15, '2024': 11, '2025': 22, '2026': 24}; kategori: Yazılım Destek / Eğitim |
| ERR-OBS-061 | GÖZLEMLENMİŞ | S3 | Barkod ayarı / barkod okuyucu / barkod düzenlemesi | E09 — Konfigürasyon Hatası | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 3, '2022': 4, '2023': 4, '2024': 6, '2025': 16, '2026': 12}; kategori: Yazılım Destek / Barkod Ay |
| ERR-OBS-072 | GÖZLEMLENMİŞ | S3 | Hizmet / masraf / komisyon işlemi ve tanımı | E14 — UI / İş Akışı Hatası | Hizmet ekranı davranışları: önceki hizmet/grup yeni kayda taşındı, HAS kuru boş; iade/belge takip tipli (11) hizmet düzeltmede tip yanlış geliyor (H-076, H-077). | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 2, '2022': 4, '2023': 5, '2024': 4, '2025': 3, '2026': 8}; kategori: Yazılım Destek / Eğitim / De |
| ERR-OBS-073 | GÖZLEMLENMİŞ | S3 | Üçüncü parti entegrasyon (NetEkstre, banka, MT5/senkronizasyon) | E12 — Entegrasyon Hatası | [Ekip tarafından doldurulacak] (wiki'de NetEkstre/MT5 entegrasyonu için bilinen sorun/playbook yok — GAP) | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 1, '2022': 3, '2023': 2, '2024': 6, '2025': 6, '2026': 7}; kategori: Teknik Destek / Uzak Bağlant |
| ERR-OBS-081 | GÖZLEMLENMİŞ | S3 | Diğer / sınıflanamayan (belirtisiz başlık) | E20 — Bilinmeyen / Araştırılması Gereken | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Çağrı kapanışında konu etiketi zorunlu (FAQ-076). | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | Yıllara göre: {'2021': 1, '2022': 16, '2023': 27, '2024': 22, '2025': 37, '2026': 19}; kategori: Yazılım Destek / Eğitim |
| ERR-OBS-196 | GÖZLEMLENMİŞ | S2 | H-115 — Açılış (devir) stoğu girildi, DEVİR hesabı alacaklı kaldı | E07 — Finansal Hesaplama Hatası | NORMAL tipte giriş yapılmış; NORMAL giriş bakiye yazar. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-OBS-237 | GÖZLEMLENMİŞ | S3 | H-156 — Yazıcı hiç yazdırmıyor | E09 — Konfigürasyon Hatası | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-OBS-245 | GÖZLEMLENMİŞ | S3 | H-164 — BTrans alma (her ay, mali müşavir için) | E12 — Entegrasyon Hatası | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-OBS-249 | GÖZLEMLENMİŞ | S3 | H-168 — Yılbaşı kontrol listesi (Aralık'ta her müşteriye gönderilir) | E14 — UI / İş Akışı Hatası | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-OBS-250 | GÖZLEMLENMİŞ | S3 | H-169 — Pazartesi sabahı kontrol listesi (veznedar için) | E14 — UI / İş Akışı Hatası | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-001 | POTANSİYEL | S1 | TD-01 — Çok adımlı işlemlerde transaction yok | E05 — Transaction Hatası | Çok adımlı işlemlerde transaction yok — VB — fatura başlığı yazılıp `FaturaYaz` çalışmayabilir; işlem yazılıp `RsAktar` yapılmayabilir; karşı hesap kaydı düşerse bakiye hareketi tek taraflı kalır; kopyalama yarım kalır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Save` zincirlerini tek `SqlConnection` + `SqlTransaction` (veya `TransactionScope`) altında toplayan bir "birim iş" sarmalayıcısı; SP'leri (`FaturaYaz`, `RsAktar`) aynı transaction'da çağırmak; `SendTo` başarısızsa ilk kaydı geri almak. | Kod incelemesi ile doğrula: `ERPPRO/Class/Dao/Cari.Fatura.vb:229-230,313-317`; `ERPPRO/Class/Dao/Islem/Cari.Islem.vb:695-696,989`; `ERPPRO/Controls/Islem Ekranı/Ekran/iFormBase.vb:218-241, | [Ekip tarafından atanacak] | |
| ERR-POT-002 | POTANSİYEL | S2 | TD-02 — `Max(...)+1` ile numara üretimi (yarış koşulu) | E17 — Eski Veri / Legacy Problemi | `Max(...)+1` ile numara üretimi (yarış koşulu) — VB — iki istemci aynı anda kaydederse aynı fiş/kod/fatura numarası üretilir; fiş numarası evrensel tek sayaç (`ERPGOLD-mimari-referans.md §10 soru 6`, AS-DOCUMENTED) olduğundan çok kullanıcılı/web senaryosunda kesin çakışma. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): SQL `SEQUENCE` veya `Sistem.FaturaSiraNo` benzeri sayaç tablosunda `UPDATE … OUTPUT` ile atomik artırma; fatura serisi bazında ayrı sayaç; benzersiz indeks ile ikinci koruma. | Kod incelemesi ile doğrula: `ERPPRO/Class/Ext/Cari.IslemEx.vb:256-260` (`GetNewFisNo`: `Select Max(FisNo) From Cari.Islemler` + 1), `:261-267` (`GetNewSiraNo`: `Cari.GetNewSiraNo(...)` + 1 | [Ekip tarafından atanacak] | |
| ERR-POT-003 | POTANSİYEL | S1 | TD-03 — `Cari.AcceptTransaction` tetikleyicisinde cursor sızıntısı | E05 — Transaction Hatası | `Cari.AcceptTransaction` tetikleyicisinde cursor sızıntısı — VB, PF — cursor `GLOBAL` kapsamda ise bağlantı havuzuna dönen bağlantıda "A cursor with the name 'IslemCursor' already exists" ile sonraki tüm işlemler başarısız olur (AS-DOCUMENTED `§9-4`; kod yolu VERIFIED). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Her hata dalında `CLOSE/DEALLOCATE` veya `DECLARE … CURSOR LOCAL`; uzun vadede cursor'suz küme temelli kural motoru. | Kod incelemesi ile doğrula: DB `Cari.AcceptTransaction` (TR, 29.862 karakter) — `DECLARE IslemCursor CURSOR` satır 72, `OPEN` 79; `RAISERROR … ROLLBACK … RETURN` satır 94-97 (şube pasif) v | [Ekip tarafından atanacak] | |
| ERR-POT-004 | POTANSİYEL | S1 | TD-04 — Tetikleyicide `ROLLBACK` sonrası `RETURN` yok | E04 — Trigger / Dependency Hatası | Tetikleyicide `ROLLBACK` sonrası `RETURN` yok — VB — `ROLLBACK` sonrası kod akışı devam eder; sonraki `INSERT/UPDATE`'ler transaction dışında (autocommit) çalışabilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Her `ROLLBACK`'ten sonra `RETURN`; `THROW` kullanımı. | Kod incelemesi ile doğrula: DB `Cari.AcceptTransaction` satır 119-122 (eksik evrak), 182-184 (şube/kasa/hesap seçilmedi), 229-231 (takoza ait işlem var), 243-245 (takoz stokta yok). | [Ekip tarafından atanacak] | |
| ERR-POT-005 | POTANSİYEL | S2 | TD-05 — Koda gömülü bağlantı dizeleri, `sa` hesabı ve parolalar | E11 — Kullanıcı / Yetki Hatası | Koda gömülü bağlantı dizeleri, `sa` hesabı ve parolalar — GV — derlenmiş EXE'den parola okunabilir; uygulama üretimde `sa` ile bağlanıyorsa TD-09/TD-10'daki her açık tam yetkiyle sonuçlanır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Sabit değerleri kaldırmak; Windows kimlik doğrulaması veya en az yetkili SQL hesabı; lisans anahtarlarını yapılandırma/gizli depo üzerinden yüklemek; mevcut parolaları döndürmek. | Kod incelemesi ile doğrula: `ERPPRO/Class/Module/InternalDb.vb:11` (`ConnStr` varsayılanı: sunucu, `sa`, düz metin parola); `ERPPRO/ERPGOLDV2DataSet.Designer.vb:1730` (sunucu IP'si + `sa`) | [Ekip tarafından atanacak] | |
| ERR-POT-006 | POTANSİYEL | S2 | TD-06 — Yapılandırma dosyası şifrelemesi zayıf | E11 — Kullanıcı / Yetki Hatası | Yapılandırma dosyası şifrelemesi zayıf — GV — `Config.cfg` içindeki bağlantı dizesi (SQL parolası dahil) uygulama binarisine sahip herkes tarafından çözülebilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): DPAPI (`ProtectedData`, kullanıcı/makine kapsamı) veya Windows kimlik doğrulaması; ECB yerine kimlik doğrulamalı mod. | Kod incelemesi ile doğrula: `ERPPRO/Configuration/ConfigurationForm.vb:301` (okuma), `:325` (yazma), `:331-365` (`AES_Encrypt/AES_Decrypt`: Rijndael **ECB**, MD5 anahtar türetme, **koda gö | [Ekip tarafından atanacak] | |
| ERR-POT-007 | POTANSİYEL | S2 | TD-07 — Parolalar geri döndürülebilir şifreli | E11 — Kullanıcı / Yetki Hatası | Parolalar geri döndürülebilir şifreli — GV — DB erişimi olan herkes tüm parolaları çözebilir; parolalar süreç belleğinde düz metin. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): PBKDF2/bcrypt/Argon2 ile tek yönlü hash + tuz; kart PIN/şifresi için ayrı doğrulama servisi; önbelleğe parola kolonu yüklememek. | Kod incelemesi ile doğrula: `ERPPRO/Class/Module/Crypto.vb:6-48` (sabit parola, Rijndael CBC — değer kopyalanmadı); `ERPPRO/Class/Dao/Sistem.Users.vb:43,144,188` (kullanıcı parolası `Crypt | [Ekip tarafından atanacak] | |
| ERR-POT-008 | POTANSİYEL | S2 | TD-08 — İşlem ekranında sabit yönetici parolası | E11 — Kullanıcı / Yetki Hatası | İşlem ekranında sabit yönetici parolası — GV — kaynak/binari üzerinden parola öğrenen herkes fişleri iptal edebilir; değiştirilemez, denetlenemez. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Yetki grubu bazlı izin (`Usergroup`), parola yerine kullanıcı yeniden kimlik doğrulaması; işlem günlüğü. | Kod incelemesi ile doğrula: `ERPPRO/Controls/Islem Ekranı/Base Control/iScreen.vb:722` — `PasswordBox.ShowDialog(Me, "", "")`; doğrulanınca `:723` `Update Cari.Islemler Set IsDeleted='True | [Ekip tarafından atanacak] | |
| ERR-POT-009 | POTANSİYEL | S1 | TD-09 — SQL metni birleştirme, string kullanıcı girdileri | E11 — Kullanıcı / Yetki Hatası | SQL metni birleştirme, string kullanıcı girdileri — GV, VB — `'` içeren girdi sorguyu bozar; bilinçli girdi `sa` yetkisiyle (TD-05) veri değiştirebilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tüm sorgular `SqlParameter`; tablo/alan adı gerektiren genel yardımcılar (`FindRecord`) için beyaz liste; grid filtreleri için `SqlParameter` üreten filtre çevirici. | Kod incelemesi ile doğrula: 1010/1468 ifade, 311 sınıf (scan). String girdi örnekleri: `ERPPRO/Form/Doviz/FrmDovFaturaEkranı.vb:239-243` (`InputBox` → `RefNo`), `Controls/Islem Ekranı/Ekra | [Ekip tarafından atanacak] | |
| ERR-POT-010 | POTANSİYEL | S1 | TD-10 — Serbest SQL editörü ve bağlantı dizesi | E11 — Kullanıcı / Yetki Hatası | Serbest SQL editörü ve bağlantı dizesi — GV — uygulama içinden `sa` ile rastgele SQL; menü yetkisine bağlı `[GAP: hangi kullanıcı grubuna açık olduğu Usergroup verisinden doğrulanmadı]`. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Üretim derlemesinden çıkarmak veya salt-okunur, yetki ve günlük kaydı ile sınırlamak. | Kod incelemesi ile doğrula: `ERPPRO/Form/Tanımlamalar/Sistem/FrmSqlEditor.vb:77-85` (`RadioGroup1` → `InternalDb.ConnStr` veya `TxtConnectionString.Text`), `:86-…` (`TestConnection`, sorgu | [Ekip tarafından atanacak] | |
| ERR-POT-011 | POTANSİYEL | S2 | TD-11 — Veritabanındaki kaynak kodun çalışma zamanında derlenmesi | E06 — Algoritma Hatası | Veritabanındaki kaynak kodun çalışma zamanında derlenmesi — GV, BK — tabloya yazabilen herkes uygulama sürecinde kod çalıştırır; derlenen sınıflar statik analiz/test dışı; ayrı bir ORM dünyası (TD-17). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Özelliği yetkili/ayrı araca taşımak; üretimde kapalı tutmak; kaynak kod yerine bildirimsel form tanımı. | Kod incelemesi ile doğrula: `ERPPRO/Class/Dao/Dynamic/Class/Compiler.vb:57-74` (`VBCodeProvider.CompileAssemblyFromSource`), `Class/Base/DynamicForm.vb:300-318` (`AifaDev.DynamicForms.Code | [Ekip tarafından atanacak] | |
| ERR-POT-012 | POTANSİYEL | S2 | TD-12 — Boş `Catch` | E07 — Finansal Hesaplama Hatası | Boş `Catch` — VB, BK — `Save` `False` döner ama sebep kaybolur; kur/önbellek yüklenemezse sessizce boş/eski değer kullanılır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Merkezi günlükleme (`Exception` + SQL metni + kullanıcı/şube), boş `Catch` yasağı (analizör kuralı), `Save` sonucuna hata nesnesi eklemek. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-013 | POTANSİYEL | S2 | TD-13 — `InternalDb` yaşam döngüsü kusurları | E09 — Konfigürasyon Hatası | `InternalDb` yaşam döngüsü kusurları — PF, VB — 866 `Using db As New InternalDb` bloğundan yalnız 231'i açıkça kapatıyor; kalanlar GC'ye kalıyor (havuz baskısı, uzun süreli açık bağlantı); aynı örnekte iki `DataTable()` çağrısı satırları çoğaltır (INFERRED sonuç, VERIFIED yapı). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Dispose` içinde `SqlConnection.Close/Dispose`; her çağrıda `Ds.Clear()` veya yeni `DataTable`; okuyucu için `CommandBehavior.CloseConnection`. | Kod incelemesi ile doğrula: `ERPPRO/Class/Module/InternalDb.vb:131-141` (`Dispose(disposing)` gövdesi boş — `SqlConnection` kapatılmıyor), `:53-65,69-81` (`Finally` boş), `:100-123` (`Da.F | [Ekip tarafından atanacak] | |
| ERR-POT-014 | POTANSİYEL | S2 | TD-14 — Veri katmanı UI açıyor | E09 — Konfigürasyon Hatası | Veri katmanı UI açıyor — BK — DAO sunucu/servis/test ortamında çalışamaz; kullanıcı kararı (Yes/No) iş mantığının içinde. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Sonuç nesnesi (`Result` + hata/uyarı listesi) döndürmek; onay soruları çağıran ekrana taşınmalı; `InternalDb` yalnız istisna fırlatmalı. | Kod incelemesi ile doğrula: `ERPPRO/Class/Module/InternalDb.vb:44,61,77,93,106,120` (`MessageBox/MsgBox`); `Class/Dao` 45 satır/19 dosya, `Class/Ext` 19 satır/4 dosya; `Class/Dao/Islem/Car | [Ekip tarafından atanacak] | |
| ERR-POT-015 | POTANSİYEL | S2 | TD-15 — Global durum bağımlılığı | E06 — Algoritma Hatası | Global durum bağımlılığı — BK — birim test ve çoklu oturum imkânsız; şube/kasa bağlamı örtük. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Oturum bağlamı nesnesi (`ISessionContext`) enjeksiyonu; önbelleğin servis arkasına alınması. | Kod incelemesi ile doğrula: 1175 başvuru, 312 sınıf (`Program` 763, `DSX` 322, `LoginInformation` 87); DAO'da 110/162 sınıf. Örnek: `Class/Dao/Base.vb:6-16` (`ActiveSirketId/SubeId` → `Pro | [Ekip tarafından atanacak] | |
| ERR-POT-016 | POTANSİYEL | S2 | TD-16 — Kopyala-yapıştır | E15 — Duplicate / Çift İşlem | Kopyala-yapıştır — BK — bir kural değişikliği 100+ dosyaya dokunur; ekran çiftleri ayrışır (`iFDoviz`/`iFNakit` farkı, mimari referans §9-17). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Genel `Repository(Of T)` + attribute/kaynak üreteci; ekran temel sınıflarında ortak `FormSave`; çakışma dosyasını silmek. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-017 | POTANSİYEL | S3 | TD-17 — Üç veri erişim yolu ve artık referanslar | E06 — Algoritma Hatası | Üç veri erişim yolu ve artık referanslar — BK — dört farklı kalıp; yeni geliştirici hangisini kullanacağını bilemez. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tek yol seçmek; XPO referansı, `localhost_Connection`, typed dataset'i kaldırmak. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-018 | POTANSİYEL | S2 | TD-18 — `DBBase.IsValidate` semantiği ters, yalnız 4 tipte doğrulama | E09 — Konfigürasyon Hatası | `DBBase.IsValidate` semantiği ters, yalnız 4 tipte doğrulama — VB — dinleyicisi olmayan/ikinci dinleyici eklenen tiplerde doğrulama yanlış anlamda çalışır; olay `Shared` olduğu için `Program` statik kurucusu çalışmadan hiçbir doğrulama yapılmaz. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Validate` sanal metodu (`Overridable Function Validate() As ValidationResult`); olay tabanlı doğrulamayı kaldırmak. | Kod incelemesi ile doğrula: `ERPPRO/Class/Dao/Base.vb:116-121` (`Validate(Obj, ByRef Cancel)`, `IsValid=True` ile çağrılır, aynen döner); tek dinleyici `Class/Module/Program.vb:4,20-30` (` | [Ekip tarafından atanacak] | |
| ERR-POT-019 | POTANSİYEL | S3 | TD-19 — `DBBase.ActiveKasaId` sonsuz özyineleme | E06 — Algoritma Hatası | `DBBase.ActiveKasaId` sonsuz özyineleme — BK — çağrılırsa `StackOverflowException` (süreç çöker). Çağıran yok (grep 0) → latent. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Return Program.KasaId` veya özelliği silmek. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-020 | POTANSİYEL | S3 | TD-20 — `SQLBase._Query` `Shared` | E06 — Algoritma Hatası | `SQLBase._Query` `Shared` — VB — ikinci bir `SQLBase` türevi eklendiğinde yanlış tabloya MERGE. Bugün tek türev (`Cari.IFatura`) → gizli. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tip başına önbellek (`Dictionary(Of Type, String)`) veya örnek alanı. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-021 | POTANSİYEL | S2 | TD-21 — `Program.GetKur` her zaman alış; birim yoksa `1` | E07 — Finansal Hesaplama Hatası | `Program.GetKur` her zaman alış; birim yoksa `1` — VB — satış yönünde alış kuru → marj kaybı (kabul edilmiş hata, AS-DOCUMENTED §10 soru 4); listede olmayan birim için `1` dönmesi sessiz yanlış tutar. Mimari referans §9-6 "kur bulunamazsa 0 akıyor" → `Program.GetKur` için **`1`** döner (`CONTRADICTS | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `GetKur(Birim, Yon As Alis|Satis)`; bulunamazsa istisna/uyarı, `1` yerine `Nothing`. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-022 | POTANSİYEL | S2 | TD-22 — Kur fallback sessiz (DB) | E07 — Finansal Hesaplama Hatası | Kur fallback sessiz (DB) — VB — eski kurla işlem; kullanıcı uyarılmaz. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Fallback'te `Tarih`/`IsFallback` kolonu döndürüp ekranda uyarmak; günlük kur girişi zorunluluğu. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-023 | POTANSİYEL | S2 | TD-23 — `Stok.GetMadenMaliyeti` `TOP 50` ve güncel kur | E07 — Finansal Hesaplama Hatası | `Stok.GetMadenMaliyeti` `TOP 50` ve güncel kur — VB — talep miktarı son 50 hareketi aşarsa maliyet eksik; maliyet hareket tarihindeki değil bugünkü kurla çevriliyor. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Küme temelli (cursor'suz) LIFO/FIFO hesaplama, sınır yok; hareket tarihindeki kur. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-024 | POTANSİYEL | S2 | TD-24 — `DSX` önbelleği tutarlılığı | E07 — Finansal Hesaplama Hatası | `DSX` önbelleği tutarlılığı — VB, BK — yeni kayıtlar (hesap, maden, kasa) ekranlara ancak tam yenilemede düşer (INFERRED, `[GAP]` bkz. database-access §7); yükleme hatası sessiz. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `RecordInserted/Updated/Deleted` olaylarına bağlı artımlı önbellek; olayı tek yerden yükseltmek; yükleme hatasını göstermek. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-025 | POTANSİYEL | S3 | TD-25 — `KurListesi` timer thread güvenliği | E07 — Finansal Hesaplama Hatası | `KurListesi` timer thread güvenliği — VB — nadir yarış/`InvalidOperationException` (koleksiyon değiştirildi) riski (INFERRED). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Değişmez liste değişimi (`Interlocked.Exchange`) veya `SynchronizationContext` ile UI thread'e postalama. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-026 | POTANSİYEL | S3 | TD-26 — Magic number karşılaştırmaları | E06 — Algoritma Hatası | Magic number karşılaştırmaları — BK — kod tablosu ile enum eşleşmesi kodda dağınık; anlam kaybı. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `tTransferStatus`, `tProvizyonStatus` enum'ları; SQL metinlerinde parametre olarak enum değeri. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-027 | POTANSİYEL | S2 | TD-27 — Combo indeksi doğrudan `IslemTuru` olarak kaydediliyor | E19 — Raporlama Hatası | Combo indeksi doğrudan `IslemTuru` olarak kaydediliyor — VB — `IslemKodu=BORC` kayıtlarında `IslemTuru` ALACAK/BORC yerine GIRIS/CIKIS; raporlar ve `GetKarsiIslemTuru` (`Database.vb:658-674`) bu değere göre yön çevirir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Combo'ya enum değerini `ValueMember` olarak bağlamak; tek dönüştürücü. | Kod incelemesi ile doğrula: `ERPPRO/Controls/Islem Ekranı/Ekran/iFBorc.vb:6,56` (`IslemTuru = CmbIslemTuru.SelectedIndex`), `iFBorc.Designer.vb:233` (`Items = {"ALACAK","BORC"}`) — enum `C | [Ekip tarafından atanacak] | |
| ERR-POT-028 | POTANSİYEL | S2 | TD-28 — Sabit kodlanmış MASAK eşikleri | E06 — Algoritma Hatası | Sabit kodlanmış MASAK eşikleri — VB (mevzuat) — güncel eşiklerle uyumsuz (AS-DOCUMENTED §9-24: 185.000 TL / 5.000 USD, `masak-mevzuat-notlari.md`); her değişiklikte derleme. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Eşikleri `Sistem.GlobalSettings`/parametre tablosuna almak, yürürlük tarihiyle. | Kod incelemesi ile doğrula: `ERPPRO/Controls/Islem Ekranı/Ekran/ParakendeSatis.vb:279-280` (`> 7000` TL isimsiz hesap), `:349-350`, `:407` (`> 3000` USD uyarı). | [Ekip tarafından atanacak] | |
| ERR-POT-029 | POTANSİYEL | S1 | TD-29 — `Devir.DevirYap`: `TRUNCATE` + yeniden `INSERT`, transaction yok | E05 — Transaction Hatası | `Devir.DevirYap`: `TRUNCATE` + yeniden `INSERT`, transaction yok — VB — `TRUNCATE` sonrası `INSERT` hata verirse hareket tabloları boş kalır; tek güvence önce alınan yedek. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Devir betiğini `BEGIN TRAN … COMMIT` + `TRY/CATCH` içine almak; `TRUNCATE` yerine yeni dönem DB'si oluşturma; `sp_configure` değişikliğini kaldırmak. | Kod incelemesi ile doğrula: `ERPPRO/Class/Module/Devir.vb:39-40` (`BACKUP/RESTORE` metinleri string birleştirme), `:76-87` (`Truncate Table Cari.Islemler, Cari.BakiyeIslem, Cari.History, S | [Ekip tarafından atanacak] | |
| ERR-POT-030 | POTANSİYEL | S1 | TD-30 — `Repair.BalanceRepair` | E09 — Konfigürasyon Hatası | `Repair.BalanceRepair` — VB — çalıştırılırsa devir bakiyeleri/transfer hareketleri kaybolur ve fatura tipli (11/12) işlemlere bakiye yazar (AS-DOCUMENTED `ERPGOLD-mimari-referans.md §9-1`, `erpgoldv2-balancerepair-riski.md`). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Prosedürü devre dışı bırakmak/yeniden adlandırmak; "önce raporla sonra uygula" tipi, kapsamı daraltılmış onarım. | Kod incelemesi ile doğrula: DB `Repair.BalanceRepair` (P, 18.773 karakter; 2 `TRUNCATE`, cursor), `Repair.StokRepair`. Uygulamadan çağıran yok (`grep "BalanceRepair|StokRepair"` ERPPRO = 0 | [Ekip tarafından atanacak] | |
| ERR-POT-031 | POTANSİYEL | S2 | TD-31 — `Cari.IslemINS` precision'sız `decimal` parametreler | E08 — Yuvarlama / Hassasiyet Hatası | `Cari.IslemINS` precision'sız `decimal` parametreler — VB — kullanılırsa milyem/fiyat/kur tam sayıya yuvarlanır (AS-DOCUMENTED `erpgoldv2-kod-katmani-bulgulari.md §3`; parametre tanımı VERIFIED). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kaldırmak ya da tablo tipleriyle birebir `decimal(18,n)`. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-032 | POTANSİYEL | S1 | TD-32 — `Cari.Islemler` tetikleyicileri demo kopyasında kapalı | E07 — Finansal Hesaplama Hatası | `Cari.Islemler` tetikleyicileri demo kopyasında kapalı — VB — iş kurallarının (şube pasif, evrak eksik, takoz stok) uygulama mı DB mi tarafından uygulandığı belirsiz; üretimde açıksa TD-03/TD-04 aktif. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Üretim DB'sinde tetikleyici durumu teyit `[GAP]`; kural motoru tek yerde. | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-033 | POTANSİYEL | S3 | TD-33 — Uyumluluk seviyesi 100 | E06 — Algoritma Hatası | Uyumluluk seviyesi 100 — PF — skaler UDF inlining, yeni kardinalite tahmini yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Test ortamında seviye 150+ ile regresyon; `FN.Bol` yerine `NULLIF` bölme. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-034 | POTANSİYEL | S3 | TD-34 — 45 kullanılmayan tablo | E19 — Raporlama Hatası | 45 kullanılmayan tablo — BK — şema yanıltıcı; rapor yazanlar yanlış tabloya (`dbo.BakiyeIslem` vs `Cari.BakiyeIslem`) bağlanabilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Geliştirme ekibiyle "atıl" işareti, `DEPRECATED_` şemasına taşıma, sonra kaldırma. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-035 | POTANSİYEL | S2 | TD-35 — ExLimit PIN üretimi zayıf | E06 — Algoritma Hatası | ExLimit PIN üretimi zayıf — GV — GUID hex karakterleri (0-9, A-F) → 16×16 = 256 olası PIN, ASCII kodları tahmin edilebilir (mimari referans §9-22 ile uyumlu). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `RNGCryptoServiceProvider` ile 6 haneli PIN, deneme sınırı, süre. | Kod incelemesi ile doğrula: `ERPPRO/Class/Dao/Islem/FrmExLimit.vb:50-53` (`Left(GetNewGUID, 2)` → her karakterin `Asc` değeri birleştirilir); `:48-49` "captcha" `Say1 + (Say1 - 1)` toplama | [Ekip tarafından atanacak] | |
| ERR-POT-036 | POTANSİYEL | S3 | TD-36 — `Sistem.Clients` hard delete | E07 — Finansal Hesaplama Hatası | `Sistem.Clients` hard delete — VB — soft-delete kuralının (`IsDeleted`) dışına çıkan tek DAO silmesi; makine adı string birleştirme. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Parametreli sorgu; oturum tablosu için ayrı yaşam döngüsü (süre dolumu). | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-037 | POTANSİYEL | S3 | TD-37 — `Program.AfterSave` ondalık değeri `ToString` ile SQL'e gömüyor | E08 — Yuvarlama / Hassasiyet Hatası | `Program.AfterSave` ondalık değeri `ToString` ile SQL'e gömüyor — VB — kültür ondalık ayırıcı `,` ise SQL hatası/yanlış değer; `Utils.Culture` (`Class/Module/Utils.vb:126-139`) `.` zorluyor, ancak yalnız o özellik çağrılan thread'de (INFERRED). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `SqlParameter` (decimal) kullanmak. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-038 | POTANSİYEL | S3 | TD-38 — Ölü kod ve artıklar | E06 — Algoritma Hatası | Ölü kod ve artıklar — BK — okuma yükü, yanlış yol seçimi. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Silmek; derleme uyarısı "kullanılmayan üye" analizörü. | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-039 | POTANSİYEL | S2 | TD-39 — `Cari.Islemler.VaryantId` adı yanıltıcı — karşı işlem Id'si tutuyor | E06 — Algoritma Hatası | `Cari.Islemler.VaryantId` adı yanıltıcı — karşı işlem Id'si tutuyor | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-040 | POTANSİYEL | S2 | TD-40 — `TxtTarih` kontrolü `Vade` kolonuna yazıyor (iFMaden, iFNakit, Banka Op. Skoru) | E06 — Algoritma Hatası | `TxtTarih` kontrolü `Vade` kolonuna yazıyor (iFMaden, iFNakit, Banka Op. Skoru) | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-041 | POTANSİYEL | S2 | TD-41 — `MüşteriŞemasıAIslemFiyatlari` tetikleyicisi: tek satır `Inserted`, sabit kimlikler, korumasız bölme | E07 — Finansal Hesaplama Hatası | `MüşteriŞemasıAIslemFiyatlari` tetikleyicisi: tek satır `Inserted`, sabit kimlikler, korumasız bölme | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-042 | POTANSİYEL | S2 | TD-42 — Devir yalnız 5 tabloyu boşaltıyor; `IslemId` taşıyan diğer tablolar birikiyor | E17 — Eski Veri / Legacy Problemi | Devir yalnız 5 tabloyu boşaltıyor; `IslemId` taşıyan diğer tablolar birikiyor | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-043 | POTANSİYEL | S2 | TD-43 — Müşteri adı taşıyan şemalar çekirdek DB'de: `MüşteriŞemasıA`, `MüşteriŞemasıB`, `MüşteriŞemasıC`, `MüşteriŞemasıD` | E06 — Algoritma Hatası | Müşteri adı taşıyan şemalar çekirdek DB'de: `MüşteriŞemasıA`, `MüşteriŞemasıB`, `MüşteriŞemasıC`, `MüşteriŞemasıD` | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-044 | POTANSİYEL | S2 | TD-44 — Kod tabloları kod enum'unun gerisinde: `IslemTipi` 12–15, `IslemKodu` 14 | E09 — Konfigürasyon Hatası | Kod tabloları kod enum'unun gerisinde: `IslemTipi` 12–15, `IslemKodu` 14 | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-045 | POTANSİYEL | S2 | TD-45 — 10 ekran canlı DB'de olmayan 8 tabloya yazıyor | E14 — UI / İş Akışı Hatası | 10 ekran canlı DB'de olmayan 8 tabloya yazıyor | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-046 | POTANSİYEL | S3 | TD-46 — ANA MENÜ'de arkasında kod olmayan 25 düğme | E06 — Algoritma Hatası | ANA MENÜ'de arkasında kod olmayan 25 düğme | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-047 | POTANSİYEL | S3 | TD-47 — Rapor fonksiyonları üç şemaya dağılmış: `Report`, `Reports`, `ReportsV2` | E09 — Konfigürasyon Hatası | Rapor fonksiyonları üç şemaya dağılmış: `Report`, `Reports`, `ReportsV2` | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-048 | POTANSİYEL | S1 | TD-48 — `AcceptTransaction` kurulumlar arasında ayrışmış (29.862 ↔ 31.152 krk) | E05 — Transaction Hatası | `AcceptTransaction` kurulumlar arasında ayrışmış (29.862 ↔ 31.152 krk) | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-049 | POTANSİYEL | S2 | TD-49 — İş kuralı 55 ekranda DAO dışına gömülü (doğrudan INSERT/UPDATE) | E07 — Finansal Hesaplama Hatası | İş kuralı 55 ekranda DAO dışına gömülü (doğrudan INSERT/UPDATE) | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Health Check INV-01/04/07/10/15 ile türetilmiş kayıt ve toplam eşitliği doğrula; belirtiyi test verisiyle yeniden üret | [Ekip tarafından atanacak] | |
| ERR-POT-050 | POTANSİYEL | S3 | InvalidCastException (CDate) — CreateBTransDoviz.BtnCreateXML_Click | E01 — Uygulama / Kod Exception | Try/Catch var; Catch ex → MsgBox(ex.Message) (teknik İngilizce mesaj 'Conversion from string ... to type Date is not valid'). Ön doğrulama (IsDate/DateTime.TryParse) yok. Form Load'da geçerli varsayılanlar atanıyor. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): DateTime.TryParseExact('MM.yyyy' / 'dd.MM.yyyy') ile doğrulayıp Türkçe uyarı vermek; DateEdit kullanmak. | Koşul: Kullanıcı TxtDonem.Text alanına tarih olarak çözümlenemeyen bir metin girip 'XML Oluştur' butonuna basarsa (örn. '13.2026', boş, harf). | [Ekip tarafından atanacak] | |
| ERR-POT-051 | POTANSİYEL | S3 | InvalidCastException (CDate) — CreateBTransDoviz.BtnCreateXML_Click | E01 — Uygulama / Kod Exception | Try/Catch var; Catch ex → MsgBox(ex.Message) (teknik İngilizce mesaj 'Conversion from string ... to type Date is not valid'). Ön doğrulama (IsDate/DateTime.TryParse) yok. Form Load'da geçerli varsayılanlar atanıyor. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): DateTime.TryParseExact('MM.yyyy' / 'dd.MM.yyyy') ile doğrulayıp Türkçe uyarı vermek; DateEdit kullanmak. | Koşul: Kullanıcı TxtBasTarih.Text alanına tarih olarak çözümlenemeyen bir metin girip 'XML Oluştur' butonuna basarsa (örn. '13.2026', boş, harf). | [Ekip tarafından atanacak] | |
| ERR-POT-052 | POTANSİYEL | S3 | InvalidCastException (CDate) — CreateBTransDoviz.BtnCreateXML_Click | E01 — Uygulama / Kod Exception | Try/Catch var; Catch ex → MsgBox(ex.Message) (teknik İngilizce mesaj 'Conversion from string ... to type Date is not valid'). Ön doğrulama (IsDate/DateTime.TryParse) yok. Form Load'da geçerli varsayılanlar atanıyor. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): DateTime.TryParseExact('MM.yyyy' / 'dd.MM.yyyy') ile doğrulayıp Türkçe uyarı vermek; DateEdit kullanmak. | Koşul: Kullanıcı TxtSonTarih.Text alanına tarih olarak çözümlenemeyen bir metin girip 'XML Oluştur' butonuna basarsa (örn. '13.2026', boş, harf). | [Ekip tarafından atanacak] | |
| ERR-SIL-001 | SESSİZ MANTIK / HESAPLAMA | S4 | IndexOutOfRangeException / InvalidCastException — FrmBlokTakozGirisi.ListRefresh | E06 — Algoritma Hatası | Try/Catch var ama Catch bloğu boş; SubeId/HesapId/FisNo 0 kalır ve sorgu 0 değerleriyle çalışır. Form Load'da (satır 3-4) ListRefresh boş metinle çağrıldığı için istisna HER açılışta oluşur ve yutulur. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Metni Split edip parça sayısı ve Integer.TryParse ile doğrulamak; geçersizse kullanıcıya uyarı verip Exit Sub. | Koşul: TxtSubeId.Text 'Sube.Hesap.FisNo' biçiminde değilse (Form Load'da boş metinle çağrılır → Split('.')(0) yok; veya sayısal olmayan parça → Integer'a dönüşüm hatası). | [Ekip tarafından atanacak] | |
| ERR-SIL-002 | SESSİZ MANTIK / HESAPLAMA | S4 | IndexOutOfRangeException / InvalidCastException — FrmBlokTakozGirisi.ListRefresh | E06 — Algoritma Hatası | Try/Catch var ama Catch bloğu boş; SubeId/HesapId/FisNo 0 kalır ve sorgu 0 değerleriyle çalışır. Form Load'da (satır 3-4) ListRefresh boş metinle çağrıldığı için istisna HER açılışta oluşur ve yutulur. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Metni Split edip parça sayısı ve Integer.TryParse ile doğrulamak; geçersizse kullanıcıya uyarı verip Exit Sub. | Koşul: TxtSubeId.Text 'Sube.Hesap.FisNo' biçiminde değilse (Form Load'da boş metinle çağrılır → Split('.')(1) yok; veya sayısal olmayan parça → Integer'a dönüşüm hatası). | [Ekip tarafından atanacak] | |
| ERR-SIL-003 | SESSİZ MANTIK / HESAPLAMA | S4 | IndexOutOfRangeException / InvalidCastException — FrmBlokTakozGirisi.ListRefresh | E06 — Algoritma Hatası | Try/Catch var ama Catch bloğu boş; SubeId/HesapId/FisNo 0 kalır ve sorgu 0 değerleriyle çalışır. Form Load'da (satır 3-4) ListRefresh boş metinle çağrıldığı için istisna HER açılışta oluşur ve yutulur. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Metni Split edip parça sayısı ve Integer.TryParse ile doğrulamak; geçersizse kullanıcıya uyarı verip Exit Sub. | Koşul: TxtSubeId.Text 'Sube.Hesap.FisNo' biçiminde değilse (Form Load'da boş metinle çağrılır → Split('.')(2) yok; veya sayısal olmayan parça → Integer'a dönüşüm hatası). | [Ekip tarafından atanacak] | |
| ERR-POT-053 | POTANSİYEL | S3 | UnauthorizedAccessException / DirectoryNotFoundException (IndexOutOfRange yanlış pozitif, farklı gerçek risk) — Dosya.ShowFile | E01 — Uygulama / Kod Exception | FileStream oluşturma Try/Catch dışında (sadece Process.Start Try içinde). DocumentData Is Nothing kontrolü var ama yol kontrolü yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Path.ChangeExtension(Path.GetTempFileName(), DocumentType) veya Path.Combine(Path.GetTempPath(), Guid + uzantı) kullanmak; FileStream'i Try/Catch'e almak. | Koşul: Split('.')(0) hiçbir zaman IndexOutOfRange atmaz. Gerçek risk: Windows kullanıcı adı veya Temp yolu '.' içeriyorsa (örn. C:\Users\ad.soyad\AppData\Local\Temp\tmpA1.tmp) Split('.')(0) = 'C:\Users\ad' o | [Ekip tarafından atanacak] | |
| ERR-POT-054 | POTANSİYEL | S3 | UnauthorizedAccessException / DirectoryNotFoundException (IndexOutOfRange yanlış pozitif, farklı gerçek risk) — FrmCariKartEkle.TeminatlarButtonClick | E01 — Uygulama / Kod Exception | FileStream oluşturma Try/Catch dışında (sadece Process.Start Try içinde). DocumentData Is Nothing kontrolü var ama yol kontrolü yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Path.ChangeExtension(Path.GetTempFileName(), DocumentType) veya Path.Combine(Path.GetTempPath(), Guid + uzantı) kullanmak; FileStream'i Try/Catch'e almak. | Koşul: Split('.')(0) hiçbir zaman IndexOutOfRange atmaz. Gerçek risk: Windows kullanıcı adı veya Temp yolu '.' içeriyorsa (örn. C:\Users\ad.soyad\AppData\Local\Temp\tmpA1.tmp) Split('.')(0) = 'C:\Users\ad' o | [Ekip tarafından atanacak] | |
| ERR-POT-055 | POTANSİYEL | S3 | UnauthorizedAccessException / DirectoryNotFoundException (IndexOutOfRange yanlış pozitif, farklı gerçek risk) — FrmTeminatEkle.ShowFile | E01 — Uygulama / Kod Exception | FileStream oluşturma Try/Catch dışında (sadece Process.Start Try içinde). DocumentData Is Nothing kontrolü var ama yol kontrolü yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Path.ChangeExtension(Path.GetTempFileName(), DocumentType) veya Path.Combine(Path.GetTempPath(), Guid + uzantı) kullanmak; FileStream'i Try/Catch'e almak. | Koşul: Split('.')(0) hiçbir zaman IndexOutOfRange atmaz. Gerçek risk: Windows kullanıcı adı veya Temp yolu '.' içeriyorsa (örn. C:\Users\ad.soyad\AppData\Local\Temp\tmpA1.tmp) Split('.')(0) = 'C:\Users\ad' o | [Ekip tarafından atanacak] | |
| ERR-SIL-004 | SESSİZ MANTIK / HESAPLAMA | S4 | IndexOutOfRangeException — UiForm.LoadDesigner | E06 — Algoritma Hatası | Satır 30 `On Error Resume Next` → istisna yutulur, Dim değişkeni Nothing kalır, `ControlTpye <> ""` False olur ve kontrol sessizce atlanır. Araç tarafından üretilen kod (UiConteiner.vb:332) 6 token üretir, normalde güvenli. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Split(" "c, StringSplitOptions.RemoveEmptyEntries) + uzunluk kontrolü; On Error Resume Next kaldırılıp Try/Catch ile loglama. | Koşul: Designer kodundaki 'Friend WithEvents' satırı beklenen 'Friend WithEvents Ad as New Tip' biçiminde değilse (elle düzenlenmiş, fazladan boşluk → Split(" ") boş token üretir) (5) indeksi bulunamaz. | [Ekip tarafından atanacak] | |
| ERR-SIL-005 | SESSİZ MANTIK / HESAPLAMA | S4 | IndexOutOfRangeException — UiForm.LoadDesigner | E06 — Algoritma Hatası | Satır 30 `On Error Resume Next` → istisna yutulur, Dim değişkeni Nothing kalır, `ControlTpye <> ""` False olur ve kontrol sessizce atlanır. Araç tarafından üretilen kod (UiConteiner.vb:332) 6 token üretir, normalde güvenli. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Split(" "c, StringSplitOptions.RemoveEmptyEntries) + uzunluk kontrolü; On Error Resume Next kaldırılıp Try/Catch ile loglama. | Koşul: Designer kodundaki 'Friend WithEvents' satırı beklenen 'Friend WithEvents Ad as New Tip' biçiminde değilse (elle düzenlenmiş, fazladan boşluk → Split(" ") boş token üretir) (2) indeksi bulunamaz. | [Ekip tarafından atanacak] | |
| ERR-SIL-006 | SESSİZ MANTIK / HESAPLAMA | S4 | NullReferenceException — EtiketDesignList.SimpleList1_ButtonClick | E06 — Algoritma Hatası | Satır 16 `On Error Resume Next` → NRE yutulur, hiçbir şey olmaz. Item Is Nothing kontrolü yok (karşılaştırma: RDPList.vb:13 aynı deseni açıkça kontrol ediyor). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `If Item Is Nothing Then Message.Show(NotSelectedRecord) : Exit Sub` eklemek; On Error Resume Next kaldırmak. | Koşul: Liste boşken veya satır seçili değilken Düzenle/Sil butonuna basılırsa GetFocusedRow Nothing döner; `New EtiketDesign(Item)` / `Item.Delete` NRE atar. | [Ekip tarafından atanacak] | |
| ERR-SIL-007 | SESSİZ MANTIK / HESAPLAMA | S3 | Tüm istisnalar (maskeleme) — UrunListesi.LoadStok | E06 — Algoritma Hatası | On Error Resume Next tüm hataları yutar; liste eksik/boş kalır. Loglama yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): On Error Resume Next yerine Try/Catch + kullanıcıya uyarı. | Koşul: DSX.TABLE.ListOfMaden/ListOfEmtia vb. Nothing ise veya öğe eşlemesinde istisna oluşursa | [Ekip tarafından atanacak] | |
| ERR-SIL-008 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — EtiketDesignList.SimpleList1_ButtonClick | E06 — Algoritma Hatası | On Error Resume Next; NRE ve alt form hataları yutulur. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch + Nothing kontrolü. | Koşul: Bkz. satır 17 kaydı | [Ekip tarafından atanacak] | |
| ERR-SIL-009 | SESSİZ MANTIK / HESAPLAMA | S4 | TargetInvocationException / InvalidCastException (maskeleme) — EtiketDetay.GetValue | E06 — Algoritma Hatası | On Error Resume Next; Prop IsNot Nothing kontrolü var ancak Item Nothing kontrolü yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch ile alan bazlı hata metni ('#ERR') basmak. | Koşul: Item Nothing ise veya FieldName özelliği okunurken istisna oluşursa (Prop.GetValue), Result boş kalır. | [Ekip tarafından atanacak] | |
| ERR-SIL-010 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — DataList.DataBind | E06 — Algoritma Hatası | On Error Resume Next; SQL hatası InternalDb tarafından MsgBox ile gösterilir, sonrası sessiz. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch; DataTable Nothing kontrolü. | Koşul: InternalDb(Query).DataTable Nothing dönerse (SQL hatası) veya DevExpress kolon işlemlerinde istisna olursa | [Ekip tarafından atanacak] | |
| ERR-SIL-011 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — DataListBase.DataBind | E06 — Algoritma Hatası | On Error Resume Next. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch + loglama. | Koşul: ActiveObject Nothing ise veya görsel/veri bağlama hatası | [Ekip tarafından atanacak] | |
| ERR-SIL-012 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — SimpleList.RetriveData | E06 — Algoritma Hatası | On Error Resume Next. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch + loglama. | Koşul: SQL/DevExpress hataları | [Ekip tarafından atanacak] | |
| ERR-SIL-013 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — Appointment.New(Apt) | E06 — Algoritma Hatası | On Error Resume Next; nesne kısmen dolu olarak devam eder ve kaydedilebilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch, hatalı alan için varsayılan atama ve loglama. | Koşul: Apt.ResourceIds / RecurrenceInfo Nothing veya DevExpress persistence helper istisnası | [Ekip tarafından atanacak] | |
| ERR-SIL-014 | SESSİZ MANTIK / HESAPLAMA | S4 | InvalidCastException (CBool("")) — TicketList.GridView1_CustomDrawCell | E06 — Algoritma Hatası | On Error Resume Next; hücre renklendirmesi atlanır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Val()/Boolean.TryParse ile güvenli dönüşüm. | Koşul: IsActive veya Status hücresi NULL ise `CBool("" & Nothing)` = CBool("") InvalidCastException atar. | [Ekip tarafından atanacak] | |
| ERR-SIL-015 | SESSİZ MANTIK / HESAPLAMA | S1 | NullReferenceException (hata işleyici içinde) — MyApplication.ShowDebugOutput | E06 — Algoritma Hatası | On Error Resume Next yalnızca If içindeki satırları kapsar. Loglama yok. ExeptionForm.BtnKapat → `End` (uygulamayı sonlandırır). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): UserSettings Nothing kontrolü; AutoErrorHandle=0 iken de dosyaya loglama; UnhandledException'da e.ExitApplication'ı bilinçli yönetmek. | Koşul: 1) Giriş ekranı (FrmLoginForm.New) çalışmadan önce bir istisna oluşursa Program.UserSettings Nothing'dir; satır 15 `Program.UserSettings.AutoErrorHandle` On Error Resume Next'ten ÖNCE çalıştığı için h | [Ekip tarafından atanacak] | |
| ERR-SIL-016 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — UiForm.LoadDesigner | E06 — Algoritma Hatası | On Error Resume Next; kontroller sessizce atlanır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Try/Catch + hata listesi. | Koşul: Designer kodu ayrıştırılırken herhangi bir istisna (Type.GetType Nothing → Activator NRE, Split indeks vb.) | [Ekip tarafından atanacak] | |
| ERR-SIL-017 | SESSİZ MANTIK / HESAPLAMA | S4 | Tüm istisnalar (maskeleme) — Properties.ToString | E06 — Algoritma Hatası | On Error Resume Next; satır atlanır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tip kontrolü (TypeOf) ile üretim. | Koşul: Late-bound .FieldName/.Mask erişimi desteklemeyen kontrol tipinde MissingMemberException | [Ekip tarafından atanacak] | |
| ERR-SIL-018 | SESSİZ MANTIK / HESAPLAMA | S2 | IndexOutOfRangeException (kolon yok) — DBNull yanlış pozitif — ERPFatura.New(RecordId) | E06 — Algoritma Hatası | Satır 48-155 tek bir Try/Catch (boş Catch) içinde: istisna sonrası kalan TÜM alanlar (DovizMiktar, DovizTLKuru, Entegrator bilgileri, limitler) yüklenmez; fHasRecord=True kalır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Alan başına ayrı güvenli okuma (HasColumn + TryGet); Catch'te loglama ve HasRecord=False. | Koşul: Convert.ToString(DBNull) "" döndürür, istisna atmaz. Gerçek risk: Muhasebe.GetEFatura sonuç kümesinde 'MADENKODU' kolonu yoksa DR("MADENKODU") IndexOutOfRangeException atar. | [Ekip tarafından atanacak] | |
| ERR-SIL-019 | SESSİZ MANTIK / HESAPLAMA | S2 | ArgumentOutOfRangeException (Substring) — ERPFatura.New(RecordId) | E06 — Algoritma Hatası | DBNull kontrolü var, uzunluk kontrolü yok. Dış Try/Catch (boş) istisnayı yutar ve satır 82+ alanları (DovizMiktar, DovizTLKuru, DolarKuru zaten okundu ama EntUserName/EntPassword/EBelgeUsdLimit vb.) atlanır. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `If s.Length >= 3 Then s.Substring(0,3) Else s`; Catch'te loglama. | Koşul: Cari.IslemDetaylari.DovizKodu 3 karakterden kısa ise (boş string '' NULL değildir → DBNull koruması geçer). DovizKodu FrmEFaturaBas.vb:262 `Left(Transaction.Kodu,3)` ile yazılır; Kodu kısa/boş bir sto | [Ekip tarafından atanacak] | |
| ERR-SIL-020 | SESSİZ MANTIK / HESAPLAMA | S2 | ArgumentOutOfRangeException (Substring) [SUBSTRING adayı, aynı satır] — ERPFatura.New(RecordId) | E06 — Algoritma Hatası | Aynı. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Aynı. | Koşul: Bkz. DBNULL_CAST kaydı (aynı satır). | [Ekip tarafından atanacak] | |
| ERR-SIL-021 | SESSİZ MANTIK / HESAPLAMA | S3 | InvalidCastException (CInt(DBNull)) + yutulan SqlException — DBBase.Insert | E06 — Algoritma Hatası | Try/Catch var; Catch bağlantıyı kapatır, mesaj/log yok → RecId=0 → Insert False döner. Kullanıcıya nedeni gösterilmez. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Catch'te ex.Message'ı göster/logla; ExecuteScalar sonucunu DBNull kontrolüyle oku. | Koşul: SCOPE_IDENTITY() NULL dönerse (identity kolonu olmayan tablo) CInt(DBNull) InvalidCastException; ayrıca INSERT'teki her SqlException (kısıt, tip hatası) aynı Catch'e düşer. | [Ekip tarafından atanacak] | |
| ERR-POT-056 | POTANSİYEL | S4 | InvalidCastException (CInt(DBNull)) — DynamicData.Insert | E01 — Uygulama / Kod Exception | Try/Catch → MsgBox(ex.Message) + Return False. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): DBNull kontrolü. | Koşul: SCOPE_IDENTITY() NULL dönerse | [Ekip tarafından atanacak] | |
| ERR-POT-057 | POTANSİYEL | S2 | SqlException / InvalidCastException (yeniden fırlatılır) — ERPFatura.Save | E01 — Uygulama / Kod Exception | İstisna sarılıp yeniden fırlatılır. Çağıran FrmEFaturaBas.FormSave (`If ERP_Fatura.Save = True`, satır 313) ve Extention.vb:62 Try/Catch içinde DEĞİL → Application.ThreadException. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Çağıranlarda Try/Catch + kullanıcı mesajı; Save içinde SqlException'ı özel mesaja çevirmek. | Koşul: MERGE sorgusu SqlException atarsa (kısıt, tip, bağlantı) veya `output inserted.*` ilk kolonu int değilse; Catch → `Throw New Exception(ex.Message, ex)`. | [Ekip tarafından atanacak] | |
| ERR-POT-058 | POTANSİYEL | S2 | NullReferenceException (Dt Nothing) — Lisans.FirstDate | E01 — Uygulama / Kod Exception | Nothing kontrolü yok. Çağrı zinciri: Utils.CallLisansControl ← Program.Init (Try/Catch → ShowDebugOutput) ve FrmMainForm.FormInit (IsLicensed, Try yok). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `If Dt IsNot Nothing AndAlso Dt.Rows.Count > 0`. | Koşul: Rows(0): GROUP BY'sız aggregate sorgu her zaman 1 satır döndürür → IndexOutOfRange olmaz. Ancak SQL/bağlantı hatasında InternalDb.DataTable Nothing döner → `Dt.Rows` NRE. | [Ekip tarafından atanacak] | |
| ERR-POT-059 | POTANSİYEL | S2 | NullReferenceException (Dt Nothing) — Lisans.FirstDate | E01 — Uygulama / Kod Exception | Aynı. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Aynı. | Koşul: Aynı. | [Ekip tarafından atanacak] | |
| ERR-POT-060 | POTANSİYEL | S4 | ArgumentException ('Cannot set Column to be null') — Rows(0) yanlış pozitif — Parameters.CreateDataTable | E01 — Uygulama / Kod Exception | Satır 65-69 Nothing için String kolonu açar ama satır 73'te DBNull'a çevirmez. Çağıran FrmControllerEkle.vb:39 Try dışında. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Tb.Rows(0).Item(p.Name) = If(p.Value, DBNull.Value)`. | Koşul: Rows(0) satır 71 `Tb.Rows.Add()` ile garanti. Gerçek risk: p.Value Is Nothing olan parametre (AddObject(New Cari.Islem) ile String özellikleri Nothing gelir) DataRow'a Nothing yazılınca ArgumentExcept | [Ekip tarafından atanacak] | |
| ERR-POT-061 | POTANSİYEL | S2 | DivideByZeroException (Decimal bölme) — ERPFatura.ValidateOverUsdLimit | E01 — Uygulama / Kod Exception | Sıfır kontrolü yok. SendToEntegrator (satır 779) çağrıları FrmEFaturaBas.vb:338 ve FrmEFaturaListesi.vb:39'da Try/Catch DIŞINDA → Application.ThreadException. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `If DolarKuru = 0 Then ErrorText = "USD kuru tanımsız" : Return False`; FormSave'de DolarKuru=0 doğrulaması. | Koşul: DolarKuru (Decimal) = 0 ise. Kaynaklar: FrmEFaturaBas.vb:295-299 → USD belgede DovizTLKuru (Fiyat 0 ise 0); diğerlerinde `IIf(Transaction.UsdKur=0, Program.GetKur("USD"), UsdKur)` → GetKur, günün USD | [Ekip tarafından atanacak] | |
| ERR-POT-062 | POTANSİYEL | S2 | OverflowException (Infinity → Decimal) — Ice.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | Sıfır kontrolü yok; SendInvoice (Ice.vb:116-194) Try/Catch ile yakalar → DeleteSettings(Auth) + EDovizResponseResult(Message='Hata oluştu!...'). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Gönderim öncesi Dolar_TL_Kuru/Doviz_TL_Kuru/DovizMiktar > 0 doğrulaması ve anlaşılır Türkçe mesaj. | Koşul: EDocument.Dolar_TL_Kuru (Double) = 0 → Double bölme Infinity → CDec(Infinity) OverflowException ('Value was either too large or too small for a Decimal'). | [Ekip tarafından atanacak] | |
| ERR-POT-063 | POTANSİYEL | S2 | OverflowException (Infinity → Decimal) — Ice.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | SendInvoice Try/Catch. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Miktar>0 doğrulaması. | Koşul: EDocument.DovizMiktar (Double) = 0 → Decimal/Double → Infinity → `Dim Fiyat As Decimal` atamasında OverflowException. Cari.Islem.Save Miktar=0'ı reddettiği için (Cari.Islem.vb:513) düşük olasılık. | [Ekip tarafından atanacak] | |
| ERR-POT-064 | POTANSİYEL | S2 | DivideByZeroException (Decimal) — Ice.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | SendInvoice Try/Catch. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur sıfır kontrolü. | Koşul: tlKarsilikKuru (Decimal) = 0: Kıymetli maden SATIM'da tlKarsilikKuru = Fiyat = (Tutar - Vergi)/Miktar → Tutar 0 veya Vergi=Tutar ise 0. | [Ekip tarafından atanacak] | |
| ERR-POT-065 | POTANSİYEL | S2 | OverflowException (Infinity → Decimal) — MySoft.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | SendInvoice (MySoft.vb:108-174) Try/Catch. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: Dolar_TL_Kuru = 0 → Double bölme Infinity → `CalculationRate As Decimal` atamasında OverflowException. | [Ekip tarafından atanacak] | |
| ERR-SIL-022 | SESSİZ MANTIK / HESAPLAMA | S2 | Sessiz (Double Infinity → JSON) — MySoft.Get_eDoviz_Belge | E06 — Algoritma Hatası | Koruma yok; .NET istisnası oluşmaz. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: Doviz_TL_Kuru = 0 → 1/0 = Infinity (Double, istisna yok) → CalculationRate (Double) Infinity → JSON'a 'Infinity' yazılır → entegratör reddi. | [Ekip tarafından atanacak] | |
| ERR-SIL-023 | SESSİZ MANTIK / HESAPLAMA | S3 | Sessiz (Double Infinity) — MySoft.Get_eDoviz_Belge | E06 — Algoritma Hatası | Koruma yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tutar > 0 doğrulaması. | Koşul: VergiHaric_Tutar = 0 → Infinity (Double). | [Ekip tarafından atanacak] | |
| ERR-SIL-024 | SESSİZ MANTIK / HESAPLAMA | S2 | Sessiz (Double Infinity → JSON) — Ticari1.Get_eDoviz_Belge | E06 — Algoritma Hatası | Koruma yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: Doviz_TL_Kuru = 0 → 1/0 Infinity (Double özellik). | [Ekip tarafından atanacak] | |
| ERR-SIL-025 | SESSİZ MANTIK / HESAPLAMA | S2 | Sessiz (Double Infinity/NaN → JSON) — Ticari1.Get_eDoviz_Belge | E06 — Algoritma Hatası | Koruma yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: Dolar_TL_Kuru = 0 → Infinity/NaN. | [Ekip tarafından atanacak] | |
| ERR-POT-066 | POTANSİYEL | S2 | FormatException (Convert.ToDecimal("∞")) — Uyumsoft.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | SendInvoice (Uyumsoft.vb:141-194) Try/Catch. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: Dolar_TL_Kuru = 0 → Infinity.ToString("N5") = '∞' → Convert.ToDecimal FormatException. | [Ekip tarafından atanacak] | |
| ERR-POT-067 | POTANSİYEL | S2 | FormatException (Convert.ToDecimal("∞")) — Uyumsoft.Get_eDoviz_Belge | E01 — Uygulama / Kod Exception | SendInvoice Try/Catch. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kur > 0 doğrulaması. | Koşul: SATIM'da Doviz_TL_Kuru = 0 → 1/0 → '∞' → FormatException. | [Ekip tarafından atanacak] | |
| ERR-POT-068 | POTANSİYEL | S4 | SqlException (tarih boş) — CDate yanlış pozitif — FrmSeriIslem.ListRefresh | E01 — Uygulama / Kod Exception | Metot Try/Catch (boş) içinde; InternalDb.DataTable hatayı MsgBox ile gösterir. Tarih boş kontrolü yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): TxtBTarih.EditValue Is Nothing ise varsayılan tarih atamak. | Koşul: TxtBTarih/TxtSTarih DateEdit temizlenirse EditValue Nothing → CDate(Nothing) = #01.01.0001# (istisna yok) → SQL'e '0001-01-01' gider; parametre DATETIME ise SqlException (InternalDb MsgBox). | [Ekip tarafından atanacak] | |
| ERR-POT-069 | POTANSİYEL | S4 | SqlException (tarih boş) — CDate yanlış pozitif — iScreen.ListRefresh | E01 — Uygulama / Kod Exception | Try/Catch (boş, iScreen.vb:960/993); InternalDb MsgBox. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Aynı. | Koşul: Aynı desen (BarEditItem DateEdit). | [Ekip tarafından atanacak] | |
| ERR-POT-070 | POTANSİYEL | S3 | InvalidCastException (CInt(DBNull)/CInt("")) — FrmSiparisGirisi.SaveData | E01 — Uygulama / Kod Exception | Kontrol yok; SaveData Try/Catch dışında. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): `Val("" & CmbHesap.EditValue)` kullanmak. | Koşul: CmbHesap (GridLookupEdit).EditValue DBNull veya boş string ise; Nothing → CInt(Nothing)=0 sorunsuz. Veri kaynağı Integer Id olduğundan düşük olasılık. | [Ekip tarafından atanacak] | |
| ERR-POT-071 | POTANSİYEL | S2 | SQLR-001 Invalid object name: Cari.Odemeler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Cari.Odemeler] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-072 | POTANSİYEL | S2 | SQLR-002 Invalid object name: Genel.IptalOnay | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Genel.IptalOnay] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-073 | POTANSİYEL | S3 | SQLR-003 Invalid object name: Siparis.FiyatListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.FiyatListesi] (8 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-074 | POTANSİYEL | S3 | SQLR-004 Invalid object name: Uretim.Eritme | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.Eritme] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-075 | POTANSİYEL | S3 | SQLR-005 Invalid object name: Uretim.Formul | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.Formul] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-076 | POTANSİYEL | S3 | SQLR-006 Invalid object name: Uretim.FormulDetay | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.FormulDetay] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-077 | POTANSİYEL | S3 | SQLR-007 Invalid object name: Uretim.ModelPartiBilgileri | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.ModelPartiBilgileri] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-078 | POTANSİYEL | S2 | SQLR-008 Invalid object name: Uretim.Partiler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.Partiler] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-079 | POTANSİYEL | S3 | SQLR-009 Invalid object name: Siparis.GetFiyatListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.GetFiyatListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-080 | POTANSİYEL | S3 | SQLR-010 Invalid object name: Uretim.GetEritmeListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetEritmeListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-081 | POTANSİYEL | S3 | SQLR-011 Invalid object name: Uretim.GetFormuls | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetFormuls] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-082 | POTANSİYEL | S3 | SQLR-012 Invalid object name: Uretim.GetModelPartiBilgiListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetModelPartiBilgiListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-083 | POTANSİYEL | S3 | SQLR-013 Invalid object name: Uretim.GetPartiler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetPartiler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-084 | POTANSİYEL | S3 | SQLR-014 Invalid object name: Cari.GETOdemeKasaOzeti | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Cari.GETOdemeKasaOzeti] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-085 | POTANSİYEL | S2 | SQLR-015 Invalid object name: Cari.GETOdemeListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Cari.GETOdemeListesi] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-086 | POTANSİYEL | S2 | SQLR-016 Invalid object name: Organizasyon.Gorevler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Organizasyon.Gorevler] (8 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-087 | POTANSİYEL | S3 | SQLR-017 Invalid object name: Organizasyon.GorevDagitim | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Organizasyon.GorevDagitim] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-088 | POTANSİYEL | S4 | SQLR-018 Invalid object name: Sistem.iException | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Sistem.iException] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-089 | POTANSİYEL | S3 | SQLR-019 Invalid object name: Siparis.PaketHesaplari | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.PaketHesaplari] (3 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-090 | POTANSİYEL | S3 | SQLR-020 Invalid object name: Siparis.ModelAyarBlackList | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.ModelAyarBlackList] (2 referans); Sistem.ERPSCHEMA satırı: VAR (5 satır); TD-45. NOT: ana şema (ERPSCHEMA) bu tabloyu 5 satırla tanımlıyor → DBUpdate çalıştırılınca oluşturulabilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-091 | POTANSİYEL | S3 | SQLR-021 Invalid object name: Siparis.modelayarBlacklist | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.modelayarBlacklist] (2 referans); Sistem.ERPSCHEMA satırı: VAR (5 satır); TD-45. NOT: ana şema (ERPSCHEMA) bu tabloyu 5 satırla tanımlıyor → DBUpdate çalıştırılınca oluşturulabilir. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-092 | POTANSİYEL | S3 | SQLR-022 Invalid object name: Siparis.GetPaketHesapListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.GetPaketHesapListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-093 | POTANSİYEL | S3 | SQLR-023 Invalid object name: Siparis.GetUyumluPaketler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.GetUyumluPaketler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-094 | POTANSİYEL | S3 | SQLR-024 Invalid object name: Siparis.GetLastPrice | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Siparis.GetLastPrice] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-095 | POTANSİYEL | S3 | SQLR-025 Invalid object name: Uretim.GetFormulDetay | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetFormulDetay] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-096 | POTANSİYEL | S3 | SQLR-026 Invalid object name: Uretim.GetPartiModelListesi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Uretim.GetPartiModelListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-097 | POTANSİYEL | S2 | SQLR-027 Invalid object name: Cari.GetRiskRaporu | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Cari.GetRiskRaporu] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-098 | POTANSİYEL | S3 | SQLR-028 Invalid object name: Stok.GetTakozIsciligi | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Stok.GetTakozIsciligi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-099 | POTANSİYEL | S3 | SQLR-029 Invalid object name: Organizasyon.GelenGorevler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Organizasyon.GelenGorevler] (3 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-100 | POTANSİYEL | S3 | SQLR-030 Invalid object name: Organizasyon.GidenGorevler | E02 — SQL Server Hatası | basedb/out/code_refs2.json code_only[Organizasyon.GidenGorevler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Ekran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-101 | POTANSİYEL | S1 | SQLR-031 Invalid object name: Genel.Dosyalar (VIEW) | E02 — SQL Server Hatası | modules.json Genel.Dosyalar: 'CREATE View Genel.Dosyalar as Select * from DOCUMENTS.Genel.Dosyalar'; deps.json: Cari.GetGerekliEvraklar→Genel.Dosyalar; AcceptTransaction satır ~112: 'SELECT COUNT(*) FROM Cari.GetGerekliEvraklar(@SubeId,@HesapId,'True')'; misc.json database listesi. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): BASE'de Genel.Dosyalar'ın tablo mu view mi olacağı kararı; cross-DB bağımlılığın kaldırılması. AcceptTransaction'daki evrak kontrolünün DOCUMENTS'e bağımlı olmaması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-102 | POTANSİYEL | S4 | SQLR-032 Invalid object name: LiveUpdate.Version / LiveUpdate.SetVersion / LiveUpdate.Lock / LiveUpdate.UnLock | E02 — SQL Server Hatası | analysis_db.json unresolved[148911602,484912799]='LiveUpdate.VersionHistory_'; analysis.json unresolved_in_base. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Lock/UnLock'un sp_rename ile tablo adı değiştirme yaklaşımı yerine bir kilit kolonu; unresolved referansın BASE build'inde bilinçli bırakılması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-103 | POTANSİYEL | S2 | SQLR-033 Invalid object name: Sistem.FromERP | E02 — SQL Server Hatası | modules.json Sistem.FromERP: '@HesapQuery = Insert Into Cari.Hesaplar Select Id as OldFirmaId,… from ' + @DataBase + '.dbo.Firmalar'; columns.json Cari.Hesaplar 57 kolon, Id identity; analysis.json unresolved_in_base['Sistem.FromERP']. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Eski ERP'den aktarım prosedürü BASE kapsamından çıkarılmalı ya da kolon listesiyle yeniden yazılmalı; @Database için QUOTENAME/whitelist. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-104 | POTANSİYEL | S3 | SQLR-034 Invalid object name: dbo.sp_DevirIslemiYap | E02 — SQL Server Hatası | analysis.json rows['dbo.sp_DevirIslemiYap'].unresolved=['Cari.bilancolar','Cari.islemlerdetalari','Sistem.bakiyeislem','dbo.company']; analysis_db.json crossdb[1583396760]='ERPGLOBAL.Dbo.Company'; modül metninde 'SET IDENTITY_INSERT Cari.Islemler ON'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): BASE dışı bırakılmalı; devir mantığı tek yerde (Devir.vb vs sp_DevirIslemiYap vs Sistem.Devir çakışıyor). (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-105 | POTANSİYEL | S4 | SQLR-035 Invalid object name: Sistem.MT4OrdersSync / Sistem.MT4TicketsSync / Sistem.Reset | E02 — SQL Server Hatası | analysis_db.json unresolved[1145823194]=['Sistem.MT4Orders'], [1161823251]=['Sistem.MT4tickets'], [1193823365]=['Sistem.MT4Tickets']; dbsql.json Sistem.ERPSCHEMA: Sistem.GetMT4Orders×17, Sistem.MT4EXPO×3. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): MT4/FX nesne kümesi BASE dışında ayrı bir eklenti paketi olarak ele alınmalı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-106 | POTANSİYEL | S3 | SQLR-036 Invalid object name: AifaDev.Reports #16, #19, #29, #30 (DB içinde saklanan rapor SQL'i) | E02 — SQL Server Hatası | dbsql.json AifaDev.Reports#16 'Select * From MüşteriŞemasıD.GetCariBakiyeHaraketleri(@HesapId,@Tarih,@BirimId)', #19 'MüşteriŞemasıD.GetEnvanter(@Tarih)', #29 'Reports.IptalIslemRaporu(...)', #30 'Cari.HesapExtresiDetails'; objects.json'da bu adlar yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): AifaDev.Reports satırları katalogla doğrulanıp kırık raporlar pasife alınmalı; BASE seed'ine yalnız çözümlenen raporlar. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-107 | POTANSİYEL | S3 | SQLR-037 Could not find stored procedure: Reports.GetPozisyonDetay | E02 — SQL Server Hatası | parameters.json Reports.GetPozisyonDetay: @SubeId,@BasTarih,@SonTarih; FrmPozisyonDurum.vb:15 'Reports.GetPozisyonDetay(''" & DateEdit1… & "'',''" & DateEdit2 …'; PopupGrid#5 'Reports.GetPozisyonDetay(getdate(),Getdate())'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Fonksiyon imzası ile çağrılar eşitlenmeli (DB2'deki imza doğrulanmalı — sürüm kayması işareti). (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-108 | POTANSİYEL | S3 | SQLR-038 Could not find stored procedure: Reports.ResmiPozisyon | E02 — SQL Server Hatası | dbsql.json AifaDev.Reports #38–#66 'Select * from Reports.ResmiPozisyon ()'; parameters.json Reports.ResmiPozisyon: @Tarih. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Tekrarlı 29 rapor satırının temizlenmesi; seed'e yalnız #67. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-109 | POTANSİYEL | S3 | SQLR-039 Invalid object name: AifaDev.ExQueryBuilder (TRIGGER on AifaDev.RepositoryItems) | E02 — SQL Server Hatası | modules.json AifaDev.ExQueryBuilder: "if OBJECT_ID (@ViewName) is null BEGIN SET @Query = 'Alter View ' … END ELSE BEGIN SET @Query = 'Alter View ' …"; "exec ('Add Schema Query')". | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): OBJECT_ID kontrolünde CREATE/ALTER ayrımı; 'Add Schema' → 'CREATE SCHEMA'. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-110 | POTANSİYEL | S2 | SQLR-040 Invalid column name: Cari.Transferler | E02 — SQL Server Hatası | sql_frags (ERPPRO/Class/Dao/Cari.Transferler.vb:172 (Insert), :222 (Update)); columns.json Cari.Transferler kolon listesinde 'Aciklama' yok. DB2'de Cari.Transferler 32.531 satır — kolon orada olabilir (BİLİNMİYOR). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-111 | POTANSİYEL | S3 | SQLR-041 Invalid column name: Siparis.Paket | E02 — SQL Server Hatası | sql_frags (ERPPRO/Class/Dao/Siparis.Paket.vb:93 (Insert), :126 (Update)); columns.json Siparis.Paket kolon listesinde 'IsPublic' yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-112 | POTANSİYEL | S3 | SQLR-042 Invalid column name: Siparis.TakimKartlari | E02 — SQL Server Hatası | sql_frags (ERPPRO/Class/Dao/Siparis.TakimKarti.vb:112 (Insert), :163 (Update)); columns.json Siparis.TakimKartlari kolon listesinde 'Grup' yok. Sistem.ERPSCHEMA'da 'Siparis.TakimKartlari' için 1 satır var → ana şemada V2'de olmayan bir kolon (muhtemelen Grup) = 'Alter … Add' adayı. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-113 | POTANSİYEL | S4 | SQLR-043 Invalid column name: Sistem.CariIslemTipi | E02 — SQL Server Hatası | sql_frags (ERPPRO/Class/Dao/Sistem.CariIslemTipi.vb:11 (Sub New(Filter): Select * … Where IsDeleted='False')); columns.json Sistem.CariIslemTipi kolon listesinde 'IsDeleted' yok. Tablo kolonları: Id, IslemTipi, Kod. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-114 | POTANSİYEL | S3 | SQLR-044 Invalid column name: Cari.Provizyon | E02 — SQL Server Hatası | sql_frags (ERPPRO/Class/Ext/Cari.Provizyon.vb:57 (TOList), :151, :171 (Delete)); columns.json Cari.Provizyon kolon listesinde 'IsDeleted' yok. Tabloda IsDeleted yok (Status/StatusId var). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-115 | POTANSİYEL | S4 | SQLR-045 Invalid column name: Sistem.Users | E02 — SQL Server Hatası | sql_frags (ERPPRO/Form/Genel/FrmChangeAccount.vb:9); columns.json Sistem.Users kolon listesinde 'SubeId' yok. Şube bilgisi Sistem.UserDetails.SubeId'de. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-116 | POTANSİYEL | S2 | SQLR-046 Invalid column name: Cari.IslemDetaylari / Cari.Islemler (kurulum farkı) | E02 — SQL Server Hatası | kitap/b8_kuyumcu.md 'Cari.IslemDetaylari: döviz 49 / kuyumcu 12 kolon; ETTN kuyumcuda yoktur; IsArbitiraj yalnız döviz'; Parakende.vb:13 sorgu metni; AcceptTransaction cursor listesi 'D.ETTN'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kurulum profiline göre kolon seti (BASE + DÖVİZ eklentisi) ayrımı; kodda ETTN/IsArbitiraj kullanan sorguların profil bayrağıyla korunması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-117 | POTANSİYEL | S3 | SQLR-047 Invalid column name: Sistem.ERPSCHEMA 'Alter … Add' satırları | E02 — SQL Server Hatası | dbsql.json Sistem.ERPSCHEMA satır sayıları (Cari.Hesaplar 1, Cari.Islemler 1, Cari.IslemListesi 6, Siparis.TakimKartlari 1 …); DBUpdate.vb Method computed: object_id(TableName) null→'Create' else 'Alter'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): ERPSCHEMA ColumnName/DataType içeriği okunup (bu turda alınmadı — GAP) BASE kolon seti ile eşleştirilmeli. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-118 | POTANSİYEL | S2 | SQLR-048 Invalid column name: (kod) ERPFatura.Save → Cari.IslemDetaylari | E02 — SQL Server Hatası | QA-SQL-QUERY-MAP.md satır 354; ERPFatura.vb:330 metni; :486 'Catch ex As Exception' boş. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Bu DAO'nun canlı yol olup olmadığı (Cari.IFatura/SQLBase MERGE üretimi ana yol) netleştirilip artık önek kaldırılmalı; boş Catch loglanmalı. (Uygulanmadı) | Belirtiyi yeniden üret: Fatura/belge detayı kaydedilmez; kullanıcıya hata gösterilmez (ekran 'kaydedilemedi' ya da hiçbir şey). | [Ekip tarafından atanacak] | |
| ERR-SIL-026 | SESSİZ MANTIK / HESAPLAMA | S2 | SQLR-049 Divide by zero: FN.Bol | E07 — Finansal Hesaplama Hatası | modules.json FN.Bol tanımı; AcceptTransaction: '@Iscilik = Fn.Bol((@HasIscilik * @HasIscBirimKur),@IscKur) + …', '@HasBakiye += Fn.Bol(((@Miktar*@AgMilyem)*@GumKur),@HasKur)'; FN.Bol çağıran 103 modül listesi (div.py). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): FN.Bol'un 0 yerine NULL döndürmesi ya da çağıran yerlerde NULLIF ile açık koruma; 0 dönen durumların loglanması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-119 | POTANSİYEL | S3 | SQLR-050 Divide by zero: Bilanco.GetIKar; Bilanco.GetIBilanco | E07 — Finansal Hesaplama Hatası | div.py çıktısı: Bilanco.GetIKar 5×, Bilanco.GetIBilanco 4× '/Kur1.Alis' NULLIF yok. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): NULLIF(Kur1.Alis,0) ve kur yokluğu için açık uyarı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-120 | POTANSİYEL | S2 | SQLR-051 Divide by zero: MüşteriŞemasıA.IslemFiyatlar tetikleyicisi (DB2 Cari.Islemler 5. tetikleyici) | E07 — Finansal Hesaplama Hatası | TD-41; kitap/b8_kuyumcu.md 'Sıfıra bölme riski: I.Maliyet/I.UsdKur, I.Maliyet/I.HasKur korumasız'. Tetikleyici metni bu turda elde yok (DB2 modülleri GAP-BASE-DB2-MODULES). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Müşteri özel tetikleyicinin eklenti noktasına alınması; NULLIF; set-tabanlı yazım. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-121 | POTANSİYEL | S3 | SQLR-054 Conversion failed: (kod) Cari.Odeme.vb:136 → Cari.Islemler | E02 — SQL Server Hatası | Cari.Odeme.vb:136 'select Sum(Miktar) … And Convert(int,Tag) =''" & Id & "''' (Cari.Odemeler ekranı zaten 208 ile düşer). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): TRY_CONVERT ya da Tag yerine tipli bir referans kolonu. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-122 | POTANSİYEL | S4 | SQLR-055 Conversion failed: Query.GENELSTOKLAR (VIEW); AifaDev.ExQueryBuilder üretimi Query.* view'ları | E02 — SQL Server Hatası | modules.json Query.GENELSTOKLAR 'Convert(int, F.Kimden)'; ExQueryBuilder DataType→Convert eşlemesi. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): TRY_CONVERT; giriş doğrulaması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-123 | POTANSİYEL | S3 | SQLR-056 Conversion failed: (kod) tırnaklı birleştirme ile tipsiz literal karşılaştırması | E02 — SQL Server Hatası | dyn.py istatistiği: 1294 cümle; 914 '&' ile birleştirme; 553 tırnaklı ('" & x & "'); 252 parametreli; 133 sabit. TD-37 (ondalık ToString). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Parametreli sorgu (SqlParameter) — TD-09/TD-37 ile birlikte. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-124 | POTANSİYEL | S4 | SQLR-057 Arithmetic overflow: Cari.AcceptTransaction; Cari.History (Fiyat decimal(18,5) ← Islemler.Fiyat decimal(18,8)); Stok.StokHaraketleri.NetBakiye decimal(37,10) | E08 — Yuvarlama / Hassasiyet Hatası | columns.json: Islemler.Fiyat decimal(18,8) vs History.Fiyat decimal(18,5); AcceptTransaction 'Convert(Decimal(18,2), @StokIsc * @StokIscKur)'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): History ve Islemler kolon tiplerinin eşitlenmesi; ara hesaplarda decimal(28,10). (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-SIL-027 | SESSİZ MANTIK / HESAPLAMA | S3 | SQLR-058 Conversion failed: (kod) TCMB.Currency.Save → MERGE Sistem.TCMBDovizKurlari | E02 — SQL Server Hatası | modules.json 'Create View Sistem.TCMBDovizKurlari as Select Tarih,Birim as Kodu,Alis,Satis from Sistem.GetKurListesi(getdate())'; TCMB.vb:67 CheckTable; :127 MERGE; phase6 KUY_ONLY 'Sistem.TCMBDovizKurlari' tablo. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): TCMBDovizKurlari'nın tablo mu view mi olacağı kurulum genelinde tek karar; CheckTable'ın view'ı tablo sanmaması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-125 | POTANSİYEL | S3 | SQLR-059 String or binary data would be truncated: (kod DAO Insert/Update) kısa nvarchar kolonlar | E02 — SQL Server Hatası | Truncation taraması (300 kolon ≤50 karakter, kod INSERT listelerinde); columns.json uz değerleri (nvarchar byte/2). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): UI MaxLength = kolon uzunluğu eşlemesi; Aciklama kolonlarının uzunluk standardı (TD standardizasyon). (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-126 | POTANSİYEL | S3 | SQLR-061 Cannot insert NULL: Cari.Islemler.FiyatTipi (tfiyattipi NOT NULL, default yok); Cari.History.FiyatTipi; Cari.BakiyeIslem.HesapType (NOT NULL) | E03 — Veri Bütünlüğü Hatası | columns.json Islemler NOT NULL no-default: [FiyatTipi tfiyattipi]; BakiyeIslem.HesapType null=False; frags.py NOT NULL taraması (kod INSERT'lerinde yalnız ERPFatura MERGE (IslemId) ve Sistem.Clients (dinamik kolon listesi) eksik). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kolonlara DEFAULT; DAO'da null koruması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-127 | POTANSİYEL | S4 | SQLR-062 Cannot insert NULL: (kod) Sistem.Clients dinamik INSERT | E03 — Veri Bütünlüğü Hatası | frags.py: Sistem.Clients INSERT listesinde clientname yok (dinamik). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Zorunlu alan kontrolü. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-SIL-028 | SESSİZ MANTIK / HESAPLAMA | S2 | SQLR-063 Duplicate key: Sistem.Kurlar (BirimId,Tarih); Sistem.Birimler.Kodu; Cari.Hesaplar (VergiNo,SubeId); Cari.Islemler.FisNo; Cari.BakiyeKodlari.Kodu | E15 — Duplicate / Çift İşlem | indexes.json is_unique & not PK: 4 satır; Sistem.Kurlar indeksleri PK_Kurlar(Id), IX_KUR_SORT_TARIH(Tarih)…; FN.GetKur 'Select top 1 Alis … Where BirimId=@BirimId' ORDER BY yok; TD-02. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): İş anahtarlarına benzersiz indeks (Kurlar(BirimId,Tarih), Birimler(Kodu) filtered IsDeleted=0, Hesaplar(SubeId,VergiNo)); fiş no için SEQUENCE. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-128 | POTANSİYEL | S1 | SQLR-064 Duplicate key: Cari.AcceptTransaction → MERGE INTO Sistem.Activity | E15 — Duplicate / Çift İşlem | AcceptTransaction: 'MERGE INTO Sistem.Activity AS Target USING (SELECT @subeId …) ON Target.ActivitySubeId=Source.ActivitySubeId …'; tables.json/indexes.json: Sistem.Activity indeks yok (PK'sız 36 tablo listesinde). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Sistem.Activity'ye PK/unique(ActivitySubeId) ve MERGE'e HOLDLOCK; ya da UPDATE/INSERT ayrımı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-OBS-251 | GÖZLEMLENMİŞ | S2 | SQLR-065 Identity: dbo.sp_DevirIslemiYap (IDENTITY_INSERT Cari.Islemler ON); Devir.vb TRUNCATE + yeniden INSERT; Sistem.Devir | E03 — Veri Bütünlüğü Hatası | Devir.vb:76-80 'Truncate Table Cari.Islemler … Cari.IslemDetaylari'; sp_DevirIslemiYap satır 214 'SET IDENTITY_INSERT Cari.Islemler ON'; TD-29, TD-42. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Devirde IDENT_CURRENT korunması (DBCC CHECKIDENT RESEED eski değere) ya da tüm IslemId taşıyan tabloların birlikte ele alınması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-SIL-029 | SESSİZ MANTIK / HESAPLAMA | S3 | SQLR-066 Identity: Sistem.SirketOlustur; Sistem.Users Id=1 varsayımı | E03 — Veri Bütünlüğü Hatası | modules.json Sistem.SirketOlustur; FrmMainForm.vb:706 'If LoginInformation.User.Id = 1 AndAlso e.Shift…'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): SCOPE_IDENTITY ile UserDetails eklenmesi; Id=1 varsayımının role dayalı yetkiyle değiştirilmesi. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-129 | POTANSİYEL | S1 | SQLR-067 Subquery returned more than 1 value: Cari.AcceptTransaction; Uretim.TrBakiyeHesapla; Repair.BalanceRepair | E02 — SQL Server Hatası | subq.py: AcceptTransaction/TrBakiyeHesapla/BalanceRepair 8'er skaler alt sorgu; tables.json Sistem.Settings rows=1, indeks yok; Birimler yalnız PK_Birimler(Id). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Settings'e tek satır kısıtı; Birimler(Kodu) filtered unique; TOP 1. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-130 | POTANSİYEL | S3 | SQLR-068 Subquery returned more than 1 value: Cari.HesapInsert; Cari.HesapUpdate (Cari.Hesaplar tetikleyicileri) | E02 — SQL Server Hatası | modules.json Cari.HesapInsert / Cari.HesapUpdate metinleri. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Set-tabanlı tetikleyici (inserted JOIN); yetki kuralının uygulama katmanına taşınması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-131 | POTANSİYEL | S3 | SQLR-069 Subquery returned more than 1 value: Sistem.GetIslemKodu; FN.GetKur; Cari.IslemDetayiEkle; POS.Sabit | E02 — SQL Server Hatası | modules.json FN.GetKur, Sistem.GetIslemKodu, Cari.IslemDetayiEkle; indexes.json PK listesi. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): GetKur'a ORDER BY Id DESC; RSReferans'a PK. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-SIL-030 | SESSİZ MANTIK / HESAPLAMA | S3 | SQLR-070 Subquery returned more than 1 value: Cari.UpdateTransaction; Siparis.Kontrol; MüşteriŞemasıA tetikleyicisi | E02 — SQL Server Hatası | modules.json Cari.UpdateTransaction metni; sql_frags çok satırlı UPDATE'ler. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Set-tabanlı DELETE/UPDATE (inserted JOIN). (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-132 | POTANSİYEL | S1 | SQLR-071 Dynamic SQL / injection: (kod) string-birleştirmeli SQL | E02 — SQL Server Hatası | dyn.py istatistiği (sql_frags kaynak satırları okunarak); TD-09, TD-10, TD-37. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Parametreli sorguya geçiş (TD-09); en azından serbest metin girişlerinde Replace("'","''"). (Uygulanmadı) | Belirtiyi yeniden üret: 'Unclosed quotation mark after the character string' / 'Incorrect syntax near …'; arama sonuç vermez. | [Ekip tarafından atanacak] | |
| ERR-POT-133 | POTANSİYEL | S2 | SQLR-072 Dynamic SQL / injection: Agent.RunAgent; AifaDev.ExQueryBuilder; Cari.GetHesapExtresi; Sistem.FromERP; Sistem.SirketOlustur; dbo.sp_DevirIslemiYap (6 modül) | E02 — SQL Server Hatası | analysis_db.json dyn_mods (6 nesne); modules.json metinleri (GetHesapExtresi pivot, FromERP exec(@HesapQuery)). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): QUOTENAME; SirketOlustur ve sp_DevirIslemiYap'ın BASE'den çıkarılıp yönetici betiğine alınması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-134 | POTANSİYEL | S2 | SQLR-073 Transaction count mismatch: Cari.AcceptTransaction | E05 — Transaction Hatası | modules.json AcceptTransaction: ROLLBACK 13 / RETURN 5 (TD-04); DECLARE IslemCursor … CLOSE/DEALLOCATE yalnız normal akışta (TD-03). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Her ROLLBACK'ten sonra RETURN; THROW; cursor'un TRY/CATCH ile deallocate edilmesi. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-135 | POTANSİYEL | S2 | SQLR-074 Deadlock / timeout: Cari.AcceptTransaction + InsertTransaction + UpdateTransaction (Cari.Islemler); Cari.GetHesapExtresi; Stok.GetOrtMilyem (cursor'lı skaler fonksiyon) | E13 — Performans / Timeout / Deadlock | indexes.json (Cari.Islemler 26 indeks; StokHaraketleri 9, çiftler); tables.json satır sayıları; trg.json 4 tetikleyici Cari.Islemler; AcceptTransaction cursor. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Mükerrer indekslerin (IsDeleted,IslemKodu ×4; StokHaraketleri IX_1/IX_Pozisyon01, IX_2/IX_3, IX_4/IX_5 çiftleri) sadeleştirilmesi; StokHaraketleri(IslemId) indeksi; tetikleyicinin set-tabanlı yazımı. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-136 | POTANSİYEL | S2 | SQLR-075 Recursive trigger: Cari.AcceptTransaction → Cari.Hesaplar UPDATE → Cari.HesapUpdate; Cari.Transferler UPDATE → TransferUpdateSTatus → Stok.StokHaraketleri; Sistem.Subeler INSERT → CreateKasa → Sistem.Kasalar (tetikleyici yok); Uretim.UretimIslemleri → TrBakiyeHesapla | E04 — Trigger / Dependency Hatası | AcceptTransaction 'Update Cari.Hesaplar Set LastDate=Getdate() Where Id=@HesapId'; HesapUpdate metni; trg.json trigger→tablo eşlemesi. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): HesapUpdate'in yalnız VergiNo/TCNo değiştiğinde (IF UPDATE(VergiNo)) çalışması. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-137 | POTANSİYEL | S1 | SQLR-076 Disabled trigger: 12 tetikleyici (trg.json) | E04 — Trigger / Dependency Hatası | trg.json 12 satır is_disabled=False; TD-32 metni (AS-DOCUMENTED). | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): Kurulum doğrulama kontrol listesine sys.triggers is_disabled sorgusu. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-138 | POTANSİYEL | S2 | SQLR-077 Broken dependency: Cari.AcceptTransaction'ın çağırdığı fonksiyonlar: FN.GetKur, FN.Bol, Stok.GetTakozAdet, Cari.GetGerekliEvraklar(→Genel.Dosyalar→DOCUMENTS); Cari.GetKurListesi zinciri; hesaplanan kolon UDF'leri (Sistem.Pariteler.Parite → Sistem.GetIdToBirim; dbo.SyncTickets → FN.Bol [ERPSCHEMA]) | E04 — Trigger / Dependency Hatası | deps.json (2026 satır); computed.json Sistem.Pariteler.Parite 'Sistem.GetIdToBirim]([AnaBirimId])'; ERPSCHEMA dbo.SyncTickets computed 'FN.Bol'. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): build_order.json zincirinin BASE build'inde korunması; drop öncesi sys.sql_expression_dependencies kontrolü. (Uygulanmadı) | Doğrulama SQL'i çalıştır (salt okunur); beklenen: 0 kayıt | [Ekip tarafından atanacak] | |
| ERR-POT-139 | POTANSİYEL | S3 | SQLR-078 Collation conflict: Pozisyon.Write (COLLATE Turkish_CI_AS); Genel.Dosyalar (cross-DB DOCUMENTS); Sistem.FromERP (<@Database>.dbo.*); ERPGLOBAL.dbo.Company | E02 — SQL Server Hatası | modules.json COLLATE taraması: yalnız Pozisyon.Write. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): BASE kurulumunda DB harmanlamasının sabitlenmesi (Turkish_CI_AS) ve tempdb/cross-DB için COLLATE DATABASE_DEFAULT. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-POT-140 | POTANSİYEL | S4 | SQLR-079 Collation conflict: nvarchar(1) kolonlar; text/image legacy tipler; bit'e 'True'/'False' string | E02 — SQL Server Hatası | columns.json taraması: nvarchar(1) 4, varchar(1) 2, text 4, image 19. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): text/image → nvarchar(max)/varbinary(max); nvarchar(1) kodların standardı. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-SIL-031 | SESSİZ MANTIK / HESAPLAMA | S3 | SQLR-080 Legacy: Pozisyon.GetOldPozisyon; Sistem.NonUsed_TCMBDovizKurlari; Genel.Dosyalar_; Genel.Experler_; Sistem.AyarEvi_ (DB2); LiveUpdate.VersionHistory_; dbo.Temp; dbo.test; Muhasebe.TEst; FN.GetCariLimitOld; FN.GetKurOldKur; FX.StartSyncOld; Report.BakiyeArtisRaporuOld | E17 — Eski Veri / Legacy Problemi | Legacy referans taraması: code FrmPozisyon.vb:8, dbsql AifaDev.Reports#18, modül Pozisyon.GetHacimRaporu; analysis.json LEGACY 25 nesne. | [Ekip tarafından doldurulacak] | Öneri (uygulanmadı): GetOldPozisyon'un LEGACY listesine alınmaması (kullanımda); NonUsed_/_ son ekli nesnelerin EXCLUDE_LEGACY olarak kalması. (Uygulanmadı) | [Ekip tarafından doldurulacak] | [Ekip tarafından atanacak] | |
| ERR-SIL-032 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-001 Bakiye satırı hassasiyeti: Has (5 hane) → Cari.BakiyeIslem.Bakiye decimal(18,2) | E08 — Yuvarlama / Hassasiyet Hatası | Trigger has'ı 5 haneli hesaplar ancak BakiyeIslem.Bakiye 2 haneli olduğu için her satır ±0,005 has yuvarlanır. Aynı işlem için Stok.StokHaraketleri.Has 5 haneli yazılır; cari has toplamı ile stok has toplamı aynı hareket kümesinde farklılaşır. Binlerce satırda birikimli fark oluşur, hiçbir hata üret | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler.Miktar decimal(18,2), AuMilyem decimal(18,5); trigger @Has Decimal(18,5) · Formül: @Has = I.Miktar * Case When AuMilyem=0 Then 1 else AuMilyem end → Insert Into Cari.BakiyeIslem(...,Bakiye) Values(...,@Has) [Bakiye decimal(18,2)] · Sınır: Miktar × AuMilyem üçüncü ondalıkta 5 | [Ekip tarafından atanacak] | |
| ERR-SIL-033 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-002 Trigger içinde ROLLBACK sonrası RETURN olmayan dallar (evrak eksik, şube/kasa/hesap=0, takoz stok kontrolü) | E16 — Eksik Türetilmiş Kayıt | ROLLBACK sonrası trigger yürütmeye devam eder ve sonraki DML'ler autocommit ile kalıcı olur (SQL Server davranışı). Aynı satır için @IsError=1 olduğundan BakiyeIslem'e dokunulmaz; ancak Inserted çok satırlıysa sonraki satırlarda @IsError sıfırlanır: bu satırların BakiyeIslem/StokHaraketleri kayıtlar | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Inserted (çok satırlı UPDATE: DeleteAt RefNo, İptal FişNo, FrmHesapTemizle, FrmProvizyonKabul), Cari.GetGerekliEvraklar, Stok.GetTakozAdet · Formül: RAISERROR(...) ; Set @IsError=1 ; ROLLBACK -- RETURN yok (satır 119-123, 180-185, 225-247); döngü başında Set @IsError=0 (satır 90) · Sınır: T | [Ekip tarafından atanacak] | Çözüm adayı: kod kanıtı: her ROLLBACK'ten sonra RETURN eklenmesi gerektiği kitapçık 2.7'de not edilmiş; uygulanmamış |
| ERR-SIL-034 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-003 Limit kontrolü için toplam bakiye (Cari.ToplamBakiye = bugünkü BakiyeIslem + Cari.BakiyeDun) | E07 — Finansal Hesaplama Hatası | Dünkü ve önceki bakiyeler yalnız Cari.BakiyeDun tablosundan gelir; bu tabloyu dolduran prosedürü çağıran bir job kaynakta yok ve örnek DB'de tablo 0 satır. Boşsa kalan limit = Limit + (yalnız bugünkü hareketler) + 3 olur; müşterinin birikmiş borcu yok sayılır. BakiyeIslem.Tarih işlem tarihi olduğund | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.BakiyeIslem (Tarih = işlem tarihi), Cari.BakiyeDun (Bakiye.DunkiBakiyeler prosedürüyle dolar), Sistem.GetKurListesi(Getdate()) · Formül: Cari.ToplamBakiye = Σ_bugün( Convert(dec(18,2), Bol(Bakiye*Carpan*Kur.Alis, KurHAS.Alis)) )*-1 + Σ Cari.BakiyeDun.Bakiye ; FN.GetCariLimit = IsNull(H | [Ekip tarafından atanacak] | |
| ERR-SIL-035 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-004 Limit kontrolü has karşılığı (Satis ÷ HAS kuru) | E16 — Eksik Türetilmiş Kayıt | Divide uzantısı bölen 0 ise 0 döndürür: HAS kuru 0/eksikse Balance=0 ve kontrol daima geçer. GetKur birim listede yoksa 1 döner: HasSymbol 'HAS' dışında tanımlıysa (kod sabit 'HAS' kullanıyor) Balance = Satis (TL) olur ve HAS cinsinden limitle kıyaslanır. Kontrol yalnız IslemKodu 1,2,3 ÇIKIŞ ve tip≠ | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Islem.Satis (MaliyetHesapla, Double), Program.GetKur("HAS") (bellek kur listesi Alis), FN.GetCariLimit · Formül: Balance = Satis.Divide(Program.GetKur("HAS")) ; AvaibleLimit = Val(FN.GetCariLimit(HesapId)) ; If Balance > AvaibleLimit Then red · Sınır: Kur listesinde HAS 0 veya yok; Settings.H | [Ekip tarafından atanacak] | |
| ERR-SIL-036 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-005 Kur fotoğrafı (HasKur/GumKur/PltKur/PldKur/EurKur) kaydı | E07 — Finansal Hesaplama Hatası | Sembol kur listesinde yoksa 1 yazılır; takoz bakiyesinde 'Altına Çevir' Fn.Bol((Miktar*AgMilyem)*GumKur, HasKur) HasKur=1 ile has bakiyeyi TL değerine eşitler. Liste yenileme hatası sessizce yutulur (boş Catch) ve eski kur kullanılmaya devam eder; hesaplanan (IsComputed) birimler için GetLastKur yed | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Program.KurListesi (15 sn'de bir arka planda yenilenen liste), GlobalSettings.*Symbol · Formül: @HasKur = Program.GetKur(GlobalSettings.HasSymbol) → K.Alis ; birim bulunamazsa 1 · Sınır: Settings sembolü Birimler'de yok/silinmiş; kur listesi yenileme başarısız; kur tarihi bugün için girilmemi | [Ekip tarafından atanacak] | |
| ERR-SIL-038 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-007 Sistem.Kurlar benzersizlik/tarih kontrolü yok; FN.GetKur TOP 1 sırasız | E07 — Finansal Hesaplama Hatası | Aynı birim+tarih için birden çok satır oluşabilir (ekranda Id çözümleme hatası, KOPYALA + elle giriş, dış besleme). GetKurListesi bu durumda birimi iki kez döndürür; FN.GetKur rastgele satırı alır, uygulama listesi son okunanı alır, ToplamBakiye/OzetBilanco Birim koduyla join yaptığından bakiye iki | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Sistem.Kurlar (BirimId,Tarih) – unique index yok (indexes.json), IsDeleted süzgeci yok · Formül: FN.GetKur = Select top 1 Alis From Sistem.GetKurListesi(Getdate()) Where BirimId=@BirimId (ORDER BY yok) ; GetLastKur = MAX(Tarih) per BirimId (ileri · Sınır: Duplicate (BirimId,Tarih); ileri tar | [Ekip tarafından atanacak] | |
| ERR-SIL-039 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-008 Kur giriş ekranı: yeni kur satırının Id'si olarak ExecuteNonQuery dönüşü (etkilenen satır sayısı) kullanılıyor | E07 — Finansal Hesaplama Hatası | ExecuteNonQuery eklenen satır sayısını (1) döndürür, SCOPE_IDENTITY sonucunu değil. Grid'deki Id 1 olur; kullanıcı aynı oturumda (yenilemeden) aynı birimi ikinci kez düzeltirse Kurlar tablosundaki Id=1 olan tarihi kur satırı güncellenir, günün satırı ilk değerde kalır. Hata mesajı çıkmaz. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: VwKurListesi satırı (Id, BirimId, Alis, Satis), Tarih · Formül: Id = Db.ExecuteNonQuery("Insert Into Sistem.Kurlar(...) Values(...) SELECT SCOPE_IDENTITY()") → 1 ; sonraki düzenleme: Update Sistem.Kurlar Set Alis= · Sınır: Aynı ekran oturumunda aynı birim için iki kez değer girme (yazım düze | [Ekip tarafından atanacak] | |
| ERR-SIL-040 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-009 Sistem.KurKopyala – bugünün kurlarını silip son kurla değiştirir | E07 — Finansal Hesaplama Hatası | KOPYALA, bugün elle girilmiş tüm kurları siler ve önceki günün kurlarıyla değiştirir; onay/uyarı yoktur, UserId=0 yazılır. Gün içinde kur güncellendikten sonra basılırsa güncel kurlar kaybolur; işlemler eski kurla devam eder. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Sistem.Kurlar (Tarih=bugün), Sistem.GetLastKur · Formül: Delete From Sistem.Kurlar Where Tarih=Convert(Date,GETDATE()) ; Insert … Select GETDATE(),BirimId,Alis,Satis,GETDATE(),0 From Sistem.GetLastKur · Sınır: Gün içinde kur girildikten sonra KOPYALA'ya basılması; ileri tarihli kur varsa GetL | [Ekip tarafından atanacak] | |
| ERR-SIL-042 | SESSİZ MANTIK / HESAPLAMA | S4 | SLR-011 Kur hassasiyeti: GetKurListesi Convert(Decimal(18,4)) ile kuru 4 haneye yuvarlar (Kurlar 18,5) | E08 — Yuvarlama / Hassasiyet Hatası | Beşinci ondalık atılır; parite tipi küçük kurlarda (ör. 0,00012 gibi TL-dışı çaprazlar) ve Carpan ile türetilen birimlerde bağıl hata büyür. Uygulama, işlem kur fotoğrafı ve tüm SQL NET hesapları bu 4 haneli değeri kullanır. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Sistem.Kurlar.Alis/Satis decimal(18,5), Carpan decimal(18,5) · Formül: Convert(Decimal(18,4), Kur.Alis * Carpan) as Alis · Sınır: Kur < 0,01 veya Carpan çarpımı 5. hanede anlamlı; büyük tutarlar | [Ekip tarafından atanacak] | |
| ERR-SIL-043 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-012 IslemTipi 11 (belge takip) ve 12 (MAHSUP) hiç stok/bakiye hareketi üretmez – sayım farkı/açılış girişleri operasyonel stoğa yansımaz | E07 — Finansal Hesaplama Hatası | Kullanıcı dokümanı (A-Z 1.8/2.4, H-123) sayım farkı ve açılış stoğunun MAHSUP ile girilmesini önerir; tetikleyici MAHSUP için Stok.StokHaraketleri satırı yazmaz. İşlem listede görünür, hata yoktur, ancak stok listesi/bilanço/pozisyon değişmez. Üstelik mevcut NORMAL bir satır Düzelt ile 11/12'ye çevr | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler.IslemTipi · Formül: if @IsDeleted='False' And @IsError=0 AND (@IslemTipi <>11 AND @IslemTipi<>12) BEGIN … stok/bakiye üretimi … END · Sınır: IslemTipi ∈ {11,12}; tip değişikliği ile düzeltme | [Ekip tarafından atanacak] | Çözüm adayı: ürün kararı gerektirir: MAHSUP'un operasyonel stok etkisi |
| ERR-SIL-044 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-013 Negatif miktar/adet girişi: bakiye abs() ile yön alır, stok hareketi işaretsiz miktarı taşır | E07 — Finansal Hesaplama Hatası | Miktar negatif girilirse bakiye satırı yön kuralına göre düzgün işaret alır ama stok hareketi ters yöne yazılır (giriş stoğu azaltır). Ayrıca tip PEŞİN nakit satırı ve pırlanta maliyeti aynı biçimde ters işaret alır. Uygulama yalnız Miktar=0'ı engeller. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler.Miktar/Adet (DevExpress numeric mask; negatif engeli kodda yok), IslemTuru · Formül: Bakiye: Set @Has=0-abs(@Has) / abs(@Has) ; Stok: Miktar = Case When @IslemTuru=0 Then @Miktar When 1 Then 0-@Miktar End (abs yok) · Sınır: Miktar<0, Adet<0 veya Tutar<0 girilmiş satır | [Ekip tarafından atanacak] | |
| ERR-SIL-046 | SESSİZ MANTIK / HESAPLAMA | S4 | SLR-015 Ortalama milyem / maliyet cursor değişkenleri Decimal(18,2) – 5 haneli Has/Miktar kesilir | E08 — Yuvarlama / Hassasiyet Hatası | Her hareket 2 haneye yuvarlanarak toplanır; küçük gramajlı çok sayıda hareket (ör. 0,005 g altı has satırları) ortalama milyemi saptırır; stok listesi Miktar/Has 2 haneye yuvarlanır ancak StokHaraketleri toplamı 5 hanelidir → liste toplamı ≠ hareket toplamı. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Stok.StokHaraketleri.Miktar/Has decimal(18,5) · Formül: Declare @Miktar Decimal(18,2), @Has Decimal(18,2), @ToplamHas Decimal(18,2) … RETURN Fn.Bol(@ToplamHas,@ToplamMiktar) · Sınır: Miktar×Milyem 3. ondalıkta anlamlı; çok sayıda küçük hareket | [Ekip tarafından atanacak] | |
| ERR-SIL-047 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-016 Stok has değeri kart milyemiyle, cari has bakiyesi işlem milyemiyle – stok ve cari türetilmiş kayıtları farklı milyem kullanır | E16 — Eksik Türetilmiş Kayıt | İşçilikli milyem ayrıştırması (BR-HESAP-005) veya elle farklı milyem girilen işlemde bakiyeye Miktar×AuMilyem yazılır; stok ve pozisyon ise kart milyemini kullanır. Pozisyon.Write değişken milyemli (MilyemDurumu=True, hurda) kartlarda da sabit kart milyemini alır. Sonuç: BAKIYE ve STOK kalemleri far | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Stok.Maden.Milyem/MilyemDurumu, Cari.Islemler.AuMilyem, Stok.StokHaraketleri.Milyem · Formül: Stok listesi: Has = Miktar × (MilyemDurumu='False' ? Maden.Milyem : GetOrtMilyem) ; Pozisyon: Sum(Miktar × StabilMilyem) (=Maden.Milyem her durumda) ; · Sınır: AuMilyem ≠ Maden.Milyem olan işlemler; | [Ekip tarafından atanacak] | |
| ERR-SIL-048 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-017 Transfer kabulünde stok hareketi üretimi (Cari.TransferUpdateSTatus) – eski satırlar silinmiyor | E07 — Finansal Hesaplama Hatası | Silme koşulu StokTipi=-2 (var olmayan tip) olduğundan hiçbir zaman eski Bolum=2 satırı silinmez. Transferler.Update() Status kolonunu her zaman yazdığı için UPDATE(status) doğru döner ve Status=1 olan bir transfer her düzenlendiğinde iki stok hareketi daha eklenir. Transferin IsDeleted=1 yapılması v | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Transferler (Status), Stok.StokHaraketleri Bolum=2 · Formül: if UPDATE(status): Delete From Stok.StokHaraketleri Where StokTipi=-2 AND IslemId in (inserted) ; Insert … Select 2,Id,1,…,CikanKasaId,…,Adet*-1,Mikta · Sınır: Kabul edilmiş (Status=1) transferin düzenlenmesi/yeniden kaydı; tra | [Ekip tarafından atanacak] | |
| ERR-SIL-050 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-019 Pırlanta stok maliyeti = Tutar × FN.GetKur(BirimId) | E07 — Finansal Hesaplama Hatası | GetKur eşleşme bulamazsa NULL döner → Maliyet NULL (bilanço PIRLANTA kalemi Sum ile NULL'u atlar). PEŞİN tipte BirimId nakit stok kimliğidir, birim kimliği değil; yanlış birimin kuru uygulanır. Kur, işlem tarihinin değil bugünün kurudur; düzeltmede de bugünkü kurla yeniden yazılır. Uygulama tarafı ( | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: @Tutar, @BirimId (PEŞİN'de nakit stok Id'si, diğerlerinde birim Id'si), FN.GetKur (bugünün kur listesi) · Formül: Declare @Maliyet decimal(18,2) = @Tutar * Fn.GetKur(@BirimId) → StokHaraketleri.Maliyet · Sınır: IslemKodu=8 ve IslemTipi=1; BirimId kur listesinde yok; geçmiş tarihli düzeltme | [Ekip tarafından atanacak] | |
| ERR-SIL-051 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-020 Çeşni ve takoz stok listeleri InsertDate ile, stok hareketleri Tarih ile süzülür | E08 — Yuvarlama / Hassasiyet Hatası | Geçmiş tarihe girilen çeşni/takoz işlemi bilançoda kayıt gününe, cari bakiyede işlem gününe düşer; tarihli bilanço iki kalemde farklı kesim kullanır ve tutmaz. Ayrıca trigger değişkeni @InsertDate aslında I.Tarih'i taşır (isim yanıltıcı); devir kesimi bu alana dayanır. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler.InsertDate vs Tarih; Stok.StokHaraketleri.Tarih · Formül: GetCesniStoklari/GetTakozSubeStoklari: CONVERT(date,InsertDate)<=@Tarih ; StokHaraketleri: Tarih<=@Tarih ; BakiyeIslem.Tarih = I.Tarih · Sınır: Geçmiş tarihli takoz/çeşni işlemi; devir kesim tarihine yakın kayıtlar | [Ekip tarafından atanacak] | |
| ERR-SIL-052 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-021 Nakit tip 10 (PARİTE) satırı doğrudan kaydedilirse ters işaretli bakiye ve BirimId=0 satırı | E07 — Finansal Hesaplama Hatası | Ekran PARİTE'yi yeni kayıtta iki NORMAL bacağa çevirir; ancak mevcut kayıt düzenlenirken (RecordId≠0) tip PARİTE seçilirse satır IslemTipi=10 ile kaydedilir. Trigger bu satır için BirimId=0 (Birimler'de yok) bir bakiye satırı ve normal nakit kuralının tersi işaretli tutar satırı yazar. Bakiye kartı | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: IslemKodu=3, IslemTipi=10, BakiyeId (nakitte daima 0 – Cari.IslemEx.vb:291-303), Tutar · Formül: satır 318-330: Insert BakiyeIslem(BirimId=@BakiyeId, Bakiye=±@Miktar) ; satır 421-425: Insert BakiyeIslem(BirimId=@BirimId, Bakiye=@Tutar*-1) · Sınır: IslemTipi=10 olarak kaydedilmiş nakit satırı | [Ekip tarafından atanacak] | |
| ERR-SIL-053 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-022 Çeşni (IslemKodu=14) bakiye satırları yönden bağımsız pozitif yazılır | E07 — Finansal Hesaplama Hatası | Ekran her zaman ÇIKIŞ yazdığı için sonuç doğru görünür; ancak satır Düzelt ile tür değiştirilirse ya da seri/sonradan eklenen bir yol GİRİŞ çeşnisi yazarsa bakiye yine borç (+) olarak kalır. Ayrıca çeşni satırı IslemKodu∉{0,1,2,4,5,6,9} olduğu için 'diğer stok işlemi' bloğuna da girer; Tutar≠0 ise e | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: IslemKodu=14, Miktar, AuMilyem, AgMilyem, IslemTuru · Formül: Values(…,@HasBirimId,@Miktar * @AuMilyem) ; Values(…,@GumBirimId,@Miktar * @AgMilyem) (IslemTuru'na göre işaret yok) · Sınır: IslemKodu=14 ve IslemTuru∈{0,2,4}; Tutar≠0 çeşni satırı | [Ekip tarafından atanacak] | |
| ERR-SIL-054 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-023 Raporsuz takoz bakiyesi: XRF milyemi 0 ise TAKOZ (-1) birimine miktar; değerleme 0,6 varsayımı | E07 — Finansal Hesaplama Hatası | Aynı raporsuz takoz üç yerde üç farklı has değeriyle değerlenir (0; 0,6; kart Miktar*0,6 vs bakiye Miktar). Rapor geldiğinde işlem düzeltilmezse bakiye TAKOZ satırında kalır; düzeltme (Geri Al/Düzelt) anındaki XRF değerleri orijinal kayıttan farklıysa bakiye yeniden üretimde değişir. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Stok.Takoz.XRFAuMilyem/XRFAgMilyem, IsRapor, Miktar(+CesniMiktar girişte) · Formül: IsRapor=0 ⇒ @AuMilyem=XRFAuMilyem ; (@AuMilyem=0 And @AgMilyem=0) ⇒ Insert BakiyeIslem(BirimId=-1, Bakiye=∓Miktar) ; NetBakiye = Bakiye*0.6 ; Bakiye.G · Sınır: IsRapor=0 ve XRF milyemleri 0; rapor sonrası düze | [Ekip tarafından atanacak] | Çözüm adayı: ürün kararı: raporsuz takoz has varsayımı |
| ERR-SIL-055 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-024 İptalin geri alınması / mutabakat gibi her UPDATE'te bakiye ve stoğun güncel referans verisiyle yeniden üretilmesi | E16 — Eksik Türetilmiş Kayıt | Türetilmiş kayıtlar işlem satırındaki kur fotoğrafıyla değil o anki referans verilerle (takoz XRF milyemi, Settings sembolleri, pırlanta için bugünkü kur) yeniden hesaplanır. 'Geri Alındı', mutabakat, hesap birleştirme gibi işlem tutarını değiştirmeyen güncellemelerde bile bakiye satırları değişebil | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Inserted (herhangi bir kolon güncellemesi), Stok.Takoz XRF milyemleri, Sistem.Settings sembolleri, Fn.GetKur(bugün) · Formül: Her UPDATE'te: Delete BakiyeIslem/StokHaraketleri(Bolum=0) → yeniden Insert (XRF milyem, HasBirimId, Fn.GetKur bugünkü değerlerle) · Sınır: XRF milyemi/Settings/kur de | [Ekip tarafından atanacak] | |
| ERR-SIL-056 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-025 Fiş numarası üretimi MAX(FisNo)+1 (silinmemişler) ve fiş bazlı toplu iptal | E07 — Finansal Hesaplama Hatası | (a) İki kullanıcı aynı anda aynı fiş numarasını alır (yarış). (b) Son fişin tüm satırları iptal edilince numara yeniden kullanılır; iptal edilen fişle yeni fiş aynı numarayı paylaşır. (c) Fiş-No ile iptal, tarih süzgeci olmadan kasadaki aynı numaralı tüm satırları (farklı günler dahil) sessizce ipta | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler.FisNo (unique değil, IX_FisNo), IsDeleted; Program.KasaId · Formül: GetNewFisNo = Val(Select Max(FisNo) From Cari.Islemler Where IsDeleted='False') + 1 ; onIptalFisNoClick: Update Cari.Islemler Set IsDeleted='True' Whe · Sınır: Eşzamanlı kayıt; son fişin iptali; aynı FisNo'ya sa | [Ekip tarafından atanacak] | |
| ERR-SIL-057 | SESSİZ MANTIK / HESAPLAMA | S2 | SLR-026 Çift kayıt (duplicate posting) – zaman aşımı/ağ kopması sonrası tekrar kayıt | E15 — Duplicate / Çift İşlem | Sunucu INSERT'i işledikten sonra yanıt istemciye ulaşmazsa (timeout 30 sn, ağ) uygulama hata gösterir ve kayıt başarısız sanılır; kullanıcı tekrar F2 basar. RefNo her nesnede yeni GUID olduğundan ve FisNo/hesap/tutar için benzersizlik yoktur, ikinci satır sessizce kabul edilir. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Insert (InternalDb.ExecuteScalar → hata MsgBox, RecId=0), RefNo (her nesnede yeni GUID), unique index yok · Formül: Try RecId=db.ExecuteScalar() Catch … End Try ; If RecId>0 Then Id=RecId … Else Return False · Sınır: Ağ kesintisi/uzun tetikleyici süresi (AcceptTransaction cursor + GetGerekliE | [Ekip tarafından atanacak] | |
| ERR-SIL-059 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-028 Cari.UpdateTransaction – çok satırlı UPDATE'te tek satır değişkeni; Mutabakat güncellemesi history üretmez | E16 — Eksik Türetilmiş Kayıt | RefNo/FisNo ile toplu iptalde yalnız rastgele bir satırın IslemDetaylari kaydı silinir/EIPTAL yapılır; diğer satırların belge detayları aktif kalır (belge havuzu görünümü iptal edilmiş işlemi belgeli sayabilir). Mutabakat ve Mutabakat ile birlikte başka alan değişen güncellemelerde hiç history yazıl | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Inserted/Deleted (çok satır), Cari.IslemDetaylari.ETTN · Formül: Select @IsDeleted=I.IsDeleted, @IslemId=D.IslemId, @Ettn=D.ETTN from inserted I Left Join IslemDetaylari D … (tek değer) ; Set @Status=(Select top 1 … · Sınır: Birden çok satırı etkileyen UPDATE; Mutabakat kolonunu içeren UPDATE | [Ekip tarafından atanacak] | |
| ERR-SIL-060 | SESSİZ MANTIK / HESAPLAMA | S4 | SLR-029 Uygulama yuvarlama yardımcıları: .Round(n) uzantısı keser (truncate) ve hane parametresini yok sayar; Math.Round banker's; ToNumeric/TextN kültür varsayımı | E08 — Yuvarlama / Hassasiyet Hatası | Vadeli ve hızlı satışta BSMV = (Tutar×BSMV/1000).Round(2) her zaman aşağı kesilir (12,999→12,99), hane parametresi 2'ye sabittir, bilimsel gösterim (1E-05) ve kültür ayarı '.' değilse Catch ile yuvarlanmadan döner. Nakit/parite ekranı Math.Round (bankacı yuvarlama) kullanırken SQL Convert(decimal(18 | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Double değerler (BSMV, tutar), Utils.Culture (ondalık '.', binlik ',') · Formül: Round(Value,Decimals): Values=Value.ToString.Split(".") ; Result=Values(0)+"."+Left(Values(1),2) ; Val(Result) ; ToNumeric = Val(Replace(Value,",","") · Sınır: BSMV küsuratı 3. hanede ≥5; tutar×fiyat tam yarım ku | [Ekip tarafından atanacak] | |
| ERR-SIL-061 | SESSİZ MANTIK / HESAPLAMA | S4 | SLR-030 Nakit BSMV geri hesabı (Tutar'dan fiyat) ileri formülün tersi değil | E07 — Finansal Hesaplama Hatası | Tutar elle girildiğinde net tutar ve fiyat yaklaşık hesaplanır; ardından TutarHesapla yeniden tetiklenirse Tutar ilk girilenden farklı olur (100.000 → 99.999,60). Kayıtlı BSMV ile Tutar arasındaki ilişki işlemden işleme değişir; e-belge vergi matrahı (Calc.BSMV) farklı formülle (BSMVOran) hesaplandı | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: TxtTutar (BSMV dahil), GlobalSettings.BSMV (binde), IsBsmv · Formül: İleri: BSMV = Net×BSMV/1000 ; TUTAR = Round(Net+BSMV,2) ; Geri (TxtTutar LostFocus): Net ≈ Tutar − Tutar×BSMV/1000 (brütten kesinti) · Sınır: IsBsmv ve Tutar elle girilmiş; BSMV ayarı Dahil/Hariç | [Ekip tarafından atanacak] | |
| ERR-SIL-062 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-031 Maliyet/İşçilik hesabı Double ile; negatif işçilik 0'a çekilir; kur 0 ise işçilik 0 | E08 — Yuvarlama / Hassasiyet Hatası | Müşteriden metal değerinin altında alış (negatif işçilik = iskonto) 0 işçilikle kaydedilir; StokHaraketleri.Maliyet (=Iscilik×Kur) 0 olur, gerçek kazanç maliyet raporunda görünmez. Maliyet birimi kuru 0/eksikse Divide 0 döndürür ve işçilik sessizce 0 yazılır. Tüm hesap Double'dır; decimal(18,2) kolo | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Miktar, AuMilyem, AnaBirim.Price, TutarBirim.Price, MaliyetBirim.Price (bellek kur listesi Alis) · Formül: MiktarMaliyeti=(Miktar×AuMilyem)×AnaBirim.Price ; Giriş: Iscilik=(TutarMaliyeti−MiktarMaliyeti).Divide(MaliyetBirim.Price) ; If Iscilik<0 Then Iscilik · Sınır: TutarMaliyeti < MiktarMali | [Ekip tarafından atanacak] | |
| ERR-SIL-063 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-032 Bilanco.OzetBilanco – kalemler farklı kesim tarihleri ve varsayımlarla toplanır | E08 — Yuvarlama / Hassasiyet Hatası | Geçmiş tarihli bilanço masraf hesaplarının bugüne kadarki tüm bakiyesini içerirken diğer kalemler kesim tarihine kadar alınır; hizmet gelir/gideri yalnız kesim günü toplanır; raporsuz takoz bilançoda 0,6, pozisyonda 0 ile değerlenir; kur listesi eksikse Net 0. Uygulama KÂR/ZARAR = TOPLAM−DEVİR olara | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.BakiyeIslem (Tarih<=@Tarih), masraf hesapları (HesapTuru=4, tarih süzgeci yok), IslemKodu=5 GELİR/GİDER (Tarih=@Tarih tek gün), takoz 0,6, GetKur · Formül: BAKIYE: B.Tarih<=@Tarih … GELIR/GIDER(masraf bakiyesi): Where H.HesapTuru=4 (tarih yok) ; GELİR/GİDER(hizmet): Tarih>S.RevCostDate A | [Ekip tarafından atanacak] | |
| ERR-SIL-064 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-033 Bilanco.GetIKar – parametre/sabit karışıklığı (KasaId=SubeId, BirimId=1=HAS, Satis kuru, ham bölme) | E07 — Finansal Hesaplama Hatası | Kasa kimliği şube kimliği yerine kullanılır (yalnız Id'ler çakışırsa sonuç döner); HAS için Id=1 varsayımı; bakiye satış kuruyla, stok alış kuruyla değerlenir; FN.Bol yerine ham bölme (kur 0'da hata – sessiz değil ama kur yoksa NULL çarpımı sessiz NULL). | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.BakiyeIslem.KasaId (SubeId parametresiyle karşılaştırılır), GetKurListesi BirimId=1, Kur.Satis · Formül: Where B.KasaId=@SubeId … Bakiye*Kur.Satis / kur1.Alis (Kur1.BirimId=1) · Sınır: KasaId≠SubeId kurulum; BirimId 1 ≠ HAS; kur eksik | [Ekip tarafından atanacak] | |
| ERR-SIL-066 | SESSİZ MANTIK / HESAPLAMA | S1 | SLR-035 Devir.vb (uygulama devri) – Sum(Milyem) ile açılış satırı, tarih=çalıştırma günü, transaction yok | E08 — Yuvarlama / Hassasiyet Hatası | Milyem sütunu toplanır (100 satır × 0,916 = 91,6) → NetBakiye hesaplanan sütunu ve GetStokHareketleri'nin Has=Miktar×Milyem gösterimi anlamsız; giriş/çıkış satırları ayrı toplandığı için LIFO maliyet/ortalama milyem yalnız giriş satırlarını görür; takoz/pırlanta yine düşer; Tarih=GETDATE (kesim deği | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Stok.StokHaraketleri (StokTipi 1,2), Cari.BakiyeIslem · Formül: INSERT #ERPStok Select -1,0,IslemTuru,Getdate(),SubeId,KasaId,StokTipi,StokId,Sum(Adet),Sum(Miktar),Sum(Milyem),Sum(Has),Sum(Maliyet),VaryantId … Grou · Sınır: Devir.vb ile devir; hareketli stok kartları; devir sırasında hata | [Ekip tarafından atanacak] | |
| ERR-SIL-068 | SESSİZ MANTIK / HESAPLAMA | S1 | SLR-037 Repair.StokRepair – ikinci FETCH'te değişken sayısı uyumsuz (17 ≠ 18) | E07 — Finansal Hesaplama Hatası | İlk satır işlendikten sonra ikinci FETCH 'number of variables … must match' hatasıyla durur; TRUNCATE zaten autocommit ile kalıcı olduğundan stok hareket tablosu tek satırla kalır. Prosedür hata verir ancak veri kaybı gerçekleşmiştir. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Cari.Islemler (IsDeleted=0) · Formül: Truncate Table Stok.StokHaraketleri ; FETCH NEXT … INTO 18 değişken (ilk) ; döngü sonunda FETCH NEXT … INTO 17 değişken (@VaryantId eksik) · Sınır: Prosedürün çalıştırılması | [Ekip tarafından atanacak] | Çözüm adayı: çalıştırılmamalı |
| ERR-SIL-069 | SESSİZ MANTIK / HESAPLAMA | S1 | SLR-038 Sistem.Settings tek satır varsayımı; Save = TRUNCATE + INSERT (transaction yok) | E05 — Transaction Hatası | INSERT başarısız olursa (tip dönüşümü, kolon uyumsuzluğu) tablo boş kalır: tetikleyici sembolleri NULL alır, takoz/çeşni bakiye satırları BirimId NULL ile yazılır (bakiye kartında görünmez), uygulama varsayılanlarla (BSMV=0, OnsCarpan=31,1035, IslemKurFarki=0) çalışır – kur farkı uyarısı ve BSMV ses | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Sistem.Settings (HasSymbol, GumSymbol, PltSymbol, PldSymbol, BSMV, OnsCarpan, IslemKurFarki…) · Formül: GlobalSettings.Save: Truncate Table Sistem.Settings ; Insert Into Sistem.Settings(...) Values('…') ; Trigger: @HasBirimId=(Select Id From Birimler Whe · Sınır: Ayar kaydı sırasında hata; el | [Ekip tarafından atanacak] | |
| ERR-SIL-071 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-040 FN.GetKatki daima 0 döndürür; FN.Katsayı tablo dışı milyemde NULL → FN.AyarCevir 0 | E07 — Finansal Hesaplama Hatası | Katkı hesabı her koşulda 0; ayar çevirici 0,995/0,9166 gibi listede olmayan milyemlerde 0 döndürür (Bol NULL→0). Sipariş girişinde çevrilen miktar sessizce 0 olur. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Milyem1, Milyem2 (yalnız 0.333/0.375/0.417/0.585/0.750/0.875/0.916 tanımlı) · Formül: GetKatki: … Set @Result=… ; return 0 ; AyarCevir = Bol(@Miktar, Katsayı(@Milyem1)) * Katsayı(@Milyem2) ; Katsayı: CASE … END (ELSE yok → NULL) · Sınır: Milyem tam olarak listedeki 7 değerden biri değilse | [Ekip tarafından atanacak] | |
| ERR-SIL-072 | SESSİZ MANTIK / HESAPLAMA | S4 | SLR-041 Uretim.TrBakiyeHesapla – kasa seçimi sırasız TOP 1, has = Tutar×Fiyat | E07 — Finansal Hesaplama Hatası | Şubede birden çok kasa varsa üretim çıktısı rastgele kasaya yazılır (plan değişince kasa değişir); giriş satırında miktar/milyem alanları Tutar/Fiyat ile doldurulduğundan alan anlamı ekrana bağlıdır. | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: Sistem.Kasalar (SubeId), UretimIslemleri · Formül: @KasaId = (Select Top 1 Id From Sistem.Kasalar Where IsDeleted='False' And SubeId=@SubeId) ; URETIMGIRIS: StokHaraketleri(…, Miktar=@Tutar, Milyem=@Fi · Sınır: Şubede >1 kasa; üretim modülü kullanan kurulum | [Ekip tarafından atanacak] | |
| ERR-SIL-073 | SESSİZ MANTIK / HESAPLAMA | S3 | SLR-042 Trigger hata iletimi ve uygulamanın algısı | E07 — Finansal Hesaplama Hatası | Trigger reddi kullanıcıya SQL metniyle gösterilir (sessiz değil). Ancak RAISERROR olmadan hata yutulan yerler vardır: Insert sonrası 'Cari.RSAktar' ve Update sonrası 'Takoz.RaporYaz' hataları MsgBox ile geçilir ve ana kayıt tamam sayılır; GetCariLimit ExecuteScalar hatası Val('')=0 ile 'limit 0' gib | [Ekip tarafından doldurulacak] | [Ekip tarafından doldurulacak] | Girdi: RAISERROR(…,16,1)+ROLLBACK → SqlException 3609; InternalDb MsgBox; Cari.Islem.Insert Catch · Formül: InternalDb.ExecuteScalar: Catch ex → MsgBox(ex.Message); Result=Nothing ; Insert: RecId=0 → Return False · Sınır: RsAktar/RaporYaz prosedür hatası; FN.GetCariLimit hata | [Ekip tarafından atanacak] | |