root/trunk/SQL/StoredProcedures/sp_AddUpdateIssueChange.txt @ 915

Wersja 824, 2.9 KB (wprowadzona przez marek, 17 years temu)

re #204

Line 
1
2SET ANSI_NULLS ON
3GO
4SET QUOTED_IDENTIFIER ON
5GO
6
7-- =============================================
8-- Author:              marek
9-- Create date: 22/07/2009
10-- Description: Dodaje lub uaktualnia rekord zmiany emisji w tabeli ZmianyEmisji
11-- =============================================
12ALTER PROCEDURE [dbo].[sp_AddUpdateIssueChange]
13        -- Add the parameters for the stored procedure here
14        @issueId DECIMAL(18,0),
15        @currentIssueNumer INT,
16        @newIssueNumber INT
17AS
18BEGIN
19        -- SET NOCOUNT ON added to prevent extra result sets from
20        -- interfering with SELECT statements.
21        SET NOCOUNT ON;
22
23DECLARE @invoiceId INT
24DECLARE @sellDate DATETIME
25DECLARE @currentIssueDate DATETIME
26DECLARE @newIssueDate DATETIME
27DECLARE @adName VARCHAR(20)
28
29SELECT @invoiceId=F.Id_Faktury,
30@sellDate=F.Data_Sprzedazy,
31@currentIssueDate = N.Data_W,
32@newIssueDate=N1.data_w,
33@adName=R.[Id Reklamy]
34FROM dbo.[Uka¿e siê w Nr] U
35INNER JOIN Reklama R ON U.ReklamaId=R.ReklamaId
36INNER JOIN Nr N ON N.Tyt=R.[tytu³] AND N.Nrw=U.[Nr Wydania]
37INNER JOIN Faktury F ON F.id_Faktury=U.idFaktury
38INNER JOIN Nr N1 ON N1.Tyt=R.[tytu³] AND N1.Nrw=@newIssueNumber
39WHERE U.id=@issueId
40
41IF @invoiceId IS NULL GOTO END_PROC
42
43IF (MONTH(@sellDate)=MONTH(GETDATE()) AND YEAR(@sellDate)=YEAR(GETDATE()))
44        AND
45        (
46        (MONTH(@currentIssueDate)=MONTH(GETDATE()) AND YEAR(@currentIssueDate)=YEAR(GETDATE()))
47        OR
48        (MONTH(@newIssueDate)=MONTH(GETDATE()) AND YEAR(@newIssueDate)=YEAR(GETDATE()))
49        )
50BEGIN
51
52UPDATE dbo.Faktury
53SET ZmianaEmisji=1
54WHERE id_faktury=@invoiceId
55
56UPDATE dbo.Faktura_Details
57SET Rok=YEAR(@newIssueDate), Miesiac=MONTH(@newIssueDate),
58Nazwa_Uslugi=@adName + ' | ' + CAST(@newIssueNumber AS VARCHAR),
59Nr_Wydania=@newIssueNumber
60WHERE id_faktury=@invoiceId AND Nr_Wydania=@currentIssueNumer
61
62
63GOTO END_PROC
64END
65
66
67    -- Insert statements for procedure here
68        DECLARE @rows INT
69
70        SELECT @rows = COUNT(Id) FROM zmianyEmisji WHERE idEmisji=@issueId AND YEAR(dataZmiany)=YEAR(GETDATE()) AND MONTH(dataZmiany)=MONTH(GETDATE())
71
72        IF @rows>0
73                BEGIN
74                        UPDATE zmianyEmisji
75                        SET nastNrWyd=@newIssueNumber, dataZmiany=GETDATE()
76                        WHERE idEmisji=@issueId AND YEAR(dataZmiany)=YEAR(GETDATE()) AND MONTH(dataZmiany)=MONTH(GETDATE())
77
78                        --sprawdz czy nowy numer emisji nie jest taki sam jak stary numer, jesli tak to usun zmiane emisji
79                        DECLARE @issueNumber INT
80                        SELECT @issueNumber=popNrWyd FROM zmianyEmisji WHERE idEmisji=@issueId AND YEAR(dataZmiany)=YEAR(GETDATE()) AND MONTH(dataZmiany)=MONTH(GETDATE())
81                        IF @issueNumber=@newIssueNumber
82                                DELETE FROM zmianyEmisji WHERE idEmisji=@issueId AND YEAR(dataZmiany)=YEAR(GETDATE()) AND MONTH(dataZmiany)=MONTH(GETDATE())
83                END
84        ELSE
85                BEGIN
86                        INSERT INTO zmianyEmisji(idEmisji, popNrWyd, nastNrWyd, dataZmiany)
87                        VALUES(@issueId, @currentIssueNumer, @newIssueNumber, GETDATE())
88                END
89
90END_PROC:
91
92END
93GO
94
95SET ANSI_NULLS OFF
96GO
97SET QUOTED_IDENTIFIER OFF
98GO
99
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.