AIFA AKADEMI · Kurumsal Wiki
4.330 makale
Ana sayfa Kurumsal Wiki › Veritabanı › Triggers › TRG-URETIM.TRBAKIYEHESAPLA

Uretim.TrBakiyeHesapla

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

Tip: TRIGGER · Şema: Uretim · Modül: MOD-URETIM · Temizlik sınıfı: INDIRECTLY_USED (kategori C, güven 0) · Kapsam: ERPGOLD_CORE / ALL

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

BASE DurumuBASE'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 CertificationPENDING — 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)Uretim.UretimIslemleri
Outgoing Dependency (bunun kullandığı nesneler)Sistem.Birimler, Sistem.Kasalar, Sistem.Settings, Stok.StokHaraketleri, Uretim.BakiyeDetay, Uretim.UretimIslemleri
Trigger İlişkisiTetikleyici → bağlı tablo: Uretim.UretimIslemleri
Ticket Problem AileleriPF-030
Bilinen HatalarERR-POT-129, ERR-SIL-072 (Hata Bilgi Bankası; Gözlemlendi durumu kayıtta)
Bilinen SQL RiskleriSQLR-067
Health Check KuralıTRG-03
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ı kategorisiB — INDIRECT DEPENDENCY · B-TRIGGER · güven 95
Derinlik / kök1 · Uretim.UretimIslemleri
DependencyPathERPGOLD → Uretim.Islem → Uretim.UretimIslemleri → Uretim.TrBakiyeHesapla

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 YES
fk NO
computed NO
crossdb NO
runtime UNKNOWN
external NO

Gerekçe: Uretim.UretimIslemleri → Uretim.TrBakiyeHesapla (trigger (tablo→tetikleyici))

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

Tür: TRIGGER (TR) · Modül: MOD-URETIM · Uzunluk: 107 satır

Tablo: Uretim.UretimIslemleri · Olay: INSERT,UPDATE,DELETE

Özet

Uretim.UretimIslemleri üzerinde INSERT/UPDATE/DELETE sonrası çalışır; üretim işleminin türüne (Islem 1-7) göre Uretim.BakiyeDetay ve gerektiğinde Stok.StokHaraketleri (Bolum=1) satırlarını IslemId bazında sil-yeniden-yaz eder.

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

İlişki Hedef Tip
READS Sistem.Birimler TABLE
READS Sistem.Kasalar TABLE
READS Sistem.Settings TABLE
WRITES Stok.StokHaraketleri TABLE
WRITES Uretim.BakiyeDetay TABLE

Ürettiği hata mesajları

  • "ISLEMLERI DIREK SILEMEZSINIZ ?."

İlgili iş kuralları

  • IslemId için önce Stok.StokHaraketleri (Bolum=1) ve Uretim.BakiyeDetay eski satırlarını siler (Uretim.TrBakiyeHesapla.md)
  • Islem: 1 TRANSFER, 2 ÜRETİM GİRİŞ, 3 ÜRETİM ÇIKIŞ, 4 FİRE, 5 RAMAT, 6 DİĞER, 7 ÇEVİRME olarak dallanır (Uretim.TrBakiyeHesapla.md)
  • ÜRETİM GİRİŞ/ÇIKIŞ ayrıca Stok.StokHaraketleri'ne Bolum=1 satırı yazar; global UrtIslemCur cursor kullanır (Uretim.TrBakiyeHesapla.md)

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

CREATE Trigger [Uretim].[TrBakiyeHesapla]  ON [Uretim].[UretimIslemleri] AFTER INSERT,UPDATE,DELETE
    AS 
    BEGIN
           Declare @IslemId int
           Declare @SubeId int
           Declare @Tarih date
           Declare @Islem int
           Declare @CikanBolumId int
           Declare @GirenBolumId int
           Declare @StokId int
           Declare @Kodu nvarchar(max)
           Declare @Adet int
           Declare @Miktar decimal(18,2)
           Declare @Milyem decimal(18,5)
           Declare @Has decimal(18,2)
           Declare @Fiyat decimal(18,5)
           Declare @FTipi int
           Declare @Tutar decimal(18,2)
           Declare @Birim nvarchar(50)
           Declare @BirimId int
           Declare @GrupKodu nvarchar(50)
           Declare @Kategori nvarchar(50)
           Declare @Aciklama nvarchar(max)
           Declare @UserId int
           Declare @InsertDate datetime
           Declare @IsDeleted bit
        if (Select count(*) From Inserted) = 0  and (Select count(*) From deleted) > 0  
            BEGIN
            RAISERROR('ISLEMLERI DIREK SILEMEZSINIZ ?. ',16,1)
            ROLLBACK
        END
                    Declare @HasBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select HasSymbol From Sistem.Settings))
                    Declare @GumBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select GumSymbol From Sistem.Settings))
                    Declare @PltBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select PltSymbol From Sistem.Settings))
                    Declare @PldBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select PldSymbol From Sistem.Settings))
            DECLARE UrtIslemCur CURSOR FOR Select Id,[SubeId],[Tarih],[Islem],[CikanBolumId],[GirenBolumId],[StokId],[Kodu],[Adet],[Miktar],[Milyem],[Has],[Fiyat],[FTipi],[Tutar],[Birim],[BirimId],[GrupKodu],[Kategori],[Aciklama],[UserId],[InsertDate],[IsDeleted] From Inserted I 
            OPEN UrtIslemCur 
            FETCH NEXT FROM UrtIslemCur  INTO  @IslemId,@SubeId,@Tarih,@Islem,@CikanBolumId,@GirenBolumId,@StokId,@Kodu,@Adet,@Miktar,@Milyem,@Has,@Fiyat,@FTipi,@Tutar,@Birim,@BirimId,@GrupKodu,@Kategori,@Aciklama,@UserId,@InsertDate,@IsDeleted 
            WHILE @@FETCH_STATUS =0
            BEGIN 
            Declare @KasaId int = (Select Top 1 Id From Sistem.Kasalar  Where IsDeleted ='False' And SubeId =@SubeId)

            Delete From Stok.StokHaraketleri Where IslemId =@IslemId and Bolum=1
            Delete From Uretim.BakiyeDetay Where IslemId=@IslemId 

            if @IsDeleted='False'
            BEGIN
                if @Islem = 1 ---TRANSFER 
                BEGIN
                Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                                        Values(0,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet *-1 ,@Miktar *-1) 
                Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                                        Values(0,@IslemId,@Tarih,@GirenBolumId ,@BirimId ,@Adet  ,@Tutar) 
                END
                if @Islem = 2 ---URETIMGIRIS 
                BEGIN
                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                                Values(0,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet *-1 ,@Miktar *-1) 

                    Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
                    Values(1,@IslemId,0,@Tarih,@SubeId,@KasaId,1,@BirimId  ,@Adet ,@Tutar,@Fiyat,@Tutar * @Fiyat ,0)
                END
                if @Islem = 3 ---URETIMCIKIS 
                BEGIN
                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,IslemId,[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(0,@IslemId,@Tarih,@CikanBolumId ,@BirimId ,@Adet  ,@Tutar) 


                    Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
                    Values(1,@IslemId,1,@Tarih,@SubeId,@KasaId,1,@StokId ,@Adet *-1,@Miktar*-1,@Milyem,@Has *-1,0)
                END
                if @Islem = 4 ---FİRE
                BEGIN
                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(0,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet *-1 ,@Miktar *-1) 

                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(1,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet ,@Miktar ) 
                END
                if @Islem = 5 ---RAMAT
                BEGIN
                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(0,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet  ,@Miktar ) 

                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(1,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet*-1  ,@Miktar *-1) 
                END
                if @Islem = 6 ---DİGER
                BEGIN
                    Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                    Values(0,@IslemId,@Tarih,@CikanBolumId,@BirimId,@Adet ,@Miktar ) 
                END
                if @Islem = 7 ---CEVIRME
                BEGIN
                Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                                        Values(0,@IslemId,@Tarih,@CikanBolumId,@StokId,@Adet *-1 ,@Miktar *-1) 
                Insert Into Uretim.BakiyeDetay(BakiyeTipi,[IslemId],[Tarih],[BolumId],[BirimId],[Adet],[Miktar])
                                        Values(0,@IslemId,@Tarih,@CikanBolumId ,@BirimId ,@Adet  ,@Tutar) 

                END
            END
            FETCH NEXT FROM UrtIslemCur  INTO  @IslemId,@SubeId,@Tarih,@Islem,@CikanBolumId,@GirenBolumId,@StokId,@Kodu,@Adet,@Miktar,@Milyem,@Has,@Fiyat,@FTipi,@Tutar,@Birim,@BirimId,@GrupKodu,@Kategori,@Aciklama,@UserId,@InsertDate,@IsDeleted 
            END
    CLOSE UrtIslemCur 
    DEALLOCATE UrtIslemCur 
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).