Pokaż
Ignoruj:
Data:
2009-06-03 17:11:23 (17 years ago)
Autor:
marek
Opis:

re #161 - merged with latest trunk

Pliki:
1 zmodyfikowane

Legenda:

Bez zmian
Dodane
Usunięte
  • branches/ReklamaReorganizacja/SQL/StoredProcedures/PROC_WYLICZ_I_ZAPISZ_PROWIZJE.txt

    r411 r680  
    55GO 
    66 
    7 ALTER Procedure [dbo].[PROC_WYLICZ_I_ZAPISZ_PROWIZJE] 
    8 @ROK INTEGER = 2003, 
    9 @MS INTEGER = 2, 
    10 @idAgencji integer = 2 
    11 As 
    12 delete from PROWIZJE  
    13 where ROK =@ROK and MS =@MS and agencja =  
    14  (select symbol from agencje where id_Agencji = @idAgencji) 
     7ALTER PROCEDURE [dbo].[PROC_WYLICZ_I_ZAPISZ_PROWIZJE] 
     8                @ROK INT = 2003, 
     9                @MS INT = 2, 
     10                @idAgencji INT = 2 
     11AS 
    1512 
    16 insert into PROWIZJE  
    17 SELECT  a2.symbol,b_agent, B_ROK,b_ms,numer_faktury,NETTO,NrKorygowanejFaktury, 
    18 case z.zp 
    19 when 1 then z.procentProwizji 
    20 else round(P.PR_PROWIZJI,2) 
    21 end, 
    22 z.zp, 
    23 case z.zp 
    24 when 1 then  round(z.procentProwizji * Netto,2) 
    25 else round(round(P.PR_PROWIZJI,2) * Netto,2) 
    26 end 
    27 as kwotaProwizji, id_faktury 
    28 FROM dbo.VIEW_POMOCNICZY_BUDZET VPB left join dbo.[PLAN] P on 
    29 VPB.b_rok = P.rok and VPB.b_ms = P.ms and P.symbol = VPB.b_agent left join 
    30 zamowienia Z on Z.idZamowienia = VPB.idZamowienia left join  
    31 agenci A1 on A1.symbol = VPB.B_agent  left join 
    32 agencje A2 on A2.id_agencji = A1.id_agencji 
    33 where B_ROK =@ROK and B_MS =@MS and A1.id_agencji = @idAgencji 
    34  
    35 -- aktualizuj prowizjie dla faktur z poprzednich miesiecy 
    36  
    37 DECLARE @Prowizje TABLE 
    38 ( 
    39 idProwizji INT, 
    40 procentProwizji float, 
    41 kwotaProwizji money, 
    42 ZP bit 
    43 ) 
    44  
    45 INSERT 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  
    69 UPDATE P 
    70 SET  
    71 P.procentProwizji=P1.procentProwizji, 
    72 P.kwotaProwizji=P1.kwotaProwizji, 
    73 P.ZP=P1.ZP 
    74 FROM Prowizje P INNER JOIN @Prowizje P1 ON P.idProwizji=P1.idProwizji 
     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) 
    7518 
    7619 
    77 return 
     20INSERT INTO Prowizje  
     21SELECT  
     22W.Agencja,  
     23W.Symbol,  
     24YEAR(W.dataWplaty) AS Rok,  
     25Month(W.dataWplaty) AS Ms, 
     26W.NR_FK, 
     27W.Netto, 
     28NULL AS nrFakturyKorygowanej, 
     29procentProwizji =  
     30CASE  
     31WHEN Z.Zp = 1 THEN CAST(Z.procentProwizji AS decimal(9,2)) 
     32ELSE COALESCE(CAST(P.Pr_Prowizji AS decimal(9,2)), 0)  
     33END, 
     34Z.Zp, 
     35W.ID_FAKTURY 
     36FROM WplywyByTytul AS W 
     37INNER JOIN Faktury AS F ON W.ID_FAKTURY = F.Id_Faktury 
     38INNER JOIN Zamowienia AS Z ON Z.idZamowienia = F.idZamowienia 
     39LEFT OUTER JOIN [Plan] AS P ON P.Rok=@rok AND P.Ms=@ms AND P.Symbol=W.Symbol 
     40WHERE (YEAR(W.dataWplaty) = @rok)  
     41AND (MONTH(W.dataWplaty) = @ms) 
     42--TODO: dodac pole typ faktury, ktory bedzie jednoznacznie okreslal jakie faktury nas interesuja... 
     43AND F.Numer_Roz<>'POZ' AND F.Numer_Roz<>'KAT' 
     44AND W.roznica_nowa<=60 
     45AND F.Id_Sprzedawcy=@idAgencji 
     46AND F.Korekta<>1 
     47ORDER BY Pr_Prowizji 
     48 
     49 
     50RETURN 
    7851GO 
    7952