root/trunk/SQL/StoredProcedures/sp_ImportCDNPayments.txt @ 535

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

fixes #135

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