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