SQL server'da kasaya islem giriyorum islem girilince, kasa ve Cari hesap kartinda toplam degerlerini guncellemem gerekiyor, ekleme islemin sorunsuz calisiyor fakat, degistirme triggerim malesef sorunlu calisiyor,
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
-- Cari hesap toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Odeme = Odeme + @_IslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- 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
-- Cari
UPDATE AY_001_CarKartToplamlar
SET Tahsilat = Tahsilat + @_IslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- 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
Fakat asagidaki trigger dogru calismiyor...
Kod: Tümünü seç
CREATE TRIGGER FinKasaIslemleri_DegistirTrig ON [dbo].[AY_001_FinKasaIslemleri] FOR UPDATE AS
-- Yeni eklenen kayittan alinacak bilgiler icin degisken tanimlaniyor
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
-- Eski kayittan alinacak bilgiler icin degisken tanimlaniyor
DECLARE @_EskiKayitNo int
DECLARE @_EskiMusteriKayitNo int
DECLARE @_EskiKasaKayitNo int
DECLARE @_EskiTarih int
DECLARE @_EskiRaporlamaDoviziKayitNo int
DECLARE @_EskiIslemDoviziKayitNo int
DECLARE @_EskiOdeme Float
DECLARE @_EskiTahsilat Float
DECLARE @_EskiRaporlamaDoviziTutar Float
DECLARE @_EskiIslemDoviziTutar Float
DECLARE @_EskiIptal Bit
BEGIN
-- Degistirilen kayittan 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
-- Degistirilen kayit henuz post edilmedigi icin eski bilgiler degiskenlere aliniyor...
select
@_EskiRaporlamaDoviziKayitNo = RaporlamaDoviziKayitNo,
@_EskiIslemDoviziKayitNo = IslemDoviziKayitNo,
@_EskiRaporlamaDoviziTutar = RaporlamaDoviziTutari,
@_EskiIslemDoviziTutar = IslemDoviziTutari,
@_EskiTahsilat = Tahsilat,
@_EskiOdeme = Odeme,
@_EskiTarih = Month(Tarih),
@_EskiMusteriKayitNo = MusteriKayitNo,
@_EskiKasaKayitNo = KasaKayitNo,
@_EskiIptal = Iptal,
@_EskiKayitNo = KayitNo
from AY_001_FinKasaIslemleri
-- @_KayitNo, degistirilen kayittan alindi
Where KayitNo = @_KayitNo
-- Eger IPTAL alani 1 olmus ise kayit silinmis demektir, ve toplamlar - yapilmasi lazim
If (@_EskiIptal = 0) and (@_Iptal = 1)
Begin
If @_EskiOdeme>0
Begin
-- Cari toplamlari duzenleniyor
UPDATE AY_001_CarKartToplamlar
SET Odeme = Odeme - @_EskiIslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (CariHesapKayitNo = @_EskiMusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
-- Kasa toplamlari duzenleniyor
UPDATE AY_001_FinKasaToplamlar
SET Odeme = Odeme - @_EskiIslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (KasaKayitNo = @_EskiKasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
end else
If @_EskiTahsilat>0
Begin
-- Cari toplamlari duzenleniyor
UPDATE AY_001_CarKartToplamlar
SET Tahsilat = Tahsilat - @_EskiIslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (CariHesapKayitNo = @_EskiMusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
-- Kasa toplamlari duzenleniyor
UPDATE AY_001_FinKasaToplamlar
SET Tahsilat = Tahsilat - @_EskiIslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (KasaKayitNo = @_EskiKasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
end
End else
-- Kayit Iptali geriye alinmis bu nedenle islem + yapiliyor...
If (@_EskiIptal = 1) and (@_Iptal = 0)
Begin
If @_Odeme>0
Begin
-- Cari toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Odeme = Odeme + @_IslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- 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
-- Cari
UPDATE AY_001_CarKartToplamlar
SET Tahsilat = Tahsilat + @_IslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- 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 else
-- Kayit toplam tutarlari degistirilmis, bu nedenle toplam rakamlari duzenlenmesi lazim
If (@_EskiIptal = 0) and (@_Iptal = 0)
Begin
-- Oncelikle eski toplam rakamlari - yapiliyor...
If @_EskiOdeme>0
Begin
-- Cari toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Odeme = Odeme - @_EskiIslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (CariHesapKayitNo = @_EskiMusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
-- Kasa toplamlari duzenleniyor...
UPDATE AY_001_FinKasaToplamlar
SET Odeme = Odeme - @_EskiIslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (KasaKayitNo = @_KasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
end else
If @_EskiTahsilat>0
Begin
-- Cari toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Tahsilat = Tahsilat - @_EskiIslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (CariHesapKayitNo = @_EskiMusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
-- Kasa toplamlari duzenleniyor...
UPDATE AY_001_FinKasaToplamlar
SET Tahsilat = Tahsilat - @_EskiIslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat - @_EskiRaporlamaDoviziTutar
WHERE (IslemDovizi = @_EskiIslemDoviziKayitNo) and (KasaKayitNo = @_KasaKayitNo) and (DonemKayitNo = 1) and (Ay = @_EskiTarih)
end
-- Eski toplam rakamlari - yapildi simdi, yeni rakamlar + yapiliyor...
If @_Odeme>0
Begin
-- Cari toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Odeme = Odeme + @_IslemDoviziTutar, RaporlamaDoviziOdeme = RaporlamaDoviziOdeme + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- 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
-- Cari toplamlari duzenleniyor...
UPDATE AY_001_CarKartToplamlar
SET Tahsilat = Tahsilat + @_IslemDoviziTutar, RaporlamaDoviziTahsilat = RaporlamaDoviziTahsilat + @_RaporlamaDoviziTutar
WHERE (IslemDovizi = @_IslemDoviziKayitNo) and (CariHesapKayitNo = @_MusteriKayitNo) and (DonemKayitNo = 1) and (Ay = @_Tarih)
-- Kasa toplamlari duzenleniyor...
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
END
Saygilar,