Commit c73b18694f22591428f041c5437bb37facada6d1
1 parent
6b4f9034
add new promocode logic
Showing
15 changed files
with
291 additions
and
31 deletions
Show diff stats
src/app/backend/controllers/PromoCodesController.php
@@ -54,6 +54,7 @@ class PromoCodesController extends Controller | @@ -54,6 +54,7 @@ class PromoCodesController extends Controller | ||
54 | $data['code'] = $this->request->getPost('code', 'string', NULL ); | 54 | $data['code'] = $this->request->getPost('code', 'string', NULL ); |
55 | $data['start_date'] = $this->request->getPost('start_date'); | 55 | $data['start_date'] = $this->request->getPost('start_date'); |
56 | $data['end_date'] = $this->request->getPost('end_date'); | 56 | $data['end_date'] = $this->request->getPost('end_date'); |
57 | + $data['single_use'] = $this->request->getPost('single_use'); | ||
57 | $data['discount'] = $this->request->getPost('discount', 'string', NULL ); | 58 | $data['discount'] = $this->request->getPost('discount', 'string', NULL ); |
58 | $data['description'] = $this->request->getPost('description'); | 59 | $data['description'] = $this->request->getPost('description'); |
59 | $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); | 60 | $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); |
@@ -120,6 +121,7 @@ class PromoCodesController extends Controller | @@ -120,6 +121,7 @@ class PromoCodesController extends Controller | ||
120 | $data[0]['description'] = $this->request->getPost('description'); | 121 | $data[0]['description'] = $this->request->getPost('description'); |
121 | $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); | 122 | $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); |
122 | $data[0]['all_items'] = $this->request->getPost('all_items', 'int', NULL); | 123 | $data[0]['all_items'] = $this->request->getPost('all_items', 'int', NULL); |
124 | + $data[0]['single_use'] = $this->request->getPost('single_use', 'int', NULL); | ||
123 | 125 | ||
124 | $cover = $this->uploadImage(); | 126 | $cover = $this->uploadImage(); |
125 | 127 |
src/app/backend/views/promo_codes/addEdit.php
@@ -47,6 +47,14 @@ | @@ -47,6 +47,14 @@ | ||
47 | </div> | 47 | </div> |
48 | </div> | 48 | </div> |
49 | 49 | ||
50 | + | ||
51 | + | ||
52 | + | ||
53 | + <div class="clearfix input_wrapper"> | ||
54 | + <?= '<input type="checkbox" id="single_use" name="single_use" class="single_use" value="1" '.( isset( $page['0']['single_use'] ) && !empty( $page['0']['single_use'] ) && $page['0']['single_use'] == 1 ? 'checked="checked"' : '').' />' ?> | ||
55 | + <label for="single_use"><span></span>Одноразовое использование</label> | ||
56 | + </div> | ||
57 | + | ||
50 | <div class="clearfix input_wrapper"> | 58 | <div class="clearfix input_wrapper"> |
51 | <div class="label"><label for="description">Описание</label></div> | 59 | <div class="label"><label for="description">Описание</label></div> |
52 | <div class="input"> | 60 | <div class="input"> |
src/app/frontend/controllers/AjaxController.php
@@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase | @@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase | ||
173 | } | 173 | } |
174 | 174 | ||
175 | public function applyPromoCodeAction() { | 175 | public function applyPromoCodeAction() { |
176 | - $this->view->disable(); | ||
177 | - $in_cart = $this->session->get('in_cart', []); | ||
178 | - $cart = $this->common->getCartItems($in_cart, $this->lang_id); | 176 | + try { |
177 | + | ||
178 | + $this->view->disable(); | ||
179 | + $in_cart = $this->session->get('in_cart', []); | ||
180 | + $cart = $this->common->getCartItems($in_cart, $this->lang_id); | ||
181 | + | ||
182 | + $promo_code = $this->request->getPost( 'promo_code', 'string', '' ); | ||
183 | + | ||
184 | + $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code); | ||
185 | + $user = isset($this->models->getCustomers()->getOneData($this->session->get('id'))['0']) ? $this->models->getCustomers()->getOneData($this->session->get('id'))['0'] : ''; | ||
186 | + | ||
187 | + if(!empty($promo_code) && $promo_code[0]['single_use']){ | ||
188 | + if( !empty($user)){ | ||
189 | + if(!empty($user['email'])){ | ||
190 | + $data['code'] = $promo_code[0]['code']; | ||
191 | + $data['email'] = $user['email']; | ||
192 | + $promo_code_check = $this->models->getPromoToUser()->getOneDataByCode($data); | ||
193 | + if(!empty($promo_code_check)){ | ||
194 | + throw new \Exception($this->t->_('error_promo_code_already_used')); | ||
195 | + } | ||
196 | + } else { | ||
197 | + throw new \Exception($this->t->_('error_promo_code_empty_email')); | ||
198 | + } | ||
199 | + } else { | ||
200 | + throw new \Exception($this->t->_('error_promo_code_empty_user')); | ||
201 | + } | ||
179 | 202 | ||
180 | - $promo_code = $this->request->getPost( 'promo_code', 'string', '' ); | ||
181 | 203 | ||
182 | - $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code); | ||
183 | 204 | ||
184 | - if(!empty($promo_code)) { | ||
185 | - if($this->common->applyPromoCode($promo_code[0], $cart['items'])) { | ||
186 | - $this->session->set('promo_code', $promo_code[0]); | ||
187 | - $this->common->countOrderSum($cart); | ||
188 | - echo json_encode($cart); | ||
189 | - return; | ||
190 | } | 205 | } |
206 | + | ||
207 | + if(!empty($promo_code)) { | ||
208 | + if($this->common->applyPromoCode($promo_code[0], $cart['items'])) { | ||
209 | + $this->session->set('promo_code', $promo_code[0]); | ||
210 | + $this->common->countOrderSum($cart); | ||
211 | + echo json_encode(['cart' => $cart, | ||
212 | + 'successMessage' => $this->t->_('success_promo_code'), | ||
213 | + 'status'=>'success' | ||
214 | + ]); | ||
215 | + return; | ||
216 | + } else { | ||
217 | + throw new \Exception($this->t->_('error_promo_code')); | ||
218 | + } | ||
219 | + } else { | ||
220 | + throw new \Exception($this->t->_('error_promo_code_is_empty')); | ||
221 | + } | ||
222 | + | ||
223 | + } catch (\Exception $e) { | ||
224 | + | ||
225 | + echo json_encode(['status'=>'error', | ||
226 | + 'errorMessage' => $e->getMessage() | ||
227 | + ]); | ||
228 | + return null; | ||
191 | } | 229 | } |
192 | - return null; | 230 | + |
231 | + | ||
193 | } | 232 | } |
194 | } | 233 | } |
195 | 234 | ||
196 | \ No newline at end of file | 235 | \ No newline at end of file |
src/app/frontend/controllers/DealerController.php
@@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase | @@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase | ||
1520 | 1520 | ||
1521 | if( !empty( $order['proposal_number'] ) ) | 1521 | if( !empty( $order['proposal_number'] ) ) |
1522 | { | 1522 | { |
1523 | + | ||
1524 | + | ||
1525 | + | ||
1523 | $this->sendmail->addCustomer( 2, $order ); | 1526 | $this->sendmail->addCustomer( 2, $order ); |
1524 | 1527 | ||
1525 | $this->session->set( 'in_cart', []); | 1528 | $this->session->set( 'in_cart', []); |
src/app/frontend/controllers/MenuController.php
@@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase | @@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase | ||
211 | 211 | ||
212 | if( !empty( $order['proposal_number'] ) ) | 212 | if( !empty( $order['proposal_number'] ) ) |
213 | { | 213 | { |
214 | + | ||
215 | + | ||
216 | + /** | ||
217 | + * single use promo code logic | ||
218 | + */ | ||
219 | + if(!empty($session_promo_code)){ | ||
220 | + $user = $this->models->getCustomers()->getOneData($this->session->get('id'))['0']; | ||
221 | + | ||
222 | + if($session_promo_code['single_use'] && !empty($user)){ | ||
223 | + if(!empty($user['email'])){ | ||
224 | + $data['code'] = $session_promo_code['code']; | ||
225 | + $data['email'] = $user['email']; | ||
226 | + $this->models->getPromoToUser()->addData($data); | ||
227 | + } | ||
228 | + | ||
229 | + } | ||
230 | + } | ||
231 | + | ||
232 | + | ||
214 | $this->sendmail->addCustomer( 2, $order ); | 233 | $this->sendmail->addCustomer( 2, $order ); |
215 | 234 | ||
216 | $this->session->set( 'in_cart', []); | 235 | $this->session->set( 'in_cart', []); |
src/app/frontend/messages/ru.php
@@ -143,7 +143,7 @@ return array( | @@ -143,7 +143,7 @@ return array( | ||
143 | "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;", | 143 | "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;", |
144 | "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";", | 144 | "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";", |
145 | "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;", | 145 | "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;", |
146 | - "address_four" => "ул. Харьковское шоссе, 166-В, возле магазина \"Сільпо\";", | 146 | + "address_four" => "ул. Харьковское шоссе, 164А, возле магазина \"Сільпо\";", |
147 | "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;", | 147 | "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;", |
148 | "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;", | 148 | "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;", |
149 | "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";", | 149 | "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";", |
@@ -151,7 +151,7 @@ return array( | @@ -151,7 +151,7 @@ return array( | ||
151 | "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;', | 151 | "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;', |
152 | "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', | 152 | "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
153 | "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;', | 153 | "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;', |
154 | - "new_address_fourth" => 'ул. Харьковское шоссе, 166-В, возле магазина "Сільпо";', | 154 | + "new_address_fourth" => 'ул. Харьковское шоссе, 164А, возле магазина "Сільпо";', |
155 | "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;', | 155 | "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;', |
156 | "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;', | 156 | "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;', |
157 | "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";', | 157 | "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";', |
@@ -388,4 +388,8 @@ return array( | @@ -388,4 +388,8 @@ return array( | ||
388 | "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.", | 388 | "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.", |
389 | "lang_name" => "rus", | 389 | "lang_name" => "rus", |
390 | "saldo_period" => "за период", | 390 | "saldo_period" => "за период", |
391 | + "error_promo_code_is_empty" => "Промокод не указан", | ||
392 | + "error_promo_code_empty_user" => "Промокод требует регистрации", | ||
393 | + "error_promo_code_empty_email" => "Промокод требует указанный Email в карточке пользователя", | ||
394 | + "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем" | ||
391 | ); | 395 | ); |
392 | \ No newline at end of file | 396 | \ No newline at end of file |
src/app/frontend/messages/ua.php
@@ -163,7 +163,7 @@ return array( | @@ -163,7 +163,7 @@ return array( | ||
163 | "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;", | 163 | "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;", |
164 | "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";", | 164 | "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";", |
165 | "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;", | 165 | "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;", |
166 | - "address_four" => "вул. Харьківське шосе 166-В, біля магазину \"Сільпо\"", | 166 | + "address_four" => "вул. Харьківське шосе 164А, біля магазину \"Сільпо\"", |
167 | "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;", | 167 | "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;", |
168 | "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;", | 168 | "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;", |
169 | "address_seven"=>"вул. Архітектора Вербицького 22/1", | 169 | "address_seven"=>"вул. Архітектора Вербицького 22/1", |
@@ -172,7 +172,7 @@ return array( | @@ -172,7 +172,7 @@ return array( | ||
172 | "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;', | 172 | "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;', |
173 | "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', | 173 | "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
174 | "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;', | 174 | "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;', |
175 | - "new_address_fourth" => 'вул. Харківське шоссе, 166-В, біля магазину "Сільпо";', | 175 | + "new_address_fourth" => 'вул. Харківське шоссе, 164А, біля магазину "Сільпо";', |
176 | "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;', | 176 | "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;', |
177 | "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;', | 177 | "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;', |
178 | "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";', | 178 | "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";', |
@@ -417,4 +417,8 @@ return array( | @@ -417,4 +417,8 @@ return array( | ||
417 | "faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки <span>в блоці «Фасовка»</span> необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то <span>в графі «Наявність»</span> зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.", | 417 | "faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки <span>в блоці «Фасовка»</span> необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то <span>в графі «Наявність»</span> зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.", |
418 | "lang_name" => "ukr", | 418 | "lang_name" => "ukr", |
419 | "saldo_period" => "за період", | 419 | "saldo_period" => "за період", |
420 | + "error_promo_code_is_empty" => "Промокод не вказаний", | ||
421 | + "error_promo_code_empty_user" => "Промокод потребує реєстрації", | ||
422 | + "error_promo_code_empty_email" => "Промокод потребує вказаний Email в картці користувача", | ||
423 | + "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем" | ||
420 | ); | 424 | ); |
421 | \ No newline at end of file | 425 | \ No newline at end of file |
src/app/frontend/views/menu/order.php
@@ -589,10 +589,16 @@ | @@ -589,10 +589,16 @@ | ||
589 | promo_code: $('#promo_code').val() | 589 | promo_code: $('#promo_code').val() |
590 | }, | 590 | }, |
591 | success: function (cart) { | 591 | success: function (cart) { |
592 | - renderCart(cart); | ||
593 | - $('#total_price_basket').text(cart['total_sum']); | ||
594 | - $alert.addClass('alert-success').removeClass('alert-danger'); | ||
595 | - $alert.find('strong').text(successMessage); | 592 | + if(cart.status == 'success'){ |
593 | + renderCart(cart.cart); | ||
594 | + $('#total_price_basket').text(cart.cart['total_sum']); | ||
595 | + $alert.addClass('alert-success').removeClass('alert-danger'); | ||
596 | + $alert.find('strong').text(cart.successMessage); | ||
597 | + } else { | ||
598 | + $alert.addClass('alert-danger').removeClass('alert-success'); | ||
599 | + $alert.find('strong').text(cart.errorMessage); | ||
600 | + } | ||
601 | + | ||
596 | }, | 602 | }, |
597 | error: function (error) { | 603 | error: function (error) { |
598 | $alert.addClass('alert-danger').removeClass('alert-success'); | 604 | $alert.addClass('alert-danger').removeClass('alert-success'); |
src/config/global.php
@@ -48,7 +48,7 @@ return | @@ -48,7 +48,7 @@ return | ||
48 | '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;', | 48 | '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;', |
49 | '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', | 49 | '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
50 | '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;', | 50 | '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;', |
51 | - '10004'=>'вул. Харьківське шосе 166-В, біля магазину "Сільпо";', | 51 | + '10004'=>'вул. Харьківське шосе 164А, біля магазину "Сільпо";', |
52 | '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;', | 52 | '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;', |
53 | '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />", | 53 | '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />", |
54 | '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.", | 54 | '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.", |
@@ -76,7 +76,7 @@ return | @@ -76,7 +76,7 @@ return | ||
76 | '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;', | 76 | '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;', |
77 | '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', | 77 | '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
78 | '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;', | 78 | '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;', |
79 | - '10004'=>'ул. Харьковское шоссе 166-В, магазин "Професійне насіння" возле магазина "Сільпо";', | 79 | + '10004'=>'ул. Харьковское шоссе 164А, магазин "Професійне насіння" возле магазина "Сільпо";', |
80 | '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";', | 80 | '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";', |
81 | '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />', | 81 | '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />', |
82 | "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.", | 82 | "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.", |
src/lib/models.php
@@ -50,6 +50,7 @@ namespace | @@ -50,6 +50,7 @@ namespace | ||
50 | protected $_reviews = false; | 50 | protected $_reviews = false; |
51 | protected $_modal = false; | 51 | protected $_modal = false; |
52 | protected $_manager_mail = false; | 52 | protected $_manager_mail = false; |
53 | + protected $_promo_to_user = false; | ||
53 | 54 | ||
54 | 55 | ||
55 | 56 | ||
@@ -583,6 +584,17 @@ namespace | @@ -583,6 +584,17 @@ namespace | ||
583 | 584 | ||
584 | return $this->_manager_mail; | 585 | return $this->_manager_mail; |
585 | } | 586 | } |
587 | + | ||
588 | + public function getPromoToUser() | ||
589 | + { | ||
590 | + if( empty($this->_promo_to_user) ) | ||
591 | + { | ||
592 | + $this->_promo_to_user = new \models\promo_to_user(); | ||
593 | + $this->_promo_to_user->setDi( $this->getDi() ); | ||
594 | + } | ||
595 | + | ||
596 | + return $this->_promo_to_user; | ||
597 | + } | ||
586 | } | 598 | } |
587 | } | 599 | } |
588 | 600 |
src/lib/models/promo_codes.php
@@ -103,7 +103,9 @@ class promo_codes extends \db | @@ -103,7 +103,9 @@ class promo_codes extends \db | ||
103 | all_items, | 103 | all_items, |
104 | image, | 104 | image, |
105 | start_date, | 105 | start_date, |
106 | - end_date | 106 | + end_date, |
107 | + single_use | ||
108 | + | ||
107 | ) | 109 | ) |
108 | VALUES | 110 | VALUES |
109 | ( | 111 | ( |
@@ -116,7 +118,8 @@ class promo_codes extends \db | @@ -116,7 +118,8 @@ class promo_codes extends \db | ||
116 | :all_items, | 118 | :all_items, |
117 | :image, | 119 | :image, |
118 | :start_date, | 120 | :start_date, |
119 | - :end_date | 121 | + :end_date, |
122 | + :single_use | ||
120 | ) | 123 | ) |
121 | RETURNING id | 124 | RETURNING id |
122 | ', | 125 | ', |
@@ -130,7 +133,8 @@ class promo_codes extends \db | @@ -130,7 +133,8 @@ class promo_codes extends \db | ||
130 | 'all_items' => $data['all_items'], | 133 | 'all_items' => $data['all_items'], |
131 | 'image' => $data['image'], | 134 | 'image' => $data['image'], |
132 | 'start_date' => $data['start_date'], | 135 | 'start_date' => $data['start_date'], |
133 | - 'end_date' => $data['end_date'] | 136 | + 'end_date' => $data['end_date'], |
137 | + 'single_use' => $data['single_use'] | ||
134 | ], | 138 | ], |
135 | -1 | 139 | -1 |
136 | ); | 140 | ); |
@@ -154,7 +158,8 @@ class promo_codes extends \db | @@ -154,7 +158,8 @@ class promo_codes extends \db | ||
154 | all_items = :all_items, | 158 | all_items = :all_items, |
155 | image = :image, | 159 | image = :image, |
156 | start_date = :start_date, | 160 | start_date = :start_date, |
157 | - end_date = :end_date | 161 | + end_date = :end_date, |
162 | + single_use = :single_use | ||
158 | WHERE | 163 | WHERE |
159 | id = :id | 164 | id = :id |
160 | ', | 165 | ', |
@@ -168,6 +173,7 @@ class promo_codes extends \db | @@ -168,6 +173,7 @@ class promo_codes extends \db | ||
168 | 'image' => $data['image'], | 173 | 'image' => $data['image'], |
169 | 'start_date' => $data['start_date'], | 174 | 'start_date' => $data['start_date'], |
170 | 'end_date' => $data['end_date'], | 175 | 'end_date' => $data['end_date'], |
176 | + 'single_use' => $data['single_use'], | ||
171 | 'id' => $id | 177 | 'id' => $id |
172 | ] | 178 | ] |
173 | ); | 179 | ); |
1 | +<?php | ||
2 | + | ||
3 | +namespace models; | ||
4 | + | ||
5 | + | ||
6 | +class promo_to_user extends \db | ||
7 | +{ | ||
8 | + ///////////////////////////////////for_backend/////////////////////////////////////////// | ||
9 | + public function getAllData() | ||
10 | + { | ||
11 | + | ||
12 | + return $this->get( | ||
13 | + ' | ||
14 | + SELECT * FROM | ||
15 | + public.promo_to_user | ||
16 | + ' | ||
17 | + , | ||
18 | + [ | ||
19 | + ], | ||
20 | + -1 | ||
21 | + ); | ||
22 | + } | ||
23 | + | ||
24 | + | ||
25 | + public function getOneData($id) | ||
26 | + { | ||
27 | + return $this->get( | ||
28 | + ' | ||
29 | + SELECT * | ||
30 | + FROM public.promo_to_user | ||
31 | + WHERE | ||
32 | + id = :id | ||
33 | + ', | ||
34 | + [ | ||
35 | + 'id' => $id | ||
36 | + ], | ||
37 | + -1 | ||
38 | + ); | ||
39 | + } | ||
40 | + | ||
41 | + public function getOneDataByCode($data) | ||
42 | + { | ||
43 | + return $this->get( | ||
44 | + " | ||
45 | + SELECT * | ||
46 | + FROM public.promo_to_user | ||
47 | + WHERE | ||
48 | + code = :code | ||
49 | + AND | ||
50 | + email = :email | ||
51 | + ", | ||
52 | + [ | ||
53 | + 'code' => $data['code'], | ||
54 | + 'email' => $data['email'], | ||
55 | + ], | ||
56 | + -1 | ||
57 | + ); | ||
58 | + } | ||
59 | + | ||
60 | + public function getPromoByCode($code) { | ||
61 | + return $this->get( | ||
62 | + ' | ||
63 | + SELECT * | ||
64 | + FROM public.promo_to_user | ||
65 | + WHERE | ||
66 | + code = :code', | ||
67 | + [ | ||
68 | + 'code' => $code | ||
69 | + ], | ||
70 | + -1 | ||
71 | + ); | ||
72 | + } | ||
73 | + | ||
74 | + public function deleteData($id) | ||
75 | + { | ||
76 | + return $this->exec( | ||
77 | + ' DELETE | ||
78 | + FROM | ||
79 | + public.promo_to_user | ||
80 | + WHERE | ||
81 | + id = :id | ||
82 | + ', | ||
83 | + [ | ||
84 | + 'id' => $id | ||
85 | + ] | ||
86 | + ); | ||
87 | + } | ||
88 | + | ||
89 | + public function addData($data) | ||
90 | + { | ||
91 | + | ||
92 | + return $this->get( | ||
93 | + ' | ||
94 | + INSERT INTO | ||
95 | + public.promo_to_user | ||
96 | + ( | ||
97 | + code, | ||
98 | |||
99 | + | ||
100 | + ) | ||
101 | + VALUES | ||
102 | + ( | ||
103 | + :code, | ||
104 | |||
105 | + | ||
106 | + ) | ||
107 | + RETURNING id | ||
108 | + ', | ||
109 | + [ | ||
110 | + 'code' => $data['code'], | ||
111 | + 'email' => $data['email'], | ||
112 | + | ||
113 | + ], | ||
114 | + -1 | ||
115 | + ); | ||
116 | + | ||
117 | + | ||
118 | + } | ||
119 | + | ||
120 | + public function updateData($data, $id) | ||
121 | + { | ||
122 | + | ||
123 | + return $this->exec( | ||
124 | + ' | ||
125 | + UPDATE | ||
126 | + public.promo_to_user | ||
127 | + SET | ||
128 | + code = :code, | ||
129 | + email = :email | ||
130 | + | ||
131 | + WHERE | ||
132 | + id = :id | ||
133 | + ', | ||
134 | + [ | ||
135 | + 'code' => $data['code'], | ||
136 | + 'email' => $data['email'], | ||
137 | + 'id' => $id | ||
138 | + ] | ||
139 | + ); | ||
140 | + } | ||
141 | + | ||
142 | + public function countData() | ||
143 | + { | ||
144 | + return $this->get( | ||
145 | + ' | ||
146 | + SELECT | ||
147 | + COUNT(id) AS total | ||
148 | + FROM | ||
149 | + public.promo_to_user | ||
150 | + ', | ||
151 | + [ | ||
152 | + | ||
153 | + ], | ||
154 | + -1 | ||
155 | + ); | ||
156 | + } | ||
157 | +} | ||
0 | \ No newline at end of file | 158 | \ No newline at end of file |
www/css/main.css
@@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t | @@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t | ||
3122 | float: left; | 3122 | float: left; |
3123 | } | 3123 | } |
3124 | 3124 | ||
3125 | -.zasobi_zakhistu_logo { | ||
3126 | - background: url('/images/background_logo_all_01.png') repeat-y 50% -20px; | ||
3127 | -} | 3125 | +/*.zasobi_zakhistu_logo {*/ |
3126 | + /*background: url('/images/background_logo_all_01.png') repeat-y 50% -20px;*/ | ||
3127 | +/*}*/ | ||
3128 | 3128 | ||
3129 | /****************email-settings**********************/ | 3129 | /****************email-settings**********************/ |
3130 | .email-settings_title { | 3130 | .email-settings_title { |
www/js/main.js
@@ -637,7 +637,7 @@ $(document).ready(function() | @@ -637,7 +637,7 @@ $(document).ready(function() | ||
637 | 637 | ||
638 | var contentString4 = | 638 | var contentString4 = |
639 | '<div id="content_map">'+ | 639 | '<div id="content_map">'+ |
640 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | 640 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ |
641 | '<p>9:00 - 19:00</p>'+ | 641 | '<p>9:00 - 19:00</p>'+ |
642 | '<p>Пн-Пт</p>'+ | 642 | '<p>Пн-Пт</p>'+ |
643 | '<p>9:00 - 18:00</p>'+ | 643 | '<p>9:00 - 18:00</p>'+ |
www/js/main_ru.js
@@ -681,7 +681,7 @@ $(document).ready(function() | @@ -681,7 +681,7 @@ $(document).ready(function() | ||
681 | 681 | ||
682 | var contentString4 = | 682 | var contentString4 = |
683 | '<div id="content_map">'+ | 683 | '<div id="content_map">'+ |
684 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | 684 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ |
685 | '<p>9:00 - 19:00</p>'+ | 685 | '<p>9:00 - 19:00</p>'+ |
686 | '<p>Пн-Пт</p>'+ | 686 | '<p>Пн-Пт</p>'+ |
687 | '<p>9:00 - 18:00</p>'+ | 687 | '<p>9:00 - 18:00</p>'+ |