Index: trunk/SQL/Reports/SprzedazReklam2009.txt
===================================================================
--- trunk/SQL/Reports/SprzedazReklam2009.txt (revision 520)
+++ trunk/SQL/Reports/SprzedazReklam2009.txt (revision 521)
@@ -1,2 +1,16 @@
+DECLARE @Korekty TABLE
+(
+	Agencja nvarchar(50),
+	Agent nvarchar(100),
+	Rok int,
+	Ms int,
+	NrRoz nvarchar(8),
+	Netto money,
+	Vat money,
+	Brutto money,
+	SumaZaplat money,
+	Ilosc int
+)
+INSERT INTO @Korekty
 SELECT Agencja, Agent, ROK, MS, NrRoz, 
 SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc
@@ -4,22 +18,47 @@
 (
 	SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent, 
+	YEAR(Korekta.DATA_SPRZEDAZY) AS ROK, MONTH(Korekta.DATA_SPRZEDAZY) AS MS, Korekta.NUMER_ROZ AS NrRoz, 
+	NETTO = (Korekta.Netto * -1),
+	VAT = ((Korekta.Vat) * -1),
+	BRUTTO = ((Korekta.Netto * (1 + Korekta.S_Vat)) * -1),
+	0 AS SZap
+	FROM VIEW_KOREKTY AS Korekta 
+	INNER JOIN AGENCI ON Korekta.NUMER_ROZ = AGENCI.F_ROZ 
+	INNER JOIN AGENCJE ON Korekta.Id_agencji = AGENCJE.Id_agencji
+	WHERE 
+	YEAR(Korekta.DATA_SPRZEDAZY)=@rok AND MONTH(Korekta.DATA_SPRZEDAZY)=@miesiac
+	AND (AGENCJE.Id_agencji<>4 OR Korekta.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR Korekta.NUMER_ROZ ='POZ')
+	AND Korekta.SystemKsiegowyId IN (@systemKsiegowy)
+	GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, Korekta.ID_FAKTURY, Korekta.DATA_SPRZEDAZY, 
+	YEAR(Korekta.DATA_SPRZEDAZY), Korekta.NUMER_ROZ, 
+	Korekta.Netto, Korekta.Vat, Korekta.Brutto, Korekta.S_Vat
+) T
+GROUP BY Agencja, Agent, ROK, MS, NrRoz
+
+
+DECLARE @Faktury TABLE
+(
+	Agencja nvarchar(50),
+	Agent nvarchar(100),
+	Rok int,
+	Ms int,
+	NrRoz nvarchar(8),
+	Netto money,
+	Vat money,
+	Brutto money,
+	SumaZaplat money,
+	Ilosc int
+)
+INSERT INTO @Faktury
+-- sprzedaz - faktury bez korekt
+SELECT Agencja COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agencja, Agent COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agent, ROK, MS, NrRoz COLLATE SQL_Latin1_General_CP1250_CI_AS AS NrRoz, 
+SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc
+FROM 
+(
+	SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent, 
 	YEAR(FAKTURY.DATA_SPRZEDAZY) AS ROK, MONTH(FAKTURY.DATA_SPRZEDAZY) AS MS, FAKTURY.NUMER_ROZ AS NrRoz, 
-	NETTO = CASE 
-				WHEN Korekta.Netto IS NULL THEN SUM(FAKTURA_DETAILS.NETTO)
-				ELSE Korekta.Netto
-			END,
-	VAT = CASE 
-				WHEN Korekta.Vat IS NULL THEN SUM(FAKTURA_DETAILS.VAT)
-				ELSE Korekta.Vat
-			END,
-	BRUTTO = CASE 
-				WHEN Korekta.Brutto IS NULL THEN SUM(FAKTURA_DETAILS.BRUTTO)
-				ELSE Korekta.Brutto
-			END,	
-
---	SUM(FAKTURA_DETAILS.NETTO) AS NETTO, 
---	SUM(FAKTURA_DETAILS.VAT) AS VAT, 
---	SUM(FAKTURA_DETAILS.BRUTTO) AS BRUTTO, 
-	
+	NETTO = SUM(FAKTURA_DETAILS.NETTO),
+	VAT = SUM(FAKTURA_DETAILS.NETTO * FAKTURA_DETAILS.S_VAT),
+	BRUTTO = SUM(FAKTURA_DETAILS.NETTO * (1 + FAKTURA_DETAILS.S_VAT)),	
 	FAKTURY.suma_zaplat AS SZap
 	FROM FAKTURY 
@@ -27,13 +66,24 @@
 	LEFT JOIN AGENCI ON FAKTURY.NUMER_ROZ = AGENCI.F_ROZ 
 	LEFT JOIN AGENCJE ON FAKTURY.ID_SPRZEDAWCY = AGENCJE.Id_agencji
-    LEFT OUTER JOIN dbo.VIEW_KOREKTY AS Korekta ON Korekta.idFakturyKorekta = FAKTURY.ID_FAKTURY
 	WHERE 
-	(YEAR(FAKTURY.DATA_SPRZEDAZY) =@rok) AND (MONTH(FAKTURY.DATA_SPRZEDAZY) = @miesiac) 
+	YEAR(FAKTURY.DATA_SPRZEDAZY)=@rok AND MONTH(FAKTURY.DATA_SPRZEDAZY)=@miesiac
+
 	AND (AGENCJE.Id_agencji<>4 OR FAKTURY.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR FAKTURY.NUMER_ROZ ='POZ')
 	AND FAKTURY.KOREKTA=0 AND FAKTURY.SystemKsiegowyId IN (@systemKsiegowy)
 	GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, FAKTURY.ID_FAKTURY, FAKTURY.DATA_SPRZEDAZY, 
-	YEAR(FAKTURY.DATA_SPRZEDAZY), FAKTURY.NUMER_ROZ, FAKTURY.suma_zaplat, FAKTURY.Korekta,
-	Korekta.Netto, Korekta.Vat, Korekta.Brutto
+	YEAR(FAKTURY.DATA_SPRZEDAZY), FAKTURY.NUMER_ROZ, FAKTURY.suma_zaplat, FAKTURY.Korekta
 ) T
 GROUP BY Agencja, Agent, ROK, MS, NrRoz
+
+-- zrob update dla tych ktorzy mieli korekty
+UPDATE F
+SET F.Netto=F.Netto+K.Netto, F.Vat=F.Vat+K.Vat, F.Brutto=F.Brutto+K.Brutto
+FROM @Faktury F, @Korekty K
+WHERE F.Agencja=K.Agencja AND F.Agent=K.Agent
+
+-- dodaj tych ktorzy mieli korekty a nie mieli zadnej sprzedazy
+INSERT INTO @Faktury 
+SELECT * FROM @Korekty WHERE NrRoz NOT IN (SELECT NrRoz FROM @Faktury)
+
+SELECT * FROM @Faktury
 ORDER BY Agencja, Agent
