Commit 3ffb4159073df0c651dd70a49eacd76ab0a94283

Authored by Eugeny Galkovskiy
2 parents ab6e9ee8 c73b1869

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/app/frontend/messages/ru.php
#	src/app/frontend/messages/ua.php
src/app/backend/controllers/PromoCodesController.php
... ... @@ -54,6 +54,7 @@ class PromoCodesController extends Controller
54 54 $data['code'] = $this->request->getPost('code', 'string', NULL );
55 55 $data['start_date'] = $this->request->getPost('start_date');
56 56 $data['end_date'] = $this->request->getPost('end_date');
  57 + $data['single_use'] = $this->request->getPost('single_use');
57 58 $data['discount'] = $this->request->getPost('discount', 'string', NULL );
58 59 $data['description'] = $this->request->getPost('description');
59 60 $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL );
... ... @@ -120,6 +121,7 @@ class PromoCodesController extends Controller
120 121 $data[0]['description'] = $this->request->getPost('description');
121 122 $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL );
122 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 126 $cover = $this->uploadImage();
125 127  
... ...
src/app/backend/views/promo_codes/addEdit.php
... ... @@ -47,6 +47,14 @@
47 47 </div>
48 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 58 <div class="clearfix input_wrapper">
51 59 <div class="label"><label for="description">Описание</label></div>
52 60 <div class="input">
... ...
src/app/frontend/controllers/AjaxController.php
... ... @@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase
173 173 }
174 174  
175 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 235 \ No newline at end of file
... ...
src/app/frontend/controllers/DealerController.php
... ... @@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase
1520 1520  
1521 1521 if( !empty( $order['proposal_number'] ) )
1522 1522 {
  1523 +
  1524 +
  1525 +
1523 1526 $this->sendmail->addCustomer( 2, $order );
1524 1527  
1525 1528 $this->session->set( 'in_cart', []);
... ...
src/app/frontend/controllers/MenuController.php
... ... @@ -32,10 +32,11 @@ class MenuController extends \controllers\ControllerBase
32 32 $err = 0;
33 33  
34 34 $cities_ = $this->novaposhta->city();
35   -
36   - foreach( $cities_->city as $c )
  35 +
  36 + foreach( $cities_->item as $c )
37 37 {
38   - $cities[strval($c->id)] = strval($c->nameUkr);
  38 +
  39 + $cities[strval($c->CityID)] = strval($c->Description);
39 40 }
40 41  
41 42 if ( !empty( $in_cart ) )
... ... @@ -210,6 +211,25 @@ class MenuController extends \controllers\ControllerBase
210 211  
211 212 if( !empty( $order['proposal_number'] ) )
212 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 +
213 233 $this->sendmail->addCustomer( 2, $order );
214 234  
215 235 $this->session->set( 'in_cart', []);
... ... @@ -318,18 +338,18 @@ class MenuController extends \controllers\ControllerBase
318 338 $length = strlen($term);
319 339 $cities_ = $this->novaposhta->city();
320 340  
321   - foreach( $cities_->city as $c )
  341 + foreach( $cities_->item as $c )
322 342 {
323   - $cities[strval($c->id)] = strval($c->nameUkr);
  343 + $cities[strval($c->CityID)] = strval($c->Description);
324 344  
325   - if( mb_strtolower( substr( strval($c->nameUkr), 0, $length ), 'utf-8' ) == mb_strtolower( $term, 'utf-8' ) )
  345 + if( mb_strtolower( substr( strval($c->Description), 0, $length ), 'utf-8' ) == mb_strtolower( $term, 'utf-8' ) )
326 346 {
327 347 $selected_cities[] =
328 348 [
329   - 'label' => strval($c->nameUkr),
330   - 'value' => strval($c->nameUkr),
331   - 'id' => strval($c->id),
332   - 'ref' => strval($c->ref)
  349 + 'label' => strval($c->Description),
  350 + 'value' => strval($c->Ref),
  351 + 'id' => strval($c->CityID),
  352 + 'ref' => strval($c->Ref)
333 353 ];
334 354 }
335 355 }
... ... @@ -345,13 +365,13 @@ class MenuController extends \controllers\ControllerBase
345 365 $city = $this->request->getPost('city', 'string', '' );
346 366 $offices_ = $this->novaposhta->warenhouse( $city );
347 367  
348   - foreach( $offices_->warenhouse as $c )
  368 + foreach( $offices_->item as $c )
349 369 {
350 370 $offices[] =
351 371 [
352   - 'number' => strval($c->number),
353   - 'address' => strval($c->address),
354   - 'store_ref' => strval($c->ref)
  372 + 'number' => strval($c->Number),
  373 + 'address' => strval($c->Description),
  374 + 'store_ref' => strval($c->Ref)
355 375 ];
356 376 }
357 377  
... ...
src/app/frontend/controllers/PageController.php
... ... @@ -850,14 +850,27 @@ class PageController extends \controllers\ControllerBase
850 850 }
851 851  
852 852 // get popular items_groups
  853 +//
  854 +// $popular_groups = $this->models->getItems()->getPopularItems($this->lang_id);
  855 +// $popular_groups = $this->common->explodeAlias($popular_groups);
  856 +//
  857 +//
  858 +// $recommended_items = $this->models->getItems()->getRecommendedGroups($this->lang_id, \config::get( 'limits/top_items' ));
  859 +// $recommended_items = $this->common->explodeAlias($recommended_items);
  860 +// $popular_groups_ = $this->common->getGroups1($this->lang_id, $recommended_items);
  861 +
  862 + $groups = $this->models->getItems()->getBuyWithItems( $this->lang_id, $item['0']['group_id'] );
  863 + foreach( $groups as &$p )
  864 + {
  865 + $p['explode'] = explode( '/', $p['catalog_alias'] );
  866 + $p['type_alias'] = $p['explode']['1'];
  867 + $p['subtype_alias'] = $p['explode']['2'];
  868 + unset( $p['explode'] );
  869 + }
853 870  
854   - $popular_groups = $this->models->getItems()->getPopularItems($this->lang_id);
855   - $popular_groups = $this->common->explodeAlias($popular_groups);
856 871  
  872 + $popular_groups_ = $this->common->getGroups1( $this->lang_id, $groups );
857 873  
858   - $recommended_items = $this->models->getItems()->getRecommendedGroups($this->lang_id, \config::get( 'limits/top_items' ));
859   - $recommended_items = $this->common->explodeAlias($recommended_items);
860   - $popular_groups_ = $this->common->getGroups1($this->lang_id, $recommended_items);
861 874  
862 875  
863 876 $seo = $this->seoUrl->getSeoData($this->models->getSeoInfo()->getAllSeo());
... ...
src/app/frontend/messages/ru.php
... ... @@ -143,7 +143,7 @@ return array(
143 143 "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;",
144 144 "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";",
145 145 "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;",
146   - "address_four" => "ул. Харьковское шоссе, 166-В, возле магазина \"Сільпо\";",
  146 + "address_four" => "ул. Харьковское шоссе, 16, возле магазина \"Сільпо\";",
147 147 "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;",
148 148 "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;",
149 149 "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";",
... ... @@ -151,7 +151,7 @@ return array(
151 151 "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;',
152 152 "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";',
153 153 "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;',
154   - "new_address_fourth" => 'ул. Харьковское шоссе, 166-В, возле магазина "Сільпо";',
  154 + "new_address_fourth" => 'ул. Харьковское шоссе, 16, возле магазина "Сільпо";',
155 155 "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;',
156 156 "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;',
157 157 "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";',
... ... @@ -387,6 +387,10 @@ return array(
387 387 "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.",
388 388 "lang_name" => "rus",
389 389 "saldo_period" => "за период",
  390 + "error_promo_code_is_empty" => "Промокод не указан",
  391 + "error_promo_code_empty_user" => "Промокод требует регистрации",
  392 + "error_promo_code_empty_email" => "Промокод требует указанный Email в карточке пользователя",
  393 + "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем"
390 394 "open_video_list" => "Раскрыть список",
391 395 "close_video_list" => "Закрыть список",
392 396 );
393 397 \ No newline at end of file
... ...
src/app/frontend/messages/ua.php
... ... @@ -163,7 +163,7 @@ return array(
163 163 "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;",
164 164 "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";",
165 165 "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;",
166   - "address_four" => "вул. Харьківське шосе 166-В, біля магазину \"Сільпо\"",
  166 + "address_four" => "вул. Харьківське шосе 16, біля магазину \"Сільпо\"",
167 167 "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;",
168 168 "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;",
169 169 "address_seven"=>"вул. Архітектора Вербицького 22/1",
... ... @@ -172,7 +172,7 @@ return array(
172 172 "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;',
173 173 "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";',
174 174 "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;',
175   - "new_address_fourth" => 'вул. Харківське шоссе, 166-В, біля магазину "Сільпо";',
  175 + "new_address_fourth" => 'вул. Харківське шоссе, 16, біля магазину "Сільпо";',
176 176 "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;',
177 177 "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;',
178 178 "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";',
... ... @@ -419,4 +419,8 @@ return array(
419 419 "saldo_period" => "за період",
420 420 "open_video_list" => "Розкрити список",
421 421 "close_video_list" => "Закрити список",
  422 + "error_promo_code_is_empty" => "Промокод не вказаний",
  423 + "error_promo_code_empty_user" => "Промокод потребує реєстрації",
  424 + "error_promo_code_empty_email" => "Промокод потребує вказаний Email в картці користувача",
  425 + "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем"
422 426 );
423 427 \ No newline at end of file
... ...
src/app/frontend/views/menu/contacts.php
... ... @@ -251,14 +251,14 @@
251 251 </tr-->
252 252 <tr>
253 253 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
254   - <td><?= $t->_("new_address_second") ?></td>
  254 + <td><a href="https://www.google.com/maps?cid=10560965128246975743&hl=ru" title="<?= $t->_("new_address_second") ?>"><?= $t->_("new_address_second") ?></a></td>
255 255 <td>8.30-17.30 (<?= $t->_("vt_nd") ?>)</td>
256 256 <td class="contacts_list_phone">050-313-22-00</td>
257 257 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%B2%D1%83%D0%BB.+%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%B0+%D0%9E%D0%BA%D1%80%D1%83%D0%B6%D0%BD%D0%B0,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.4092713,30.3904529,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4cbdcd3b45185:0x481b85b82221ba1a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
258 258 </tr>
259 259 <tr>
260 260 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
261   - <td><?= $t->_("new_address_third") ?></td>
  261 + <td><a href="https://www.google.com/maps?cid=5949473995652042489&hl=ru" title="<?= $t->_("new_address_third") ?>"><?= $t->_("new_address_third") ?></a></td>
262 262 <td>9.00-19.00 (<?= $t->_("pn_sb") ?>)</td>
263 263 <td class="contacts_list_phone">050-413-61-68</td>
264 264 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%BF%D1%80%D0%BE%D1%81%D0%BF.+%D0%90%D0%BA%D0%B0%D0%B4%D0%B5%D0%BC%D1%96%D0%BA%D0%B0+%D0%93%D0%BB%D1%83%D1%88%D0%BA%D0%BE%D0%B2%D0%B0,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.371692,30.4609831,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4c850f75e048f:0xee142a65f4bd318a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
... ... @@ -270,34 +270,34 @@
270 270 </tr-->
271 271 <tr>
272 272 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
273   - <td><?= $t->_("new_address_sixth") ?></td>
  273 + <td><a href="https://www.google.com/maps?cid=7171470467069443373&hl=ru" title="<?= $t->_("new_address_sixth") ?>"><?= $t->_("new_address_sixth") ?></a></td>
274 274 <td>8.30-17.00 (<?= $t->_("pn_sb") ?>)</td>
275 275 <td class="contacts_list_phone">050-476-16-55</td>
276 276 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%A5%D0%B0%D1%80%D0%BA%D1%96%D0%B2%D1%81%D1%8C%D0%BA%D0%B5+%D1%88.,+166,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.414657,30.660084,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4c4e339783c01:0x9de857a6571ac29a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
277 277 </tr>
278 278 <tr>
279 279 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
280   - <td><?= $t->_("new_address_first") ?></td>
  280 + <td><a href="https://www.google.com/maps?cid=18229979471982705936&hl=ru" title="<?= $t->_("new_address_first") ?>"><?= $t->_("new_address_first") ?></a></td>
281 281 <td noWrap>9.00-19.00 (<?= $t->_("pn_sb") ?>)</td>
282 282 <td class="contacts_list_phone">050-442-63-53</td>
283 283 </tr>
284 284 <tr>
285 285 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
286   - <td><?= $t->_("new_address_fourth") ?></td>
  286 + <td><a href="https://www.google.com/maps?cid=18042029842893234019&hl=ru" title="<?= $t->_("new_address_fourth") ?>"><?= $t->_("new_address_fourth") ?></a></td>
287 287 <td>9.00-19.00 (<?= $t->_("pn_pt") ?>), 9.00-18.00 (<?= $t->_("sb_vs") ?>)</td>
288 288 <td class="contacts_list_phone">050-410-38-92</td>
289 289 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%A5%D0%B0%D1%80%D0%BA%D1%96%D0%B2%D1%81%D1%8C%D0%BA%D0%B5+%D1%88.,+166,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.414657,30.660084,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4c4e339783c01:0x9de857a6571ac29a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
290 290 </tr>
291 291 <tr>
292 292 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
293   - <td><?= $t->_("new_address_eighth") ?></td>
  293 + <td><a href="https://www.google.com/maps?cid=9290546046647461249&hl=ru" title="<?= $t->_("new_address_eighth") ?>"><?= $t->_("new_address_eighth") ?></a></td>
294 294 <td>9.00-19.00 (<?= $t->_("pn_sb") ?>)</td>
295 295 <td class="contacts_list_phone">050-442-62-31</td>
296 296 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%A5%D0%B0%D1%80%D0%BA%D1%96%D0%B2%D1%81%D1%8C%D0%BA%D0%B5+%D1%88.,+166,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.414657,30.660084,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4c4e339783c01:0x9de857a6571ac29a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
297 297 </tr>
298 298 <tr>
299 299 <td class="contacts_list_phone"><?= $t->_("kiev") ?></td>
300   - <td><?= $t->_("new_address_ten") ?></td>
  300 + <td><a href="https://www.google.com/maps?cid=17095950403227136610&hl=ru" title="<?= $t->_("new_address_ten") ?>"><?= $t->_("new_address_ten") ?></a></td>
301 301 <td>8.00-19.00 (<?= $t->_("without_day_off") ?>)</td>
302 302 <td class="contacts_list_phone">050-312-68-43</td>
303 303 <!--<td class="contacts_list_phone"><a href="https://www.google.com.ua/maps/place/%D0%A5%D0%B0%D1%80%D0%BA%D1%96%D0%B2%D1%81%D1%8C%D0%BA%D0%B5+%D1%88.,+166,+%D0%9A%D0%B8%D1%97%D0%B2,+%D0%BC%D1%96%D1%81%D1%82%D0%BE+%D0%9A%D0%B8%D1%97%D0%B2/@50.414657,30.660084,17z/data=!3m1!4b1!4m2!3m1!1s0x40d4c4e339783c01:0x9de857a6571ac29a?hl=ru" title="<?= $t->_("rout_map") ?>" target="_blank" rel="no-follow"><?= $t->_("rout_map") ?></a></td>-->
... ...
src/app/frontend/views/menu/order.php
... ... @@ -589,10 +589,16 @@
589 589 promo_code: $('#promo_code').val()
590 590 },
591 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 603 error: function (error) {
598 604 $alert.addClass('alert-danger').removeClass('alert-success');
... ...
src/app/frontend/views/page/item.php
... ... @@ -318,15 +318,15 @@
318 318 <div class="inner">
319 319 <div class="tabs clearfix">
320 320 <ul class="change_similar_items">
321   - <li class="float active_tab first_tab">
322   - <?= '<a href="#" title="'.$t->_("popular_items").'" data-change_similar_items="popular" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("popular_items").'</a>' ?>
323   - </li>
  321 + <li class="float active_tab first_tab">
  322 + <?= '<a href="#" title="'.$t->_("related_items").'" data-change_similar_items="buy_with" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("related_items").'</a>' ?>
  323 + </li>
324 324 <li class="float not_active">
325 325 <?= '<a href="#" title="'.$t->_("similar_items").'" data-change_similar_items="same" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("similar_items").'</a>' ?>
326 326 </li>
327 327 <li class="float not_active">
328   - <?= '<a href="#" title="'.$t->_("related_items").'" data-change_similar_items="buy_with" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("related_items").'</a>' ?>
329   - </li>
  328 + <?= '<a href="#" title="'.$t->_("popular_items").'" data-change_similar_items="popular" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("popular_items").'</a>' ?>
  329 + </li>
330 330 <li class="float last_tab not_active">
331 331 <?= '<a href="#" title="'.$t->_("watched").'" data-change_similar_items="viewed" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("watched").'</a>' ?>
332 332 </li>
... ...
src/config/global.php
... ... @@ -39,7 +39,7 @@ return
39 39 '1' =>
40 40 [
41 41 '1old' => 'Я заберу товар в пункті видачі / самовивіз (м.Київ, вул.Віскозна 17/а)',
42   - '2' => 'Доставка по м.Києву кур\'єром (вартість доставки 40 грн)',
  42 + '2' => 'Доставка по м.Києву кур\'єром (вартість доставки 60 грн)',
43 43 '3old' => 'Достака по Україні службою "Нова Пошта" - самовивіз зі складу / вартість доставки від 20 грн (за тарифами поштової служби)',
44 44 '4' => 'Достака по Україні службою "Нова Пошта" - адресна доставка курє\'ром / вартість доставки від 20 грн (за тарифами поштової служби)',
45 45 '5' => 'Достака по Україні службою перевозки (Автолюкс, Укрпошта) / вартість доставки від 12 грн (за тарифами поштової служби)',
... ... @@ -48,10 +48,10 @@ return
48 48 '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;',
49 49 '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";',
50 50 '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;',
51   - '10004'=>'вул. Харьківське шосе 166-В, біля магазину "Сільпо";',
  51 + '10004'=>'вул. Харьківське шосе 16, біля магазину "Сільпо";',
52 52 '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;',
53 53 '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />",
54   - '77' => "Вартість доставки замовленнь складає 40 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.",
  54 + '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.",
55 55 '3' => "<b>Доставка службою &laquo;Нова Пошта&raquo;, самовивіз зі складу</b><br />",
56 56 '33' => "Вартість доставки від 21 грн (за тарифами поштової служби). У разі замовлення на суму більшу за 500 грн - доставка до складу безкоштовна. Термін доставки – 1-2 дні.",
57 57 '9' => "<b>Доставка службою &laquo;Нова Пошта&raquo;, адресна доставка кур&rsquo;єром</b><br />",
... ... @@ -67,7 +67,7 @@ return
67 67 '2' =>
68 68 [
69 69 '1old' => 'Я заберу товар в пункте выдачи / самовывоз (г.Киев, ул.Вискозная 17 / а)',
70   - '2' => 'Доставка по Киеву кур \' премьером (стоимость доставки 40 грн) ',
  70 + '2' => 'Доставка по Киеву кур \' премьером (стоимость доставки 60 грн) ',
71 71 '3old' => 'Достака по Украине службой "Новая Почта" - самовывоз со склада / стоимость доставки от 20 грн (по тарифам почтовой службы)',
72 72 '4' => 'Достака по Украине службой "Новая Почта" - адресная доставка Куреи \' ром / стоимость доставки от 20 грн (по тарифам почтовой службы)',
73 73 '5' => 'Достака по Украине службой перевозки (Автолюкс, Укрпочта) / стоимость доставки от 12 грн (по тарифам почтовой службы)',
... ... @@ -76,10 +76,10 @@ return
76 76 '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;',
77 77 '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";',
78 78 '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;',
79   - '10004'=>'ул. Харьковское шоссе 166-В, магазин "Професійне насіння" возле магазина "Сільпо";',
  79 + '10004'=>'ул. Харьковское шоссе 16, магазин "Професійне насіння" возле магазина "Сільпо";',
80 80 '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";',
81 81 '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />',
82   - "77" =>"Стоимость доставки заказа составляет 40 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.",
  82 + "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.",
83 83 '3' => "<b>Доставка службой&nbsp;&laquo;Новая Почта&raquo;, самовывоз&nbsp;со&nbsp;склада</b> <br />",
84 84 "33" => "Стоимость доставки от 21 грн (по тарифам почтовой службы). В случае заказа на сумму большую 500 грн - доставка до склада безплатная. Срок доставки – 1-2 дня.",
85 85 "9" => "<b>Доставка службой&nbsp;&laquo;Новая Почта&raquo;, адресная доставка курьером</b> <br />",
... ...
src/lib/models.php
... ... @@ -50,6 +50,7 @@ namespace
50 50 protected $_reviews = false;
51 51 protected $_modal = false;
52 52 protected $_manager_mail = false;
  53 + protected $_promo_to_user = false;
53 54  
54 55  
55 56  
... ... @@ -583,6 +584,17 @@ namespace
583 584  
584 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/items.php
... ... @@ -3300,6 +3300,36 @@ class items extends \db
3300 3300 ) AS alias,
3301 3301 (
3302 3302 SELECT
  3303 + count(*)
  3304 + FROM
  3305 + public.items
  3306 + WHERE
  3307 + group_id = public.items_group.group_id
  3308 + AND
  3309 + status = 1
  3310 + ) AS count_available,
  3311 + (
  3312 + SELECT
  3313 + type
  3314 + FROM
  3315 + public.items
  3316 + WHERE
  3317 + price2 IN
  3318 + (
  3319 + SELECT
  3320 + MIN(price2)
  3321 + FROM
  3322 + public.items
  3323 + WHERE
  3324 + group_id = public.items_group.group_id
  3325 + )
  3326 + AND
  3327 + group_id = public.items_group.group_id
  3328 + LIMIT
  3329 + 1
  3330 + ) as type_id,
  3331 + (
  3332 + SELECT
3303 3333 full_alias
3304 3334 FROM
3305 3335 catalog_i18n
... ... @@ -3349,6 +3379,7 @@ class items extends \db
3349 3379 )
3350 3380 AND
3351 3381 group_id = public.items_group.group_id
  3382 + LIMIT 1
3352 3383 ) as id,
3353 3384 (
3354 3385 SELECT
... ...
src/lib/models/promo_codes.php
... ... @@ -103,7 +103,9 @@ class promo_codes extends \db
103 103 all_items,
104 104 image,
105 105 start_date,
106   - end_date
  106 + end_date,
  107 + single_use
  108 +
107 109 )
108 110 VALUES
109 111 (
... ... @@ -116,7 +118,8 @@ class promo_codes extends \db
116 118 :all_items,
117 119 :image,
118 120 :start_date,
119   - :end_date
  121 + :end_date,
  122 + :single_use
120 123 )
121 124 RETURNING id
122 125 ',
... ... @@ -130,7 +133,8 @@ class promo_codes extends \db
130 133 'all_items' => $data['all_items'],
131 134 'image' => $data['image'],
132 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 139 -1
136 140 );
... ... @@ -154,7 +158,8 @@ class promo_codes extends \db
154 158 all_items = :all_items,
155 159 image = :image,
156 160 start_date = :start_date,
157   - end_date = :end_date
  161 + end_date = :end_date,
  162 + single_use = :single_use
158 163 WHERE
159 164 id = :id
160 165 ',
... ... @@ -168,6 +173,7 @@ class promo_codes extends \db
168 173 'image' => $data['image'],
169 174 'start_date' => $data['start_date'],
170 175 'end_date' => $data['end_date'],
  176 + 'single_use' => $data['single_use'],
171 177 'id' => $id
172 178 ]
173 179 );
... ...
src/lib/models/promo_to_user.php 0 → 100644
  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 + email
  99 +
  100 + )
  101 + VALUES
  102 + (
  103 + :code,
  104 + :email
  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 158 \ No newline at end of file
... ...
src/lib/models/slider.php
... ... @@ -15,7 +15,7 @@ class slider extends \db
15 15 public.slider
16 16 WHERE lang_id = :lang_id
17 17 ORDER BY
18   - weight ASC
  18 + id ASC
19 19 LIMIT
20 20 '.\config::get( 'limits/admin_orders' ).'
21 21 OFFSET
... ...
src/lib/novaposhta.php
... ... @@ -21,7 +21,7 @@ namespace
21 21 protected $_sender_warehouse_ref = '1';
22 22 protected $_out_name = 'Петров Иван Иваныч';
23 23 protected $_out_phone = '0671234567';
24   - protected $_api_key = 'f77cc4bcaa985eb481ed289b89e6fb9e';
  24 + protected $_api_key = '46eb7be54b344abfe21feab2ee17071c';
25 25 protected $_description = 'Насіння';
26 26 protected $_pack = 'Пакет';
27 27 protected $_rcpt_name = 'Приватна особа';
... ... @@ -35,7 +35,7 @@ namespace
35 35 public function send($xml)
36 36 {
37 37 $ch = curl_init();
38   - curl_setopt($ch, CURLOPT_URL, 'http://orders.novaposhta.ua/xml.php');
  38 + curl_setopt($ch, CURLOPT_URL, 'https://api.novaposhta.ua/v2.0/xml/');
39 39 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
40 40 curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
41 41 curl_setopt($ch, CURLOPT_HEADER, 0);
... ... @@ -230,22 +230,22 @@ namespace
230 230 * Запрос на получение списка складов Новой почты для определённого города (или полный список, если город не указан)
231 231 $filter — город, по которому нужно отфильтровать список складов Новой почты
232 232 */
233   - public function warenhouse($filter=false)
  233 + public function warenhouse($filter = false)
234 234 {
235   - $xml =
236   - '<?xml version="1.0" encoding="utf-8"?>
237   - <file>
238   - <auth>'.$this->_api_key.'</auth>
239   - <warenhouse/>';
240   - if($filter)
241   - {
242   - $xml.='<filter>'.$filter.'</filter>';
243   - }
244   - $xml.='</file>';
245 235  
246   - $xml = simplexml_load_string($this->send($xml));
247 236  
248   - return($xml->result->whs);
  237 + $xml = '<?xml version="1.0" encoding="UTF-8"?>
  238 + <file>
  239 + <apiKey>'.$this->_api_key.'</apiKey>
  240 + <calledMethod>getWarehouses</calledMethod>
  241 + <methodProperties>'.
  242 + ($filter ? "<CityRef>$filter</CityRef>" : "")
  243 + .'</methodProperties>
  244 + <modelName>Address</modelName>
  245 + </file>';
  246 +
  247 + $xml = simplexml_load_string($this->send($xml));
  248 + return($xml->data);
249 249 }
250 250  
251 251 /////////////////////////////////////////////////////////////////////////////
... ... @@ -262,9 +262,16 @@ namespace
262 262 <city/>
263 263 </file>';
264 264  
265   - $xml = simplexml_load_string( $this->send($xml) );
  265 + $xml = '<?xml version="1.0" encoding="UTF-8"?>
  266 +<file>
  267 + <apiKey>'.$this->_api_key.'</apiKey>
  268 + <calledMethod>getCities</calledMethod>
  269 + <methodProperties/>
  270 + <modelName>Address</modelName>
  271 +</file>';
266 272  
267   - return($xml->result->cities);
  273 + $xml = simplexml_load_string( $this->send($xml) );
  274 + return($xml->data);
268 275 }
269 276  
270 277 /////////////////////////////////////////////////////////////////////////////
... ... @@ -302,6 +309,7 @@ namespace
302 309 return($xml);
303 310 }
304 311  
  312 +
305 313 /////////////////////////////////////////////////////////////////////////////
306 314 }
307 315  
... ...
www/css/main.css
... ... @@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t
3122 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 3129 /****************email-settings**********************/
3130 3130 .email-settings_title {
... ...
www/js/main.js
... ... @@ -133,7 +133,7 @@ function getNovaPoshtaCity()
133 133 minLength: 2,
134 134 select: function( event, ui )
135 135 {
136   - $( "#order_city_novaposhta" ).val( ui.item.value );
  136 + $( "#order_city_novaposhta" ).val( ui.item.label );
137 137 $( "#order_city_ref" ).val( ui.item.ref );
138 138 $('#loading_city').addClass('display_none');
139 139  
... ... @@ -637,7 +637,7 @@ $(document).ready(function()
637 637  
638 638 var contentString4 =
639 639 '<div id="content_map">'+
640   - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+
  640 + '<p>м. Київ, вул. Харьківське шосе 16, біля магазину "Сільпо"</p>'+
641 641 '<p>9:00 - 19:00</p>'+
642 642 '<p>Пн-Пт</p>'+
643 643 '<p>9:00 - 18:00</p>'+
... ...
www/js/main_ru.js
... ... @@ -126,7 +126,7 @@ function getNovaPoshtaCity()
126 126 minLength: 2,
127 127 select: function( event, ui )
128 128 {
129   - $( "#order_city_novaposhta" ).val( ui.item.value );
  129 + $( "#order_city_novaposhta" ).val( ui.item.label );
130 130 $( "#order_city_ref" ).val( ui.item.ref );
131 131 $('#loading_city').addClass('display_none');
132 132  
... ... @@ -681,7 +681,7 @@ $(document).ready(function()
681 681  
682 682 var contentString4 =
683 683 '<div id="content_map">'+
684   - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+
  684 + '<p>м. Київ, вул. Харьківське шосе 16, біля магазину "Сільпо"</p>'+
685 685 '<p>9:00 - 19:00</p>'+
686 686 '<p>Пн-Пт</p>'+
687 687 '<p>9:00 - 18:00</p>'+
... ...