Sınıf: Mutabakat · Modül: MOD-STOK · Türetildiği: DevExpress.XtraEditors.XtraForm · Yaşam döngüsü: ACTIVE_CRITICAL · Kapsam: ERPGOLD_CORE
Nedir?
Stok Mutabakat Ekranı — bir kasanın günlük fiziksel stok sayımını giren ekrandır; cari mutabakat değildir. Sözlükteki "mutabakat" (müşteriyle bakiye teyidi, işlem listesinde F12, Cari.Islemler.Mutabakat/MTarih) başka bir mekanizmadır; bu ekran Stok.Mutabakat tablosuna kasa + stok tipi (NAKIT / MADEN) + stok + bugünün tarihi için sayılan Miktar'ı yazar [SOURCE_CODE:ERPPRO/Form/Tanımlamalar/Stok/Mutabakat.vb:1-40] [DB_OBJECT:Stok.Mutabakat] [DOCUMENT:00_Governance/CONTRADICTIONS.md#ctr-sec-mutabakat-01] [DOCUMENT:18_Glossary/TERM-MUTABAKAT.md]. Izgara seçili kasanın nakit ya da maden kartlarını listeler; kullanıcı yalnız Miktar sütununu düzenler, satırdan çıkınca kayıt hemen yazılır. Sayılan miktarın defterdeki stokla karşılaştırılması ve onayı Mutabakat Onay ekranındadır; onaylanmış (Onay=1) satırlar bu ekranda tekrar gösterilmez [SOURCE_CODE:Mutabakat.vb:9-13]. Barkodlu model sayımı ayrı ekrandır (Sayım Ekranı) [DOCUMENT:kitap#4.2].
Ne zaman kullanılır?
- Gün sonunda/başında kasadaki nakit ve maden stoğu fiziksel sayılıp sisteme yazılırken (kasa sayımı) — kitapçık §4.2: "
SayimEkraniveMutabakat/MutabakatOnaysayım ve mutabakat içindir" [DOCUMENT:kitap#4.2]. - Kuyumcu/rafineri kurulumunda yoğun kullanılır: KUYUMCU DB'de
Stok.Mutabakat153.394 satır, V2 (döviz) DB'de 0 [DOCUMENT:08_Database/Tables/TBL-STOK.MUTABAKAT.md]. - GAP-PROCESS-04 "kasa sayımı / gün sonu kapatma ekranı var mı" sorusunun stok tarafı bu ekranla kapanır; kasa nakit sayımının gün kapatma anlamı taşıyıp taşımadığı süreç dokümanında yok — GAP sürer [DOCUMENT:00_Governance/KNOWN_GAPS.md#gap-process-04].
Adım adım kullanım
- ANA MENÜ ▸ Hesap Yonetimi ▸ Rapor ▸ Mutabakat; Kasa : kutusu şubenin kasalarıyla dolar ve kullanıcının kasası seçili gelir; kullanıcının kasa kilidi (
Lock) varsa kasa değiştirilemez [SOURCE_CODE:Mutabakat.vb:2-8] [BUSINESS_RULE:BR-KASA-001]. - Stok : kutusundan NAKIT ya da MADEN seçilir; liste
Stok.Nakit/Stok.Madenkartları (silinmemiş) ve varsa bugünkü sayım miktarıyla dolar [SOURCE_CODE:Mutabakat.vb:9-13]. - Satırda Miktar sütununa fiziksel sayım yazılır (yalnız bu sütun düzenlenebilir) [SOURCE_CODE:Mutabakat.vb:15-17].
- Satırdan çıkınca kayıt yazılır: aynı kasa/stok tipi/stok/tarih için eski satır silinir, yeni
Stok.Mutabakatsatırı eklenir (UserId= oturum kullanıcısı) [SOURCE_CODE:Mutabakat.vb:18-38]. - Refresh listeyi yeniler. Tüm kalemler sayıldıktan sonra yönetici Mutabakat Onay ekranında farkları görür ve onaylar [SCREEN:SCR-MUTABAKATONAY].
Alanların anlamı
| Ekran etiketi / sütunu | İş anlamı (kolon, Stok.Mutabakat) |
|---|---|
| Kasa : | Sayımı yapılan kasa (KasaId); liste oturum şubesinin kasaları |
| Stok : (NAKIT / MADEN) | Sayılan stok sınıfı → StokTipi = combo indeksi: 0 NAKIT, 1 MADEN (bkz. CTR aşağıda) |
| Tarih | Bugün (CONVERT(Date, GETDATE())) — sayım yalnız bugüne yazılır (Tarih) |
| Kodu / Aciklama | Stok kartı (StokId → Stok.Nakit.Id / Stok.Maden.Id) |
| Miktar | Fiziksel sayılan miktar: nakitte nominal, madende gram (Miktar, decimal 18,2) |
| (gizli) Onay / OnayUserId | Onay durumu; onaylı satır listeden düşer |
CTR-SCR-MUTABAKAT-STOKTIPI-01: TBL-STOK.MUTABAKAT kolon notu StokTipi'ni stok defteri şablonuyla "1 = maden, 2 = nakit" anlatır; ekran 0 = NAKIT, 1 = MADEN (combo indeksi) yazar ve Onay ekranı Stok.StokHaraketleri'nin 2→0, 1→1 dönüşümüyle eşler [SOURCE_CODE:Mutabakat.vb:10,21] [SOURCE_CODE:MutabakatOnay.vb:24] [DOCUMENT:08_Database/Tables/TBL-STOK.MUTABAKAT.md]. Stok.Mutabakat.StokTipi kodlaması Stok.StokHaraketleri.StokTipi ile aynı değildir; JOIN yazan raporcu dönüştürmelidir.
Hesaplama / doğrulama mantığı
- Ekranda doğrulama mesajı yoktur;
m.Save = Falsedurumu sessizce yutulur (boşIf) [SOURCE_CODE:Mutabakat.vb:33-35]. Miktar boş bırakılırsa 0 yazılır (Double dönüşümü) — GAP: boş/0 sayımın onay ekranında "sayılmadı" (kırmızı) mı "sıfır sayıldı" mı sayıldığı: Onay ekranıOnayId=0(kayıt yok) ile kırmızı işaretler; 0 yazılmış satır kayıtlıdır, kırmızı olmaz. - Silme + ekleme dinamik SQL ile kurulur (2 ifade, TD-DYNAMIC-SQL).
- Geçmiş tarihe sayım girilemez (tarih sabit bugün). Devir sonrası bu tablo boşaltılmaz; eski sayımlar birikir (GAP-DEVIR-SCOPE) [DOCUMENT:00_Governance/KNOWN_GAPS.md#gap-devir-scope].
Stok / bakiye / rapor etkisi
Defter etkisi yok — Cari.Islemler'e, bakiye ya da stok defterine yazmaz; yalnız Stok.Mutabakat sayım kaydı oluşur. Sayım ile defter farkı (Mutabakat Onay ekranındaki Fark sütunu) otomatik düzeltme üretmez; fark varsa düzeltme işlemi (MAHSUP/NORMAL giriş-çıkış) kullanıcı tarafından ayrıca yapılır — GAP: sayım farkını işleme çeviren akış kaynakta görülmedi (CTR-SEC-MAHSUP-01 "sayım farkı için ayrı Stok.Mutabakat mekanizması vardır" der; mekanizma yalnız kayıt ve onaydır).
Sık yapılan kullanıcı hataları
- Bu ekranı cari mutabakat (F12, "«N» Numaralı İşlemde Mutabakat Yapılmış…") ile karıştırmak — o kural işlem listesi/kilit içindir [DOCUMENT:12_Support/KnownIssues/H-095.md] [DOCUMENT:12_Support/Playbooks/PB-038.md] [BUSINESS_RULE:BR-MUTABAKAT-003].
- Yanlış kasa seçili sayım — stok kasa bazlıdır [DOCUMENT:12_Support/KnownIssues/H-113.md].
- Stokta olmayan mal çıkılmış (negatif stok) — sayım/defter farkı belirtisi [DOCUMENT:12_Support/KnownIssues/H-123.md].
- Bu ekrana özgü destek kaydı yok — GAP (ticket temalarında "stok mutabakatı" ifadesi ayrışmıyor).
İlgili ticket temaları
- PRB-BAKIYE-000 (stok tutmuyor) — dolaylı; zincir SYM-BAKIYE.
- Doğrudan bağlanan PRB/SYM kaydı yok.
Müşteri varyasyonları
- KUYUMCU (MüşteriŞemasıA/MüşteriŞemasıB/MüşteriŞemasıC) kurulumunda yoğun kullanım (153.394 satır, 27.01.2021'e kadar giden kayıt); döviz V2'de hiç kullanılmamış [DOCUMENT:kitap#9.7] [DOCUMENT:08_Database/Tables/TBL-STOK.MUTABAKAT.md].
- Menüde "Hesap Yonetimi ▸ Rapor" altında olması (rapor değil giriş ekranı) menü yerleşimi farkıdır; ayrıca
iScreen,FrmMainForm,FrmGlobalSettingsdesigner'larında string literal ile anılır — GAP: bu üç yerden hangi bağlamda açıldığı doğrulanmadı.
Kim kullanır? Nereden açılır?
- ANA MENÜ ▸ Hesap Yonetimi ▸ Rapor ▸ Mutabakat
- Kod içinden açan sınıflar: MutabakatOnay
- String literal ile (dinamik) açılıyor:
ERPPRO/Controls/Islem Ekranı/Base Control/iScreen.Designer.vb,ERPPRO/Form/Genel/FrmMainForm.Designer.vb,ERPPRO/Form/Settings/FrmGlobalSettings.Designer.vb
Yaşam döngüsü kanıtı
ACTIVE_CRITICAL — ANA MENÜ: Hesap Yonetimi ▸ Rapor ▸ Mutabakat; çağıran sınıf: MutabakatOnay; string literal ile açılıyor: ERPPRO/Controls/Islem Ekranı/Base Control/iScreen.Designer.vb, ERPPRO/Form/Genel/FrmMainForm.Designer.vb, ERPPRO/Form/Settings/FrmGlobalSettings.Designer.vb
Kullanıcı olayları
| Olay | Metot | Dosya:satır |
|---|---|---|
Me.Load |
FormInit |
Mutabakat.vb:2 |
CmbKasa.EditValueChanged, CmbStokTipi.EditValueChanged, BtnRefresh.Click |
RefreshData |
Mutabakat.vb:9 |
VwBakiye.FocusedColumnChanged |
VwBakiye_FocusedColumnChanged |
Mutabakat.vb:15 |
VwBakiye.ValidateRow |
VwBakiye_ValidateRow |
Mutabakat.vb:18 |
Okuduğu / yazdığı tablolar (kod içi SQL, statik)
| Tablo | Fiiller |
|---|---|
Stok.Mutabakat |
DELETE |
Kullandığı DAO / iş sınıfları
Bilinen kusurlar / dikkat
- Dinamik SQL: 2 ifade — parametresiz birleştirme riski (TD-DYNAMIC-SQL).
Kaynaklar
SOURCE_CODE:ERPPRO/Form/Tanımlamalar/Stok/Mutabakat.Designer.vbSOURCE_CODE:ERPPRO/Form/Tanımlamalar/Stok/Mutabakat.vbDERIVED:docs/knowledge-base/screens/Mutabakat.md(KB-docs statik analiz)DERIVED:kb_src/erppro/scan.json(olay/SQL/çağrı)
Bilinmeyenler
- Hangi sürümde eklendiği: VERSION_UNKNOWN (GAP-CODE-VERSION-DATE).
