
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_GetZestawienieZamowien]
	-- Add the parameters for the stored procedure here
	@agencja NVARCHAR(50)=NULL,
	@nrZamowienia INT=NULL,
	@rokZamowienia INT=NULL,
	@miesiacZamowienia INT=NULL,
	@kodAgenta NVARCHAR(3)=NULL,
	@kodKlienta NVARCHAR(10)=NULL
	
AS
BEGIN

SET NOCOUNT ON;

DECLARE @query nvarchar(4000)

SET @query = '
DECLARE @ZestawienieZamowien TABLE
(
	idZamowienia INT,
	agencja NVARCHAR(50),
	agent NVARCHAR(50),
	idKlienta INT,
	nrZamowienia INT,
	rokZamowienia INT,
	kodAgenta NVARCHAR(3),
	nrZamowieniaExt NVARCHAR(76),
	iloscReklam INT,
	wartoscNetto FLOAT,
	kwotaWalutaBrutto float,
	data_od SMALLDATETIME,
	data_od_bez_FK SMALLDATETIME,
	nettoZafakturowane MONEY,
	DoZafakturowania FLOAT,
	kodKlienta NVARCHAR(10),
	Brutto_Euro_Miano NVARCHAR(4)
)

DECLARE @SumaNaNastepnejFakturze TABLE
(
	idZamowienia INT,
	SumaNaNastepnejFakturze DECIMAL(18,2)
)

INSERT INTO @ZestawienieZamowien 
SELECT TOP 1000 idZamowienia, agencja, agent, idKlienta, nrZamowienia, rokZamowienia, 
			  kodAgenta, nrZamowieniaExt, iloscReklam, wartoscNetto, kwotaWalutaBrutto, data_od, data_od_bez_FK,
			  nettoZafakturowane, DoZafakturowania, kodKlienta, Brutto_Euro_Miano
			  FROM VIEW_ZESTAWIENIE_ZAMOWIEN_NOWE WHERE 1=1 '

IF NOT (@agencja IS NULL)
SET @query = @query + ' AND agencja=''' + @agencja + ''' '

IF NOT (@nrZamowienia IS NULL)
SET @query = @query + ' AND nrZamowienia=' + CAST(@nrZamowienia as nvarchar) + ' '

IF NOT (@rokZamowienia IS NULL)
SET @query = @query + ' AND rokZamowienia=' + CAST(@rokZamowienia as nvarchar) + ' '

IF NOT (@miesiacZamowienia IS NULL)
SET @query = @query + ' AND (DATEPART(MONTH, data_od)=' + CAST(@miesiacZamowienia as nvarchar) + ' OR DATEPART(MONTH, data_od_bez_FK)=' + CAST(@miesiacZamowienia as nvarchar) + ') '

IF NOT (@kodAgenta IS NULL)
SET @query = @query + ' AND kodAgenta=''' + @kodAgenta + ''' '

IF NOT (@kodKlienta IS NULL)
SET @query = @query + ' AND kodKlienta=''' + @kodKlienta + ''' '

IF (NOT (@rokZamowienia IS NULL)) AND (NOT (@miesiacZamowienia IS NULL))
BEGIN

SET @query = @query + 	' 
	DECLARE @startDate DATETIME
	DECLARE @endDate DATETIME

	SELECT @startDate=dateadd(yy,(' + CAST(@rokZamowienia as nvarchar) + '-1900),0) + dateadd(mm,' + CAST(@miesiacZamowienia as nvarchar) + '-1,0) + 0
	SELECT @endDate=dateadd(yy,(' + CAST(@rokZamowienia as nvarchar) + '-1900),0) + dateadd(mm,' + CAST(@miesiacZamowienia as nvarchar) + '-1+3,0) + 0

	INSERT INTO @SumaNaNastepnejFakturze
	SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
	INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
	INNER JOIN [Ukaże się w nr] U ON U.ReklamaId=R.ReklamaId
	INNER JOIN Nr N ON N.Tyt=R.[Tytuł] AND N.NRW=U.[Nr Wydania]
	WHERE 
	Z.rodzajFakturowania=0
	AND U.Status=0 
	AND U.Zafakturowana=0
	AND YEAR(N.Data_W)=' + CAST(@rokZamowienia as nvarchar) + ' AND MONTH(N.Data_W)=' + CAST(@miesiacZamowienia as nvarchar) + '
	GROUP BY Z.idZamowienia
	UNION
	SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
	INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
	INNER JOIN [Ukaże się w nr] U ON U.ReklamaId=R.ReklamaId
	INNER JOIN Nr N ON N.Tyt=R.[Tytuł] AND N.NRW=U.[Nr Wydania]
	WHERE 
	Z.rodzajFakturowania=1
	AND U.Status=0 
	AND U.Zafakturowana=0
	AND N.Data_W>=@startDate AND N.Data_W<@endDate
	GROUP BY Z.idZamowienia
	UNION
	SELECT Z.idZamowienia, SUM(ROUND((R.[Cena Jedn] * (1-R.Rabat)), 2)) AS SumaFaktura FROM Reklama R
	INNER JOIN Zamowienia Z ON R.idZamowienia=Z.idZamowienia
	INNER JOIN [Ukaże się w nr] U ON U.ReklamaId=R.ReklamaId
	INNER JOIN Nr N ON N.Tyt=R.[Tytuł] AND N.NRW=U.[Nr Wydania]
	WHERE 
	Z.rodzajFakturowania=2
	AND U.Status=0 
	AND U.Zafakturowana=0
	GROUP BY Z.idZamowienia 
	'
END




SET @query = @query + ' SELECT ZZ.*, SNF.SumaNaNastepnejFakturze FROM @ZestawienieZamowien ZZ '
SET @query = @query + ' LEFT OUTER JOIN @SumaNaNastepnejFakturze SNF ON SNF.idZamowienia=ZZ.idZamowienia '
SET @query = @query + ' ORDER BY ZZ.data_od_bez_FK, ZZ.nrZamowienia, ZZ.kodKlienta '

--PRINT @query


EXECUTE sp_executesql @query
RETURN

END
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

