
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
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 prowizjie 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

