AIFA AKADEMI · Kurumsal Wiki
4.310 makale
Ana sayfa Kurumsal Wiki › Destek › SymptomChains › SYM-RAPOR

Belirti zinciri — Rapor tasarımı / rapor hatası

SYMPTOM_CHAINMOD-RAPORERPGOLD_COREACTIVEMEDIUMSUPPORT_OBSERVED
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

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.SQL iç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-15SYM-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

  1. Talep mi, hata mı, yanlış rakam mı?
  2. Hangi rapor (menü adı) ve hangi tarih aralığı/şube süzgeci?
  3. Hata metni tam olarak ne? (divide by zero / timeout / başka)
  4. Bugün kur listesi girildi mi?
  5. Aynı rakam hesap kartında/işlem listesinde ne görünüyor?
  6. 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.GetIslemKontrolRaporuMETRIC_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ı)