Tip: SCALAR FUNCTION · Şema: Stok · Modül: MOD-STOK · Temizlik sınıfı: INDIRECTLY_USED (kategori B, güven 0) · Kapsam: ERPGOLD_CORE / ALL
BASE künyesi ve kullanım haritası (v1.5 · 13.09.2026)
| BASE Durumu | BASE'e dahil — BASE Status: CANDIDATE_CANONICAL |
| BASE Sınıfı | BASE-DEPENDENCY (BASE MASTER) · Wiki önerisi: BASE-DEPENDENCY · Action: INCLUDE_IN_BASE · Güven: HIGH |
| Runtime Certification | PENDING — BASE ile açılış/işlem testi yapılmadı; otomatik PASS yazılmadı |
| Kodda Kullanılıyor mu? | DOLAYLI — yalnız bağımlılık zinciriyle |
| Kod Referans Sayısı | BASE taraması: 0 (uygulama kodunda string literal referansı yok) · Kullanım Haritası kanıtı: 0 kayıt |
| Kullanan Ekranlar | — |
| Kullanan Class/Method | — |
| Incoming Dependency (bunu kullanan nesneler) | Stok.GetMadenStok, Stok.GetMadenStoklari |
| Outgoing Dependency (bunun kullandığı nesneler) | FN.Bol, Sistem.Kurlar, Stok.Maden, Stok.StokHaraketleri |
| Trigger İlişkisi | yok |
| Ticket Problem Aileleri | PF-005, PF-034, PF-076 |
| Bilinen Hatalar | ERR-OBS-005, ERR-OBS-076, ERR-OBS-210, ERR-SIL-045, ERR-SIL-049 (Hata Bilgi Bankası; Gözlemlendi durumu kayıtta) |
| Bilinen SQL Riskleri | — |
| Health Check Kuralı | OBJ-02 |
| Müşteri Özel mi? | HAYIR |
| Opsiyonel Modül mü? | HAYIR |
| Legacy mi? | HAYIR |
| Son Doğrulama Tarihi | 13.09.2026 — statik analiz (katalog 2026-09-10 + kaynak kod taraması). Çalışma zamanı doğrulaması: PENDING |
Kullanım haritası
| Kullanım Haritası kategorisi | B — INDIRECT DEPENDENCY · B-INDIRECT · güven 95 |
| Derinlik / kök | 1 · Stok.GetMadenStok |
| DependencyPath | ERPGOLD → Stok.MadenStokDetay → Stok.GetMadenStok → Stok.GetMadenMaliyeti |
Bkz. ERPGOLD BASE · Uzlaştırma · Database Usage Map · Kullanım Haritası Core · Hata Bilgi Bankası. BASE Status: CANDIDATE_CANONICAL · Runtime Certification: PENDING · Hiçbir DB değişikliği yapılmadı; SAFETY > CLEANUP.
Temizlik kanıtı
| Kontrol |
Sonuç |
| app |
NO |
| report |
NO |
| config |
NO |
| dynamic |
NO |
| db_in |
YES |
| db_out |
YES |
| trigger |
NO |
| fk |
NO |
| computed |
NO |
| crossdb |
NO |
| runtime |
UNKNOWN |
| external |
NO |
Gerekçe: Stok.GetMadenStok → Stok.GetMadenMaliyeti (catalog)
KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)
Tür: FUNCTION (FN) · Modül: MOD-STOK · Uzunluk: 40 satır
Özet
Bir maden stok kaleminin, verilen miktar için maliyetini son-giren-ilk-çıkar (LIFO) mantığıyla hesaplar. En fazla 50 giriş partisine bakar; sonucu maliyet biriminin son kuruyla çevirir.
Parametreler
| # |
Parametre |
Tip |
Çıktı |
| 1 |
@SubeId |
int |
|
| 2 |
@KasaId |
int |
|
| 3 |
@StokId |
int |
|
| 4 |
@Tarih |
date |
|
| 5 |
@StokMiktar |
decimal |
|
Bağımlılıklar (bu nesne → hedef)
Bu nesneyi kullananlar
İlgili iş kuralları
- TOP 50 giriş hareketini IslemId DESC gezip eldeki miktarı kapatır (LIFO); adı 'ortalama' olsa da ortalama değildir (Stok.GetMadenMaliyeti.md; kitapcik 2.6)
- 50'den fazla parti gerekiyorsa maliyet sessizce eksik hesaplanır (kitapcik 2.6)
- Maliyet, MaliyetBirimId'nin en son kuruyla çevrilir — geçmiş rapor bugünkü kurla çıkar (kitapcik 2.6)
SQL tanımı (AS-IMPLEMENTED, örnek DB)
CREATE Function Stok.GetMadenMaliyeti (@SubeId int,@KasaId int,@StokId int,@Tarih as Date,@StokMiktar Decimal(18,2))
returnS Decimal(18,2)
as
BEGIN
Declare @IscTur int=0
Declare @BirimId int =0
Select @IscTur=IscTuru,@BirimId =MaliyetBirimId From Stok.Maden Where Id=@StokId
Declare @Miktar Decimal(18,2)=0
Declare @Maliyet Decimal(18,2)=0
Declare @ToplamMiktar Decimal(18,2)=0
Declare @ToplamMaliyet Decimal(18,2)=0
Declare @IsExit as int =0
DECLARE CRS_MadenBirimMaliyetTL CURSOR FOR
Select top 50 Case When @IscTur =0 Then Adet Else Miktar End as Miktar,Maliyet FRom Stok.StokHaraketleri Where (Tarih<=@Tarih or @Tarih is null) and (SubeId=@SubeId or @SubeId =0) And (KasaId =@KasaId Or @KasaId =0) And StokId=@StokId and StokTipi =1 And IslemTuru =0 Order By IslemId Desc
OPEN CRS_MadenBirimMaliyetTL
FETCH NEXT FROM CRS_MadenBirimMaliyetTL INTO @Miktar,@Maliyet
WHILE @@FETCH_STATUS =0 and @IsExit =0
BEGIN
if (@ToplamMiktar + @Miktar)<=@StokMiktar
BEGIN
set @ToplamMiktar +=@Miktar
Set @ToplamMaliyet +=@Maliyet
END
ELSE
BEGIN
Set @ToplamMaliyet +=FN.Bol (@Maliyet ,@Miktar) * (@StokMiktar - @ToplamMiktar)
Set @ToplamMiktar = @StokMiktar
SET @IsExit =1
END
FETCH NEXT FROM CRS_MadenBirimMaliyetTL INTO @Miktar,@Maliyet
END
CLOSE CRS_MadenBirimMaliyetTL
DEALLOCATE CRS_MadenBirimMaliyetTL
RETURN CONVERT(Decimal(18,2), FN.Bol(@ToplamMaliyet,(Select top 1 Alis From Sistem.Kurlar Where BirimId=@BirimId Order By Tarih Desc)))
END
Kaynaklar
- SRC-DB-MODULES —
sys.sql_modules tanımı (salt okunur); gizli sabitler [REDACTED_SECRET] ile değiştirildi.
Bilinmeyenler
- Hangi sürümde eklendiği:
created DB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).