Advertisement
piotrek77

[CDN].[SED_BilansKrok3]

Sep 7th, 2012
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.00 KB | None | 0 0
  1.  
  2. /****** Object:  StoredProcedure [CDN].[SED_BilansKrok3]    Script Date: 09/07/2012 12:12:37 ******/
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7.  
  8. -- =============================================
  9. -- Author:      <Author,,Name>
  10. -- Create date: 2012-01-10
  11. -- Description: <Description,,>
  12. -- =============================================
  13. ALTER PROCEDURE [CDN].[SED_BilansKrok3]
  14.     @operId int, @magid int
  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.  
  22.     SET ANSI_WARNINGS OFF
  23. --atrybut operatora
  24.     DECLARE @atrybut varchar(10)
  25.        
  26.     select @atrybut = Atr_Wartosc from cdn.atrybuty WITH (NOLOCK)
  27.     where Atr_AtkId=73 and Atr_obinumer = @operId
  28.  
  29. ----print 'Atrybut = '+@atrybut
  30.  
  31. declare @grupatow int
  32. declare @grupatow1 int
  33.  
  34. select @grupatow=
  35. case atr_wartosc
  36. when '04' then 117692
  37. else 1 end,
  38. @grupatow1=
  39. case atr_wartosc
  40. when '04' then 117689
  41. else 1 end
  42. from cdn.atrybuty WITH (NOLOCK) where Atr_AtkId=73 and Atr_obinumer = @operId
  43.  
  44.    
  45. --kod magazynu 
  46.     DECLARE @magKod varchar(10)
  47.    
  48.     SELECT @magKod = Left(Mag_Kod,1) FROM CDN.Magazyny WITH (NOLOCK) WHERE Mag_GIDNumer = @magid
  49. --print 'MagKod = '+@magKod
  50.    
  51. --data
  52.    
  53.     DECLARE @getdate Datetime
  54.    
  55.     SET @getdate = getdate()   
  56.    
  57. --print 'Data = '+Cast(@getdate as varchar(12))
  58.    
  59.     DECLARE @BsN_DataUtworzenia int
  60.    
  61.     SET @BsN_DataUtworzenia = DateDiff(day, '18001228',@getdate)
  62.    
  63.     DECLARE @BsN_Numer int
  64.    
  65.     SELECT @BsN_Numer = IsNull(Max(BsN_Numer),0)+1 FROM CDN.BstNag WITH (NOLOCK) WHERE BsN_Seria =@magKod AND BsN_Rok = DatePart(Year, @getdate)
  66.  
  67. --print 'BsNNumer = '   +Str(@BsN_Numer)
  68.    
  69.     DECLARE @BsN_RokMiesiac varchar(6)
  70.    
  71.     select @BsN_RokMiesiac = Ltrim(Str(Year(@getdate))+Right('0'+Ltrim(Str(DatePart(month,@getdate))),2))
  72.    
  73. --print 'BsN_RokMiesiac = ' + @BsN_RokMiesiac  
  74.     --koniec obliczeń
  75.     DECLARE @bsnid int
  76.     SELECT @bsnid = Max(BsN_ID) + 1 FROM CDN.BstNag WITH (NOLOCK)
  77.     --INSERT
  78.    
  79.    
  80.     INSERT INTO [CDN].[BstNag]
  81.            ([BsN_ID]
  82.            ,[BsN_DataUtworzenia]
  83.            ,[BsN_OpeWNumer]
  84.            ,[BsN_OpeMNumer]
  85.            ,[BsN_OpeZNumer]
  86.            ,[BsN_FrsId]
  87.            ,[BsN_Rok]
  88.            ,[BsN_Seria]
  89.            ,[BsN_Numer]
  90.            ,[BsN_Nazwa]
  91.            ,[BsN_RokMiesiac]
  92.            ,[BsN_Opis]
  93.            ,[BsN_URL]
  94.            ,[BsN_Stan]
  95.            ,[BsN_DataDo]
  96.            ,[BsN_TwGNumer]
  97.            ,[BsN_TwGTyp]
  98.            ,[BsN_KntNumer]
  99.            ,[BsN_ZakresNormatywu]
  100.            ,[BsN_RodzajNormatywu]
  101.            ,[BsN_MagNNumer]
  102.            ,[BsN_MagNTyp]
  103.            ,[BsN_Aktywny]
  104.            ,[BsN_Miesiac]
  105.            ,[BsN_DataDst]
  106.            ,[BsN_TwGGROTyp]
  107.            ,[BsN_TwGGRONumer]
  108.            ,[BsN_FrMNumer]
  109.            ,[BsN_TSPrzeliczenia]
  110.            ,[BsN_Harmonogram])
  111.      VALUES
  112.            (@bsnid
  113.            ,@BsN_DataUtworzenia
  114.            ,@operId
  115.            ,@operId
  116.            ,@operId
  117.            ,3803
  118.            ,DatePart(Year, @getdate)
  119.            ,@magKod
  120.            ,@BsN_Numer
  121.            ,''
  122.            ,@BsN_RokMiesiac
  123.            ,''
  124.            ,''
  125.            ,4
  126.            ,@BsN_DataUtworzenia
  127.            ,@grupatow
  128.            ,-16
  129.            ,-1
  130.            ,2
  131.            ,1
  132.            ,@magid
  133.            ,208
  134.            ,0
  135.            ,0
  136.            ,@BsN_DataUtworzenia
  137.            ,-16
  138.            ,@grupatow1
  139.            ,3
  140.            ,0
  141.            ,0)
  142.            
  143. --print 'BstNag utworzony'          
  144.            
  145.     INSERT INTO [CDN].[BstMagazyny]
  146.            ([BsM_BsNID]
  147.            ,[BsM_MagTyp]
  148.            ,[BsM_MagNumer])
  149.      VALUES
  150.            (@bsnid
  151.            ,208
  152.            ,@magid)
  153.  
  154.     INSERT INTO [CDN].[BstMagazyny]
  155.            ([BsM_BsNID]
  156.            ,[BsM_MagTyp]
  157.            ,[BsM_MagNumer])
  158.      VALUES
  159.            (@bsnid
  160.            ,336
  161.            ,0)
  162. --print 'BstMagazyn utworzone'          
  163.            
  164.     INSERT INTO [CDN].[BstSkladniki]
  165.            ([BsK_BsNID]
  166.            ,[BsK_Rodzaj]
  167.            ,[BsK_UwzgledniajWBilansie]
  168.            ,[BsK_Opis]
  169.            ,[BsK_SQL]
  170.            ,[BsK_Kod]
  171.            ,[BsK_Pozycja])
  172.      select @bsnid ,BSF_ID, 1, BSF_Nazwa, BSF_SQL, BSF_Kod, 0 from
  173.         CDN.BstSkladnikiDefAsaj
  174.         JOIN
  175.         CDN.BstSkladnikiAsaj ON BSF_ID = bsfid
  176.         --2012-03-05
  177.         WHERE mnoznik <> 0
  178.         ORDER BY BSF_ID
  179. --print 'BstSkladniki utworzone'       
  180.        
  181. --tablica pomocnicza do obliczeń  
  182.     CREATE TABLE #BstSElem(
  183.     [BsS_TwrNumer] [int] NOT NULL,
  184.     [BsS_BsNID] [int] NOT NULL,
  185.     [BsS_Rodzaj] [smallint] NOT NULL,
  186.     [BsS_Ilosc] [decimal](19, 4) NULL)
  187.    
  188.    
  189. -- kursor po towarach BEGIN
  190.     declare @towarid int
  191.    
  192.     declare @defrodzaj int
  193.     declare @defmnoznik int
  194.     declare @defSQL varchar(2048)
  195.    
  196.     declare @defWynik decimal(19,4) --wynik obliczeń
  197.     declare @defWynikTotal decimal(19,4)
  198.     declare kursorTowar cursor forward_only FOR
  199.  
  200.             select   Twr_GIDNumer from cdn.TwrKarty WITH (NOLOCK)
  201.             where
  202.             Left(Twr_Certyfikat,2) = @atrybut
  203.             and Twr_Archiwalny = 0
  204.             ORDER BY Twr_Kod
  205.  
  206.     open kursorTowar
  207.     FETCH NEXT FROM kursorTowar INTO @towarid
  208.  
  209.         while @@FETCH_STATUS = 0
  210.         begin
  211.  
  212. -- kursor po składnikach (def) BEGIN
  213.  
  214.             --CREATE TABLE #t1 (BsE_TwrNumer int, BsE_BsNID int)
  215.             --INSERT INTO #t1 (BsE_TwrNumer, BsE_BsNID) VALUES (@towarid, @bsnid)    
  216.                 --declare kursorDef cursor forward_only FOR
  217.                     --select  BsK_Rodzaj, mnoznik, BsK_SQL from CDN.BstSkladniki  WITH (NOLOCK)
  218.                     --JOIN CDN.BstSkladnikiAsaj WITH (NOLOCK) ON BsK_Rodzaj = bsfid
  219.                     --WHERE BsK_BsNID = @bsnid AND IsNull(mnoznik,0) <> 0
  220.                     --ORDER BY BsK_Rodzaj
  221.                 --open kursorDef
  222.                 --FETCH NEXT FROM kursorDef INTO @defrodzaj, @defmnoznik, @defSQL
  223.                  
  224.                     --while @@FETCH_STATUS = 0
  225.                     --begin
  226.                  
  227.  
  228.                    
  229.                     --SET @defSQL = 'SELECT ('+@defSQL+') FROM #t1 as T'
  230.                     --CREATE TABLE #wynikTab (wynik decimal(19,4))
  231.  
  232.                     --INSERT INTO #wynikTab
  233.                     --EXEC (@defSQL)
  234.                     --SELECT @defWynik = @defmnoznik * wynik FROM #wynikTab
  235.  
  236.                     --DROP TABLE #wynikTab
  237.  
  238.                    
  239.                     --SET @defWynik = IsNull(@defWynik,0)
  240.  
  241.                     SET @defWynik = 0
  242.                    
  243.                     INSERT INTO #BstSElem
  244.                        ([BsS_TwrNumer]
  245.                        ,[BsS_BsNID]
  246.                        ,[BsS_Rodzaj]
  247.                        ,[BsS_Ilosc])
  248.  
  249.                     --VALUES
  250.                     --   (@towarid
  251.                     --   ,@bsnid
  252.                     --   ,@defrodzaj
  253.                     --   ,@defWynik)
  254.  
  255.         select @towarid,@bsnid, BsK_Rodzaj, CDN.bstile_asaj(@towarid,@magid, @bsnid, BsK_Rodzaj) from CDN.BstSkladniki  WITH (NOLOCK)
  256.         JOIN CDN.BstSkladnikiAsaj WITH (NOLOCK) ON BsK_Rodzaj = bsfid
  257.         WHERE BsK_BsNID = @bsnid AND IsNull(mnoznik,0) <> 0
  258.         ORDER BY BsK_Rodzaj
  259.      
  260.             --FETCH NEXT FROM kursorDef INTO @defrodzaj, @defmnoznik, @defSQL
  261.             --End
  262.             --close kursorDef
  263.             --DEALLOCATE kursorDef
  264.             --DROP TABLE #t1
  265.             --kursor po składnikach (def)END  
  266.  
  267.         --sprawdzamy czy ilosc rózna od 0
  268.  
  269.         SET @defWynikTotal = 0
  270.         SELECT @defWynikTotal = IsNull(Sum(BsS_Ilosc),0) from #BstSElem
  271.         set @defWynikTotal=@defWynikTotal*-1
  272.        
  273.         --set @defWynikTotal = 1
  274.         --print 'Wynik total= '+str(@defWynikTotal)
  275.         if @defWynikTotal > 0
  276.             Begin
  277.             --insertowanie do tablic
  278.             INSERT INTO [CDN].[BstElem]
  279.                    ([BsE_BsNID]
  280.                    ,[BsE_TwrNumer]
  281.                    ,[BsE_DoZamowienia]
  282.                    ,[BsE_Flaga])
  283.              VALUES
  284.                    (@bsnid
  285.                    ,@towarid
  286.                    ,@defWynikTotal
  287.                    ,0)     
  288.                    
  289.             INSERT INTO [CDN].[BstSElem]
  290.            ([BsS_TwrNumer]
  291.            ,[BsS_BsNID]
  292.            ,[BsS_Rodzaj]
  293.            ,[BsS_Ilosc])
  294.            SELECT * FROM #BstSElem
  295.    
  296.            
  297.             --2012-09-07
  298.             UPDATE [CDN].[BstElem] SET BsE_DoZamowienia = BsE_DoZamowienia * 1
  299.             WHERE BsE_BsNID = @bsnid
  300.             AND BsE_TwrNumer = @towarid
  301.            
  302.            
  303.             ENd;
  304.  
  305.  
  306.         TRUNCATE TABLE #BstSElem
  307.          
  308.         FETCH NEXT FROM kursorTowar INTO @towarid
  309.         End
  310.     close kursorTowar
  311.     DEALLOCATE kursorTowar
  312. -- kursor po towarach END    
  313.      
  314.      
  315.      
  316.      
  317.     DROP TABLE #BstSElem
  318.    
  319.     DECLARE @filtr varchar(50)
  320.     SET @filtr = 'BsN_ID='+Str(@bsnid)
  321.    
  322.     exec [CDN].[SED_BilansAutoZamawiaczPrc] @filtr,1,1,0,1,1,1
  323.     --print @filtr
  324.    
  325.    
  326.     SET ANSI_WARNINGS ON
  327. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement