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