Tip: SCALAR FUNCTION · Şema: Stok · Modül: MOD-STOK · Temizlik sınıfı: INDIRECTLY_USED (kategori B, güven 0) · Kapsam: ERPGOLD_CORE / ALL
Kullanım haritası (13.09.2026)
| Kategori | B — INDIRECT DEPENDENCY · B-INDIRECT |
| Güven | 95 |
| Derinlik / kök | 1 · Stok.GetMadenStok |
| DependencyPath | ERPGOLD → Stok.MadenStokDetay → Stok.GetMadenStok → Stok.GetMadenMaliyeti |
Bkz. Database Usage Map · Core Database Objects. 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)
| İlişki | Hedef | Tip |
|---|---|---|
| CALLS | FN.Bol | FUNCTION |
| READS | Sistem.Kurlar | TABLE |
| READS | Stok.Maden | TABLE |
| READS | Stok.StokHaraketleri | TABLE |
Bu nesneyi kullananlar
| Nesne | Tip |
|---|---|
| Stok.GetMadenStok | FUNCTION |
| Stok.GetMadenStoklari | FUNCTION |
İ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_modulestanımı (salt okunur); gizli sabitler[REDACTED_SECRET]ile değiştirildi.
Bilinmeyenler
- Hangi sürümde eklendiği:
createdDB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).
