Tip: TRIGGER · Şema: Uretim · Modül: MOD-URETIM · Temizlik sınıfı: INDIRECTLY_USED (kategori C, güven 0) · Kapsam: ERPGOLD_CORE / ALL
Kullanım haritası (13.09.2026)
| Kategori | B — INDIRECT DEPENDENCY · B-TRIGGER |
| Güven | 95 |
| Derinlik / kök | 1 · Uretim.UretimIslemleri |
| DependencyPath | ERPGOLD → Uretim.Islem → Uretim.UretimIslemleri → Uretim.TrBakiyeHesapla |
| Bağlı tablo | Uretim.UretimIslemleri |
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 | 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_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).
