
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER PROCEDURE [dbo].[PROC_WYLICZ_I_ZAPISZ_PROWIZJE]
		@ROK INT = 2003,
		@MS INT = 2,
		@idAgencji INT = 2
AS
-- wyczysc wszystko dla danej agencji
DELETE FROM Prowizje 
WHERE Rok = @Rok 
AND Ms = @Ms 
AND Agencja = (SELECT symbol FROM Agencje where Id_Agencji = @idAgencji)


INSERT INTO Prowizje (Agencja, Agent, Rok, Ms, nrFaktury, Netto, procentProwizji, Zp, idFaktury)
SELECT 
W.Agencja, 
W.Symbol, 
YEAR(W.dataWplaty) AS Rok, 
Month(W.dataWplaty) AS Ms,
W.NR_FK,
W.Netto,
--NULL AS nrFakturyKorygowanej,
procentProwizji = 
CASE 
WHEN Z.Zp = 1 THEN CAST(Z.procentProwizji AS decimal(9,2))
ELSE COALESCE(CAST(P.Pr_Prowizji AS decimal(9,2)), 0) 
END,
Z.Zp,
W.ID_FAKTURY
FROM WplywyByTytul AS W
INNER JOIN Faktury AS F ON W.ID_FAKTURY = F.Id_Faktury
INNER JOIN Zamowienia AS Z ON Z.idZamowienia = F.idZamowienia
LEFT OUTER JOIN [Plan] AS P ON P.Rok=@rok AND P.Ms=@ms AND P.Symbol=W.Symbol
WHERE (YEAR(W.dataWplaty) = @rok) 
AND (MONTH(W.dataWplaty) = @ms)
--TODO: dodac pole typ faktury, ktory bedzie jednoznacznie okreslal jakie faktury nas interesuja...
AND F.Numer_Roz<>'POZ' AND F.Numer_Roz<>'KAT'
AND W.roznica_nowa<=60
AND F.Id_Sprzedawcy=@idAgencji
AND F.Korekta<>1
ORDER BY Pr_Prowizji

--*******************************************************************************************
-- Usun prowizje dla faktur ktore zostaly zaplacone w tym miesiacu a moga jeszcze wystepowac
-- w tabeli prowizje w poprzednich miesiacach

DECLARE @IdFaktur TABLE
(
	id INT
)

INSERT INTO @IdFaktur
SELECT 
W.ID_FAKTURY
FROM WplywyByTytul AS W
INNER JOIN Faktury AS F ON W.ID_FAKTURY = F.Id_Faktury
INNER JOIN Zamowienia AS Z ON Z.idZamowienia = F.idZamowienia
LEFT OUTER JOIN [Plan] AS P ON P.Rok=@rok AND P.Ms=@ms AND P.Symbol=W.Symbol
WHERE (YEAR(W.dataWplaty) = @rok) 
AND (MONTH(W.dataWplaty) = @ms)
--TODO: dodac pole typ faktury, ktory bedzie jednoznacznie okreslal jakie faktury nas interesuja...
AND F.Numer_Roz<>'POZ' AND F.Numer_Roz<>'KAT'
AND W.roznica_nowa<=60
AND F.Id_Sprzedawcy=@idAgencji
AND F.Korekta<>1

DELETE FROM Prowizje
WHERE idFaktury IN (SELECT ID FROM @idFaktur)
AND (Rok<>@rok OR Ms<>@ms)

--*******************************************************************************************


RETURN
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO

