root/trunk/SQL/StoredProcedures/PROC_WYLICZ_I_ZAPISZ_PROWIZJE.txt @ 674

Wersja 674, 2.2 KB (wprowadzona przez marek, 17 years temu)

re #178

Line 
1
2SET ANSI_NULLS ON
3GO
4SET QUOTED_IDENTIFIER OFF
5GO
6
7ALTER PROCEDURE [dbo].[PROC_WYLICZ_I_ZAPISZ_PROWIZJE]
8                @ROK INTEGER = 2003,
9                @MS INTEGER = 2,
10                @idAgencji integer = 2
11AS
12
13-- wyczysc wszystko dla danej agencji
14DELETE FROM Prowizje
15WHERE Rok =@Rok
16AND Ms=@Ms
17AND Agencja = (SELECT symbol FROM Agencje where Id_Agencji = @idAgencji)
18
19--
20INSERT INTO Prowizje
21SELECT  a2.symbol,b_agent, B_ROK, b_ms, numer_faktury, NETTO, NrKorygowanejFaktury,
22CASE Z.ZP
23        WHEN 1 THEN Z.procentProwizji
24        ELSE ROUND(P.PR_PROWIZJI,2)
25END,
26Z.ZP,
27CASE Z.ZP
28        WHEN 1 THEN ROUND(Z.procentProwizji * Netto, 2)
29        ELSE ROUND(ROUND(P.PR_PROWIZJI, 2) * Netto, 2)
30END AS kwotaProwizji,
31id_faktury
32FROM dbo.VIEW_POMOCNICZY_BUDZET VPB
33LEFT JOIN dbo.[PLAN] P ON VPB.b_rok = P.rok AND VPB.b_ms = P.ms AND P.symbol = VPB.b_agent
34LEFT JOIN zamowienia Z ON Z.idZamowienia = VPB.idZamowienia
35LEFT JOIN agenci A1 ON A1.symbol = VPB.B_agent 
36LEFT JOIN agencje A2 ON A2.id_agencji = A1.id_agencji
37WHERE B_ROK = @ROK
38AND B_MS = @MS
39AND A1.id_agencji = @idAgencji
40
41-- aktualizuj prowizje dla faktur z poprzednich miesiecy
42DECLARE @Prowizje TABLE
43(
44idProwizji INT,
45procentProwizji float,
46kwotaProwizji money,
47ZP bit
48)
49
50INSERT INTO @Prowizje
51        SELECT
52        Pr.idProwizji,
53        procentProwizji =
54        CASE
55          WHEN Z.ZP=1 THEN ROUND(Z.procentProwizji, 2)
56          ELSE ROUND(PL.Pr_Prowizji, 2)
57        END,
58        kwotaProwizji =
59        CASE
60          WHEN Z.ZP=1 THEN ROUND(Pr.Netto * Z.procentProwizji, 2)
61          ELSE ROUND(Pr.Netto * PL.Pr_Prowizji, 2)
62        END,
63        Z.ZP
64        FROM WplywyByTytul W
65        INNER JOIN Prowizje Pr ON Pr.idFaktury = W.ID_FAKTURY
66        INNER JOIN Agencje A ON A.Symbol = W.Agencja
67        INNER JOIN Faktury F ON F.ID_FAKTURY = W.ID_FAKTURY
68        INNER JOIN Zamowienia Z ON Z.idZamowienia = F.idZamowienia
69        LEFT OUTER JOIN [PLAN] Pl ON Pl.Symbol = W.Symbol AND Pl.Rok=YEAR(W.dataWplaty) AND Pl.MS=MONTH(W.dataWplaty)
70        WHERE YEAR(W.dataWplaty)=@ROK and MONTH(W.dataWplaty)=@MS
71        AND A.id_Agencji=@idAgencji
72        AND PR.ms<>@MS
73
74UPDATE P
75SET
76P.procentProwizji=P1.procentProwizji,
77P.kwotaProwizji=P1.kwotaProwizji,
78P.ZP=P1.ZP
79FROM Prowizje P INNER JOIN @Prowizje P1 ON P.idProwizji=P1.idProwizji
80
81
82RETURN
83GO
84
85SET ANSI_NULLS OFF
86GO
87SET QUOTED_IDENTIFIER ON
88GO
89
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.