AIFA AKADEMI · Kurumsal Wiki
4.310 makale
Ana sayfa Kurumsal Wiki › Modüller › MOD-POS

Vezne / POS (ErpPosV2)

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

Modülün amacı

İki ayrı şey aynı adı taşır; bu makale ikisini ayrı alt bölümlerde ele alır (CTR-041):

  1. ErpPosV2 uygulaması — SOURCE_IMPLEMENTED. Dokunmatik ekran için yazılmış ayrı bir VB.NET/DevExpress vezne (banko) uygulaması: giriş, hesap seçimi (Türkçe normalize arama), bakiye kartı, işlem listesi, NAKİT/MADEN/HURDA/VADELİ/HİZMET satır girişi, sanal klavye/numpad, MRZ kimlik okuma. Aynı ERP veritabanına doğrudan SQL ile bağlanır; okuma yolu Bakiye.GetBakiye, Cari.IslemListesi, Stok.*. Kaynakta Cari.Islemler'e yazan kod yoktur; YENİ FİŞ/FİŞ BAS düğmeleri ve FrmFaturaBas gövdesi boştur. [SOURCE_CODE:erppos/ErpPosV2/ErpPosV2/Form/FrmMainForm.vb:22-34; DERIVED:WF-POS-VEZNE-FIS]
  2. POS.* SQL şeması — GENERATED_PROPOSAL. Analiz sırasında üretilen 6 betik (pos/00_POS_Kurulum.sql05_POS_EvrakKapisi.sql): 6 tablo, 14 fonksiyon, 1 view, POS.FisKaydet yordamı. 2026-09-10 05:36'da yalnız dev DB'ye (ERPGOLDV2) kuruldu; üretimde yoktur ve ERPGOLD özelliği olarak anlatılamaz (Proposals/INDEX.md, UNIFICATION_PLAN §5.5). KB-v1'in "POS ve Mobil şemaları ürünün parçası" ifadesi bu nedenle geçersizdir.

Mevcut mobil yazma yolu ayrıdır: Mobil.CariIslem tek satır yazar, BSMV NULL bırakır (INT-ERPMOBIL); bu SP'nin katalog makalesi yok (GAP).

Hangi müşteri tipleri kullanır

Hedef: banko önünde hızlı peşin işlem yapan Sarraf, Perakende kuyumcu ve Döviz bürosu gişeleri (SECTOR_KNOWLEDGE; ERP tarafındaki eşdeğerleri PERAKENDE ve Gişe İşlemleri ekranlarıdır). VARIANT_MATRIX: "ErpPosV2 uygulaması ●", "POS.* şeması GENERATED_PROPOSAL". GAP: ErpPosV2'nin hangi müşteride canlıda çalıştığına dair ticket/kurulum kanıtı yok; PRB-MOBIL-000 teması mobil/web geneline aittir.

Ana kavramlar

Perakende ekranı, Kasa, Peşin (tip 1), Fiş / fiş numarası, Bakiye kartı, İşlem listesi, BSMV, Has / Milyem, Kur fotoğrafı, Evrak / uyum. Öneri katmanı terimleri (fiş kanalı, iz kaydı, eşik, oturum jetonu, TAKOZ_CARPAN) POS.* betiklerine aittir — ürün terimi değildir. Vezne arayüzü sözleşmesi ve işlem modeli proje notlarındadır (erpposv2-vezne-arayuzu, erpgoldv2-islem-modeli-sozlesmesi — öneri).

Menü konumu

ERP ana menüsünde ErpPosV2 düğmesi yoktur; ayrı bir .exe olarak açılır (MENU_TREE'de yalnız ERP'nin kendi Gise Islemleri ve Seri Islemler › Pesin Islem Ekranı (kodsuz, TD-46) düğmeleri vardır). ErpPosV2 içi gezinme: FrmLoginFrmMainForm<Hesap Seciniz> (FrmHesapSec) → işlem menüsü (UiTransaction) → UiStockList.

Ekranlar

ErpPosV2 form/kontrolleri 05_Screens envanterinde değil 09_CodeArchitecture/Classes'ta makalelenmiştir (_lifecycle.json yalnız ERPPRO + AifaDeveloper); yaşam döngüsü sınıfı bu yüzden atanmamış.

Ekran / kontrol Sınıf Yaşam döngüsü Bir cümle
Giriş FrmLogin 4 üye; giriş mantığı asgari
Ana ekran FrmMainForm (ErpPosV2; ERP'nin SCR-FRMMAINFORM'u ile ad çakışması) Hesap seçimi, bakiye kartı, işlem listesi, YENİ FİŞ / FİŞ BAS / FATURA BAS / İPTAL ET (yazma kodu yok)
Hesap seçimi FrmHesapSec Id / HesapAdi / TCNo / VergiNo listesi, Türkçe normalize arama (FrmHesapSec.vb:26)
İşlem satırı UiTransaction NAKİT/MADEN/HURDA/VADELİ/HİZMET; Tutar=Round(Miktar×Fiyat,2), Fiyat=Round(Tutar÷Miktar,5) (UiTransaction.vb:40)
Stok listesi UiStockList / GridRow Stok.* fonksiyonlarından dokunmatik liste (5 SQL)
Fatura FrmFaturaBas Gövde boş (2 satır) — GAP
Klavye/giriş kontrolleri UIKeyboard, UINumpad, UITextEdit, UILabelEdit, UIButton, UICheckButton, UXButton, UXKeyboard Dokunmatik sanal klavye ve düğme seti
Kimlik MRZ MrzEdit, MrzKit.MrzParser, MrzResult Pasaport/kimlik MRZ ayrıştırma (MrzDocumentType)

Ana iş akışları

WF-POS-VEZNE-FIS — 5 adım: giriş → hesap seç → satır gir → fiş düğmeleri (UI'da yazma yok; tasarlanan yol banko.asmxPOS.FisKaydet TVP) → fatura (boş). Adım 1–3 SOURCE_IMPLEMENTED, adım 4–5'in yazma tarafı GENERATED_PROPOSAL. ERP eşdeğerleri: WF-PERAKENDE-SATIS, WF-PERAKENDE-IPTAL, WF-KYC-EVRAK-KAPISI-TETIK (POS.EvrakKapisiDurum aynı kuralı sarar — öneri).

Kullanılan tablolar

ErpPosV2 (okuma, SOURCE_IMPLEMENTED): Cari.Hesaplar, Cari.Islemler, Cari.BakiyeIslem, Stok.Maden, Stok.Nakit, Sistem.Kurlar.

POS.* (GENERATED_PROPOSAL; 08_Database/INDEX.md kurulum "INST-ERPGOLDV2 (dev)", sınıf MANUAL_REVIEW):

Tablo Satır (dev) Tasarlanan rol
POS.FisKanal 0 Fişin kanalı (web/masaüstü), kullanıcı/şube/kasa/cihaz izi
POS.Oturumlar 0 Jeton bazlı banko oturumu
POS.IzKaydi 4 Olay/denetim kaydı (test satırları)
POS.Sabitler 3 FIYAT_SAPMA_YUZDE, TAKOZ_CARPAN=0,6 vb.
POS.VergiOranlari 1 BSMV oranı, dahil/hariç, yürürlük
POS.Esikler 1 KIMLIK_TESPIT / MASAK_BILDIRIM eşikleri

Mobil / ERPMobile şemaları katalogda tablo olarak yok (GAP).

Kullanılan fonksiyon / SP / view / trigger'lar

ErpPosV2 çağırdıkları (SOURCE_IMPLEMENTED): Bakiye.GetBakiye, Cari.IslemListesi (katalogda ayrı makale yok — GAP), Stok.GetMadenStoklari, Stok.GetNakitStoklari, Cari.GetHesapListesi.

POS.* (GENERATED_PROPOSAL — makale front-matter'ları SOURCE_IMPLEMENTED yazsa da CTR-041 gereği öneri): SP POS.FisKaydet (TVP ile çok satırlı fiş; tetik kapalıysa reddeder — 02_POS_FisKaydet.sql:84,117,139); fonksiyonlar POS.GetKur, POS.GetKurAlis, POS.KurBul, POS.BSMVHesapla, POS.AnaBirimId, POS.BakiyeIdBul, POS.KarsiIslemTuru, POS.Sabit, POS.EsikTutar, evrak kapısı POS.EvrakKapisiDurum, POS.EksikEvrakVarMi, POS.EksikEvrakSayisi, POS.EksikEvrakListesi, POS.EksikEvrakMetni; view POS.vEksikler. Tetikleyici: hedef yine Cari.AcceptTransaction.

Raporlar

Modüle ait menü raporu yok. Vezne verisi ERP defterine yazılacağından mevcut raporlar geçerli olur: RPT-9 Nakit Stok Hareket, RPT-1 Bakiye Extresi, Reports.GetNakitGirisCikis. Reports.MusteriUrunHacimRaporu / RPT-91 GENERATED_PROPOSAL'dır, POS'a bağlanmaz.

Entegrasyonlar

INT-POS-ERPPOSV2 (BOTH, HIGH — InternalDb.vb:11 sabit bağlantı dizesi, gizli), INT-ERPMOBIL (Mobil.CariIslem), INT-KYC-AIFAUYUM / INT-DOCUMENTS-DB (evrak kapısı), INT-FIS-YAZICI (termal fiş — POS'ta yazdırma kodu yok), INT-BARKOD.

Ayarlar

ErpPosV2: InternalDb.vb içinde gömülü bağlantı dizesi ve designer'da sabit kasa adı/IP (TD-05); CFG-CONFIGURATION-SETTINGS benzeri bir yapılandırma dosyası yok (GAP). Öneri katmanı (GENERATED_PROPOSAL): CFG-POS-FIYAT-SAPMA-YUZDE, CFG-POS-TAKOZ-CARPAN, CFG-POS-BSMV, CFG-POS-KIMLIK-TESPIT. ERP tarafında geçerli: CFG-HARD-PERAKENDE-7000, CFG-HARD-PERAKENDE-3000USD, CFG-BSMV.

İş kuralları

07_BusinessRules/INDEX.md'te MOD-POS kuralı yok; WF-POS-VEZNE-FIS'in andığı BR-POS-TRIGGER-ACIK-001 makalesi yok (öneri katmanı: "AcceptTransaction kapalıysa fiş yazılmaz"). Vezneye uygulanacak çekirdek kurallar: BR-GENEL-002 yeni fiş numarası, BR-BSMV-001, BR-PERAKENDE-002006, BR-KUR-001 kur fotoğrafı, BR-KASA-001 kasa kilidi, BR-DEFTER-URETIMI. Enum: UIKeyboard.KeyboardType, UXButtonType, InternalDb.IDbConnectionState, MrzDocumentType. Öneri uyarı metinleri ("v1 kapsami disi IslemKodu…", "HAS kuru bulunamadi…") 02_POS_FisKaydet.sql'dedir.

Sık sorunlar

PRB-MOBIL-000 (mobil/web teması); ErpPosV2'ye özgü ticket tespit edilmedi (GAP-TICKET-03). Perakende/banko şikâyetleri ERP ekranı üzerinden: PB-050 7000 TL / 3000 USD uyarıları, PB-025 termal fiş boş, PB-023 yazıcı yazdırmıyor. Tipik arıza (INT-POS-ERPPOSV2): tetik kapalı → satır yazılır ama bakiye/stok oluşmaz; havuzlu bağlantıda trigger cursor sızıntısı sonraki istekleri zehirler.

Bilinen kusurlar

ErpPosV2: Cari.Islemler'e yazma yolu yok; FrmFaturaBas boş; sabit bağlantı dizesi ve sa parolası açık metin (TD-05); TD-13 InternalDb yaşam döngüsü. ERP tarafı: TD-03 tetikleyici cursor sızıntısı, TD-32 demo DB'de tetikler kapalı, H-006 işlem kaydediliyor ama bakiye/stok oluşmuyor, H-085H-090 perakende ekranı sorunları. Çelişki: CTR-041.

Müşteri varyasyonları

Hiçbir müşteri şemasında (MüşteriŞemasıD, MüşteriŞemasıA, MüşteriŞemasıB, MüşteriŞemasıC) POS nesnesi yok; POS.* yalnız dev DB'de (ERPGOLDV2). ErpPosV2'nin kurulu olduğu müşteri bilinmiyor (customer_scope: UNKNOWN). Aşama 0 kurulum notları proje dokümanı pos-asama0-kurulum-notlari'nda — öneri.

Kritik kod parçaları

InternalDb (Class/InternalDb.vb, 160 satır — bağlantı ve sorgu; satır 11 bağlantı dizesi), FrmMainForm (Form/FrmMainForm.vb 44 satır — satır 22/34 hesap seçimi ve bakiye yükleme), FrmHesapSec, UiTransaction (satır 40 tutar/fiyat yuvarlama), UiStockList (5 SQL), MrzKit.MrzParser, My.MyApplication. Öneri SQL: pos/00_POS_Kurulum.sql:93,139, 02_POS_FisKaydet.sql:84. Sınıf dizini Classes/INDEX.md (22 sınıf MOD-POS).

İlgili eğitimler

ErpPosV2 için eğitim konusu yok (GAP). Banko akışı için ERP eğitimleri: TRN-041 günlük akış, TRN-102TRN-105 gün başı/gün içi/gün sonu, TRN-017 NORMAL mi PEŞİN mi, TRN-021 BSMV; veznedar için H-169 pazartesi sabahı kontrol listesi.

Kaynaklar

SOURCE_CODE:erppos/ErpPosV2/ErpPosV2/Form/FrmMainForm.vb:22-34; Form/FrmHesapSec.vb:26; Controls/Cusrtom/UiTransaction.vb:40; Class/InternalDb.vb:11 · GENERATED_PROPOSAL: pos/00_POS_Kurulum.sql:93,139; pos/02_POS_FisKaydet.sql:84,117,139; pos/05_POS_EvrakKapisi.sql:194 · DB_QUERY: POS.* dev DB kurulum zamanı 2026-09-10 05:36 · GOVERNANCE: CTR-041, Proposals/INDEX.md · DERIVED: INT-POS-ERPPOSV2, WF-POS-VEZNE-FIS.

Bilinmeyenler

  • GAP: ErpPosV2 canlıda hangi müşteride, hangi sürümle çalışıyor; yazma yolu (banko.asmx?) hiç geliştirildi mi — kaynakta yok.
  • CTR-041 uzantısı: POS.* fonksiyon/SP/view makalelerinin reality alanı SOURCE_IMPLEMENTED, tabloları GENERATED_PROPOSAL; tutarsız — hepsi GENERATED_PROPOSAL olmalı (findings dosyasına işlendi).
  • GAP: Mobil.CariIslem, Cari.IslemListesi, Mobil/ERPMobile şema nesneleri katalogda yok; ERPMobile taşıma katmanı UNVERIFIED.
  • GAP: ErpPosV2 FrmMainForm ile ERPPRO FrmMainForm ad çakışması — _lifecycle.json/ekran dizininde POS formları yok; sınıf makaleleri product_scope: ERPGOLD_CORE yazıyor, POS_VARIANT olmalı (CTR adayı).
  • GAP: BR-POS-TRIGGER-ACIK-001 kural makalesi yok; öneri kuralları BR olarak yazılacaksa GENERATED_PROPOSAL etiketiyle yazılmalı.