AIFA AKADEMI · Kurumsal Wiki
4.310 makale
Ana sayfa Kurumsal Wiki › Veritabanı › Functions › FN-STOK.GETMADENMALIYETI

Stok.GetMadenMaliyeti

FUNCTIONMOD-STOKERPGOLD_COREINDIRECTLY_USEDVERY_HIGH[SOURCE_IMPLEMENTED]
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

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)

KategoriB — INDIRECT DEPENDENCY · B-INDIRECT
Güven95
Derinlik / kök1 · Stok.GetMadenStok
DependencyPathERPGOLD → 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_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).