root/trunk/SQL/Jobs/Wplaty_CDN_BazaReklam.txt @ 983

Wersja 491, 3.3 KB (wprowadzona przez marek, 17 years temu)

fixes #135

Line 
1
2DECLARE @lastJobDate datetime
3SELECT @lastJobDate=[date] FROM Run_Job WHERE job_name='WplatyCDN'
4
5PRINT @lastJobDate
6
7DECLARE @CDN TABLE
8(
9        NumerFaktury nvarchar(25),
10        DataWplaty datetime,
11        SymbolPotwierdzenia nvarchar(25),
12        Brutto decimal(9,2),
13        WalutaBrutto decimal(9,2),
14        Waluta nvarchar(3)
15)
16
17
18INSERT INTO @CDN
19SELECT
20Z.BZd_NumerPelny AS NumerFaktury,
21Z.BZd_DataRoz AS DataWplaty,
22K.Brk_LNumer AS SymbolPotwierdzenia,
23Z.BZd_KwotaRozSys AS Brutto,
24Z.BZd_KwotaRoz AS WalutaBrutto,
25Waluta =
26CASE
27WHEN Z.BZd_Waluta IS NULL OR Z.BZd_Waluta='' THEN 'PLN'
28ELSE Z.BZd_Waluta
29END
30
31FROM REPLICATOR.CDN_SAM_PRESS.CDN.BnkZdarzenia AS Z
32INNER JOIN
33(
34SELECT K1.* FROM REPLICATOR.CDN_SAM_PRESS.CDN.BnkRozKwoty AS K1
35INNER JOIN
36(
37SELECT  BRK_PDokID, MAX(BRK_TS_Mod) AS BRK_TS_Mod FROM REPLICATOR.CDN_SAM_PRESS.CDN.BnkRozKwoty
38WHERE BRK_TS_Mod >= @lastJobDate
39GROUP BY BRK_PDokID
40) K2 ON K2.BRK_PDokID=K1.BRK_PDokID AND K2.BRK_TS_Mod=K1.BRK_TS_Mod
41
42) K ON Z.BZd_BZdID=K.BRK_PDokID
43WHERE Z.BZd_KatId=1
44
45
46SELECT * FROM @CDN
47
48
49DECLARE @Wplaty TABLE
50(
51        RowNumber INT IDENTITY (1, 1),
52        IdFaktury INT,
53        Numer INT,
54        Roz NVARCHAR(8),
55        Rok INT,
56        Data DATETIME,
57        SymbolPotwierdzenia nvarchar(25),
58        Brutto DECIMAL(9,2),
59        BruttoWaluta DECIMAL(9,2),
60        Waluta NVARCHAR(10)
61)
62
63INSERT INTO @Wplaty
64SELECT F.Id_Faktury AS IdFaktury,
65CAST(dbo.SplitAsScalar(CDN.NumerFaktury, 1, '/') AS INT) AS Numer,
66dbo.SplitAsScalar(CDN.NumerFaktury, 2, '/') AS Roz,
67CAST(dbo.SplitAsScalar(CDN.NumerFaktury, 3, '/') AS INT) AS Rok,
68CDN.DataWplaty,
69CDN.SymbolPotwierdzenia,
70CDN.Brutto,
71CDN.WalutaBrutto,
72CDN.Waluta
73FROM @CDN CDN
74LEFT OUTER JOIN Faktury F ON
75CAST(dbo.SplitAsScalar(CDN.NumerFaktury, 1, '/') AS INT)=F.Numer
76AND CAST(dbo.SplitAsScalar(CDN.NumerFaktury, 2, '/') AS NVARCHAR(8))=F.Numer_Roz
77AND CAST(dbo.SplitAsScalar(CDN.NumerFaktury, 3, '/') AS INT)=F.Numer_Rok
78WHERE F.SystemKsiegowyId=2
79ORDER BY CDN.DataWplaty
80
81
82SELECT * FROM @Wplaty
83
84
85DECLARE @MaxRows int
86DECLARE @RowCnt int
87SET @RowCnt=1
88SELECT @MaxRows=count(*) from @Wplaty
89DECLARE @idFaktury INT
90
91DECLARE @Suma decimal(9,2)
92WHILE @RowCnt <= @MaxRows
93BEGIN
94        SELECT @idFaktury=IdFaktury FROM @Wplaty WHERE RowNumber=@RowCnt
95        IF (SELECT COUNT(*) FROM Wplaty WHERE idFaktury=@idFaktury)>0
96                BEGIN
97                        PRINT 'UPDATE dla faktury: ' + CAST(@idFaktury AS NVARCHAR)
98                        UPDATE W
99                        SET W.dataWplaty=C.Data, W.symbolPotwierdzenia=C.SymbolPotwierdzenia, W.rodzajPotwierdzenia='PRZ', W.brutto=C.Brutto, W.waluta_brutto=C.BruttoWaluta, W.waluta_miano=C.Waluta
100                        FROM Wplaty W, @Wplaty C
101                        WHERE W.idFaktury=C.idFaktury
102                        AND C.idFaktury=@idFaktury
103                       
104                END
105        ELSE
106                BEGIN
107                        PRINT 'INSERT dla faktury: ' + CAST(@idFaktury AS NVARCHAR)
108                        INSERT INTO Wplaty(idFaktury, dataWplaty, symbolPotwierdzenia, rodzajPotwierdzenia, brutto, waluta_brutto, waluta_miano)
109                        SELECT IdFaktury, Data, SymbolPotwierdzenia, 'PRZ', Brutto, BruttoWaluta, Waluta
110                        FROM @Wplaty
111                        WHERE IdFaktury=@idFaktury
112                END
113
114        UPDATE F
115        SET F.suma_zaplat=C.Brutto, F.zaplata_data=C.Data, F.zaplata_opis=C.SymbolPotwierdzenia
116        FROM Faktury F, @Wplaty C
117        WHERE F.Id_Faktury=C.idFaktury
118        AND C.idFaktury=@idFaktury
119
120        SET @RowCnt=@RowCnt+1
121END
122
123UPDATE Run_Job
124SET [date]=GETDATE(), job_status='OK'
125WHERE job_name='WplatyCDN'
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.