Advertisement
piotrek77

TRIGGER CDN.TwrCenyHist_SEDKOMP_UaktualnijCeny

Jul 2nd, 2012
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 5.00 KB | None | 0 0
  1.  
  2. /****** Object:  Trigger [CDN].[TwrCenyHist_SEDKOMP_UaktualnijCeny]    Script Date: 07/02/2012 09:30:10 ******/
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7. -- =============================================
  8. -- Author:      Piotr Osłowski, SEDKOMP
  9. -- Create date: 2011-03-31
  10. -- Description: Tworzy bliźniaczy zapis w tablicy CDN.SED_TwrCeny dla każdej ceny detalicznej
  11. -- =============================================
  12. ALTER TRIGGER [CDN].[TwrCenyHist_SEDKOMP_UaktualnijCeny]
  13.    ON  [CDN].[TwrCenyHist]
  14.    AFTER INSERT
  15. AS
  16. BEGIN
  17.     -- SET NOCOUNT ON added to prevent extra result sets from
  18.     -- interfering with SELECT statements.
  19.     SET NOCOUNT ON;
  20.  
  21.     --Nabycia_procent
  22.     DECLARE @atkID int
  23.     SET @atkID = 71
  24.    
  25.     DECLARE @atkMetodaNabycia int
  26.     SET @atkMetodaNabycia = 70
  27.    
  28.     --cena nabycia
  29.     DECLARE @lpCenaNabycia int
  30.     SET @lpCenaNabycia = 4
  31.    
  32.  
  33.     Declare @lp int
  34.     Declare @typ int
  35.     Declare @numer int
  36.     Declare @wartosc decimal(15,4)
  37.     DECLARE @narzut decimal(15,4)
  38.    
  39.     declare @nabycia_procent decimal(15,2)
  40.    
  41.     DECLARE @cenaFabryczna decimal(15,2)
  42.     declare @cenaNabyciaOld decimal(15,2)
  43.     declare @cenaNabyciaNew decimal(15,2)
  44.    
  45.     DECLARE @cenaDetalOld decimal(15,2)
  46.     DECLARE @cenaDetalNew decimal(15,2)
  47.    
  48.     declare @opeCeny int --id operatora automatu aktualizujacego cene
  49.  
  50.     declare @metodaNabycia varchar(25)
  51.    
  52.    
  53.     SELECT @lp = TCH_TwrLp, @typ = TCH_TwrTyp, @numer = TCH_TwrNumer FROM Inserted
  54.    
  55.     --tylko dla cen fabrycznych
  56.     if @lp = 1
  57.     Begin
  58.    
  59.         SELECT @narzut = TwCSED_Narzut FROM CDN.SED_TwrCeny WHERE TwCSED_TwrLp = 3 AND TwCSED_TwrNumer = @numer
  60.         SET @narzut = IsNull(@narzut,0)
  61.        
  62.        
  63.         SELECT  @nabycia_procent =  Cast (  Case Atr_Wartosc WHEN '' THEN '0' ELSE Atr_Wartosc END as  decimal(15,2))
  64.         from cdn.Atrybuty
  65.         WHERE Atr_AtkId = @atkID
  66.         AND Atr_ObiTyp = @typ AND Atr_ObiNumer = @numer
  67.         SET @nabycia_procent = IsNull(@nabycia_procent,0)
  68.        
  69.        
  70.         SELECT  @metodaNabycia =  Atr_Wartosc
  71.         from cdn.Atrybuty
  72.         WHERE Atr_AtkId = @atkMetodaNabycia
  73.         AND Atr_ObiTyp = @typ AND Atr_ObiNumer = @numer
  74.         SET @metodaNabycia = IsNull(@metodaNabycia,'')
  75.        
  76.        
  77.        
  78.         --odczytujemy kto zmienił cenę fabryczną...
  79.         SELECT TOP 1 @opeCeny = TCH_OpeNumer FROM CDN.TwrCenyHist
  80.         WHERE TCH_TwrTyp = @typ AND TCH_TwrNumer = @numer AND TCH_TwrLp = @lp
  81.         ORDER BY TCH_TSArc DESC
  82.        
  83.        
  84.        
  85.  
  86.        
  87.         ------------------------------------------------------------------------------------------
  88.         --uaktualnianie ceny detal na podstawie ceny fabrycznej (lp=1)
  89.         SELECT @cenaFabryczna = TwC_Wartosc FROM CDN.TwrCeny WHERE TwC_TwrNumer = @numer AND TwC_TwrLp = 1
  90.         SET @cenaFabryczna = IsNull(@cenaFabryczna,0)
  91.        
  92.         SELECT @cenaDetalOld = TwC_Wartosc FROM CDN.TwrCeny
  93.         where twc_twrnumer=@numer and twc_twrlp = 3
  94.        
  95.         SET @cenaDetalNew = Round(@cenaFabryczna * (1 + @narzut * 0.01),2)
  96.        
  97.         SET @cenaDetalOld = IsNull(@cenaDetalOld,0)
  98.         SET @cenaDetalNew = IsNull(@cenaDetalNew,0)
  99.        
  100.         if (@cenaDetalOld <> @cenaDetalNew)
  101.             Begin
  102.                 --UPDATE CDN.TwrCeny SET TwC_Wartosc = @cenaDetalNew, twc_czasmodyfikacji=datediff(s,'1990-01-01',getdate()) WHERE TwC_TwrNumer = @numer AND TwC_TwrLp = 3
  103.                
  104.                 insert into cdn.twrcenyhist
  105.                         (TCH_TwrTyp, TCH_TwrFirma, TCH_TwrNumer, TCH_TwrLp, TCH_Waluta, TCH_NrKursu,
  106.                         TCH_Wartosc, TCH_OpeTyp, TCH_OpeFirma, TCH_OpeNumer, TCH_OpeLp, TCH_TSArc, TCH_Domyslna, TCH_DokNumer, TCH_DokTyp, TCH_Zrodlo)
  107.                           select twc_twrtyp,twc_twrfirma,twc_twrnumer,twc_twrlp,twc_waluta,twc_nrkursu,@cenaDetalNew,128,twc_twrfirma,@OpeCeny,1,datediff(s,'1990-01-01',getdate()),1,0,0,'trigger: TwrCeny_SEDKOMP_UaktualnijCeneDetal'
  108.                       from cdn.twrceny
  109.                       where twc_twrnumer=@numer and twc_twrlp=3
  110.             End
  111.            
  112.        
  113.            
  114.         -------------------------------------------------------------------------------------------
  115.         -- cena nabycia
  116.         SELECT @cenaNabyciaOld = TwC_Wartosc FROM CDN.TwrCeny
  117.         where twc_twrnumer=@numer and twc_twrlp=@lpCenaNabycia
  118.        
  119.         SET @cenaNabyciaNew = round(@cenaFabryczna*(1+@nabycia_procent/100),2)
  120.        
  121.         SET @cenaNabyciaOld = IsNull(@cenaNabyciaOld,0)
  122.         SET @cenaNabyciaNew = IsNull(@cenaNabyciaNew,0)
  123.        
  124.         if ((@cenaNabyciaOld <> @cenaNabyciaNew) AND ( LTrim(Rtrim( @metodaNabycia )) = 'fabryczna'))
  125.             Begin
  126.            
  127.                     update cdn.twrceny
  128.                     set  twc_wartosc=@cenaNabyciaNew,
  129.                     twc_czasmodyfikacji=datediff(s,'1990-01-01',getdate())
  130.                     from cdn.twrceny
  131.                     where twc_twrnumer=@numer and twc_twrlp=@lpCenaNabycia
  132.                    
  133.                         insert into cdn.twrcenyhist
  134.                         (TCH_TwrTyp, TCH_TwrFirma, TCH_TwrNumer, TCH_TwrLp, TCH_Waluta, TCH_NrKursu,
  135.                         TCH_Wartosc, TCH_OpeTyp, TCH_OpeFirma, TCH_OpeNumer, TCH_OpeLp, TCH_TSArc, TCH_Domyslna, TCH_DokNumer, TCH_DokTyp, TCH_Zrodlo)
  136.                           select twc_twrtyp,twc_twrfirma,twc_twrnumer,twc_twrlp,twc_waluta,twc_nrkursu,@cenaNabyciaNew,128,twc_twrfirma,@OpeCeny,1,datediff(s,'1990-01-01',getdate()),1,0,0,'trigger: TwrCeny_SEDKOMP_UaktualnijCeneDetal'
  137.                       from cdn.twrceny
  138.                       where twc_twrnumer=@numer and twc_twrlp=@lpCenaNabycia
  139.                      
  140.             End
  141.  
  142.     END
  143. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement