Sınıf: FrmTakozGiris · Modül: MOD-CARI · Türetildiği: DevExpress.XtraEditors.XtraForm · Yaşam döngüsü: ACTIVE_CRITICAL · Kapsam: KUYUMCU_VARIANT
Nedir?
Takoz Giris Ekranı — Seri İşlem penceresinin 2 - TAKOZ G. düğmesiyle açılan, müşterinin getirdiği takozu (külçeyi) stoğa alan ayrı penceredir; Cari İşlemler içindeki TAKOZ GİRİŞİ satırının seri-pencere eşidir [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozGiris.vb:88-420] [SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmSeriIslem.vb:287-291]. Her kayıt iki şey yapar: önce Stok.Takoz'a yeni bir takoz kartı açar (TK numarası, brüt gram, çeşni, ayar evi, rapor no, dört metalin milyem/has'ı ve kayıt anındaki kurlar), sonra Cari.Islemler'e IslemKodu 0 TAKOZ · IslemTuru 0 GİRİŞ · Adet 1 satırı yazar; işlem yazılamazsa takoz kartı silinir [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md adım 5] [BUSINESS_RULE:BR-STOK-013]. RAPORLU takozda ayar raporundaki milyemler girilir ve has hesaplanır; RAPORSUZ takozda milyem/tutar boş kalır, has karşılığı raporlarda varsayımla (0,600) değerlenir [BUSINESS_RULE:BR-TAKOZ-003] [DOCUMENT:00_Governance/CONTRADICTIONS.md#ctr-sym-takoz-01]. Sağdaki BAKIYE kutusu has/gümüş/platin/paladyum ve işçilik toplamlarını anlık gösterir.
Ne zaman kullanılır?
- Müşteri rafineriye/ayar evine gidecek ya da oradan dönmüş bir külçeyi tezgâha bıraktığında [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md].
- Raporsuz alınan takoza sonradan ayar raporu girilirken (Seri İşlem listesinde DUZELT → bu pencere; raporsuz takoz düzeltme kilitlerinden muaf,
Takoz.RaporYazçalışır) [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md#varyantlar] [BUSINESS_RULE:BR-STOK-014] [DOCUMENT:06_Workflows/WF-TAKOZ-RAPOR-GIRISI.md]. - Devir sonrası takozları geri alırken (Blok Takoz akışı) [DOCUMENT:06_Workflows/WF-BLOK-TAKOZ-GIRIS.md].
- Ön koşullar: grupta Takoz yetkisi; hesap şube (transfer) hesabı değil ("Transfer İşlemlerinde Giriş İşlemi Yapamazsınız"); takoz tipi ve ayar evi tanımlı (FrmAyarEviTanimlama,
Sistem.TakozTipleri) [BUSINESS_RULE:BR-TAKOZ-001].
Adım adım kullanım
- Seri İşlem Ekranı'nda hesap seçilip TAMAM denmiş olmalı; 2 - TAKOZ G. basılır.
- TAKOZ TIPI (ana madeni işlem tipini belirler: HAS→ALTIN, GUM→GÜMÜŞ, PLT→PLATİN, PLD→PALADYUM) ve AYAR EVI seçilir [BUSINESS_RULE:BR-TAKOZ-002]. Rapor varsa TAKOZ NO/rapor no yazılır, RAPORLU ve NORMAL / EXTRA seçilir; rapor no boşken durum RAPORSUZ'a kilitlidir ve milyem alanları gizlenir [SOURCE_CODE:FrmTakozGiris.vb:424-444,723-733].
- MİKTAR / ÇEŞNİ girilir (terazi düğmesi kullanılabilir). Raporluda AU MILYEM, AG MILYEM (EXTRA'da PT MILYEM, PD MILYEM) 1000'lik girilir; her milyem kutusundan çıkışta toplam kontrol edilir [SOURCE_CODE:FrmTakozGiris.vb:470-564].
- AU ISCILIK / AG ISCILIK (binde) ve birimleri hesap kartından dolu gelir; İŞÇİLİK DURUMU (Altından Düş / Para İle — Para İle'de birim kutusu açılır, varsayılan TL), GÜMÜŞ DURUMU (EXTRA'da PLATİN / PLD. DURUMU), KAYIT DURUM (Printli / Printsiz), ACIKLAMA [SOURCE_CODE:FrmTakozGiris.vb:445-457] [SOURCE_CODE:FrmTakozGiris.Designer.vb:249-805].
- Barkod kutusuna takoz numarası/barkod okutulursa kart bulunur; bulunamazsa "… Numaralı Takoz Bulunamadı." [SOURCE_CODE:FrmTakozGiris.vb:784-800]. Seri kayıt modunda barkod okutulunca kayıt anında atılır [DOCUMENT:12_Support/KnownIssues/H-074.md].
- F2 - KAYIT: onay sorusu çıkmaz; işçilik 0 ise "Has İşçiliği Girilmemiş…" / "Gumus İşçiliği Girilmemiş… Devam Etmek İstiyormusunuz ?" sorulur; takoz kartı + işlem kaydedilir; Printli ise etiket/fiş basılır; ekran temizlenir, imleç AYAR EVI'ne döner [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md adım 5-6] [BUSINESS_RULE:BR-TAKOZ-008].
Alanların anlamı
| Ekran etiketi | İş anlamı (kolon) |
|---|---|
| TAKOZ TIPI | Stok.Takoz.TakozTipi (→ Sistem.TakozTipleri); ana birimi işlem tipini belirler |
| AYAR EVI | Cari.Islemler.AyarEviId, Stok.Takoz.AyarEvi/AyarEviId |
| TAKOZ NO / (rapor no) | RaporNo (işlem ve kart); dolu olması RAPORLU seçimine izin verir |
| RAPORSUZ / RAPORLU | IsRapor; raporsuzda milyem ve tutar NULL yazılır [BUSINESS_RULE:BR-TAKOZ-003] |
| NORMAL / EXTRA | IsExtra; extra takozda platin/paladyum alanları açılır |
| MİKTAR / ÇEŞNİ | Brüt gram (Miktar) ve ayar için alınan numune gramı (CesniMiktar); çeşni ayrıca takoz kartına yazılır [BUSINESS_RULE:BR-TAKOZ-009] |
| AU / AG / PT / PD MILYEM | 1000'lik ayar; işleme /1000 ile AuMilyem, AgMilyem, PltMilyem, PldMilyem |
| AU ISCILIK / AG ISCILIK (+birim) | Has/gümüş işçiliği binde → HasIsc, HasIscBirimId, HasIscBirimKur, GumIsc, …; Fiyat alanına AU işçilik ham değeri yazılır |
| İŞÇİLİK DURUMU (+birim) | 0 Altından Düş (birim HAS) · 1 Para İle (seçilen nakit birim) → IscilikDurumu, BirimId/Birim, IscilikBirimId [BUSINESS_RULE:BR-TAKOZ-004] |
| GÜMÜŞ / PLATİN / PLD. DURUMU | 0 Madeni Ver · 1 Altına Çevir · 2 İşçilikten Düş · 3 Madeni Bırak (GumusDurumu, PlatinDurumu, PalladiumDurumu) |
| KAYIT DURUM (Printli/Printsiz) | Kayıtta takoz fişi basılsın mı (yazıcı ayarlarına bağlı) [BUSINESS_RULE:BR-TAKOZ-008] |
| BAKIYE kutusu (HAS / GUM / PLT / PLD, işçilik) | Anlık hesaplanan has karşılıkları ve işçilik bedeli; kayıtta Tutar = işçilik ara toplamı |
| ACIKLAMA | Aciklama |
Makaledeki otomatik alan tablosundaki etiketler (ör. "GÜMÜŞ DURUMU | TxtMiktar") kaymıştır; gerçek etiketler yukarıdadır [SOURCE_CODE:FrmTakozGiris.Designer.vb:249-1730].
Hesaplama / doğrulama mantığı
- HAS = (MİKTAR + ÇEŞNİ) × AU MILYEM / 1000, GUM/PLT/PLD aynı biçimde [BUSINESS_RULE:BR-HESAP-015] [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md adım 3].
- İşçilik bedeli = İşçilik(binde) × HAS / 1000, birim kuruyla çevrilir;
Tutar = |işçilik ara toplamı|(raporluda), raporsuzda boş [BUSINESS_RULE:BR-HESAP-016] [SOURCE_CODE:FrmTakozGiris.vb:283-300]. - Milyem Toplamı 1000'i Geçemez. — alan silinir [BUSINESS_RULE:BR-HESAP-017]; Has Takozu Giriyorsunuz. Has Milyemi Diğer Milyemlerden Düşük Olamaz… uyarısı (GUMUS/PLATİN/PALLADIUM sürümleri) [BUSINESS_RULE:BR-HESAP-018] [DOCUMENT:12_Support/KnownIssues/H-068.md].
- Has/Gumus İşçiliği Girilmemiş. Devam Etmek İstiyormusunuz ? [BUSINESS_RULE:BR-HESAP-019]; Takoz Bilgileri Kayıt Edilemedi. / Takoz Bilgileri Alınamadı. / Islem Kayıt Edilemedi. — kart/işlem yazılamadı.
- Kayıt anındaki AuKur/AgKur/PldKur/PltKur takoz kartına yazılır; düzeltmede eski kurlar kullanılır [BUSINESS_RULE:BR-KUR-011] [BUSINESS_RULE:BR-KUR-003].
- Takoz girişi tek adet ve bugün vadeli (
Adet=1,Vade=Now) [BUSINESS_RULE:BR-TAKOZ-007]. Etiket yalnızMiktar > 30gr ve yeni kayıtta basılır [DOCUMENT:09_CodeArchitecture/CONFIGURATION.md#cfg-hard-takoz-etiket-30gr]. - Genel doğrulamalar
Islem.Validate: "Sube,Kasa veya Hesap Seçili Değil…", "İşlem Yapabilmek için Miktar Girmelisiniz.", "Geçmiş Tarihe İşlem Giriyorsunuz…" (resmi kasada sorulmaz) [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md#uyarı-mesajları]. - İki boş
catch(TL birimi bulunamazsa vb.) hatayı yutar (TD-EMPTY-CATCH); kod içindekisistem.AyarEviSELECT'i canlı DB'de olmayan tabloya gider (kitapçık §8.5 — ayar evi tanımıSistem.Sistem.AyarEvi_) — GAP-SCR-TAKOZGIRIS-AYAREVI: ayar evi listesinin hangi tablodan dolduğu doğrulanmalı.
Stok / bakiye / rapor etkisi
İşlem ekranıdır: Stok.Takoz kartı açılır (Elimizde); Cari.Islemler satırı için TRG-CARI.ACCEPTTRANSACTION stok defterine StokTipi 3, Adet +1 (miktar/has 0 — takoz nesne olarak izlenir) ve bakiye defterine hesap için TAKOZ/HAS sütununa (miktar+çeşni) gram alacak, işçilik Tutar/Birim borç yazar; çeşni gramı çeşni stoğuna eklenir; kasa değişmez [DOCUMENT:06_Workflows/WF-TAKOZ-GIRIS.md#sonuç] [BUSINESS_RULE:BR-STOK-002] [BUSINESS_RULE:BR-DEFTER-URETIMI] [DOCUMENT:kitap#9.5]. Hareketi olan takozun girişi iptal edilemez [BUSINESS_RULE:BR-STOK-008]. Kuyumcu DB ölçümü: takoz girişlerinin %29'unda bakiye has'ı ölçülenden ortalama %0,27 fazla — kodda karşılığı yok (GAP-TAKOZ-FIRE).
Sık yapılan kullanıcı hataları
- "Transfer İşlemlerinde Giriş İşlemi Yapamazsınız" — şube hesabı seçilmiş [DOCUMENT:12_Support/KnownIssues/H-069.md].
- "«no» Numaralı Takoz Bulunamadı." — barkod/takoz no yanlış [DOCUMENT:12_Support/KnownIssues/H-070.md].
- "Milyem Toplamı 1000'i Geçemez." / "Has Takozu Giriyorsunuz…" [DOCUMENT:12_Support/KnownIssues/H-067.md] [DOCUMENT:12_Support/KnownIssues/H-068.md].
- "Has İşçiliği Girilmemiş…" — hesap kartında takoz işçiliği tanımsız [DOCUMENT:12_Support/KnownIssues/H-066.md] [PROCESS:PROC-152].
- Seri kayıt modunda barkod okutunca anında kaydediyor [DOCUMENT:12_Support/KnownIssues/H-074.md].
- Küçük takozun etiketi çıkmıyor — 30 gr eşiği; etiket yazıcısı tanımsız [DOCUMENT:12_Support/KnownIssues/H-073.md] [DOCUMENT:12_Support/KnownIssues/H-157.md] [DOCUMENT:12_Support/Playbooks/PB-026.md].
- Takoz stokta görünmüyor / "Elimizde" süzgeci boş — kasa/şube farkı [DOCUMENT:12_Support/KnownIssues/H-117.md] [DOCUMENT:12_Support/Playbooks/PB-049.md].
İlgili ticket temaları
- PRB-TAKOZ-000, PRB-YAZICI-000; zincirler SYM-TAKOZ, SYM-YAZICI.
- Playbook'lar: PB-049, PB-026.
Müşteri varyasyonları
KUYUMCU_VARIANT: takoz akışı yalnız kuyumcu/rafineri kurulumunda kullanılır (KUYUMCU DB'de 10.618 aktif takoz, %99,9 raporlu, %17 çeşnili; su tartısı/skala hiç, XRF 7 kez kullanılmış — tasarlanan akışın büyük bölümü kullanılmıyor) [DOCUMENT:kitap#9.5].- Etiket/fiş otomatik basımı kullanıcı ayarlarına (
OtoEtiketBas,EtiketPrinter,OtoFisBas,FisPrinter) bağlıdır [DOCUMENT:09_CodeArchitecture/CONFIGURATION.md#cfg-client-otoetiketbas].
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 |
|---|---|---|---|
| PLATİN DURUMU | CmbAyarEvi |
Cari.Islemler.AyarEviId |
yaz |
| İŞÇİLİK DURUMU | CmbPlatinDurum |
Cari.Islemler.PlatinDurumu |
yaz |
| ACIKLAMA | TxtAciklama |
Cari.Islemler.Aciklama |
yaz |
| PLATİN DURUMU | TxtRaporNo |
Cari.Islemler.RaporNo |
yaz |
| GÜMÜŞ DURUMU | CmbPaladiumDurum |
Cari.Islemler.PalladiumDurumu |
yaz |
| GÜMÜŞ DURUMU | TxtMiktar |
Cari.Islemler.Miktar |
yaz |
| GÜMÜŞ DURUMU | TXTCesni |
Cari.Islemler.CesniMiktar |
yaz |
| GÜMÜŞ DURUMU | CmbRapor |
Cari.Islemler.IsRapor |
yaz |
| GÜMÜŞ DURUMU | CmbExtra |
Cari.Islemler.IsExtra |
oku |
| AU MILYEM | TxtHasIscFiyat |
Cari.Islemler.Fiyat |
yaz |
| AU MILYEM | CmbHasIscBirim |
Cari.Islemler.HasIscBirimId |
yaz |
| İŞÇİLİK DURUMU | CmbIscBirim |
Cari.Islemler.BirimId |
oku |
| ACIKLAMA | CmbGumIscBirim |
Cari.Islemler.GumIscBirimId |
yaz |
| İŞÇİLİK DURUMU | CmbIscilikDurumu |
Cari.Islemler.IscilikDurumu |
yaz |
| GÜMÜŞ DURUMU | CmbGumusDurum |
Cari.Islemler.GumusDurumu |
yaz |
| AG ISCILIK | CmbTakozTipi |
Stok.Takoz.TakozTipi |
yaz |
| PLATİN DURUMU | CmbAyarEvi |
Stok.Takoz.AyarEvi |
yaz |
| PLATİN DURUMU | CmbAyarEvi |
Stok.Takoz.AyarEviId |
oku |
| PLATİN DURUMU | TxtRaporNo |
Stok.Takoz.RaporNo |
oku |
| GÜMÜŞ DURUMU | TxtMiktar |
Stok.Takoz.Miktar |
oku |
| GÜMÜŞ DURUMU | TXTCesni |
Stok.Takoz.CesniMiktar |
yaz |
| GÜMÜŞ DURUMU | CmbRapor |
Stok.Takoz.IsRapor |
oku |
| GÜMÜŞ DURUMU | CmbExtra |
Stok.Takoz.IsExtra |
oku |
| AU MILYEM | TxtBarkod |
Stok.Takoz.OwnerId |
oku |
Kullanıcı olayları
| Olay | Metot | Dosya:satır |
|---|---|---|
CmbTakozTipi.GotFocus |
CmbTakozTipi_GotFocus |
FrmTakozGiris.vb:9 |
CmbTakozTipi.LostFocus |
CmbTakozTipi_LostFocus |
FrmTakozGiris.vb:12 |
CmbTakozTipi.KeyDown |
_KeyDown |
FrmTakozGiris.vb:15 |
BtnKapat.Click |
FormClose |
FrmTakozGiris.vb:37 |
Me.Shown |
FormInit |
FrmTakozGiris.vb:88 |
BtnKaydet.Click |
FormSave |
FrmTakozGiris.vb:234 |
CmbRapor.SelectedIndexChanged, CmbExtra.SelectedIndexChanged |
onRaporChanged |
FrmTakozGiris.vb:424 |
CmbIscilikDurumu.SelectedIndexChanged |
OnIscilikTipiChanged |
FrmTakozGiris.vb:445 |
TxtHasMilyem.LostFocus, TxtGumMilyem.LostFocus, TxtPldMilyem.LostFocus, TxtPltMilyem.LostFocus |
ValidateMilyem |
FrmTakozGiris.vb:470 |
TxtMiktar.TextChanged, TxtHasMilyem.TextChanged, TXTCesni.TextChanged |
onXAUCalculate |
FrmTakozGiris.vb:565 |
TxtMiktar.TextChanged, TxtGumMilyem.TextChanged, TXTCesni.TextChanged |
onXAGCalculate |
FrmTakozGiris.vb:570 |
TxtMiktar.TextChanged, TxtPldMilyem.TextChanged, TXTCesni.TextChanged |
onXPDCalculate |
FrmTakozGiris.vb:575 |
TxtMiktar.TextChanged, TxtPltMilyem.TextChanged, TXTCesni.TextChanged |
OnXPTCalculate |
FrmTakozGiris.vb:580 |
TxtHasIscFiyat.TextChanged, CmbHasIscBirim.EditValueChanged, Me.XAuChanged |
onXAUCostChanged |
FrmTakozGiris.vb:585 |
TxtGumIscFiyat.TextChanged, CmbGumIscBirim.EditValueChanged, Me.XAgChanged |
onXAGCostChanged |
FrmTakozGiris.vb:590 |
Me.ValueChanged, CmbIscilikDurumu.SelectedIndexChanged, CmbIscBirim.EditValueChanged |
CalculateIscilik |
FrmTakozGiris.vb:595 |
Me.XAgChanged, CmbGumusDurum.SelectedIndexChanged, CmbIscilikDurumu.SelectedIndexChanged, CmbIscBirim.EditValueChanged |
CalculateGumus |
FrmTakozGiris.vb:617 |
Me.XPtChanged, CmbPlatinDurum.SelectedIndexChanged, CmbIscilikDurumu.SelectedIndexChanged, CmbIscBirim.EditValueChanged |
CalculatePlatin |
FrmTakozGiris.vb:642 |
Me.XPdChanged, CmbPaladiumDurum.SelectedIndexChanged, CmbIscilikDurumu.SelectedIndexChanged, CmbIscBirim.EditValueChanged |
CalculatePaladium |
FrmTakozGiris.vb:666 |
Me.Calculated |
OnCalculated |
FrmTakozGiris.vb:691 |
TxtRaporNo.TextChanged |
RaporNoChanged |
FrmTakozGiris.vb:723 |
TxtHasIscFiyat.EditValueChanged |
TxtHasIscEditValueChanged |
FrmTakozGiris.vb:734 |
TxtGumIscFiyat.EditValueChanged |
TxtGumIscEditValueChanged |
FrmTakozGiris.vb:743 |
GridView1.CustomDrawCell |
CustomDrawCell |
FrmTakozGiris.vb:753 |
TxtBarkod.Validated |
TxtBarkod_Validated |
FrmTakozGiris.vb:784 |
Okuduğu / yazdığı tablolar (kod içi SQL, statik)
| Tablo | Fiiller |
|---|---|
sistem.AyarEvi ⚠︎ 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).
Kullanıcıya gösterilen mesajlar (doğrulama)
- Gumus İşçiliği Girilmemiş. Devam Etmek İstiyormusunuz ?
- Has İşçiliği Girilmemiş. Devam Etmek İstiyormusunuz ?
- Islem Kayıt Edilemedi.
- Milyem Toplamı 1000'i Geçemez.
- Takoz Bilgileri Alınamadı.
- Takoz Bilgileri Kayıt Edilemedi.
Bilinen kusurlar / dikkat
- Boş
catchbloğu: 2 — hata yutuluyor (TD-EMPTY-CATCH).
Kaynaklar
SOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozGiris.Designer.vbSOURCE_CODE:ERPPRO/Controls/Islem Ekranı/Ekran/SeriIslemEkrani/FrmTakozGiris.vbDERIVED:KnowledgeBase/02_Screens/FrmTakozGiris.md(KB-v1 anlatım)DERIVED:docs/knowledge-base/screens/FrmTakozGiris.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ı.
