Sınıf: FrmTakozCikisi · Modül: MOD-CARI · Türetildiği: DevExpress.XtraEditors.XtraForm · Yaşam döngüsü: ACTIVE_CRITICAL · Kapsam: KUYUMCU_VARIANT
Nedir?
Takoz Cıkıs İşlemi — Seri İşlem penceresinin 3 - TAKOZ C. düğmesiyle açılan, eldeki bir takozu (külçeyi) müşteriye/rafineriye teslim eden ayrı penceredir; Cari İşlemler içindeki TAKOZ ÇIKIŞ satırının seri-pencere eşidir [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozCikisi.vb:182-340] [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmSeriIslem.vb:292-296]. Kullanıcı TAKOZ KODU listesinden şube-kasada elde olan bir takozu seçer; MİKTAR, HAS/GUM/PLT/PLD MILYEM ve has değerleri takoz kartından salt okunur dolar; yalnız işçilik (HAS ISC., GUM ISC, birimleri), ISCILIK DURUMU (Altından Düş / Para İle), gümüş/platin/paladyum durumları ve açıklama girilir [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md] [BUSINESS_RULE:BR-TAKOZ-005]. Kayıt Cari.Islemler'e IslemKodu 0 TAKOZ · IslemTuru 1 ÇIKIŞ · Adet 1 satırı yazar; takoz stoğu −1 olur, müşteri bakiyesine has (ve gümüş) ile işçilik yazılır [DOCUMENT:kitap#9.5].
Ne zaman kullanılır?
- Depodaki takoz müşteriye ya da rafineriye teslim edilirken [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md] [PROCESS:PROC-162].
- Devir öncesi takoz stoğunu boşaltırken (toplu çıkış için Cari İşlemler'deki SERİ ÇIKIŞ penceresi kullanılır) [DOCUMENT:06_Workflows/WF-TAKOZ-SERI-CIKIS.md].
- Seri İşlem listesinde takoz çıkış satırı DUZELT ile açılınca (takoz kodu değiştirilemez) [SOURCE_CODE:FrmSeriIslem.vb:297-315].
Adım adım kullanım
- Seri İşlem Ekranı'nda hesap seçilip TAMAM denmiş olmalı; ön koşullar (şube/kasa/hesap, aktif hesap, yetki, evrak) [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md#ön-koşullar].
- 3 - TAKOZ C. basılır; pencere açılınca HAS ISC. / GUM ISC ve birimleri hesap kartındaki
TakozHasIsc / TakozGumIscdeğerleriyle dolar [SOURCE_CODE:FrmTakozCikisi.vb:199-204] [BUSINESS_RULE:BR-TAKOZ-005]. - TAKOZ KODU listesinden takoz seçilir; liste
Stok.GetTakozStoklari(Şube, Kasa)sonuçlarından adedi 0 olmayanlardır [SOURCE_CODE:FrmTakozCikisi.vb:207-209] [BUSINESS_RULE:BR-STOK-010]. Seçilince MİKTAR, HAS MILYEM, HAS, GUM MILYEM, GUM, (extra takozda) PLT/PLD alanları ve rapor no karttan dolar; PLATIN/PALADIUM DURUMU yalnız extra takozda açılır [SOURCE_CODE:FrmTakozCikisi.vb:102-126]. - HAS ISC. / GUM ISC (binde) ve BIRIM'leri kontrol edilir; ISCILIK DURUMU: Altından Düş → işçilik has'tan düşülür (birim HAS); Para İle → BIRIM kutusu açılır, işçilik seçilen nakit birimde yazılır [SOURCE_CODE:FrmTakozCikisi.vb:129-134] [BUSINESS_RULE:BR-TAKOZ-004].
- GUMUS / PLATIN / PALADIUM DURUMU: Madeni Ver / Altına Çevir / İşçilikten Düş / Madeni Bırak [SOURCE_CODE:FrmTakozCikisi.Designer.vb:807-879].
- F2 - KAYIT: işlem oluşturulur ve kaydedilir; yeni kayıtta liste yenilenir, pencere temizlenip açık kalır (bir sonraki takoz); düzeltmede pencere kapanır [SOURCE_CODE:FrmTakozCikisi.vb:236-338]. ESC - KAPAT kapatır.
Alanların anlamı
| Ekran etiketi | İş anlamı (kolon) |
|---|---|
| TAKOZ KODU | Çıkılacak takoz kartı (Cari.Islemler.StokId → Stok.Takoz.Id, Kodu) |
| MİKTAR / HAS MILYEM / HAS / GUM MILYEM / GUM / PLT… / PLD… | Takoz kartından salt okunur: brüt gram, ayar ve saf metal karşılıkları (Stok.Takoz.Miktar, AuMilyem, AuHas, AgMilyem, AgHas, Plt*, Pld*) — işleme Miktar, AuMilyem, AgMilyem, PltMilyem, PldMilyem kopyalanır |
| HAS ISC. (+BIRIM) | Has işçiliği, binde; işleme HasIsc = değer/1000, HasIscBirimId, HasIscBirimKur; ayrıca Fiyat alanına ham değer yazılır |
| GUM ISC (+BIRIM) | Gümüş işçiliği (binde) → GumIsc, GumIscBirimId, GumIscBirimKur |
| ISCILIK DURUMU | 0 Altından Düş · 1 Para İle (IscilikDurumu); Para İle'de BIRIM = IscilikBirimId/Birim |
| GUMUS / PLATIN / PALADIUM DURUMU | 0 Madeni Ver · 1 Altına Çevir · 2 İşçilikten Düş · 3 Madeni Bırak (GumusDurumu, PlatinDurumu, PalladiumDurumu) [BUSINESS_RULE:BR-TAKOZ-004] |
| (Açıklama) / (Rapor No) | Aciklama, RaporNo |
| F2 - KAYIT / ESC - KAPAT / SERI CIKIS | Eylemler — bkz. GAP aşağıda |
Alan tablosundaki "BIRIM | CmbIscBirim → IscilikBirimId (oku)" satırı: kayıtta yön aslında yazdır (.IscilikBirimId = IscilikBirim.Id) [SOURCE_CODE:FrmTakozCikisi.vb:290-291].
Hesaplama / doğrulama mantığı
- İşlem tipi takoz tipinin ana madenine göre ALTIN/GÜMÜŞ/PLATİN/PALADYUM (6–9) [BUSINESS_RULE:BR-TAKOZ-002].
- Tutar:
AuHasIsc = AuHas × HAS ISC./1000 × HasIscBirimKur;AgHasIsc = AgHas × GUM ISC/1000 × GumIscBirimKur;Tutar = |(AuHasIsc + AgHasIsc) ÷ IscilikBirimKur|— Altından Düş'te HAS kuru, Para İle'de seçilen birimin kuru;Maliyet = |Tutar × GetKur(Birim)|,Satis = 0[SOURCE_CODE:FrmTakozCikisi.vb:296-323] [BUSINESS_RULE:BR-TAKOZ-006]. - Düzeltmede kurlar işlemin kayıtlı kur fotoğrafından (
OldKur) alınır; kur listesinden yeniden çekilmez [SOURCE_CODE:FrmTakozCikisi.vb:211-233,343-349] [BUSINESS_RULE:BR-KUR-003]. - Takoz seçilmemişse F2 sessizce çıkar (mesaj yok) [SOURCE_CODE:FrmTakozCikisi.vb:237] [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md adım 4].
- Tetikleyici: takozun stok adedi 0 ise "BU TAKOZ STOGUNUZDA YOK.ISLEM YAPAMAZSINIZ." ile geri alır [BUSINESS_RULE:BR-STOK-007].
- Genel doğrulamalar
Islem.Validateiçindedir: "Sube,Kasa veya Hesap Seçili Değil…", "Geçmiş Tarihe İşlem Giriyorsunuz…" (resmi kasada sorulmaz) [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md#uyarı-mesajları]. - GAP-SCR-TAKOZCIKISI-SERICIKIS: Bu penceredeki SERI CIKIS düğmesinin kodu yorum satırına alınmıştır; düğme hiçbir şey yapmaz [SOURCE_CODE:FrmTakozCikisi.vb:354-361]. Toplu çıkış için Cari İşlemler ▸ TAKOZ C ▸ SERİ ÇIKIŞ (FrmSeriTakozCikis) kullanılır.
- Kod içinde bir dinamik SQL (stok listesi) vardır (TD-DYNAMIC-SQL).
Stok / bakiye / rapor etkisi
İşlem ekranıdır: satır Cari.Islemler'e yazılır; TRG-CARI.ACCEPTTRANSACTION stok defterine StokTipi 3, Adet −1, Miktar/Has 0 (takoz nesne olarak izlenir) ve bakiye defterine hesap için HAS (+AuHas) ve GUM (+AgHas) ile işçilik satırlarını yazar; kasa değişmez [BUSINESS_RULE:BR-STOK-002] [DOCUMENT:kitap#9.5] [BUSINESS_RULE:BR-DEFTER-URETIMI]. Kuyumcu DB'de bir takozun giriş ve çıkışı tam iki Cari.Islemler satırıdır; çıkışta has ve gümüş bakiyesi birlikte doğar [DOCUMENT:kitap#9.5]. Raporsuz takozda milyem/has kutuları boş gelir ve işçilik 0 hesaplanır [DOCUMENT:06_Workflows/WF-TAKOZ-CIKIS.md#ön-koşullar] [DOCUMENT:12_Support/KnownIssues/H-072.md].
Sık yapılan kullanıcı hataları
- "«no» Nolu Takoz Bulunamadı Veya Elinizde Yok." / takoz listede yok — başka kasada ya da çıkılmış [DOCUMENT:12_Support/KnownIssues/H-070.md] [DOCUMENT:12_Support/KnownIssues/H-117.md] [DOCUMENT:12_Support/Playbooks/PB-049.md].
- TAKOZ C'de milyem kutuları boş; "takozun kimden geldiğini göremiyorum" — raporsuz takoz [DOCUMENT:12_Support/KnownIssues/H-072.md].
- Hesaba göre takoz çıkış işçiliği sabitlenmek isteniyor — hesap kartı Takoz Has/Gum Isc [DOCUMENT:12_Support/KnownIssues/H-034.md] [PROCESS:PROC-152].
- Devir sonrası takoz stoğu −1 — devirden önce alınan takoz devirden sonra çıkılmış [DOCUMENT:06_Workflows/WF-YIL-SONU-DEVIR.md#uyarı-mesajları].
- Raporsuz takoz has varsayımı raporlarda üç farklı değer (0,600 / 0 / 0) — bilanço farkı (CTR-SYM-TAKOZ-01) [DOCUMENT:12_Support/KnownIssues/H-130.md].
İlgili ticket temaları
- PRB-TAKOZ-000; zincir SYM-TAKOZ.
- Playbook: PB-049.
Müşteri varyasyonları
KUYUMCU_VARIANT:Stok.Takozdöviz kurulumunda boştur; kuyumcu/rafineri kurulumunda 10.870 satır (16,4 t brüt) [DOCUMENT:kitap#9.5].- Giriş bakiyesi ile ölçülen has arasındaki +%0,27 fark (fire/rafinasyon payı) kodda bulunamadı — GAP-TAKOZ-FIRE [DOCUMENT:00_Governance/KNOWN_GAPS.md#gap-takoz-fire].
- Rafinasyon ücreti has ile alındığında
Tutarkolonu para değil has gramdır; döviz kurulumunda aynı kolon her zaman para taşır [DOCUMENT:kitap#9.5].
Kim kullanır? Nereden açılır?
- Kod içinden açan sınıflar: FrmSeriIslem
Yaşam döngüsü kanıtı
ACTIVE_CRITICAL — çağıran sınıf: FrmSeriIslem
Alanlar → veritabanı
| Ekrandaki alan | Kontrol | Tablo.Kolon | Yön |
|---|---|---|---|
| HAS ISC. | TxtHasIscFiyat |
Cari.Islemler.Fiyat |
yaz |
| BIRIM | CmbHasIscBirim |
Cari.Islemler.HasIscBirimId |
yaz |
| BIRIM | CmbGumIscBirim |
Cari.Islemler.GumIscBirimId |
yaz |
| ISCILIK DURUMU | CmbIscilikDurumu |
Cari.Islemler.IscilikDurumu |
yaz |
| BIRIM | CmbIscBirim |
Cari.Islemler.IscilikBirimId |
oku |
| GUMUS DURUMU | CmbGumusDurum |
Cari.Islemler.GumusDurumu |
yaz |
| PLATIN DURUMU | CmbPlatinDurum |
Cari.Islemler.PlatinDurumu |
yaz |
| PALADIUM DURUMU | CmbPaladiumDurum |
Cari.Islemler.PalladiumDurumu |
yaz |
| — | TxtAciklama |
Cari.Islemler.Aciklama |
yaz |
| — | TxtRaporNo |
Cari.Islemler.RaporNo |
yaz |
Kullanıcı olayları
| Olay | Metot | Dosya:satır |
|---|---|---|
CmbStokKodu.GotFocus, TxtHasIscFiyat.GotFocus |
_GotFocus |
FrmTakozCikisi.vb:3 |
CmbStokKodu.LostFocus, TxtHasIscFiyat.LostFocus |
_LosttFocus |
FrmTakozCikisi.vb:7 |
CmbStokKodu.KeyDown |
__KeyDown |
FrmTakozCikisi.vb:11 |
Me.KeyDown |
_KeyDown |
FrmTakozCikisi.vb:15 |
CmbStokKodu.EditValueChanged |
OnStockChanged |
FrmTakozCikisi.vb:102 |
CmbIscilikDurumu.SelectedIndexChanged |
OnIscilikBirimDegisti |
FrmTakozCikisi.vb:129 |
CmbStokKodu.KeyDown |
CmbStokKodu_KeyDown |
FrmTakozCikisi.vb:136 |
CmbStokKodu.ProcessNewValue |
CmbStokKodu_ProcessNewValue |
FrmTakozCikisi.vb:143 |
Me.Load |
FormInit |
FrmTakozCikisi.vb:182 |
BtnKaydet.Click |
FormSave |
FrmTakozCikisi.vb:236 |
BtnKapat.Click |
FormClose |
FrmTakozCikisi.vb:342 |
BtnSeriCıkıs.Click |
BtnSeriCıkıs_Click |
FrmTakozCikisi.vb:354 |
BtnKapat.Click |
FormClose |
FrmTakozCikisi.vb:363 |
CmbIscilikDurumu.SelectedIndexChanged |
OnIscilikBirimDegisti |
FrmTakozCikisi.vb:367 |
CmbStokKodu.EditValueChanged |
OnStockChanged |
FrmTakozCikisi.vb:371 |
Okuduğu / yazdığı tablolar (kod içi SQL, statik)
| Tablo | Fiiller |
|---|---|
Stok.GetTakozStoklari ⚠︎ DB'de yok |
SELECT |
Kullandığı DAO / iş sınıfları
AIO.Cari.Hesap, AIO.Cari.Islem, AIO.Kur.KurListesi, AIO.Sistem.Birim, AIO.Stok.Takoz
Kayıt sonrası oluşan etkiler
Bu ekran Cari.Islemler'e yazar. Her satır TRG-CARI.ACCEPTTRANSACTION tarafından bakiye defteri (Cari.BakiyeIslem), stok defteri (Stok.StokHaraketleri) ve değişiklik izine (Cari.History) dağıtılır. Hangi defterin üretileceği BakiyeId, IslemTipi ve kurulum profiline bağlıdır — bkz. BR-DEFTER-URETIMI (CTR-038).
Bilinen kusurlar / dikkat
- Dinamik SQL: 1 ifade — parametresiz birleştirme riski (TD-DYNAMIC-SQL).
Kaynaklar
SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozCikisi.Designer.vbSOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozCikisi.vbDERIVED:KnowledgeBase/02_Screens/FrmTakozCikisi.md(KB-v1 anlatım)DERIVED:docs/knowledge-base/screens/FrmTakozCikisi.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).
- Menüden değil kod içinden açılıyor; kullanıcı yolu doğrulanmalı.
