/
coupon.sql
executable file
·190 lines (137 loc) · 2.99 KB
/
coupon.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
-- Coupons
-- get all coupons
PROCEDURE getAll(
IN language_id INT,
IN start INT,
IN limit INT,
OUT fetch_all,
OUT fetch_one,
)
BEGIN
-- coupon
SELECT *
FROM coupon AS coupon WHERE 1 = 1
@SQL_LIMIT(:start, :limit);
SELECT count(*) FROM (
@SQL_COUNT(coupon.coupon_id, coupon) -- this takes previous query removes limit and replaces select columns with parameter product_id
) as count;
END
-- get coupon
PROCEDURE get(
IN coupon_id INT,
IN code CHAR,
IN free_shipping INT,
IN status INT,
OUT fetch_row,
)
BEGIN
-- coupon
SELECT *
FROM coupon as _
WHERE 1 = 1
@IF !empty(:code)
THEN
AND code = :code
END @IF
@IF !empty(:free_shipping)
THEN
AND free_shipping = :free_shipping
END @IF
@IF !empty(:coupon_id)
THEN
AND coupon_id = :coupon_id
END @IF
@IF isset(:status) AND :status != ""
THEN
AND status = :status
END @IF
;
END
-- add coupon
PROCEDURE add(
IN coupon ARRAY,
OUT insert_id
)
BEGIN
-- allow only table fields and set defaults for missing values
:coupon_data = @FILTER(:coupon, coupon)
INSERT INTO coupon
( @KEYS(:coupon_data) )
VALUES ( :coupon_data );
END
-- edit coupon
CREATE PROCEDURE edit(
IN coupon ARRAY,
IN coupon_id INT,
OUT affected_rows
)
BEGIN
-- allow only table fields and set defaults for missing values
@FILTER(:coupon, coupon)
UPDATE coupon
SET @LIST(:coupon)
WHERE coupon_id = :coupon_id
END
-- delete coupon
PROCEDURE delete(
IN coupon_id ARRAY,
OUT affected_rows,
)
BEGIN
-- coupon
DELETE FROM coupon WHERE coupon_id IN(:coupon_id);
END
-- get coupon categories
PROCEDURE getTaxonomies(
IN coupon_id INT,
IN language_id INT,
OUT fetch_all
)
BEGIN
-- coupon
SELECT *
FROM coupon_taxonomy
INNER JOIN taxonomy_item_content tic ON tic.taxonomy_item_id = coupon_taxonomy.taxonomy_item_id AND tic.language_id = :language_id
WHERE coupon_id = :coupon_id;
END
-- get coupon products
PROCEDURE getProducts(
IN coupon_id INT,
IN language_id INT,
OUT fetch_all
)
BEGIN
-- coupon
SELECT *
FROM coupon_product
INNER JOIN product_content pc ON pc.product_id = coupon_product.product_id
WHERE coupon_id = :coupon_id;
END
-- set coupon taxonomies
PROCEDURE setTaxonomies(
IN coupon_taxonomy ARRAY,
IN coupon_id INT,
OUT affected_rows,
OUT affected_rows
)
BEGIN
DELETE FROM coupon_taxonomy WHERE coupon_id = :coupon_id;
@EACH(:coupon_taxonomy)
INSERT INTO coupon_taxonomy
( taxonomy_item_id, coupon_id)
VALUES ( :each, :coupon_id );
END
-- set coupon products
PROCEDURE setProducts(
IN coupon_product ARRAY,
IN coupon_id INT,
OUT affected_rows,
OUT affected_rows
)
BEGIN
DELETE FROM coupon_product WHERE coupon_id = :coupon_id;
@EACH(:coupon_product)
INSERT INTO coupon_product
( product_id, coupon_id)
VALUES ( :each, :coupon_id );
END