AIFA AKADEMI · Kurumsal Wiki
4.330 makale
Ana sayfa Kurumsal Wiki › Veritabanı › StoredProcedures › SP-POZISYON.WRITE

Pozisyon.Write

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

Tip: STORED PROCEDURE · Şema: Pozisyon · Modül: MOD-RAPOR · Temizlik sınıfı: MANUAL_REVIEW (kategori D, güven 80) · Kapsam: ERPGOLD_CORE / ALL

BASE künyesi ve kullanım haritası (v1.5 · 13.09.2026)

BASE DurumuBASE dışı — BASE Status: CANDIDATE_CANONICAL (Runtime Certification tamamlanmadı) · CTR-BASE-0104
BASE SınıfıUNKNOWN (BASE MASTER) · Wiki önerisi: UNKNOWN — kod kanıtı doğrulanmalı (Runtime Certification) · Action: MANUAL_REVIEW · Güven: LOW
Runtime CertificationPENDING (karar için gerekli) — BASE ile açılış/işlem testi yapılmadı; otomatik PASS yazılmadı
Kodda Kullanılıyor mu?EVET — doğrudan (Seviye-0) · BASE: UsedByApplication=NO (çelişki — CTR)
Kod Referans SayısıBASE taraması: 0 (uygulama kodunda string literal referansı yok) · Kullanım Haritası kanıtı: 1 kayıt
Kullanan EkranlarFrmPozisyon
Kullanan Class/Method
Incoming Dependency (bunu kullanan nesneler)
Outgoing Dependency (bunun kullandığı nesneler)Cari.BakiyeIslem, Cari.BakiyeKodlari, FN.Bol, Pozisyon.Pozisyonlar, Sistem.Activity, Sistem.Birimler, Sistem.GetKurListesi, Sistem.Kasalar, Sistem.Subeler, Stok.GetMadenStoklari … (+2)
Trigger İlişkisiyok
Ticket Problem AileleriPF-023, PF-034
Bilinen HatalarERR-POT-139, ERR-SIL-047, ERR-SIL-070 (Hata Bilgi Bankası; Gözlemlendi durumu kayıtta)
Bilinen SQL RiskleriSQLR-078
Health Check KuralıINV-19
Müşteri Özel mi?HAYIR
Opsiyonel Modül mü?HAYIR
Legacy mi?HAYIR
Son Doğrulama Tarihi13.09.2026 — statik analiz (katalog 2026-09-10 + kaynak kod taraması). Çalışma zamanı doğrulaması: PENDING

Kullanım haritası

Kullanım Haritası kategorisiA — ERPGOLD CORE · A-APP_CODE · güven 85
Derinlik / kök0 · bu nesne (Seviye-0)
DependencyPathERPGOLD → FrmPozisyon → Pozisyon.Write
Uzlaştırma03_Farkli_Sinif — Kullanım Haritası eski statik taramada (analysis_db.json app=YES) kod referansı gördü; BASE'in katı taraması (yorum satırı / VB sınıf adı / string dışı kimlik elenir) bulmadı → olası yanlış pozitif ya da BASE kaçağı. Runtime Certification karar verir

Bkz. ERPGOLD BASE · Uzlaştırma · Database Usage Map · Kullanım Haritası Direct · 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 WEAK
report NO
config NO
dynamic NO
db_in NO
db_out YES
trigger NO
fk NO
computed NO
crossdb NO
runtime UNKNOWN
external NO

Gerekçe: Kaynak kodda yalnızca zayıf ad eşleşmesi var (sınıf/özellik adı olabilir); ikinci turda incelendi

KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)

Tür: PROCEDURE (P) · Modül: MOD-RAPOR · Uzunluk: 63 satır

Özet

[GAP] Kaynakta açıklama yorumu yok; davranış aşağıdaki SQL tanımından ve ilişkilerden okunur.

Bağımlılıklar (bu nesne → hedef)

İlişki Hedef Tip
READS Cari.BakiyeIslem TABLE
CALLS Cari.BakiyeKodlari VIEW
CALLS FN.Bol FUNCTION
WRITES Pozisyon.Pozisyonlar TABLE
READS Sistem.Activity TABLE
READS Sistem.Birimler TABLE
CALLS Sistem.GetKurListesi FUNCTION
READS Sistem.Kasalar TABLE
READS Sistem.Subeler TABLE
CALLS Stok.GetMadenStoklari FUNCTION
CALLS Stok.GetNakitStoklari FUNCTION
CALLS Stok.GetTakozSirketStoklari FUNCTION

SQL tanımı (AS-IMPLEMENTED, örnek DB)

CREATE Proc  [Pozisyon].[Write]
as

if (Select count(*) from Sistem.Activity Where LastDate >(Select IsNull(Max(InsertDate),'2020-01-01') FRom Pozisyon.Pozisyonlar ))=0 RETURN

-----ONCE TEMP DOSYA YOKSA OLUSTUR VARSA ICINI TEMIZLE
    IF OBJECT_ID(N'tempdb..#TBLPozisyonlar') IS  NULL
        BEGIN
            CREATE TABLE [#TBLPozisyonlar]([SubeId] [int] NULL, [Birim] [nvarchar](max) NULL,   [Bakiye] [decimal](18, 2) NULL, [Kur1] [decimal](18, 5) NULL,   [Kur2] [decimal](18, 5) NULL,   [Pozisyon] [decimal](18, 2) NULL,   [BBirim] [nvarchar](max) NULL) ON [PRIMARY]
        END
    ELSE
        BEGIN
            TRUNCATE TABLE #TBLPozisyonlar
        END
--------------------------------------------------------------

-----GECICI POZISYON TABLOSUNA TUM SUBELERIN POZISYONLARINI HESAPLAYARAK YAZIYORUZ

    INSERT INTO #TBLPozisyonlar  
    Select H.SubeId,H.Birim,H.Bakiye,BK.Alis as Kur1,PK.Alis as Kur2,CONVERT(Decimal(18,2), Fn.Bol( (H.Bakiye * Bk.Alis),Pk.Alis)) as Pozisyon,  B.Kodu as BBirim from 
        (
                Select SubeId,Birim,Sum(Bakiye) as Bakiye From
                    (
                        Select K.SubeId, BK.Kodu  as Birim,B.Bakiye as Bakiye
                        from 
                        (
                            Select KasaId,BirimId,Sum(Bakiye) as Bakiye  from Cari.BakiyeIslem Where BirimId <>-1 group by KasaId,BirimId
                        ) B
                        Left Join Sistem.Kasalar K on K.Id =B.KasaId
                        Left Join Cari.BakiyeKodlari Bk on Bk.Id =B.BirimId 

                UNION ALL
                        ---NAKIT STOKLARI
                        Select  SubeId, AnaBirim ,Sum(Miktar)  From Stok.GetNakitStoklari (0,0,null)  group by SubeId, AnaBirim 
                UNION ALL
                        ---MADEN STOKLARI
                        Select SubeId,AnaBirim,Sum(Miktar * StabilMilyem) as Has From Stok.GetMadenStoklari (0,0,null,'False')  group by SubeId,AnaBirim
                UNION ALL
                        ---TAKOZ STOKLARI
                        SELECT T.SubeId,T.Birim,SUM(T.Has) FROM Stok.GetTakozSirketStoklari (0,0,null)
                        CROSS APPLY (VALUES(SubeId,'HAS',Case When R='False' Then Miktar * 0 Else AuHas end), (SubeId, 'GUM', AgHas ), (SubeId, 'PLT', PltHas ), (SubeId, 'PLD', PldHas  )) t(SubeId,Birim, Has) Where Adet <>0 and Has<>0
                        group by T.SubeId,Birim 
                    ) a
                Group by SubeId,Birim   having Sum(Bakiye)<>0
            ) H
            Left Join Sistem.Subeler S on S.Id =H.SubeId
            Left Join Sistem.Birimler B on B.Id =S.BilancoBirimId 
            Left Join Sistem.GetKurListesi(GETDATE()) PK on PK.Birim=B.Kodu 
            Left Join Sistem.GetKurListesi(GETDATE()) BK on BK.Birim=H.Birim

---------------------------------------------------------------------------------------------   


----POZISYON.POZISYONLAR TABLOSUNU SIFIRLAYARAK GECICI TABLODAKI BILGILERI BURAYA YAZIYORUZ.

    TRUNCATE TABLE Pozisyon.Pozisyonlar 
    INSERT INTO Pozisyon.Pozisyonlar([SubeId],[Birim],[Bakiye],[Kur1],[Kur2],[Pozisyon],[BBirim]) SELECT P.* FROM #TBLPozisyonlar P Left Join Sistem.Birimler B on B.Kodu  COLLATE Turkish_CI_AS =P.Birim Order by B.SiraNo 
---------------------------------------------------------------------------------------------

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).