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
FROM 
(
	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 = 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 
	INNER JOIN FAKTURA_DETAILS ON FAKTURY.ID_FAKTURY = FAKTURA_DETAILS.ID_FAKTURY 
	LEFT JOIN AGENCI ON FAKTURY.NUMER_ROZ = AGENCI.F_ROZ 
	LEFT JOIN AGENCJE ON FAKTURY.ID_SPRZEDAWCY = AGENCJE.Id_agencji
	WHERE 
	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
) 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