Sınıf: FrmTransfer · Modül: MOD-CARI · Türetildiği: DevExpress.XtraEditors.XtraForm · Yaşam döngüsü: ACTIVE_CRITICAL · Kapsam: ERPGOLD_CORE
Nedir?
Transfer Islemleri — kasalar (ve şubeler) arasında nakit/maden/hurda stoğu taşıyan transferlerin gelen / giden kutusudur. Liste Cari.GetTransferler(kutu, kasa, durum) fonksiyonundan okunur; gönderen kasa Transfer düğmesiyle yeni gönderi açar (TRANSFER EKLE), alan kasa Gelen Kutusu'nda gönderiyi Kabul Et ya da Reddet eder, gönderen bekleyen gönderiyi Iptal Et edebilir [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/FrmTransfer.vb:1-95] [DB_OBJECT:Cari.GetTransferler] [DOCUMENT:06_Workflows/WF-KASA-TRANSFER.md]. Stok yalnız kabul anında taşınır: tetikleyici çıkan kasaya eksi, giren kasaya artı stok hareketi yazar; cari bakiye değişmez [BUSINESS_RULE:BR-TRANSFER-002] [DB_OBJECT:Cari.TransferUpdateSTatus]. Gişe ekranındaki Transferler düğmesi de aynı pencereyi açar [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Parakende/GiseEkrani.vb:631-635].
Ne zaman kullanılır?
- Bir kasadan başka kasaya nakit/maden aktarılırken (şubeler arası dahil) [DOCUMENT:06_Workflows/WF-KASA-TRANSFER.md] [PROCESS:PROC-141].
- Yanlış kasadan yapılan işlemin stoğunu doğru kasaya taşımak için (DÜZELT ile kasa değiştirilemez) [DOCUMENT:12_Support/KnownIssues/H-113.md].
- Devir öncesi stokları tek kasada toplarken [DOCUMENT:06_Workflows/WF-YIL-SONU-DEVIR.md adım 1].
- Şubeler arası provizyonlu işlem akışı ayrı ekrandadır (Gelen/Giden Kutusu → ProvizyonGrid) [DOCUMENT:06_Workflows/WF-PROVIZYON-SUBELER-ARASI.md].
Adım adım kullanım
- ANA MENÜ ▸ Hesap Yonetimi ▸ Cari Hesaplar ▸ Transferler (veya Gişe ▸ Transferler).
- Liste tipi: Gelen Kutusu (oturum kasasına gelenler) / Giden Kutusu (oturum kasasından gidenler); Durum süzgeci: Bekliyor / Tamamlandı / Reddedildi / Iptal Edildi / Hepsi [SOURCE_CODE:FrmTransfer.Designer.vb:83,108].
- Gönderen: Giden Kutusu → Transfer → TRANSFER EKLE penceresinde alan kasa, işlem (nakit/maden), stok kodu, adet/miktar, açıklama → kayıt; gönderi
Status=0(bekliyor) ile listeye düşer [DOCUMENT:06_Workflows/WF-KASA-TRANSFER.md adım 2] [PROCESS:PROC-141]. - Alan: Gelen Kutusu → satır seçilir → Kabul Et ("Seçmiş Olduğunuz Gonderi Kabul Edilecektir. Onaylıyor musunuz?") ya da Reddet. Düğmeler yalnız
Durum = 0satırda etkindir [SOURCE_CODE:FrmTransfer.vb:35-53]. - Gönderen: bekleyen gönderiyi Iptal Et ile geri çeker — yalnız grupta İşlem İptal yetkisi varsa [SOURCE_CODE:FrmTransfer.vb:43-46] [BUSINESS_RULE:BR-TRANSFER-001].
- Kabul sonrası stok listeleri kontrol edilir; alan kasa stoğu artmış, gönderen azalmış olmalı [PROCESS:PROC-141 adım 5].
Alanların anlamı
| Ekran sütunu / etiketi | İş anlamı (kaynak) |
|---|---|
| Gelen Kutusu / Giden Kutusu | @BoxType 0/1 — oturum kasasına göre süzülür (Program.KasaId) |
| Durum (süzgeç ve sütun) | Cari.Transferler.Status: 0 Bekliyor · 1 Tamamlandı (kabul) · 2 Reddedildi · 3 Iptal Edildi |
| Tarih / Kayıt | Transfer tarihi ve kayıt anı (Tarih, InsertDate) |
| Sube / CikanKasa / GirenKasa | Şube ve kasalar (SubeId, CikanKasaId, GirenKasaId) |
| Islem | StokTipi: 0 NAKIT · 1 MADEN · 2 HURDA (fonksiyon eşlemesi) |
| Kodu / Adet / Miktar / Milyem / Has | Taşınan stok ve miktarı; Has = Miktar × Milyem, maliyet birim fiyatıyla (Cari.Transfer.Save) [DOCUMENT:06_Workflows/WF-KASA-TRANSFER.md adım 2] |
| Kullanıcı | Gönderiyi açan kullanıcı (UserId) |
| Transfer / Kabul Et / Reddet / Iptal Et | Transfer.SetStatus(Id, 1/2/3) |
CTR-SCR-TRANSFER-STOKTIPI-01: Kitapçık §6.1 Cari.Transferler.StokTipi'ni "1 = maden, 2 = nakit" ve Status'u "tüm satırlarda 0 — kullanılmıyor" diye anlatır; Cari.GetTransferler ve tetikleyici kuralı ise 0 NAKIT / 1 MADEN / 2 HURDA eşlemesi kullanır ve Status 0–3 durum makinesidir [DB_OBJECT:Cari.GetTransferler] [BUSINESS_RULE:BR-TRANSFER-002] [DOCUMENT:kitap#6.1 Cari.Transferler]. Kitapçık notu genel StokTipi şablonundan kopyalanmış görünüyor; V2 örnek DB'de tüm satırların Status=0 olması ayrıca "kabul edilmemiş gönderi" anlamına gelebilir — doğrulanmalı.
Hesaplama / doğrulama mantığı
- Üç eylem de onay sorar;
SetStatusyalnızStatus=0iken durum değiştirir [BUSINESS_RULE:BR-TRANSFER-001]. - Kabul (Status=1): tetikleyici önce transferin
StokTipi=−2işaretli eski hareketlerini siler, sonra çıkan kasaya −, giren kasaya + (Adet, Miktar, Has, Maliyet;Bolum=2) iki stok hareketi yazar; nakit → StokTipi 2, maden → 1 [BUSINESS_RULE:BR-TRANSFER-002]. - Red/iptal stok hareketi üretmez.
- "Hepsi" süzgecinde (indeks 4) satır listeden silinmez, yalnız durum güncellenir [SOURCE_CODE:FrmTransfer.vb:58,70,81].
- Liste dinamik SQL ile kurulur (1 ifade, TD-DYNAMIC-SQL).
Stok / bakiye / rapor etkisi
İşlem benzeri ekrandır ama Cari.Islemler'e yazmaz; Cari.Transferler üzerinden tetikleyici doğrudan stok defterine (Stok.StokHaraketleri, Bolum=2) yazar. Bakiye defteri (Cari.BakiyeIslem) etkilenmez [BUSINESS_RULE:BR-TRANSFER-002] [DOCUMENT:06_Workflows/WF-KASA-TRANSFER.md#sonuç]. Stok hareketleri raporunda transfer satırları Bolum=2 ile ayrışır; tarih kayıt anı olduğundan "yanlış tarihte" görünebilir [DOCUMENT:12_Support/KnownIssues/H-119.md] [PROCESS:PROC-146] [PROCESS:PROC-177].
Sık yapılan kullanıcı hataları
- Transfer yapıldı ama karşı kasada stok görünmüyor — alan taraf Kabul Et yapmamış [DOCUMENT:12_Support/KnownIssues/H-114.md] [DOCUMENT:12_Support/Playbooks/PB-037.md].
- Stok hareketlerinde transfer kayıtları yanlış tarihte / yanlış geliyor [DOCUMENT:12_Support/KnownIssues/H-119.md] [PROCESS:PROC-146] [PROCESS:PROC-177].
- Iptal Et pasif — grupta İşlem İptal yetkisi yok [BUSINESS_RULE:BR-TRANSFER-001] [DOCUMENT:12_Support/KnownIssues/H-011.md].
- Stok listesi boş: yanlış kasa — transfer yerine kasa seçimi [DOCUMENT:12_Support/KnownIssues/H-113.md].
- Ekran içi transfer (F3, karşı hesaba ters yön) ile karıştırılması — o akış
Cari.Islemler'e yazar [BUSINESS_RULE:BR-TRANSFER-003] [DOCUMENT:12_Support/KnownIssues/H-047.md].
İlgili ticket temaları
- PRB-BAKIYE-000 (stok tutmuyor), PRB-TANIMLAMA-000; zincir SYM-BAKIYE.
- Playbook: PB-037.
- Süreçler: PROC-141, PROC-146, PROC-177.
Müşteri varyasyonları
- V2 (döviz) örnek DB'de
Cari.Transferler23.234 satır [DOCUMENT:kitap#6.1 Cari.Transferler]; KUYUMCU satır sayısı ölçülmedi (GAP). - Provizyon (şubeler arası onay) modu açık kurulumlarda şubeler arası mal/para hareketi ayrı gelen/giden kutusu ekranından yürür [DOCUMENT:09_CodeArchitecture/CONFIGURATION.md#cfg-provizyon] [BUSINESS_RULE:BR-TRANSFER-004].
Kim kullanır? Nereden açılır?
- ANA MENÜ ▸ Hesap Yonetimi ▸ Cari Hesaplar ▸ Transferler
- Kod içinden açan sınıflar: GiseEkrani
Yaşam döngüsü kanıtı
ACTIVE_CRITICAL — ANA MENÜ: Hesap Yonetimi ▸ Cari Hesaplar ▸ Transferler; çağıran sınıf: GiseEkrani
Alanlar (etiket metinleri)
| Etiket | Tür | Kontrol (teknik) |
|---|---|---|
| Transfer | LabelControl | LabelControl1 |
| Iptal Et | SimpleButton | BtnIptal |
| Transfer | SimpleButton | BtnTransfer |
| Kabul Et | SimpleButton | BtnKabulEt |
| Reddet | SimpleButton | BtnReddet |
Kullanıcı olayları
| Olay | Metot | Dosya:satır |
|---|---|---|
Me.Shown |
FormInit |
FrmTransfer.vb:2 |
CmbListeTipi.SelectedIndexChanged, CmbDurum.SelectedIndexChanged, Me.Load |
ListRefresh |
FrmTransfer.vb:5 |
BtnTransfer.Click |
BtnTransfer_Click |
FrmTransfer.vb:23 |
VwIslemler.FocusedRowChanged, VwIslemler.GotFocus, VwIslemler.LostFocus |
YetkiKontrol |
FrmTransfer.vb:35 |
BtnIptal.Click |
BtnIptal_Click |
FrmTransfer.vb:54 |
BtnKabulEt.Click |
BtnKabulEt_Click |
FrmTransfer.vb:66 |
BtnReddet.Click |
BtnReddet_Click |
FrmTransfer.vb:77 |
Okuduğu / yazdığı tablolar (kod içi SQL, statik)
| Tablo | Fiiller |
|---|---|
Cari.GetTransferler ⚠︎ DB'de yok |
SELECT |
Kullanıcıya gösterilen mesajlar (doğrulama)
- Seçmiş Olduğunuz Gonderi Kabul Edilecektir. Onaylıyor musunuz?
- Seçmiş Olduğunuz Gonderi Red Edilecektir. Onaylıyor musunuz?
- Seçmiş Olduğunuz Gonderi İptal Edilecektir. Onaylıyor musunuz?
Yetki bayrakları
IslemIptal
Bilinen kusurlar / dikkat
- Dinamik SQL: 1 ifade — parametresiz birleştirme riski (TD-DYNAMIC-SQL).
Kaynaklar
SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/FrmTransfer.Designer.vbSOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/FrmTransfer.vbDERIVED:KnowledgeBase/02_Screens/FrmTransfer.md(KB-v1 anlatım)DERIVED:docs/knowledge-base/screens/FrmTransfer.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).
