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

Wersja 411, 2.1 KB (wprowadzona przez marek, 17 years temu)

re #32

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
12delete from PROWIZJE
13where ROK =@ROK and MS =@MS and agencja =
14 (select symbol from agencje where id_Agencji = @idAgencji)
15
16insert into PROWIZJE
17SELECT  a2.symbol,b_agent, B_ROK,b_ms,numer_faktury,NETTO,NrKorygowanejFaktury,
18case z.zp
19when 1 then z.procentProwizji
20else round(P.PR_PROWIZJI,2)
21end,
22z.zp,
23case z.zp
24when 1 then  round(z.procentProwizji * Netto,2)
25else round(round(P.PR_PROWIZJI,2) * Netto,2)
26end
27as kwotaProwizji, id_faktury
28FROM dbo.VIEW_POMOCNICZY_BUDZET VPB left join dbo.[PLAN] P on
29VPB.b_rok = P.rok and VPB.b_ms = P.ms and P.symbol = VPB.b_agent left join
30zamowienia Z on Z.idZamowienia = VPB.idZamowienia left join
31agenci A1 on A1.symbol = VPB.B_agent  left join
32agencje A2 on A2.id_agencji = A1.id_agencji
33where B_ROK =@ROK and B_MS =@MS and A1.id_agencji = @idAgencji
34
35-- aktualizuj prowizjie dla faktur z poprzednich miesiecy
36
37DECLARE @Prowizje TABLE
38(
39idProwizji INT,
40procentProwizji float,
41kwotaProwizji money,
42ZP bit
43)
44
45INSERT INTO @Prowizje
46        SELECT
47        Pr.idProwizji,
48        procentProwizji =
49        CASE
50          WHEN Z.ZP=1 THEN ROUND(Z.procentProwizji, 2)
51          ELSE ROUND(PL.Pr_Prowizji, 2)
52        END,
53        kwotaProwizji =
54        CASE
55          WHEN Z.ZP=1 THEN ROUND(Pr.Netto * Z.procentProwizji, 2)
56          ELSE ROUND(Pr.Netto * PL.Pr_Prowizji, 2)
57        END,
58        Z.ZP
59        FROM WplywyByTytul W
60        INNER JOIN Prowizje Pr ON Pr.idFaktury = W.ID_FAKTURY
61        INNER JOIN Agencje A ON A.Symbol = W.Agencja
62        INNER JOIN Faktury F ON F.ID_FAKTURY = W.ID_FAKTURY
63        INNER JOIN Zamowienia Z ON Z.idZamowienia = F.idZamowienia
64        LEFT OUTER JOIN [PLAN] Pl ON Pl.Symbol = W.Symbol AND Pl.Rok=YEAR(W.dataWplaty) AND Pl.MS=MONTH(W.dataWplaty)
65        WHERE YEAR(W.dataWplaty)=@ROK and MONTH(W.dataWplaty)=@MS
66        AND A.id_Agencji=@idAgencji
67        AND PR.ms<>@MS
68
69UPDATE P
70SET
71P.procentProwizji=P1.procentProwizji,
72P.kwotaProwizji=P1.kwotaProwizji,
73P.ZP=P1.ZP
74FROM Prowizje P INNER JOIN @Prowizje P1 ON P.idProwizji=P1.idProwizji
75
76
77return
78GO
79
80SET ANSI_NULLS OFF
81GO
82SET QUOTED_IDENTIFIER ON
83GO
84
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.