Advertisement
piotrek77

PROCEDURE [CDN].[SED_ZamowieniaFiPo]

Jun 25th, 2014
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 10.37 KB | None | 0 0
  1. USE [CDNXL_szkola]
  2. GO
  3.  
  4. /****** Object:  StoredProcedure [CDN].[SED_ZamowieniaFiPo]    Script Date: 2014-06-25 15:45:07 ******/
  5. SET ANSI_NULLS ON
  6. GO
  7.  
  8. SET QUOTED_IDENTIFIER ON
  9. GO
  10.  
  11.  
  12. -- =============================================
  13. -- Author:      <Author,,Name>
  14. -- Create date: 2014-06-23
  15. -- Description: <Description,,>
  16. -- =============================================
  17. CREATE PROCEDURE [CDN].[SED_ZamowieniaFiPo]
  18.     @frsid int, @magKod varchar(10)
  19. AS
  20. BEGIN
  21.     SET NOCOUNT ON;
  22.  
  23.  
  24.     SET ANSI_WARNINGS OFF
  25.  
  26.     --INSERT INTO dbo.SED_log (program, klucz, wartosc)
  27.     --VALUES ('SED_ZamowieniaFiPo','proc','start')
  28. --atrybut operatora
  29.    
  30.    
  31.     --DECLARE @atrybut varchar(10)
  32.        
  33.     --select @atrybut = Atr_Wartosc from cdn.atrybuty WITH (NOLOCK)
  34.     --where Atr_AtkId=73 and Atr_obinumer = @operId
  35.  
  36. ----print 'Atrybut = '+@atrybut
  37.  
  38. declare @grupatow int
  39. declare @grupatow1 int
  40. SET @grupatow = 1
  41. SET @grupatow1 = 1
  42.  
  43. --select @grupatow=
  44. --case atr_wartosc
  45. --when '04' then 117692
  46. --else 1 end,
  47. --@grupatow1=
  48. --case atr_wartosc
  49. --when '04' then 117689
  50. --else 1 end
  51. --from cdn.atrybuty WITH (NOLOCK) where Atr_AtkId=73 and Atr_obinumer = @operId
  52.  
  53. --AUTOMAT
  54.     DEclare @operId int
  55.     SET @operId = 536
  56.  
  57.  
  58. --id magazynu  
  59.  
  60.     DECLARE @magId int
  61.    
  62.     SELECT @magId = Mag_GIDNumer  FROM CDN.Magazyny WITH (NOLOCK) WHERE  Mag_kod = @magKod
  63.  
  64.  
  65.    
  66. --data
  67.    
  68.     DECLARE @getdate Datetime
  69.    
  70.     SET @getdate = getdate()   
  71.    
  72.  
  73.    
  74.     DECLARE @BsN_DataUtworzenia int
  75.    
  76.     SET @BsN_DataUtworzenia = DateDiff(day, '18001228',@getdate)
  77.    
  78.  
  79.     DECLARE @BsN_Numer int
  80.    
  81.     SELECT @BsN_Numer = IsNull(Max(BsN_Numer),0)+1 FROM CDN.BstNag WITH (NOLOCK) WHERE BsN_Seria =Left(@magKod,1) AND BsN_Rok = DatePart(Year, @getdate)
  82.  
  83.  
  84.    
  85.     DECLARE @BsN_RokMiesiac varchar(6)
  86.    
  87.     select @BsN_RokMiesiac = Ltrim(Str(Year(@getdate))+Right('0'+Ltrim(Str(DatePart(month,@getdate))),2))
  88.    
  89.  
  90.     --koniec obliczeń
  91.     DECLARE @bsnid int
  92.     SELECT @bsnid = Max(BsN_ID) + 1 FROM CDN.BstNag WITH (NOLOCK)
  93.     --INSERT
  94.    
  95.    
  96.     INSERT INTO [CDN].[BstNag]
  97.            ([BsN_ID]
  98.            ,[BsN_DataUtworzenia]
  99.            ,[BsN_OpeWNumer]
  100.            ,[BsN_OpeMNumer]
  101.            ,[BsN_OpeZNumer]
  102.            ,[BsN_FrsId]
  103.            ,[BsN_Rok]
  104.            ,[BsN_Seria]
  105.            ,[BsN_Numer]
  106.            ,[BsN_Nazwa]
  107.            ,[BsN_RokMiesiac]
  108.            ,[BsN_Opis]
  109.            ,[BsN_URL]
  110.            ,[BsN_Stan]
  111.            ,[BsN_DataDo]
  112.            ,[BsN_TwGNumer]
  113.            ,[BsN_TwGTyp]
  114.            ,[BsN_KntNumer]
  115.            ,[BsN_ZakresNormatywu]
  116.            ,[BsN_RodzajNormatywu]
  117.            ,[BsN_MagNNumer]
  118.            ,[BsN_MagNTyp]
  119.            ,[BsN_Aktywny]
  120.            ,[BsN_Miesiac]
  121.            ,[BsN_DataDst]
  122.            ,[BsN_TwGGROTyp]
  123.            ,[BsN_TwGGRONumer]
  124.            ,[BsN_FrMNumer]
  125.            ,[BsN_TSPrzeliczenia]
  126.            ,[BsN_Harmonogram]
  127.             ,[Bsn_Asajautomat])
  128.      VALUES
  129.            (@bsnid
  130.            ,@BsN_DataUtworzenia
  131.            ,@operId
  132.            ,@operId
  133.            ,@operId
  134.            ,@frsid
  135.            ,DatePart(Year, @getdate)
  136.            ,Left(@magKod,1)
  137.            ,@BsN_Numer
  138.            ,''
  139.            ,@BsN_RokMiesiac
  140.            ,''
  141.            ,''
  142.            ,4
  143.            ,@BsN_DataUtworzenia
  144.            ,1
  145.            ,-16
  146.            ,-1
  147.            ,2
  148.            ,1
  149.            ,@magid
  150.            ,208
  151.            ,0
  152.            ,0
  153.            ,@BsN_DataUtworzenia
  154.            ,-16
  155.            ,@grupatow1
  156.            ,3
  157.            ,0
  158.            ,0
  159.             ,1)
  160.            
  161. --print 'BstNag utworzony'  
  162. --INSERT INTO dbo.SED_log (program, klucz, wartosc)
  163. --VALUES ('SED_ZamowieniaFiPo','proc','BstNag utworzony')        
  164.            
  165.     INSERT INTO [CDN].[BstMagazyny]
  166.            ([BsM_BsNID]
  167.            ,[BsM_MagTyp]
  168.            ,[BsM_MagNumer])
  169.      VALUES
  170.            (@bsnid
  171.            ,208
  172.            ,@magid)
  173.  
  174.     INSERT INTO [CDN].[BstMagazyny]
  175.            ([BsM_BsNID]
  176.            ,[BsM_MagTyp]
  177.            ,[BsM_MagNumer])
  178.      VALUES
  179.            (@bsnid
  180.            ,336
  181.            ,0)
  182. --print 'BstMagazyn utworzone'          
  183.            
  184.     INSERT INTO [CDN].[BstSkladniki]
  185.            ([BsK_BsNID]
  186.            ,[BsK_Rodzaj]
  187.            ,[BsK_UwzgledniajWBilansie]
  188.            ,[BsK_Opis]
  189.            ,[BsK_SQL]
  190.            ,[BsK_Kod]
  191.            ,[BsK_Pozycja])
  192.      select @bsnid ,BSF_ID, 1, BSF_Nazwa, BSF_SQL, BSF_Kod, 0 from
  193.         CDN.BstSkladnikiDefAsaj
  194.         JOIN
  195.         CDN.BstSkladnikiAsaj ON BSF_ID = bsfid
  196.         --2012-03-05
  197.         WHERE mnoznik <> 0
  198.         ORDER BY BSF_ID
  199. --print 'BstSkladniki utworzone'       
  200. --INSERT INTO dbo.SED_log (program, klucz, wartosc)
  201. --VALUES ('SED_ZamowieniaFiPo','proc','BstSkladniki utworzone')  
  202.  
  203.        
  204. --tablica pomocnicza do obliczeń  
  205.     CREATE TABLE #BstSElem(
  206.     [BsS_TwrNumer] [int] NOT NULL,
  207.     [BsS_BsNID] [int] NOT NULL,
  208.     [BsS_Rodzaj] [smallint] NOT NULL,
  209.     [BsS_Ilosc] [decimal](19, 4) NULL)
  210.    
  211.    
  212.     declare @tablica TABLE (twrnumer int)
  213.     INSERT INTO @tablica (twrnumer)
  214.     --declare @magid int
  215. --SET @magid = 15
  216.     select Twr_GIDNumer      
  217.             from cdn.TwrKarty WITH (NOLOCK)
  218.             where
  219.             Twr_Archiwalny = 0
  220.             AND
  221.             (
  222.             (Twr_GIDNumer in (SELECT Rez_TwrNumer FROM CDN.Rezerwacje WITH (NOLOCK) WHERE Rez_MagNumer = @MagId))
  223.             OR
  224.             ((SELECT Sum(Twz_Ilosc) FROM CDN.TwrZasoby WITH (NOLOCK) WHERE TwZ_TwrNumer = TWr_GIDNumer AND TwZ_MagNumer = @magid) <
  225.             (SELECT Sum(Tpm_IloscMin) FROM CDN.TwrParMag WITH (NOLOCK) WHERE Tpm_TwrNumer = Twr_GIDNumer AND Tpm_MagNumer = @magid))
  226.             )
  227.             AND Left(Twr_Certyfikat,2)<>'04'
  228.             ORDER BY Twr_GIDNumer
  229.  
  230. -- kursor po towarach BEGIN
  231.     declare @towarid int
  232.    
  233.     declare @defrodzaj int
  234.     declare @defmnoznik int
  235.     declare @defSQL varchar(2048)
  236.    
  237.     declare @defWynik decimal(19,4) --wynik obliczeń
  238.     declare @defWynikTotal decimal(19,4)
  239.     declare kursorTowar cursor forward_only FOR
  240.     ---------------------------------------------------------------------------------------
  241.     ---------------------------------------------------------------------------------------
  242.  
  243.  
  244.             SELECT twrnumer FROM @tablica
  245.             ORDER BY twrnumer
  246.  
  247.     open kursorTowar
  248.     FETCH NEXT FROM kursorTowar INTO @towarid
  249.  
  250.         while @@FETCH_STATUS = 0
  251.         begin
  252. --      INSERT INTO dbo.SED_log (program, klucz, wartosc)
  253. --VALUES ('SED_ZamowieniaFiPo','proc','kursor begin @towarid='+str(@towarid))  
  254. -- kursor po składnikach (def) BEGIN
  255.  
  256.             --CREATE TABLE #t1 (BsE_TwrNumer int, BsE_BsNID int)
  257.             --INSERT INTO #t1 (BsE_TwrNumer, BsE_BsNID) VALUES (@towarid, @bsnid)    
  258.                 --declare kursorDef cursor forward_only FOR
  259.                     --select  BsK_Rodzaj, mnoznik, BsK_SQL from CDN.BstSkladniki  WITH (NOLOCK)
  260.                     --JOIN CDN.BstSkladnikiAsaj WITH (NOLOCK) ON BsK_Rodzaj = bsfid
  261.                     --WHERE BsK_BsNID = @bsnid AND IsNull(mnoznik,0) <> 0
  262.                     --ORDER BY BsK_Rodzaj
  263.                 --open kursorDef
  264.                 --FETCH NEXT FROM kursorDef INTO @defrodzaj, @defmnoznik, @defSQL
  265.                  
  266.                     --while @@FETCH_STATUS = 0
  267.                     --begin
  268.                  
  269.  
  270.                    
  271.                     --SET @defSQL = 'SELECT ('+@defSQL+') FROM #t1 as T'
  272.                     --CREATE TABLE #wynikTab (wynik decimal(19,4))
  273.  
  274.                     --INSERT INTO #wynikTab
  275.                     --EXEC (@defSQL)
  276.                     --SELECT @defWynik = @defmnoznik * wynik FROM #wynikTab
  277.  
  278.                     --DROP TABLE #wynikTab
  279.  
  280.                    
  281.                     --SET @defWynik = IsNull(@defWynik,0)
  282.  
  283.                     SET @defWynik = 0
  284.                    
  285.                     INSERT INTO #BstSElem
  286.                        ([BsS_TwrNumer]
  287.                        ,[BsS_BsNID]
  288.                        ,[BsS_Rodzaj]
  289.                        ,[BsS_Ilosc])
  290.  
  291.                     --VALUES
  292.                     --   (@towarid
  293.                     --   ,@bsnid
  294.                     --   ,@defrodzaj
  295.                     --   ,@defWynik)
  296.  
  297.         select @towarid,@bsnid, BsK_Rodzaj, CDN.bstile_asaj(@towarid,@magid, @bsnid, BsK_Rodzaj) from CDN.BstSkladniki  WITH (NOLOCK)
  298.         JOIN CDN.BstSkladnikiAsaj WITH (NOLOCK) ON BsK_Rodzaj = bsfid
  299.         WHERE BsK_BsNID = @bsnid AND IsNull(mnoznik,0) <> 0
  300.         ORDER BY BsK_Rodzaj
  301.      
  302. --          INSERT INTO dbo.SED_log (program, klucz, wartosc)
  303. --VALUES ('SED_ZamowieniaFiPo','proc','INSERT INTO #BstSElem')  
  304.         --2013-06-27
  305.         --dodanie powiązań ZS z ZZ i ZW
  306.         if (1=2)
  307.         Begin
  308.  
  309.  
  310.             INSERT INTO CDN.SED_Bilans_ZS (BstZS_ZaNGIDNumer, BstZS_BsNID, BstZS_ZaEGIDLp, BstZS_TwrNumer, BstZS_Ilosc)
  311.             SELECT ZaN_GIDNumer, BsN_ID , ZaE_GIDLp, ZaE_TwrNumer, Sum(IsNull(Rez_Ilosc - Rez_Zrealizowano - Rez_IloscMag,0)) FROM CDN.Rezerwacje (nolock)
  312.             join cdn.zamnag on Rez_ZrdNumer=zan_gidnumer and Rez_ZrdTyp = ZaN_GIDTyp  
  313.             JOIN CDN.ZamElem on ZaN_GIDNumer = ZaE_GIDNumer AND ZaE_GIDLp = Rez_ZrdLp
  314.             join cdn.bstnag on BsN_ID=@bsnid
  315.             WHERE Rez_TwrTyp = 16 AND Rez_TwrNumer =@towarid AND Rez_GIDTyp = 2576
  316.             AND ((Rez_ZrdTyp = 960 AND Rez_Zrodlo = 9) OR (Rez_Zrodlo = 10 AND Rez_Aktywna = 1))
  317.             and right(zan_zamseria,2)<>'re' and right(zan_zamseria,3)<>'reo' and Rez_KntNumer<>59477
  318.             and rez_magnumer=@magid and rez_datawaznosci>DateDiff(day,'18001228',getdate()) and zan_cechaopis='ŻÓŁTE'
  319.             GROUP BY ZaN_GIDNumer,BsN_ID, ZaE_GIDLp, ZaE_TwrNumer
  320.  
  321.  
  322.  
  323.         END
  324.  
  325.             --FETCH NEXT FROM kursorDef INTO @defrodzaj, @defmnoznik, @defSQL
  326.             --End
  327.             --close kursorDef
  328.             --DEALLOCATE kursorDef
  329.             --DROP TABLE #t1
  330.             --kursor po składnikach (def)END  
  331.  
  332.         --sprawdzamy czy ilosc rózna od 0
  333.  
  334.         SET @defWynikTotal = 0
  335.         SELECT @defWynikTotal = IsNull(Sum(BsS_Ilosc),0) from #BstSElem
  336.         set @defWynikTotal=@defWynikTotal*-1
  337.        
  338.         --set @defWynikTotal = 1
  339.         --print 'Wynik total= '+str(@defWynikTotal)
  340.         if @defWynikTotal > 0
  341.             Begin
  342.             --insertowanie do tablic
  343.             INSERT INTO [CDN].[BstElem]
  344.                    ([BsE_BsNID]
  345.                    ,[BsE_TwrNumer]
  346.                    ,[BsE_DoZamowienia]
  347.                    ,[BsE_Flaga])
  348.              VALUES
  349.                    (@bsnid
  350.                    ,@towarid
  351.                    ,@defWynikTotal
  352.                    ,0)     
  353.                    
  354.             INSERT INTO [CDN].[BstSElem]
  355.            ([BsS_TwrNumer]
  356.            ,[BsS_BsNID]
  357.            ,[BsS_Rodzaj]
  358.            ,[BsS_Ilosc])
  359.            SELECT * FROM #BstSElem
  360.    
  361.            
  362.             --2012-09-07
  363.             UPDATE [CDN].[BstElem] SET BsE_DoZamowienia = BsE_DoZamowienia * 1
  364.             WHERE BsE_BsNID = @bsnid
  365.             AND BsE_TwrNumer = @towarid
  366.            
  367.            
  368.             ENd;
  369.  
  370.  
  371.         TRUNCATE TABLE #BstSElem
  372.          
  373. --          INSERT INTO dbo.SED_log (program, klucz, wartosc)
  374. --VALUES ('SED_ZamowieniaFiPo','proc','kursor END')  
  375.  
  376.         FETCH NEXT FROM kursorTowar INTO @towarid
  377.         End
  378.     close kursorTowar
  379.     DEALLOCATE kursorTowar
  380. -- kursor po towarach END    
  381.      
  382.      
  383.      
  384.      
  385.     DROP TABLE #BstSElem
  386.    
  387.     DECLARE @filtr varchar(50)
  388.     SET @filtr = 'BsN_ID='+Str(@bsnid)
  389.    
  390.  
  391.  
  392.     --exec [CDN].[SED_BilansAutoZamawiaczPrc] @filtr,1,1,0,1,1,1
  393.    
  394.    
  395.    
  396.    
  397.     --print @filtr
  398.  
  399.     SELECT @bsnid as BSNID
  400.    
  401.    
  402.     SET ANSI_WARNINGS ON
  403. END
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement