Belirti
Tipik ticket ifadeleri: "devir yapıldı", "devir işlemi yapılacak", "program deviri", "devir sonrası stok farklı", "geçen yılın işlemleri kayboldu", "BU VERI TABANI ISLEME KAPATILMISTIR", "fişte eski bakiye yazmıyor", "devir hesabı alacaklı kaldı". "devir" (55), "yapıldı" (25), "stok" (6). Alt kategori Devir İşlemleri 63.
Gözlem ile sebep ayrımı
- Gözlem: çağrıların çoğu planlı devir talebidir (kapanış ortalaması 214,3 saat — en uzun tema; devir randevu ve hazırlık ister). Arıza görünümlü kısım devir sonrası ortaya çıkar: bakiye/stok farkı, işlem yapılamaması, eski işlemlerin görünmemesi.
- Ayrım: "geçen yılın işlemleri kayboldu" hata değildir — devir eski işlemleri arşiv veritabanına taşır (H-008). "İşlem yapılamıyor" ise arşive bağlı kalmaktır (H-007). Gerçek arıza yalnız devir satırı ile arşiv kesim bakiyesi uyuşmadığında ya da tetikleyici açılmadan bırakıldığında vardır.
- Devir bakiyeleri
Cari.BakiyeIslem'deIslemId = -1ile durur;Cari.Islemler'de karşılığı yoktur — tasarım gereğidir (H-108).
Muhtemel nedenler
| # | Neden | Kanıt |
|---|---|---|
| 1 | Program arşiv (önceki yıl) veritabanına bağlı → 'BU VERI TABANI ISLEME KAPATILMISTIR.' | H-007, PB-006; PROC-190 NOT 1: arşivde tetikleyici RAISERROR ile kilitlenir — DOCUMENTED |
| 2 | Devir sırasında tetikleyiciler kapatılıp açılması unutulmuş → işlem var, bakiye/stok yok | H-006, PB-029, SP-SISTEM.DEVIR (tetikleyiciler süreç boyunca kapalı) — SOURCE_IMPLEMENTED |
| 3 | Devir günü ile arşiv kesim tarihi arasına giren işlemler; tarihi NULL kalan bakiye/stok satırları | H-108, PB-034 |
| 4 | Devir öncesi takoz/çeşni stoğu sıfırlanmamış; devirden önce alınıp sonra çıkılan takoz → eksi adet, bilanço tutmaz | PROC-190 adım 2–3, H-130 |
| 5 | Maden stokları tek kasada toplanmadan devir alınmış | PROC-190 adım 4 — DOCUMENTED |
| 6 | Fişte "eski bakiye" yazmıyor: Bakiye.GetBakiyeFisNo devir satırını (IslemId=-1) saymıyor |
H-111 |
| 7 | Açılış stoğu NORMAL tipte girilmiş → DEVİR hesabı alacaklı kaldı (MAHSUP olmalı) | H-115, PB-035, BR-TIP-004, BR-DEVIR-001 — SOURCE_IMPLEMENTED |
| 8 | Hangi devir sürecinin güncel olduğu belirsiz (v1/v2/v3, kurulum, manuel); Repair.BalanceRepair çağrısı yasak |
KNOWN_GAPS TD-BALANCEREPAIR — GAP |
İlk sorulacak sorular
- Devir yapıldı mı, yapılacak mı? Yapıldıysa ne zaman ve kim tarafından (hangi süreç sürümü)?
- Sistem Bilgisi'nde bağlı veritabanı adı ne (güncel mi arşiv mi)?
- Devir sonrası girilen işlemler bakiye/stok üretiyor mu (tetik açık mı)?
- Hangi hesap/stokta fark var; arşivdeki kesim tarihli ekstre ile devir satırı karşılaştırıldı mı?
- Devir gününde takoz/çeşni stoğu sıfır mıydı; maden stoğu tek kasada mıydı?
- Devir öncesi bilanço ve stok notları (PROC-190 adım 5–7) alındı mı?
İlgili ekran(lar)
SCR-FRMDEVIR · SCR-FRMDEVIRGIRIS · SCR-FRMMAINFORM (Sistem Bilgisi) · SCR-CONFIGURATIONFORM (veritabanı seçimi) · SCR-IFBORC (ters kayıt) · SCR-FRMPATRONBILANCOSU · SCR-BACKUP
İlgili müşteri varyantı
KUYUMCU: takoz/çeşni sıfırlama ve tek kasa koşulları (PROC-190 adım 2–4) bu varyantta kritik; devir sonrası takoz geri alımı ayrı adımdır. DOVIZ: nakit stok ve kasa notları (operasyonel ve belgelendirilmiş görünüm); arşiv veritabanında geçmiş yıl e-belge sorguları. MüşteriŞemasıD: GAP: müşteri-özel şemanın devirde nasıl ele alındığı belgelenmemiş.
Kontrol edilecek Settings
Devir ayarı Sistem.Settings'te yoktur (GAP değil; devir SQL prosedürü/betiğidir). İlgili: Sistem.Subeler.BilancoBirimId, RevCostDate; Bilanco.BilancoDevirleri (devir kayıtları: DevirHesapId, Devir, Durum); DEVİR hesabı Cari.Hesaplar.HesapTuru = 5 (BR-DEVIR-001).
Salt okunur SQL teşhis sorgusu
-- 1) Hangi veritabanı? Tetikleyici açık mı? (H-007, H-006)
SELECT DB_NAME() AS Veritabani;
SELECT name, is_disabled FROM sys.triggers WHERE parent_id = OBJECT_ID('Cari.Islemler');
-- 2) Devir (açılış) bakiye satırları: IslemId = -1 (H-108)
SELECT B.HesapId, B.BirimId, B.Tarih, B.Bakiye, B.NetBakiye
FROM Cari.BakiyeIslem B WHERE B.IslemId = -1 AND B.HesapId = @HesapId;
-- 3) Tarihi NULL kalan bakiye/stok satırları (H-108 teknik çözüm)
SELECT COUNT(*) AS BakiyeTarihNull FROM Cari.BakiyeIslem WHERE Tarih IS NULL;
SELECT COUNT(*) AS StokTarihNull FROM Stok.StokHaraketleri WHERE Tarih IS NULL;
-- 4) Devir kayıtları ve DEVİR hesapları
SELECT D.Id, D.SubeId, D.Tarih, D.DevirHesapId, D.Devir, D.Durum, D.InsertDate
FROM Bilanco.BilancoDevirleri D WHERE D.IsDeleted = 0 ORDER BY D.Tarih DESC;
SELECT H.Id, H.HesapAdi, H.SubeId FROM Cari.Hesaplar H WHERE H.HesapTuru = 5 AND H.IsDeleted = 0;
-- 5) Devir tarihinde kasa bazında maden stoğu tek kasada mı? (PROC-190 adım 4; StokTipi 1 = maden)
SELECT S.SubeId, S.KasaId, COUNT(DISTINCT S.StokId) AS StokSayisi, SUM(S.Miktar) AS NetMiktar
FROM Stok.StokHaraketleri S
WHERE S.StokTipi = 1 AND S.Tarih <= @DevirTarihi
GROUP BY S.SubeId, S.KasaId HAVING SUM(S.Miktar) <> 0;
Not: takoz stoğunun sıfır olduğu (PROC-190 adım 2) Stok.StokHaraketleri.StokTipi ile ayrıştırılamaz (TBL makalesinde yalnız 1 = maden, 2 = nakit belgeli) — GAP; takoz için SCR-FRMTAKOZKONTROL ekranı ya da Stok.GetTakozAdet fonksiyonu kullanılır.
İlgili iş kuralı
BR-DEVIR-001 · BR-TIP-004 (MAHSUP deftere yazmaz → açılış stoğu için) · BR-BAKIYE-020 (fiş bakiyesi) · BR-STOK-006 · BR-DEFTER-URETIMI
Geçmiş ticket teması
PRB-DEVIR-000 — 79 çağrı, ERPGOLDV2 çağrılarının %0,7'si. Ortalama kapanış 214,3 saat; 24 saat içinde kapanan %74,7. BAKIYE temasının Ocak zirvesi (86) devir sonrası şikâyetlerle örtüşür (SYM-BAKIYE).
İlgili süreç
PROC-190 devir süreci v3 (29.12.2022) · PROC-180 v2 · PROC-85 veritabanı devir · PROC-110 devir işlemleri (kurulum) · PROC-143 işlemleri arşivleme (FX) · PROC-9 yedek
Çözüm
Arşive bağlı: PB-006. Tetik kapalı: PB-029. Devir sonrası fark: PB-034 (arşiv kesim ekstresi ↔ devir satırı; fark DEVİR hesabından elle; takoz çıkışı giriş tarihine). Açılış stoğu: PB-035 (GİRİŞ + MAHSUP). Devirin kendisi yalnız PROC-190 ile, yedek sonrası, uzman destek tarafından.
Workaround
Eski yıl raporları için şirket seçim ekranından arşive girilir (işlem yapılmaz). Devir farkı bulunana kadar DEVİR hesabından ters kayıtla geçici düzeltme, açıklamaya gerekçe.
Yazılımcıya escalate koşulu
Devir sorgusu (PROC-180/190) yalnız yazılımcı/uzman destek çalıştırır; tetik DISABLE/ENABLE bu kişide. Bakiye.GetBakiyeFisNo güncellemesi (H-111) SQL yetkili. Repair.BalanceRepair hiçbir koşulda çalıştırılmaz (TD-BALANCEREPAIR). Kanonik devir sürecinin hangisi olduğu ürün sahibince belirlenmeli (GAP).
Kalıcı önlem
Devir kontrol listesi (PROC-190 adım 1–7 + devir sonrası: tetik açık mı, devir satırı = arşiv kesim bakiyesi, takoz/çeşni geri alımı, bilanço karşılaştırması) ticket'a eklenir; yılbaşı listesi (H-168) ile birlikte Aralık'ta müşteriye gönderilir.
Kaynaklar
- TICKET_THEME:PRB-DEVIR-000 (SRC-TKT-ERP, 79 çağrı)
- DOCUMENT:12_Support/Playbooks/PB-006, PB-029, PB-034, PB-035
- DOCUMENT:12_Support/KnownIssues/H-006, H-007, H-008, H-108, H-111, H-115, H-130
- DOCUMENT:12_Support/Processes/PROC-190 (29.12.2022), PROC-180, PROC-85, PROC-110
- DB_OBJECT:Sistem.Devir → SP-SISTEM.DEVIR (tetikleyiciler süreç boyunca kapalı); DB_OBJECT:Cari.AcceptTransaction
- DERIVED:00_Governance/KNOWN_GAPS.md (TD-BALANCEREPAIR); 08_Database/Tables/TBL-CARI.BAKIYEISLEM.md, TBL-STOK.STOKHARAKETLERI.md, TBL-BILANCO.BILANCODEVIRLERI.md, TBL-CARI.HESAPLAR.md (kolon doğrulaması)
