
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER PROCEDURE [dbo].[PROC_WYLICZ_I_ZAPISZ_PROWIZJE]
		@ROK INTEGER = 2003,
		@MS INTEGER = 2,
		@idAgencji integer = 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 
SELECT  a2.symbol,b_agent, B_ROK, b_ms, numer_faktury, NETTO, NrKorygowanejFaktury,
CASE Z.ZP
	WHEN 1 THEN Z.procentProwizji
	ELSE ROUND(P.PR_PROWIZJI,2)
END,
Z.ZP,
CASE Z.ZP
	WHEN 1 THEN ROUND(Z.procentProwizji * Netto, 2)
	ELSE ROUND(ROUND(P.PR_PROWIZJI, 2) * Netto, 2)
END AS kwotaProwizji, 
id_faktury
FROM dbo.VIEW_POMOCNICZY_BUDZET VPB 
LEFT JOIN dbo.[PLAN] P ON VPB.b_rok = P.rok AND VPB.b_ms = P.ms AND P.symbol = VPB.b_agent 
LEFT JOIN zamowienia Z ON Z.idZamowienia = VPB.idZamowienia 
LEFT JOIN agenci A1 ON A1.symbol = VPB.B_agent  
LEFT JOIN agencje A2 ON A2.id_agencji = A1.id_agencji
WHERE B_ROK = @ROK 
AND B_MS = @MS 
AND A1.id_agencji = @idAgencji

-- aktualizuj prowizje dla faktur z poprzednich miesiecy
DECLARE @Prowizje TABLE
(
idProwizji INT,
procentProwizji float,
kwotaProwizji money,
ZP bit
)

INSERT INTO @Prowizje
	SELECT 
	Pr.idProwizji,
	procentProwizji = 
	CASE 
	  WHEN Z.ZP=1 THEN ROUND(Z.procentProwizji, 2)
	  ELSE ROUND(PL.Pr_Prowizji, 2)
	END,
	kwotaProwizji = 
	CASE 
	  WHEN Z.ZP=1 THEN ROUND(Pr.Netto * Z.procentProwizji, 2)
	  ELSE ROUND(Pr.Netto * PL.Pr_Prowizji, 2)
	END,
	Z.ZP
	FROM WplywyByTytul W
	INNER JOIN Prowizje Pr ON Pr.idFaktury = W.ID_FAKTURY
	INNER JOIN Agencje A ON A.Symbol = W.Agencja
	INNER JOIN Faktury F ON F.ID_FAKTURY = W.ID_FAKTURY
	INNER JOIN Zamowienia Z ON Z.idZamowienia = F.idZamowienia
	LEFT OUTER JOIN [PLAN] Pl ON Pl.Symbol = W.Symbol AND Pl.Rok=YEAR(W.dataWplaty) AND Pl.MS=MONTH(W.dataWplaty)
	WHERE YEAR(W.dataWplaty)=@ROK and MONTH(W.dataWplaty)=@MS
	AND A.id_Agencji=@idAgencji
	AND PR.ms<>@MS

UPDATE P
SET 
P.procentProwizji=P1.procentProwizji,
P.kwotaProwizji=P1.kwotaProwizji,
P.ZP=P1.ZP
FROM Prowizje P INNER JOIN @Prowizje P1 ON P.idProwizji=P1.idProwizji


RETURN
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO

