Belirti
Tipik ticket ifadeleri: "pozisyon yanlış", "pozisyonda aynı birim iki kez", "pozisyon tutmuyor", "pozisyon giderildi", "hacim raporu", "kâr raporu farklı", "işlem pozisyona etki etmiyor", "pozisyonda çift birim". "pozisyon" (45), "pozisyonda" (6). Alt kategoriler: Pozisyon 50, Eğitim/Destek 13.
Gözlem ile sebep ayrımı
- Gözlem: pozisyon/hacim/kâr raporundaki rakam beklenenden farklı, aynı birim iki satırda, ya da girilen işlem pozisyonu değiştirmedi.
- Ayrım: pozisyon türetilmiş bir metriktir: birim bazında
stok + alacak − borç(METRIC_DICTIONARY MET-NET-POZISYON) — yaniStok.StokHaraketleriileCari.BakiyeIslemtoplamıdır. "Pozisyon yanlış" gözlemi neredeyse her zaman stok ya da bakiye kaydından birinin ya da birim tanımının sorunudur. Ticket başlığı hangisi olduğunu söylemez. - Sık yanılgı: pozisyonun sıfır olmamasını hata sanmak — açık pozisyon iş gerçeğidir; kur değişince bilançonun değişmesi bu yüzdendir (H-129). Alış+satış toplanmış "hacim" ile pozisyon karıştırılır (double-count notları).
Muhtemel nedenler
| # | Neden | Kanıt |
|---|---|---|
| 1 | Aynı birim iki kez tanımlı → raporda çift satır | H-131, H-023, PROC-161, PB-040 |
| 2 | İşlem PEŞİN/resmi tipte → bakiye defteri yok; peşin kasaya (stok) yansır, cari bakiyeye değil | BR-TIP-002, BR-TIP-003, BR-TIP-004, BR-DEFTER-URETIMI — SOURCE_IMPLEMENTED |
| 3 | Tetikleyici kapalı → işlem var, defter yok, pozisyon değişmiyor | H-006, PB-029 |
| 4 | Fonksiyon sürümü farkı: Pozisyon.GetPozisyonV1/V2/V3, GetOldPozisyon, MüşteriŞemasıD.GetPozisyon vadeliyi dahil/hariç farklı alır |
METRIC_DICTIONARY MET-NET-POZISYON "Hariç"; FN-POZISYON.GETPOZISYONV3 — GAP: sürümler arası fark satır bazında belgelenmemiş |
| 5 | Vadeli bakiye sorgusu boş döner (asıl sorgu yorumda) → vadeli pozisyon görünmez | BR-BAKIYE-019 — SOURCE_IMPLEMENTED |
| 6 | FX Sync işlemi ERP'ye yazdı ama pozisyona etki etmedi (kasa/işlem türü) | PROC-167 |
| 7 | Nakit stok kodu 3 karakter / maden stok sıralaması → hacim raporu düzeni | PROC-100 |
| 8 | Kâr raporunda TL yerine başka birim isteniyor (talep) | PROC-213, MET-KAR |
| 9 | Raporsuz takoz pozisyonda 0 milyemle, bilançoda 0,600 ile değerleniyor — üç farklı değer | CONFIGURATION "Raporsuz takoz has varsayımı", BR-BAKIYE-009 — CTR |
| 10 | Kur listesi boş → karşılık sütunları 0 | H-124, PB-036 |
İlk sorulacak sorular
- Hangi rapor (pozisyon / pozisyon detay / hacim / kâr) ve hangi fonksiyon (menü adı)?
- Hangi birim; aynı birim iki satırda mı görünüyor?
- Beklenen pozisyon nasıl hesaplandı (stok + bakiye)? Vadeli dahil mi?
- Pozisyona etki etmeyen işlemin tipi (NORMAL/PEŞİN/RESMİ) ve kasası ne?
- Kur listesi dolu mu? Tetik açık mı (son işlemler bakiye üretiyor mu)?
- Kurulum MüşteriŞemasıD gibi müşteri-özel rapor kullanıyor mu?
İlgili ekran(lar)
SCR-FRMPOZISYON · SCR-FRMPOZISYONDETAILS · SCR-FRMPOZISYONHACIM · SCR-FRMPOZISYONDURUMRAPORU · SCR-FRMBIRIMEKLE · SCR-FRMREPORTLIST
İlgili müşteri varyantı
MüşteriŞemasıD: MüşteriŞemasıD.GetPozisyon, MüşteriŞemasıD.GetPozisyonDetay, MüşteriŞemasıD.GetIslemKontrolRaporu müşteri-özel fonksiyonlardır ([FN-MüşteriŞemasıD.GETPOZISYON]); çekirdek Pozisyon.GetPozisyonV* ile farklı sonuç verebilir — hangisinin menüde olduğu belirlenir. DOVIZ: pozisyon = döviz riski, pano ile bağlantılı. KUYUMCU: has bazlı pozisyon; raporsuz takoz değerleme çelişkisi (neden 9).
Kontrol edilecek Settings
Sistem.Birimler (çift kod, IsStatic, SiraNo) · Sistem.Settings.OnsCarpan, HasSymbol · Sistem.Subeler.BilancoBirimId (karşılık birimi) · Pozisyon.Pozisyonlar (açık pozisyon tanımları/limitleri — TBL-POZISYON.POZISYONLAR). Sistem.Settings içinde pozisyona özgü başka kolon yok.
Salt okunur SQL teşhis sorgusu
-- 1) Çift birim (H-131)
SELECT B.Kodu, COUNT(*) AS Adet, MIN(B.Id) AS IlkId, MAX(B.Id) AS SonId
FROM Sistem.Birimler B WHERE B.IsDeleted = 0 GROUP BY B.Kodu HAVING COUNT(*) > 1;
-- 2) Birim bazında ham pozisyon bileşenleri (MET-NET-POZISYON): stok + bakiye
SELECT X.BirimId, SUM(X.Stok) AS Stok, SUM(X.Bakiye) AS Bakiye, SUM(X.Stok) + SUM(X.Bakiye) AS NetPozisyon
FROM (
SELECT S.StokId AS BirimId, S.Miktar AS Stok, 0 AS Bakiye
FROM Stok.StokHaraketleri S WHERE S.StokTipi = 2 AND S.Tarih <= @Tarih AND S.SubeId = @SubeId
UNION ALL
SELECT B.BirimId, 0, B.NetBakiye
FROM Cari.BakiyeIslem B WHERE B.Tarih <= @Tarih
) X GROUP BY X.BirimId;
-- Not: nakit satırlarında StokId = birim (StokTipi 2); maden has'ı ve vadeli bu ham sorguda yok, V1/V2/V3 ile birebir eşleşmez.
-- 3) Pozisyona etki etmeyen işlem: tip ve defter satırları
SELECT I.Id, I.Tarih, I.KasaId, I.IslemKodu, I.IslemTuru, I.IslemTipi, I.BakiyeId, I.StokId, I.Miktar,
(SELECT COUNT(*) FROM Cari.BakiyeIslem B WHERE B.IslemId = I.Id) AS BakiyeSatir,
(SELECT COUNT(*) FROM Stok.StokHaraketleri S WHERE S.IslemId = I.Id) AS StokSatir
FROM Cari.Islemler I WHERE I.Id = @IslemId;
-- 4) Pozisyon tanımları/limitleri
SELECT SubeId, Birim, Bakiye, Kur1, Kur2, Pozisyon, BBirim, InsertDate FROM Pozisyon.Pozisyonlar WHERE SubeId = @SubeId;
İlgili iş kuralı
BR-DEFTER-URETIMI · BR-TIP-002 · BR-TIP-003 · BR-BAKIYE-019 · BR-BAKIYE-009 · BR-VADELI-003 · Metrikler: MET-NET-POZISYON, MET-ISLEM-HACMI, MET-KAR, MET-CARI-HACIM, MET-PESIN-HACIM (METRIC_DICTIONARY)
Geçmiş ticket teması
PRB-POZISYON-000 — 68 çağrı, ERPGOLDV2 çağrılarının %0,6'sı. Ortalama kapanış 118,8 saat (rapor düzeltmeleri uzun sürer).
İlgili süreç
PROC-161 pozisyonda çift birim (06.05.2022) · PROC-100 hacim raporu · PROC-167 işlem pozisyona etki etmiyorsa (FX) · PROC-213 kâr birimi · PROC-63 rapor düzenleme
Çözüm
Çift birim: PB-040 / PROC-161 (SQL yetkili destek). Defter yok: tip kontrolü (SYM-BAKIYE), tetik PB-029. Kur farkı/pozisyon ilişkisi: PB-055. Kur boş: PB-036. Rakam karşılaştırmasında METRIC_DICTIONARY tanımı kullanılır.
Workaround
Çift birim düzeltilene kadar raporda birim kodu ile süzülür; vadeli pozisyon için Vadeli Bakiye sekmesi yerine işlem listesi süzgeci (BR-BAKIYE-019 boş döner).
Yazılımcıya escalate koşulu
Pozisyon fonksiyonu sürümleri (V1/V2/V3/MüşteriŞemasıD) arasındaki fark açıklanamıyorsa; Bakiye.GetVadeliBakiye yeniden etkinleştirilecekse; raporsuz takoz değerleme çelişkisi (CTR) ürün kararı; Sistem.Birimler üzerinde SQL düzeltmesi yalnız SQL yetkili destek.
Kalıcı önlem
Silinen birim yeniden açılmaz (pasif/aktif); pozisyon raporu menüde tek fonksiyona bağlanır ve hangi sürüm olduğu rapor tanımına yazılır; pozisyon eğitiminde "stok + bakiye" formülü ve peşin/cari ayrımı anlatılır.
Kaynaklar
- TICKET_THEME:PRB-POZISYON-000 (SRC-TKT-ERP, 68 çağrı)
- DOCUMENT:12_Support/KnownIssues/H-006, H-023, H-124, H-129, H-131
- DOCUMENT:12_Support/Playbooks/PB-029, PB-036, PB-040, PB-055
- DOCUMENT:12_Support/Processes/PROC-161, PROC-100, PROC-167, PROC-213
- BUSINESS_RULE:BR-DEFTER-URETIMI, BR-TIP-002/003/004, BR-BAKIYE-019, BR-BAKIYE-009
- DERIVED:10_Reports/METRIC_DICTIONARY.md; 09_CodeArchitecture/CONFIGURATION.md (raporsuz takoz); 08_Database/Tables/TBL-STOK.STOKHARAKETLERI.md (StokTipi 1/2), TBL-CARI.BAKIYEISLEM.md, TBL-POZISYON.POZISYONLAR.md, TBL-SISTEM.BIRIMLER.md (kolon doğrulaması)
