Belirti
Tipik ticket ifadeleri: "rapor eklendi", "rapor düzenlendi", "istenilen rapor tasarımı yapıldı", "hacim raporu", "işlem listesi düzenleme", "raporda sütun yok", "rapor hata veriyor (divide by zero)", "ekstre Excel'e aktarılacak", "analiz raporu revize", "trigger/index" (teknik alt kategoriler). Alt kategoriler: Rapor Tasarımı 261, Rapor Optimizasyon 121, Revize 48, İşlem Listesi 23, Trigger 14, Index 13.
Gözlem ile sebep ayrımı
- Gözlem: üç ayrı şey aynı temaya düşer — (a) talep: yeni rapor/sütun/dışa aktarma isteği ("eklendi", "düzenlendi"); (b) hata: rapor açılmıyor (divide by zero, timeout); (c) yanlış sonuç: rapor rakamı ekranla/hesap kartıyla farklı.
- Ayrım: (c) çoğu zaman rapor hatası değildir — kur listesi boş (H-124), süzgeç etiketi farklı (H-135), çift birim (H-131) ya da metrik tanımı farkı (alış+satış toplanmış: METRIC_DICTIONARY double-count notları). Ticket başlığı bu üçünü ayırt etmez.
- Raporlar
AifaDev.Reports.SQLiçinde saklanan sorgulardır; "rapor hatası" çoğunlukla SQL metni hatasıdır ve müşteri tarafında çözülmez.
Muhtemel nedenler
| # | Neden | Kanıt |
|---|---|---|
| 1 | Kur listesi boş → Toplam 0, has karşılığı yanlış, aynı birim dağınık | H-124, H-125, PB-036, FN-SISTEM.GETKURLISTESI, PROC-169 |
| 2 | Rapor SQL'inde bölen 0 → 'Divide by zero' | H-126, PB-051, PROC-95, FN-FN.BOL, BR-MALIYET-004 — SOURCE_IMPLEMENTED |
| 3 | Zaman aşımı: geniş tarih aralığı, indeks yok, kur tablosu şişmiş | H-127, PB-052, PROC-42, PROC-15 → SYM-PERFORMANS |
| 4 | Süzgeç etiketi: BORÇ/VİRMAN/PARİTE(X)/PERAKENDE satırları GİRİŞ/ÇIKIŞ olarak kaydedilir | H-135, H-064, PB-054, BR-YON-001 — SOURCE_IMPLEMENTED |
| 5 | Rapora eklenen sütun görünümde/alan listesinde yok; program yeniden açılmadı | H-134, PB-053, Sistem.Layout |
| 6 | İşlem listesi görünümü kullanıcıya göre kaydedilir (sütun kayboldu) | H-136, PROC-23, BR-BAKIYE-013 |
| 7 | Aynı birim iki kez tanımlı → pozisyon/hacim raporunda çift satır | H-131, PROC-161 |
| 8 | Hesap iki şubede tanımlı → şube filtresiz raporda bakiye iki kez / raporda eksik, kartta doğru | METRIC_DICTIONARY MET-BAKIYE double-count, H-112 |
| 9 | Alış+satış toplanarak "hacim" sanılıyor; çevir iki bacak | METRIC_DICTIONARY MET-ISLEM-HACMI — DERIVED |
| 10 | Rapor tasarımı sekmesi yalnız ADMIN'de | H-019 |
İlk sorulacak sorular
- Talep mi, hata mı, yanlış rakam mı?
- Hangi rapor (menü adı) ve hangi tarih aralığı/şube süzgeci?
- Hata metni tam olarak ne? (divide by zero / timeout / başka)
- Bugün kur listesi girildi mi?
- Aynı rakam hesap kartında/işlem listesinde ne görünüyor?
- Rapor özel (müşteriye yazılmış) mı, standart mı? Kim, ne zaman değiştirdi?
İlgili ekran(lar)
SCR-FRMREPORTLIST · SCR-REPORTVIEWER · SCR-FRMREPORTDESIGNER (Aifa Developer Studio) · SCR-REPORTSCOMBO · SCR-FSHESAPEXTRESI · SCR-RPRHESAPEXTRESI · SCR-FIRMABAKIYEEXTRESI · SCR-FRMEXCEL · SCR-FRMSQLEDITOR · SCR-FRMISCREENGRID
İlgili müşteri varyantı
MüşteriŞemasıD: müşteri-özel rapor fonksiyonları (MüşteriŞemasıD.GetPozisyon, MüşteriŞemasıD.MusteriCiroRaporu, MüşteriŞemasıD.GetIslemKontrolRaporu — METRIC_DICTIONARY) çekirdek raporlarla aynı metriği farklı hesaplayabilir; şikâyet MüşteriŞemasıD kurulumundan geliyorsa önce hangi şemanın raporu olduğu belirlenir. Reports.MusteriUrunHacimRaporu/RPT-91 GENERATED_PROPOSAL'dır, müşteride yoktur. DOVIZ/KUYUMCU: rapor katmanı ortaktır.
Kontrol edilecek Settings
AifaDev.Reports satırı (ReportName, IsReport/IsGrid/IsPivot, GroupId, IsDeleted) · Sistem.Layout (liste görünümü) · Sistem.Kurlar günlük doluluk · Sistem.Subeler.BilancoBirimId (raporların karşılık birimi). Sistem.Settings içinde rapora özgü kolon yok (GAP değil; rapor tanımı AifaDev.Reports'tadır). Kaynak: CONFIGURATION, TBL-AIFADEV.REPORTS.
Salt okunur SQL teşhis sorgusu
-- 1) Rapor tanımı: hangi SQL çalışıyor, silinmiş mi? (Password kolonu seçilmez)
SELECT R.Id, R.ReportName, R.Description, R.GroupId, R.IsReport, R.IsGrid, R.IsPivot, R.IsDeleted, R.CreatedDate, R.InsertDate
FROM AifaDev.Reports R WHERE R.ReportName LIKE '%' + @RaporAdi + '%';
-- SQL metnini görmek için (yalnız SQL yetkili destek): SELECT R.SQL FROM AifaDev.Reports R WHERE R.Id = @Id;
-- 2) Kur listesi bugün dolu mu? (H-124 / H-125)
SELECT K.BirimId, B.Kodu, K.Alis, K.Satis
FROM Sistem.Kurlar K JOIN Sistem.Birimler B ON B.Id = K.BirimId
WHERE K.Tarih = CAST(GETDATE() AS date) AND K.IsDeleted = 0;
-- 3) Divide by zero adayları: dönemde miktarı 0 ama tutarı dolu satırlar
SELECT I.Id, I.Tarih, I.FisNo, I.IslemKodu, I.Miktar, I.Tutar, I.Fiyat
FROM Cari.Islemler I
WHERE I.IsDeleted = 0 AND I.Tarih BETWEEN @T1 AND @T2 AND I.Miktar = 0 AND I.Tutar <> 0;
-- 4) Çift birim (H-131)
SELECT B.Kodu, COUNT(*) AS Adet FROM Sistem.Birimler B WHERE B.IsDeleted = 0 GROUP BY B.Kodu HAVING COUNT(*) > 1;
İlgili iş kuralı
BR-MALIYET-004 (sıfıra bölme koruması) · BR-YON-001 · BR-BAKIYE-013 · BR-BAKIYE-018 (tarihli toplam bakiye) · BR-KUR-008 (SQL tarafında kur alış kurudur) · BR-GUNSONU-001 · Metrik tanımları: METRIC_DICTIONARY
Geçmiş ticket teması
PRB-RAPOR-000 — 613 çağrı, ERPGOLDV2 çağrılarının %5,5'i. Ortalama kapanış 74,4 saat (tasarım talepleri uzun sürer). "eklendi" (65) + "düzenlendi" (28) + "revize" (26) talep ağırlığını gösterir.
İlgili süreç
PROC-57 rapor ekleme · PROC-63 rapor düzenleme · PROC-95 divide zero · PROC-15 / PROC-42 zaman aşımı · PROC-169 toplam 0 · PROC-23 liste sütunu · PROC-151 Excel · PROC-156 doküman · PROC-100 hacim raporu · PROC-213 kâr birimi · PROC-203 vade gün · PROC-132 değiştirilmiş işlemler raporu · PROC-148 bakiye borç raporu · PROC-211 silinmiş işlemler raporu
Çözüm
Hata: PB-051 (Fn.Bol), PB-052 (timeout). Yanlış rakam: önce PB-036 (kur), sonra PB-054 (süzgeç), çift birim PB-040. Talep: PB-053 (rapor/sütun/liste/Excel). Rakam kontrolünde metrik tanımı METRIC_DICTIONARY ile karşılaştırılır.
Workaround
Timeout: tarih aralığı daraltılır, şube süzgeci konur. Divide by zero: 0 miktarlı satır düzeltilene kadar tarih aralığı o satırı dışarıda bırakacak şekilde alınır. Süzgeç: GİRİŞ/ÇIKIŞ ile alınıp Excel'de ayrıştırılır.
Yazılımcıya escalate koşulu
Rapor SQL'i (AifaDev.Reports.SQL) ya da table-valued function (PROC-63) değişikliği gerektiren her durum; kur dolu olduğu hâlde Toplam 0 (GetKurListesi bağlantısı); indeks sonrası süren yavaşlık. Standart rapor değişikliği tek müşteriye özel yapılmaz; özel rapor kopyası açılır.
Kalıcı önlem
Yeni rapor sorgularında bölme daima Fn.Bol; rapor değişiklikleri AifaDev.Reports.Description'a tarih/kim notuyla; kur girişi pazartesi rutininde (H-169); metrik adları METRIC_DICTIONARY ile hizalanır.
Kaynaklar
- TICKET_THEME:PRB-RAPOR-000 (SRC-TKT-ERP, 613 çağrı)
- DOCUMENT:12_Support/Playbooks/PB-036, PB-040, PB-051..PB-054
- DOCUMENT:12_Support/KnownIssues/H-019, H-064, H-112, H-124..H-127, H-131, H-134..H-139
- DOCUMENT:12_Support/Processes/PROC-15, PROC-23, PROC-42, PROC-57, PROC-63, PROC-95, PROC-151, PROC-169
- DERIVED:10_Reports/METRIC_DICTIONARY.md (double-count notları); 08_Database/Tables/TBL-AIFADEV.REPORTS.md, TBL-SISTEM.KURLAR.md, TBL-SISTEM.BIRIMLER.md (kolon doğrulaması)
