Kasa fislerinde bir fis eklenince asagidaki trigger calisiyor ve kasa toplamlarimi duzenliyor, Fakat programimda su sekilde bir ozellik var, IPTAL isimli butona bastiginda kullanici kayit databasede silinmiyor sadece IPTAL isimli alanim True yapiyorum ve kayiti kullanici gormuyor, daha sonra bu iptal islemini Geri Al butonu ilede geriye alabiliyor, Geri al bastiginda ise bu seferde Iptal alanini false yapiyorum, yapmak istedigim olay kullanici kayiti iptal eder ise kasa toplamlarindan bu fisteki odeme veya tahsilat rakamini dusmek, veya geri al bastigi zamanda ise bu fisteki rakamlari kasa toplamlarina yeniden eklemek,
Bunun icin nasil bir trigger yazmam lazim, aslinda yazdim ama malesef dogru calismiyor, asagidaki trigger ekle islemi ile calisiyor ve sorun yok,
Kod: Tümünü seç
CREATE TRIGGER FinKasaIslemleri_EkleTrig ON [dbo].[AY_001_FinKasaIslemleri] FOR INSERT AS
DECLARE @_KayitNo int
DECLARE @_MusteriKayitNo int
DECLARE @_KasaKayitNo int
DECLARE @_Tarih int
DECLARE @_RaporlamaDoviziKayitNo int
DECLARE @_IslemDoviziKayitNo int
DECLARE @_Odeme Float
DECLARE @_Tahsilat Float
DECLARE @_RaporlamaDoviziTutar Float
DECLARE @_IslemDoviziTutar Float
DECLARE @_Iptal Bit
BEGIN
-- Eklenen kayittan gerekli bilgiler, degiskenlere aliniyor...
select
@_RaporlamaDoviziKayitNo = RaporlamaDoviziKayitNo,
@_IslemDoviziKayitNo = IslemDoviziKayitNo,
@_RaporlamaDoviziTutar = RaporlamaDoviziTutari,
@_IslemDoviziTutar = IslemDoviziTutari,
@_Tahsilat = Tahsilat,
@_Odeme = Odeme,
@_Tarih = Month(Tarih),
@_MusteriKayitNo = MusteriKayitNo,
@_KasaKayitNo = KasaKayitNo,
@_Iptal = Iptal,
@_KayitNo = KayitNo
from inserted
If @_Odeme>0
Begin
-- Kasa toplamlari duzenleniyor...
UPDATE AY_001_FinKasaToplamlar
SET Odeme = Odeme + @_IslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (KasaKayitNo = @_KasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
end else
If @_Tahsilat>0
Begin
-- Kasa
UPDATE AY_001_FinKasaToplamlar
SET Tahsilat = Tahsilat + @_IslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (KasaKayitNo = @_KasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
end
END