Forum
S.A Çözüm Park ailesi; Aşağıdaki sql kodlarını bana açıklaya bilirmisiniz.
CREATE TRIGGER TaksitliSatislarOdemePlani ON [TaksitliSatislar] AFTER INSERT AS DECLARE @miktar MONEY , @baslangic DATETIME , @taksit INTEGER , @odeme INTEGER , @bekletme INTEGER , @satisId INTEGER; SELECT @satisId = [SatisId] , @baslangic = [Tarih] , @miktar = [Tutar] , @taksit = [Taksit] , @bekletme = [BekletmeSuresi] FROM [inserted] AS ts INNER JOIN [Bankalar] AS b ON [ts].[BankaId] = [b].[BankaId]; DECLARE @taksitler TABLE ( taksitNo INT , tarih DATETIME , tutar MONEY ) SET @odeme = 1 WHILE @odeme <= @taksit BEGIN INSERT [Odemeler] ( [SatisId] , [OdemeNo] , [Tarih] , [Tutar] ) VALUES ( @satisId , @odeme , DATEADD(DAY, ( @odeme - 1 ) * @bekletme, @baslangic) , @miktar / @taksit ) SET @odeme = @odeme + 1 END
Merhaba,
Merhaba Çağlar bey,
Evet doğru ödeme planı yapmaya çalışıyorum.
Ben herhangi bir taksitli satış eklediğimde bunu trigger alıyor ödemeler listesine sonra taksit sayısına bölüyor ve çekim tarihine göre bankaların bekletme süresini ekleyerek tek tek satır satır yazıyor.
Ama burda şu şekilde bi yalnışlık var.
İlk satırı çekim tarihini yazıyor doğru olan çekimtarihi+bekletme süresi olcak.
diğer taksitlerde yine aynı şekilde kendinden bir önceki taksitin tarihne bekleme süresini ekleyerek devam edecek.
VALUES ( @satisId , @odeme ,DATEADD(DAY, ( @odeme - 1 ) * @bekletme, @baslangic) , @miktar / @taksit )
Burda değerleri diğer tabloya atama işleminde neresinde yalnışlık var.
Tablomun en son hali budur.
ve yukarıda ki triggerler olduğu gibi vardır.
CREATE TABLE TaksitliSatislar (SatisId INT IDENTITY PRIMARY KEY, Tarih DATETIME, Tutar MONEY, Taksit TINYINT, BankaId int);
CREATE TABLE Odenenler (SatisId INT PRIMARY KEY, Tarih DATETIME, Tutar MONEY, Taksit TINYINT, BankaId int);
CREATE TABLE Bankalar (BankaId int IDENTITY PRIMARY KEY, BankaAdi VARCHAR(50), BekletmeSuresi tinyint,Komisyon Money,KatkiPayi Money);
CREATE TABLE Odemeler (OdemeId INT IDENTITY PRIMARY KEY, SatisId INT, OdemeNo TINYINT, Tarih DATETIME, Tutar MONEY);
CREATE TABLE iadeler (iadeId INT IDENTITY PRIMARY KEY, SatisId INT, OdenenNo TINYINT, Tarih DATETIME, Tutar MONEY);
Eğer bir Çekim işlemi İade edilecekse.
Odenenler kısmına işleniyor oda şu şekilde;
TaksitliSatislar.SatisId sini alıp Odenenler.SatisId sinin yerine koyuyor. sonra iptal tarihini tutarını taksit sayısını BankaId PosAdi nı yazıyor yine Taksitli satışlarda olduğu gibi Trigger çalışıyor bunları ordaki gibi teker teker yazıyor.İadeler Tablosuna.
Şöyle bir şey TaksitliSatislara eklenen bir veri, İader edildiyse onun SatisId si Odenenlerde var.
ben şöyle bir select sorgusu işitiyorum.
ben bankalara göre ödeme listesi görüntülemek istediğimde.
bana eğer çekim iptal ediyse o çekimin iade kısmında görünsün.
BankaAdi Taksit Çekim İade
X Bank 1 50 50
X Bank 2 50 50
Y Bank 1 50 0
Y Bank 2 50 0
bu şekilde bir sonuç dönmesi için sorgumu nasıl yazmam gerekir.
Biliyorum biraz karışık, belki bana öyle,
Umarım anlatmak istediğimi İfade edebilmişimdir.
Yardımlarınız için Şimdiden Tşkrler.
Tablomun en son hali budur.
ve yukarıda ki triggerler olduğu gibi vardır.
CREATE TABLE TaksitliSatislar (SatisId INT IDENTITY PRIMARY KEY, Tarih DATETIME, Tutar MONEY, Taksit TINYINT, BankaId int);
CREATE TABLE Odenenler (SatisId INT PRIMARY KEY, Tarih DATETIME, Tutar MONEY, Taksit TINYINT, BankaId int);
CREATE TABLE Bankalar (BankaId int IDENTITY PRIMARY KEY, BankaAdi VARCHAR(50), BekletmeSuresi tinyint,Komisyon Money,KatkiPayi Money);
CREATE TABLE Odemeler (OdemeId INT IDENTITY PRIMARY KEY, SatisId INT, OdemeNo TINYINT, Tarih DATETIME, Tutar MONEY);
CREATE TABLE iadeler (iadeId INT IDENTITY PRIMARY KEY, SatisId INT, OdenenNo TINYINT, Tarih DATETIME, Tutar MONEY);
Eğer bir Çekim işlemi İade edilecekse.
Odenenler kısmına işleniyor oda şu şekilde;
TaksitliSatislar.SatisId sini alıp Odenenler.SatisId sinin yerine koyuyor. sonra iptal tarihini tutarını taksit sayısını BankaId PosAdi nı yazıyor yine Taksitli satışlarda olduğu gibi Trigger çalışıyor bunları ordaki gibi teker teker yazıyor.İadeler Tablosuna.
Şöyle bir şey TaksitliSatislara eklenen bir veri, İader edildiyse onun SatisId si Odenenlerde var.
ben şöyle bir select sorgusu işitiyorum.
ben bankalara göre ödeme listesi görüntülemek istediğimde.
bana eğer çekim iptal ediyse o çekimin iade kısmında görünsün.
BankaAdi Taksit Çekim İade
X Bank 1 50 50
X Bank 2 50 50
Y Bank 1 50 0
Y Bank 2 50 0
bu şekilde bir sonuç dönmesi için sorgumu nasıl yazmam gerekir.
Biliyorum biraz karışık, belki bana öyle,
Umarım anlatmak istediğimi İfade edebilmişimdir.
Yardımlarınız için Şimdiden Tşkrler.