root/trunk/SQL/StoredProcedures/sp_GetZestawienieZamowien.txt @ 960

Wersja 790, 4.5 KB (wprowadzona przez marek, 17 years temu)

re #196 - poprawiono blad powtarzania tego samego zamowienia kilkarazy oraz dodano nowa kolumne

Line 
1
2SET ANSI_NULLS ON
3GO
4SET QUOTED_IDENTIFIER ON
5GO
6
7-- =============================================
8-- Author:              <Author,,Name>
9-- Create date: <Create Date,,>
10-- Description: <Description,,>
11-- =============================================
12ALTER PROCEDURE [dbo].[sp_GetZestawienieZamowien]
13        -- Add the parameters for the stored procedure here
14        @agencja NVARCHAR(50)=NULL,
15        @nrZamowienia INT=NULL,
16        @rokZamowienia INT=NULL,
17        @miesiacZamowienia INT=NULL,
18        @kodAgenta NVARCHAR(3)=NULL,
19        @kodKlienta NVARCHAR(10)=NULL
20       
21AS
22BEGIN
23
24SET NOCOUNT ON;
25
26DECLARE @query nvarchar(4000)
27
28SET @query = '
29DECLARE @ZestawienieZamowien TABLE
30(
31        idZamowienia INT,
32        agencja NVARCHAR(50),
33        agent NVARCHAR(50),
34        idKlienta INT,
35        nrZamowienia INT,
36        rokZamowienia INT,
37        kodAgenta NVARCHAR(3),
38        nrZamowieniaExt NVARCHAR(76),
39        iloscReklam INT,
40        wartoscNetto FLOAT,
41        kwotaWalutaBrutto float,
42        data_od SMALLDATETIME,
43        data_od_bez_FK SMALLDATETIME,
44        nettoZafakturowane MONEY,
45        DoZafakturowania FLOAT,
46        kodKlienta NVARCHAR(10),
47        Brutto_Euro_Miano NVARCHAR(4)
48)
49
50DECLARE @SumaNaNastepnejFakturze TABLE
51(
52        idZamowienia INT,
53        SumaNaNastepnejFakturze DECIMAL(18,2)
54)
55
56INSERT INTO @ZestawienieZamowien
57SELECT TOP 1000 idZamowienia, agencja, agent, idKlienta, nrZamowienia, rokZamowienia,
58                          kodAgenta, nrZamowieniaExt, iloscReklam, wartoscNetto, kwotaWalutaBrutto, data_od, data_od_bez_FK,
59                          nettoZafakturowane, DoZafakturowania, kodKlienta, Brutto_Euro_Miano
60                          FROM VIEW_ZESTAWIENIE_ZAMOWIEN_NOWE WHERE 1=1 '
61
62IF NOT (@agencja IS NULL)
63SET @query = @query + ' AND agencja=''' + @agencja + ''' '
64
65IF NOT (@nrZamowienia IS NULL)
66SET @query = @query + ' AND nrZamowienia=' + CAST(@nrZamowienia as nvarchar) + ' '
67
68IF NOT (@rokZamowienia IS NULL)
69SET @query = @query + ' AND rokZamowienia=' + CAST(@rokZamowienia as nvarchar) + ' '
70
71IF NOT (@miesiacZamowienia IS NULL)
72SET @query = @query + ' AND (DATEPART(MONTH, data_od)=' + CAST(@miesiacZamowienia as nvarchar) + ' OR DATEPART(MONTH, data_od_bez_FK)=' + CAST(@miesiacZamowienia as nvarchar) + ') '
73
74IF NOT (@kodAgenta IS NULL)
75SET @query = @query + ' AND kodAgenta=''' + @kodAgenta + ''' '
76
77IF NOT (@kodKlienta IS NULL)
78SET @query = @query + ' AND kodKlienta=''' + @kodKlienta + ''' '
79
80IF (NOT (@rokZamowienia IS NULL)) AND (NOT (@miesiacZamowienia IS NULL))
81BEGIN
82
83SET @query = @query +   '
84        DECLARE @startDate DATETIME
85        DECLARE @endDate DATETIME
86
87        SELECT @startDate=dateadd(yy,(' + CAST(@rokZamowienia as nvarchar) + '-1900),0) + dateadd(mm,' + CAST(@miesiacZamowienia as nvarchar) + '-1,0) + 0
88        SELECT @endDate=dateadd(yy,(' + CAST(@rokZamowienia as nvarchar) + '-1900),0) + dateadd(mm,' + CAST(@miesiacZamowienia as nvarchar) + '-1+3,0) + 0
89
90        INSERT INTO @SumaNaNastepnejFakturze
91        SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
92        INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
93        INNER JOIN [Uka¿e siê w nr] U ON U.ReklamaId=R.ReklamaId
94        INNER JOIN Nr N ON N.Tyt=R.[Tytu³] AND N.NRW=U.[Nr Wydania]
95        WHERE
96        Z.rodzajFakturowania=0
97        AND U.Status=0
98        AND U.Zafakturowana=0
99        AND YEAR(N.Data_W)=' + CAST(@rokZamowienia as nvarchar) + ' AND MONTH(N.Data_W)=' + CAST(@miesiacZamowienia as nvarchar) + '
100        GROUP BY Z.idZamowienia
101        UNION
102        SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
103        INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
104        INNER JOIN [Uka¿e siê w nr] U ON U.ReklamaId=R.ReklamaId
105        INNER JOIN Nr N ON N.Tyt=R.[Tytu³] AND N.NRW=U.[Nr Wydania]
106        WHERE
107        Z.rodzajFakturowania=1
108        AND U.Status=0
109        AND U.Zafakturowana=0
110        AND N.Data_W>=@startDate AND N.Data_W<@endDate
111        GROUP BY Z.idZamowienia
112        UNION
113        SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
114        INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
115        INNER JOIN [Uka¿e siê w nr] U ON U.ReklamaId=R.ReklamaId
116        INNER JOIN Nr N ON N.Tyt=R.[Tytu³] AND N.NRW=U.[Nr Wydania]
117        WHERE
118        Z.rodzajFakturowania=2
119        AND U.Status=0
120        AND U.Zafakturowana=0
121        GROUP BY Z.idZamowienia
122        '
123END
124
125
126
127
128SET @query = @query + ' SELECT ZZ.*, SNF.SumaNaNastepnejFakturze FROM @ZestawienieZamowien ZZ '
129SET @query = @query + ' LEFT OUTER JOIN @SumaNaNastepnejFakturze SNF ON SNF.idZamowienia=ZZ.idZamowienia '
130SET @query = @query + ' ORDER BY ZZ.data_od_bez_FK, ZZ.nrZamowienia, ZZ.kodKlienta '
131
132--PRINT @query
133
134
135EXECUTE sp_executesql @query
136RETURN
137
138END
139GO
140
141SET ANSI_NULLS OFF
142GO
143SET QUOTED_IDENTIFIER OFF
144GO
145
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.