Ticket #184: 0_Subscription_update.sql

Plik 0_Subscription_update.sql, 8.4 KB (dodany przez sylwek, 16 years temu)
xx
Line 
1USE BAZA_REKLAM
2GO
3
4SET ANSI_NULLS ON
5GO
6SET QUOTED_IDENTIFIER ON
7GO
8
9
10/****** Object:  Table [dbo].[SubscriptionType]    Script Date: 06/17/2009 15:39:34 ******/
11CREATE TABLE [dbo].[SubscriptionType](
12        [Id] [int] NOT NULL,
13        [Name] [nvarchar](50) COLLATE SQL_Latin1_General_CP1250_CI_AS NOT NULL,
14        [PricePln] [decimal](9, 2) NULL,
15        [PriceEur] [decimal](9, 2) NULL,
16        [TitleId] [int] NULL,
17        [AmtMounth] [int] NULL,
18 CONSTRAINT [PK_SubscriptionType] PRIMARY KEY CLUSTERED
19(
20        [Id] ASC
21) ON [PRIMARY]
22) ON [PRIMARY]
23GO
24
25
26INSERT INTO [SubscriptionType] VALUES(1, 'Abonament 3M', 550, 129, 41, 3);
27INSERT INTO [SubscriptionType] VALUES(2, 'Abonament 6M', 505, 119, 41, 6);
28INSERT INTO [SubscriptionType] VALUES(3, 'Abonament 12M', 420, 99, 41, 12);
29
30/****** Object:  Table [dbo].[Subscription]    Script Date: 07/21/2009 15:00:06 ******/
31SET ANSI_PADDING ON
32GO
33CREATE TABLE [dbo].[Subscription](
34        [Id] [int] IDENTITY(1,1) NOT NULL,
35        [Guid] [uniqueidentifier] NOT NULL,
36        [CustomerId] [int] NOT NULL,
37        [SubscriptionTypeId] [int] NOT NULL,
38        [BasePrice] [decimal](9, 2) NULL,
39        [Discount] [decimal](9, 2) NULL,
40        [TotalPrice] [decimal](9, 2) NULL,
41        [Currency] [varchar](3) COLLATE SQL_Latin1_General_CP1250_CI_AS NULL,
42        [OrderId] [int] NULL,
43        [CreatedOn] [datetime] NULL,
44        [CreatedBy] [int] NULL,
45        [UpdatedOn] [datetime] NULL,
46        [UpdatedBy] [int] NULL,
47        [SubscriptionItems] [int] NULL,
48        [StartDate] [datetime] NULL,
49        [Vat] [decimal](9, 2) NULL,
50        [InvoiceId] [int] NULL
51 CONSTRAINT [PK_Subscription] PRIMARY KEY CLUSTERED
52(
53        [Id] ASC
54) ON [PRIMARY]
55) ON [PRIMARY]
56GO
57
58SET ANSI_PADDING OFF
59GO
60
61
62/****** Object:  Table [dbo].[SubscriptionDetail]    Script Date: 07/21/2009 15:02:50 ******/
63CREATE TABLE [dbo].[SubscriptionDetail](
64        [Id] [int] IDENTITY(1,1) NOT NULL,
65        [SubscriptionId] [int] NOT NULL,
66        [Price] [decimal](9, 2) NULL,
67        [PricePLN] [decimal](9, 2) NULL,
68        [Year] [int] NULL,
69        [Month] [int] NULL,
70        [InvoiceId] [int] NULL,
71 CONSTRAINT [PK_SubscriptionDetails] PRIMARY KEY CLUSTERED
72(
73        [Id] ASC
74) ON [PRIMARY]
75) ON [PRIMARY]
76GO
77
78
79/****** Object:  StoredProcedure [dbo].[sp_GetProductsWithOrder]    Script Date: 06/17/2009 15:38:52 ******/
80-- =============================================
81-- Create date: 2009-11-23
82-- =============================================
83CREATE PROCEDURE [dbo].[sp_GetProductsWithOrder]
84        @clientId int
85AS
86BEGIN
87        -- SET NOCOUNT ON added to prevent extra result sets from
88        -- interfering with SELECT statements.
89        SET NOCOUNT ON;
90
91    -- Insert statements for procedure here
92
93DECLARE @ProductsWithOrder TABLE
94(
95        Id int,
96        TitleId int,
97        Type varchar(20),
98        ProductType int,
99        ShortName varchar(20),
100        StartDate datetime,
101        Price decimal(9,2),
102        TotalPrice decimal(9,2),
103        Vat decimal(9,2),
104        Currency varchar(3),
105        IsActivated bit,
106        OrderId int,
107        HasInvoice bit,
108        DetailCount int,
109        Discount decimal(9,2)
110)
111
112INSERT INTO @ProductsWithOrder
113SELECT R.ReklamaID, T.Id, 'Reklama', 2, R.[ID REKLAMY],
114E.Data1Emisji, R.NETTO, R.NETTO * (1+R.VAT) AS Brutto, R.VAT,
115Currency = CASE
116                        WHEN Brutto_Euro_Miano IS NULL OR Brutto_Euro_Miano='' THEN 'PLN'
117                        ELSE R.Brutto_Euro_Miano
118                   END,
119R.[ZATWIERDZONO DO DRUKU],
120R.idZamowienia,
121HasInvoices =
122        CASE
123                WHEN I.invoiceCount IS NULL OR I.invoiceCount < 1 THEN 0
124                ELSE 1
125        END,
126I.InvoiceCount,
127R.RABAT
128FROM REKLAMA AS R
129LEFT OUTER JOIN (SELECT ReklamaId, MIN(DataEmisji) AS Data1Emisji FROM EmisjeReklamy GROUP BY ReklamaId) AS E ON E.ReklamaId = R.ReklamaID
130LEFT OUTER JOIN (SELECT ReklamaId, InvoiceCount = count(*) FROM [uka¿e siê w nr] WHERE zafakturowana=1 GROUP BY Reklamaid) I ON I.ReklamaId=R.reklamaid
131INNER JOIN dbo.Zamowienia Z ON Z.idZamowienia = R.idZamowienia
132INNER JOIN dbo.[Lista Tytu³ów] T ON T.Symb = R.[Tytu³]
133WHERE
134Z.idKlienta = @clientId AND R.idZamowienia IS NOT NULL
135UNION
136SELECT A.Id, AT.TitleId, 'Abonament', 1, 'Abo-' + CAST(A.Id AS varchar),
137A.StartDate, A.BasePrice, A.TotalPrice, A.Vat, A.Currency, 0, A.OrderId,
138HasInvoices =
139        CASE
140                WHEN SD.InvoiceCount IS NULL OR SD.InvoiceCount < 1 THEN 0
141                ELSE 1
142        END,
143A.SubscriptionItems,
144A.Discount
145FROM Subscription AS A
146LEFT OUTER JOIN (SELECT SubscriptionId, InvoiceCount = COUNT(InvoiceId) FROM SubscriptionDetail WHERE InvoiceId IS NOT NULL GROUP BY SubscriptionId) SD ON SD.SubscriptionId=A.ID
147INNER JOIN SubscriptionType AS AT ON AT.Id = A.SubscriptionTypeId
148WHERE
149A.CustomerId = @clientId AND A.OrderId IS NOT NULL
150
151SELECT * FROM @ProductsWithOrder
152
153END
154GO
155
156
157/****** Object:  StoredProcedure [dbo].[sp_GetProductsWithoutOrder]    Script Date: 07/21/2009 14:55:02 ******/
158-- =============================================
159-- Create date: 2009-11-23
160-- =============================================
161CREATE PROCEDURE [dbo].[sp_GetProductsWithoutOrder]
162        @customerId int
163AS
164BEGIN
165        -- SET NOCOUNT ON added to prevent extra result sets from
166        -- interfering with SELECT statements.
167        SET NOCOUNT ON;
168
169    -- Insert statements for procedure here
170
171DECLARE @ProductsWithoutOrder TABLE
172(
173        Id int,
174        TitleId int,
175        Type varchar(20),
176        ProductType int,
177        ShortName varchar(20),
178        StartDate datetime,
179        Price decimal(9,2),
180        TotalPrice decimal(9,2),
181        Vat decimal(9,2),
182        Currency varchar(3),
183        IsActivated bit,
184        HasInvoice bit,
185        DetailCount int,
186        Discount decimal(9,2)
187)
188
189INSERT INTO @ProductsWithoutOrder
190SELECT     R.ReklamaID, T.Id, 'Reklama', 2, R.[ID REKLAMY], E.Data1Emisji, R.NETTO, R.NETTO * (1+R.VAT) AS Brutto, R.VAT,
191Currency = CASE
192                        WHEN Brutto_Euro_Miano IS NULL OR Brutto_Euro_Miano='' THEN 'PLN'
193                        ELSE R.Brutto_Euro_Miano
194                   END,
195R.[ZATWIERDZONO DO DRUKU],
196HasInvoices =
197        CASE
198                WHEN I.invoiceCount IS NULL OR I.invoiceCount < 1 THEN 0
199                ELSE 1
200        END,
201I.InvoiceCount,
202R.RABAT
203FROM REKLAMA AS R
204LEFT OUTER JOIN (SELECT     ReklamaId, MIN(DataEmisji) AS Data1Emisji FROM EmisjeReklamy GROUP BY ReklamaId) AS E ON E.ReklamaId = R.ReklamaID
205LEFT OUTER JOIN (SELECT ReklamaId, InvoiceCount = count(*) FROM [uka¿e siê w nr] WHERE zafakturowana=1 GROUP BY Reklamaid) I ON I.ReklamaId=R.reklamaid
206INNER JOIN dbo.[Lista Tytu³ów] T ON T.Symb=R.[Tytu³]
207WHERE
208(R.CustomerID = @customerId)
209AND (R.idZamowienia IS NULL)
210AND (R.[FAKTURA WYSTAWIONO] = 0)
211AND
212(
213        (YEAR(R.[DATA ZAMÓWIENIA]) = 2008 AND R.[ZATWIERDZONO DO DRUKU] = 1)
214OR
215        (YEAR(R.[DATA ZAMÓWIENIA]) >= 2009)
216)
217UNION
218SELECT A.Id, AT.TitleId, 'Abonament', 1, 'Abo-' + CAST(A.Id AS varchar),
219A.StartDate, A.BasePrice, A.TotalPrice, A.Vat, A.Currency, 0,
220HasInvoices =
221        CASE
222                WHEN SD.InvoiceCount IS NULL OR SD.InvoiceCount < 1 THEN 0
223                ELSE 1
224        END,
225A.SubscriptionItems,
226A.Discount
227FROM Subscription AS A
228LEFT OUTER JOIN (SELECT SubscriptionId, InvoiceCount = COUNT(InvoiceId) FROM SubscriptionDetail WHERE InvoiceId IS NOT NULL GROUP BY SubscriptionId) SD ON SD.SubscriptionId=A.ID
229INNER JOIN SubscriptionType AS AT ON AT.Id = A.SubscriptionTypeId
230WHERE
231A.CustomerId = @customerId AND A.OrderId IS NULL
232
233SELECT * FROM @ProductsWithoutOrder
234
235END
236GO
237
238
239
240/****** Object:  StoredProcedure [dbo].[sp_AddProductToOrder]    Script Date: 06/17/2009 15:40:25 ******/
241-- =============================================
242-- Create date: 2009-11-23
243-- =============================================
244CREATE PROCEDURE [dbo].[sp_AddProductToOrder]
245        -- Add the parameters for the stored procedure here
246        @productId int,
247        @productType int,
248        @orderId int
249       
250AS
251BEGIN
252        -- SET NOCOUNT ON added to prevent extra result sets from
253        -- interfering with SELECT statements.
254        SET NOCOUNT ON;
255
256    IF(@productType=2) -- Reklama
257                BEGIN
258                        UPDATE dbo.Reklama SET idZamowienia=@orderId WHERE ReklamaId=@productId
259                        RETURN
260                END
261        IF(@productType=1)
262                BEGIN
263                        UPDATE dbo.Subscription SET OrderId=@orderId WHERE Id=@productId
264                        RETURN
265                END
266END
267GO
268
269
270/****** Object:  StoredProcedure [dbo].[sp_RemoveProductFromOrder]    Script Date: 06/17/2009 15:40:43 ******/
271-- =============================================
272-- Create date: 2009-11-23
273-- =============================================
274CREATE PROCEDURE [dbo].[sp_RemoveProductFromOrder]
275        -- Add the parameters for the stored procedure here
276        @productId int,
277        @productType int
278       
279AS
280BEGIN
281        -- SET NOCOUNT ON added to prevent extra result sets from
282        -- interfering with SELECT statements.
283        SET NOCOUNT ON;
284
285    IF(@productType=2) -- Reklama
286                BEGIN
287                        UPDATE dbo.Reklama SET idZamowienia=NULL WHERE ReklamaId=@productId
288                        RETURN
289                END
290        IF(@productType=1)
291                BEGIN
292                        UPDATE dbo.Subscription SET OrderId=NULL WHERE Id=@productId
293                        RETURN
294                END
295END