Commit 6a2e27dbaacb8bf70dd1e50fa0ec373bd9361af3
1 parent
817a8c23
price display basket
Showing
2 changed files
with
59 additions
and
62 deletions
Show diff stats
src/app/frontend/controllers/MenuController.php
@@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase | @@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase | ||
17 | return $this->response->redirect('dealer/cart'); | 17 | return $this->response->redirect('dealer/cart'); |
18 | } | 18 | } |
19 | 19 | ||
20 | - $lang_url = $this->seoUrl->getChangeLangUrl(); | ||
21 | - $in_cart = $this->session->get('in_cart', []); | ||
22 | - $customer_id = $this->session->get('id'); | ||
23 | - $customer_email = $this->session->get('customer_email'); | ||
24 | - | 20 | + $lang_url = $this->seoUrl->getChangeLangUrl(); |
21 | + $in_cart = $this->session->get('in_cart', []); | ||
22 | + $customer_id = $this->session->get('id'); | ||
23 | + $customer_email = $this->session->get('customer_email'); | ||
25 | $session_promo_code = $this->session->get('promo_code'); | 24 | $session_promo_code = $this->session->get('promo_code'); |
25 | + $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; | ||
26 | 26 | ||
27 | - $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; | ||
28 | - $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях | 27 | + $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях |
29 | 28 | ||
30 | - $items = []; | ||
31 | - $total_price = 0; | ||
32 | - $err = 0; | ||
33 | - | ||
34 | - $cities_ = $this->novaposhta->city(); | 29 | + $items = []; |
30 | + $total_price = 0; | ||
31 | + $err = 0; | ||
32 | + $cities_ = $this->novaposhta->city(); | ||
35 | 33 | ||
36 | foreach( $cities_->item as $c ) | 34 | foreach( $cities_->item as $c ) |
37 | { | 35 | { |
38 | - | ||
39 | $cities[strval($c->CityID)] = strval($c->Description); | 36 | $cities[strval($c->CityID)] = strval($c->Description); |
40 | } | 37 | } |
41 | 38 | ||
@@ -43,24 +40,36 @@ class MenuController extends \controllers\ControllerBase | @@ -43,24 +40,36 @@ class MenuController extends \controllers\ControllerBase | ||
43 | { | 40 | { |
44 | $cart = $this->common->getCartItems($in_cart, $this->lang_id); | 41 | $cart = $this->common->getCartItems($in_cart, $this->lang_id); |
45 | 42 | ||
43 | + //promocode | ||
46 | if(!empty($session_promo_code)) { | 44 | if(!empty($session_promo_code)) { |
47 | if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { | 45 | if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { |
48 | $this->common->countOrderSum($cart); | 46 | $this->common->countOrderSum($cart); |
49 | $cart['total_price'] = $cart['total_sum']; | 47 | $cart['total_price'] = $cart['total_sum']; |
50 | } | 48 | } |
51 | } | 49 | } |
52 | - $total_price = $cart['total_price']; | ||
53 | - $items = $cart['items']; | ||
54 | - $items_ = $cart['items_']; | ||
55 | 50 | ||
56 | - } | 51 | + //discount |
52 | + $discount = $this->getDi()->get('models')->getDiscount()->getActiveData(); | ||
53 | + if (!empty($discount)) { | ||
54 | + $discount = $discount[0]; | ||
55 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
56 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
57 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
58 | + } | ||
59 | + if ($this->common->applyPromoCode($discount, $cart['items'])) { | ||
60 | + $this->common->countOrderSum($cart); | ||
61 | + $cart['total_price'] = $cart['total_sum']; | ||
62 | + } | ||
57 | 63 | ||
64 | + $total_price = $cart['total_price']; | ||
65 | + $items = $cart['items']; | ||
66 | + $items_ = $cart['items_']; | ||
67 | + } | ||
58 | 68 | ||
59 | if ( $this->request->isPost() ) | 69 | if ( $this->request->isPost() ) |
60 | { | 70 | { |
61 | $order['email'] = $this->request->getPost('login_email', 'string', NULL ); | 71 | $order['email'] = $this->request->getPost('login_email', 'string', NULL ); |
62 | $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); | 72 | $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); |
63 | - | ||
64 | $promo_code = $this->request->getPost('promo_code', 'string', NULL ); | 73 | $promo_code = $this->request->getPost('promo_code', 'string', NULL ); |
65 | 74 | ||
66 | if(empty($session_promo_code)) { | 75 | if(empty($session_promo_code)) { |
@@ -73,8 +82,8 @@ class MenuController extends \controllers\ControllerBase | @@ -73,8 +82,8 @@ class MenuController extends \controllers\ControllerBase | ||
73 | 82 | ||
74 | $order_items = $this->request->getPost('count_items', NULL, [] ); | 83 | $order_items = $this->request->getPost('count_items', NULL, [] ); |
75 | $order_color = $this->request->getPost('color', NULL, [] ); | 84 | $order_color = $this->request->getPost('color', NULL, [] ); |
76 | - $order_size = $this->request->getPost('size', NULL, [] ); | ||
77 | - $order_is = $this->request->getPost('is', NULL, [] ); | 85 | + $order_size = $this->request->getPost('size', NULL, [] ); |
86 | + $order_is = $this->request->getPost('is', NULL, [] ); | ||
78 | $order['total_sum'] = 0; | 87 | $order['total_sum'] = 0; |
79 | 88 | ||
80 | foreach( $order_items as $key => $val ) | 89 | foreach( $order_items as $key => $val ) |
@@ -83,15 +92,12 @@ class MenuController extends \controllers\ControllerBase | @@ -83,15 +92,12 @@ class MenuController extends \controllers\ControllerBase | ||
83 | $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); | 92 | $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); |
84 | 93 | ||
85 | if(isset($order_color[$key])) | 94 | if(isset($order_color[$key])) |
86 | - $items_[$key]['color'] = $order_color[$key]; | 95 | + $items_[$key]['color'] = $order_color[$key]; |
87 | 96 | ||
88 | - $items_[$key]['size'] = $order_size[$key]; | ||
89 | - $items_[$key]['is'] = $order_is[$key]; | ||
90 | - | 97 | + $items_[$key]['size'] = $order_size[$key]; |
98 | + $items_[$key]['is'] = $order_is[$key]; | ||
91 | $order['items'][] = $items_[$key]; | 99 | $order['items'][] = $items_[$key]; |
92 | $order['total_sum'] += $items_[$key]['total_price']; | 100 | $order['total_sum'] += $items_[$key]['total_price']; |
93 | - | ||
94 | - | ||
95 | $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); | 101 | $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); |
96 | 102 | ||
97 | if( in_array( $key, $item_id_in_cart ) ) | 103 | if( in_array( $key, $item_id_in_cart ) ) |
@@ -106,9 +112,10 @@ class MenuController extends \controllers\ControllerBase | @@ -106,9 +112,10 @@ class MenuController extends \controllers\ControllerBase | ||
106 | } | 112 | } |
107 | } | 113 | } |
108 | 114 | ||
109 | - $order['total_sum'] = round( $order['total_sum'], 1 ); | 115 | + $order['total_sum'] = round( $order['total_sum'], 1 ); |
110 | 116 | ||
111 | $this->session->set( 'in_cart', $in_cart ); | 117 | $this->session->set( 'in_cart', $in_cart ); |
118 | + | ||
112 | if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) | 119 | if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) |
113 | { | 120 | { |
114 | 121 | ||
@@ -130,8 +137,6 @@ class MenuController extends \controllers\ControllerBase | @@ -130,8 +137,6 @@ class MenuController extends \controllers\ControllerBase | ||
130 | $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); | 137 | $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); |
131 | $this->session->set( 'customer_email', $order['email'] ); | 138 | $this->session->set( 'customer_email', $order['email'] ); |
132 | return $this->response->redirect([ 'for' => 'finish_registration', 'language' => $this->lang_name ]); | 139 | return $this->response->redirect([ 'for' => 'finish_registration', 'language' => $this->lang_name ]); |
133 | - | ||
134 | - | ||
135 | } | 140 | } |
136 | } | 141 | } |
137 | 142 | ||
@@ -251,7 +256,6 @@ class MenuController extends \controllers\ControllerBase | @@ -251,7 +256,6 @@ class MenuController extends \controllers\ControllerBase | ||
251 | return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); | 256 | return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); |
252 | } | 257 | } |
253 | } | 258 | } |
254 | - | ||
255 | } | 259 | } |
256 | 260 | ||
257 | $static_page_alias = '/basket'. $this->lang_name; | 261 | $static_page_alias = '/basket'. $this->lang_name; |
src/lib/common.php
@@ -1229,24 +1229,23 @@ namespace | @@ -1229,24 +1229,23 @@ namespace | ||
1229 | } | 1229 | } |
1230 | 1230 | ||
1231 | public function getCartItems($in_cart, $lang_id, $special_user = null) { | 1231 | public function getCartItems($in_cart, $lang_id, $special_user = null) { |
1232 | - $result = []; | ||
1233 | - $total_price = 0; | ||
1234 | - $item_ids = $this->array_column( $in_cart, 'item_id' ); | ||
1235 | - $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); | ||
1236 | - $groups_ids = $this->array_column( $items, 'group_id' ); | ||
1237 | - $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); | ||
1238 | - $colors = array_unique($this->array_column( $groups_data, 'color_id' )); | ||
1239 | - $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); | 1232 | + $result = []; |
1233 | + $total_price = 0; | ||
1234 | + $item_ids = $this->array_column( $in_cart, 'item_id' ); | ||
1235 | + $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); | ||
1236 | + $groups_ids = $this->array_column( $items, 'group_id' ); | ||
1237 | + $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); | ||
1238 | + $colors = array_unique($this->array_column( $groups_data, 'color_id' )); | ||
1239 | + $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); | ||
1240 | + | ||
1240 | foreach($color_info as $k =>$v){ | 1241 | foreach($color_info as $k =>$v){ |
1241 | $colors_info[$v['id']] = $v; | 1242 | $colors_info[$v['id']] = $v; |
1242 | } | 1243 | } |
1243 | 1244 | ||
1244 | - | ||
1245 | foreach($groups_data as $k =>$v){ | 1245 | foreach($groups_data as $k =>$v){ |
1246 | if($groups_data[$k]['color_id'] != 0){ | 1246 | if($groups_data[$k]['color_id'] != 0){ |
1247 | $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; | 1247 | $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; |
1248 | $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; | 1248 | $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; |
1249 | - | ||
1250 | } else { | 1249 | } else { |
1251 | $groups_data[$k]['color'] = 0; | 1250 | $groups_data[$k]['color'] = 0; |
1252 | $groups_data[$k]['absolute_color'] = 0; | 1251 | $groups_data[$k]['absolute_color'] = 0; |
@@ -1257,9 +1256,7 @@ namespace | @@ -1257,9 +1256,7 @@ namespace | ||
1257 | $groups_data[$v['id']] = $v; | 1256 | $groups_data[$v['id']] = $v; |
1258 | } | 1257 | } |
1259 | 1258 | ||
1260 | - foreach ( $in_cart as $c ) | ||
1261 | - { | ||
1262 | - | 1259 | + foreach ( $in_cart as $c ) { |
1263 | $count_item[$c['item_id']] = $c['count_items']; | 1260 | $count_item[$c['item_id']] = $c['count_items']; |
1264 | } | 1261 | } |
1265 | 1262 | ||
@@ -1269,14 +1266,9 @@ namespace | @@ -1269,14 +1266,9 @@ namespace | ||
1269 | } | 1266 | } |
1270 | } | 1267 | } |
1271 | 1268 | ||
1272 | - | ||
1273 | - | ||
1274 | - foreach ( $items as $k => $i ) | ||
1275 | - { | ||
1276 | - $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; | ||
1277 | - $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); | ||
1278 | - | ||
1279 | - | 1269 | + foreach ( $items as $k => $i ) { |
1270 | + $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; | ||
1271 | + $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); | ||
1280 | 1272 | ||
1281 | if(isset($i['prices'][0])) { | 1273 | if(isset($i['prices'][0])) { |
1282 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); | 1274 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); |
@@ -1285,24 +1277,25 @@ namespace | @@ -1285,24 +1277,25 @@ namespace | ||
1285 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); | 1277 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); |
1286 | } | 1278 | } |
1287 | 1279 | ||
1288 | - $items[$k]['count'] = $count_item[$i['id']]; | ||
1289 | - $total_price += $items[$k]['total_price']; | ||
1290 | - $items[$k]['color'] = $groups_data[$i['id']]['color']; | ||
1291 | - $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; | ||
1292 | - $items_[$i['id']] = $items[$k]; | 1280 | + $items[$k]['count'] = $count_item[$i['id']]; |
1281 | + $total_price += $items[$k]['total_price']; | ||
1282 | + $items[$k]['color'] = $groups_data[$i['id']]['color']; | ||
1283 | + $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; | ||
1284 | + $items_[$i['id']] = $items[$k]; | ||
1293 | } | 1285 | } |
1294 | 1286 | ||
1295 | - $total_price = round( $total_price, 2 ); | 1287 | + $total_price = round( $total_price, 2 ); |
1288 | + $result['total_price'] = $total_price; | ||
1289 | + $result['items'] = $items; | ||
1290 | + $result['items_'] = $items_; | ||
1296 | 1291 | ||
1297 | - $result['total_price'] = $total_price; | ||
1298 | - $result['items'] = $items; | ||
1299 | - $result['items_'] = $items_; | ||
1300 | return $result; | 1292 | return $result; |
1301 | } | 1293 | } |
1302 | 1294 | ||
1303 | - public function countOrderSum(&$order) { | 1295 | + public function countOrderSum(&$order) |
1296 | + { | ||
1304 | $sum = 0; | 1297 | $sum = 0; |
1305 | - foreach($order['items'] as $k => $item) { | 1298 | + foreach ($order['items'] as $k => $item) { |
1306 | $sum += $item['total_price']; | 1299 | $sum += $item['total_price']; |
1307 | } | 1300 | } |
1308 | $order['total_sum'] = $sum; | 1301 | $order['total_sum'] = $sum; |