Advertisement
piotrek77

TRIGGER CDN.TwrCeny_SEDKOMP_UaktualnijCeneDetallubMarze

Jul 2nd, 2012
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.49 KB | None | 0 0
  1. USE [CDNXL_szkola]
  2. GO
  3. /****** Object:  Trigger [CDN].[TwrCeny_SEDKOMP_UaktualnijCeneDetallubMarze]    Script Date: 07/23/2012 13:17:53 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. -- =============================================
  10. -- Author:      Piotr Osłowski, SEDKOMP
  11. -- Create date: 2012-06-29
  12. -- Description: dla zmienionej ceny DETALICZNEJ zmienia marżę
  13. --              dla zmienionej ceny FABRYCZNEJ oblicza cenę DETALICZNĄ
  14. -- =============================================
  15. ALTER TRIGGER [CDN].[TwrCeny_SEDKOMP_UaktualnijCeneDetal]
  16. --ALTER TRIGGER [CDN].[TwrCeny_SEDKOMP_UaktualnijCeneDetallubMarze]
  17.    ON  [CDN].[TwrCeny]
  18.    AFTER UPDATE
  19. AS
  20. BEGIN
  21.     -- SET NOCOUNT ON added to prevent extra result sets from
  22.     -- interfering with SELECT statements.
  23.     SET NOCOUNT ON;
  24.  
  25.     Declare @lp int
  26.     Declare @typ int
  27.     Declare @numer int
  28.     Declare @wartosc decimal(15,4)
  29.     DECLARE @wartosc2 decimal(15,4)
  30.     DECLARE @narzut decimal(15,4)
  31.     declare @OpeCeny int --id operatora automatu aktualizujacego cene
  32.     declare @cenaold decimal(12,2)
  33.     set @OpeCeny=536
  34.     SELECT @lp = TwC_TwrLp, @typ = TwC_TwrTyp, @numer = TwC_TwrNumer FROM Inserted
  35.    
  36.     --tylko dla cen fabrycznych
  37.     if (@lp = 1 )
  38.     Begin
  39.    
  40.    
  41.         --bierzemy marżę z dodatkowej tablicy
  42.         SELECT @narzut = TwCSED_Narzut FROM CDN.SED_TwrCeny WHERE TwCSED_TwrLp = 3 AND TwCSED_TwrNumer = @numer
  43.         SET @narzut = IsNull(@narzut,0)
  44.        
  45.        
  46.         set @cenaold= isnull((select twc_wartosc from cdn.twrceny where twc_twrnumer=@numer and twc_twrlp=3),0)
  47.         --nabicie cen hist
  48.         insert into cdn.twrcenyhist
  49.         (TCH_TwrTyp, TCH_TwrFirma, TCH_TwrNumer, TCH_TwrLp, TCH_Waluta, TCH_NrKursu,
  50.         TCH_Wartosc, TCH_OpeTyp, TCH_OpeFirma, TCH_OpeNumer, TCH_OpeLp, TCH_TSArc, TCH_Domyslna, TCH_DokNumer, TCH_DokTyp, TCH_Zrodlo)
  51.         select twc_twrtyp,twc_twrfirma,twc_twrnumer,twc_twrlp,twc_waluta,twc_nrkursu,@cenaold,128,twc_twrfirma,@OpeCeny,1,datediff(s,'1990-01-01',getdate()),1,0,0,'Zmiana ceny fabrycznej'
  52.         from cdn.twrceny
  53.         where twc_twrnumer=@numer and twc_twrlp=3
  54.        
  55.        
  56.        
  57.         --uaktualnianie ceny detal na podstawie ceny fabrycznej (lp=1)
  58.         SELECT @wartosc = TwC_Wartosc FROM CDN.TwrCeny WHERE TwC_TwrNumer = @numer AND TwC_TwrLp = 1
  59.         SET @wartosc = IsNull(@wartosc,0)
  60.         set @narzut = @narzut/100
  61.         SET @wartosc = @wartosc + (@wartosc * @narzut)
  62.         UPDATE CDN.TwrCeny SET TwC_Wartosc = @wartosc WHERE TwC_TwrNumer = @numer AND TwC_TwrLp = 3
  63.     End
  64.    
  65.    
  66.    
  67.     if @lp = 3
  68.     Begin
  69.    
  70.         --cena FABRYCZNA
  71.         SELECT @wartosc = TwC_Wartosc FROM CDN.TwrCeny WHERE TwC_TwrNumer = @numer AND TwC_TwrLp = 1
  72.         SET @wartosc = IsNull(@wartosc,0)  
  73.         --cena DETALICZNA
  74.        
  75.         select @wartosc2 = TwC_Wartosc FROM Inserted
  76.         SET @wartosc2 = IsNull(@wartosc2, 0)             
  77.        
  78.         SET @narzut = 0
  79.        
  80.        
  81.          
  82.         if @wartosc2 <> 0
  83.         BEGIN
  84.            
  85.             SET @narzut = (@wartosc2 - @wartosc) / (@wartosc2 * 0.01)
  86.        
  87.        
  88.         END
  89.         --uaktualnianie ceny detal na podstawie ceny fabrycznej (lp=1)
  90.        
  91.        
  92.         --uaktualnienie marzy
  93.        
  94.         UPDATE cdn.sed_TwrCeny SET TwCSED_Narzut = @narzut WHERE
  95.         TwCSED_TwrTyp = @typ AND  TwCSED_TwrNumer = @numer AND TwCSED_TwrLp = @lp
  96.        
  97.         declare @ile int
  98.        
  99.         Select @ile = @@ROWCOUNT
  100.        
  101.         if @ile = 0
  102.                 Begin
  103.                
  104.                 INSERT INTO [CDN].[SED_TwrCeny]
  105.                                        ([TwCSED_TwrTyp]
  106.                                        ,[TwCSED_TwrNumer]
  107.                                        ,[TwCSED_TwrLp]
  108.                                        ,[TwCSED_Narzut])
  109.                                  VALUES
  110.            (@typ
  111.            ,@numer
  112.            ,@lp
  113.            ,@narzut)
  114.                
  115.                
  116.                 End
  117.  
  118.     End
  119.  
  120. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement