Commit 012aa125f1ecb90ca60cff8655fd1e9be950206e
1 parent
df7bbc3f
add order_1c
Showing
4 changed files
with
655 additions
and
1 deletions
Show diff stats
.gitignore
src/app/frontend/controllers/DealerController.php
... | ... | @@ -654,11 +654,55 @@ class DealerController extends \controllers\ControllerBase |
654 | 654 | } |
655 | 655 | |
656 | 656 | public function shipmentHistoryAction() { |
657 | + | |
658 | + if($this->session->has('id')) { | |
659 | + $customer = $this->models->getCustomers()->getOneData($this->session->get('id'))['0']; | |
660 | + $this->view->setVar('customer', $customer); | |
661 | + } | |
662 | + | |
663 | + if($this->session->get('special_users_id') != null) { | |
664 | + | |
665 | + $orders = $this->models->getOrders()->getOrdersByCustomerId( $this->session->get('id') ); | |
666 | + | |
667 | + foreach($orders as $key => $value) { | |
668 | + $orders[$key]['created_date'] = date('d', strtotime($value['created_date'])).'.'. | |
669 | + date('m', strtotime($value['created_date'])).'.'. | |
670 | + date('Y', strtotime($value['created_date'])); | |
671 | + $orders_sum = !empty($this->models->getOrders1C()->getOrdersSumById( $value['id'] )[0]) ? $this->models->getOrders()->getOrdersSumById( $value['id'] )[0] : 0; | |
672 | + $orders[$key]['price'] = $orders_sum['price']; | |
673 | + $orders[$key]['status'] = \config::get( 'global#status/'.$this->lang_id.'/'.$value['status'] ); | |
674 | + } | |
675 | + | |
676 | + $this->view->setVar('orders', $orders); | |
677 | + } | |
678 | + | |
657 | 679 | $this->view->pick('dealer/onlineOrderHistory'); |
658 | 680 | } |
659 | 681 | |
660 | 682 | public function onlineOrderHistoryAction() { |
661 | - //in init function of ControllerBase | |
683 | + | |
684 | + if($this->session->has('id')) { | |
685 | + $customer = $this->models->getCustomers()->getOneData($this->session->get('id'))['0']; | |
686 | + $this->view->setVar('customer', $customer); | |
687 | + } | |
688 | + | |
689 | + if($this->session->get('special_users_id') != null) { | |
690 | + | |
691 | + $orders = $this->models->getOrders1C()->getOrdersByCustomerId( $this->session->get('id') ); | |
692 | + | |
693 | + foreach($orders as $key => $value) { | |
694 | + $orders[$key]['created_date'] = date('d', strtotime($value['created_date'])).'.'. | |
695 | + date('m', strtotime($value['created_date'])).'.'. | |
696 | + date('Y', strtotime($value['created_date'])); | |
697 | + $orders_sum = !empty($this->models->getOrders1C()->getOrdersSumById( $value['id'] )[0]) ? $this->models->getOrders1C()->getOrdersSumById( $value['id'] )[0] : 0; | |
698 | + $orders[$key]['price'] = $orders_sum['price']; | |
699 | + $orders[$key]['status'] = \config::get( 'global#status/'.$this->lang_id.'/'.$value['status'] ); | |
700 | + } | |
701 | + | |
702 | + $this->view->setVar('orders', $orders); | |
703 | + } | |
704 | + | |
705 | + $this->view->pick('dealer/onlineOrderHistory'); | |
662 | 706 | } |
663 | 707 | |
664 | 708 | public function singleOrderAction($order_id) { | ... | ... |
src/lib/models.php
... | ... | @@ -18,6 +18,7 @@ namespace |
18 | 18 | protected $_items = false; |
19 | 19 | protected $_properties = false; |
20 | 20 | protected $_orders = false; |
21 | + protected $_orders_1c = false; | |
21 | 22 | protected $_pages = false; |
22 | 23 | protected $_news = false; |
23 | 24 | protected $_customers = false; |
... | ... | @@ -161,6 +162,27 @@ namespace |
161 | 162 | ///////////////////////////////////////////////////////////////////////////// |
162 | 163 | |
163 | 164 | /** |
165 | + * models::getOrders1C | |
166 | + * | |
167 | + * @author Jane Bezmaternykh | |
168 | + * @version 0.1.20140422 | |
169 | + * | |
170 | + * @return obj | |
171 | + */ | |
172 | + public function getOrders1C() | |
173 | + { | |
174 | + if( empty($this->_orders_1c) ) | |
175 | + { | |
176 | + $this->_orders_1c = new \models\orders_1c(); | |
177 | + $this->_orders_1c->setDi( $this->getDi() ); | |
178 | + } | |
179 | + | |
180 | + return $this->_orders_1c; | |
181 | + } | |
182 | + | |
183 | + ///////////////////////////////////////////////////////////////////////////// | |
184 | + | |
185 | + /** | |
164 | 186 | * models::getPages |
165 | 187 | * |
166 | 188 | * @author Jane Bezmaternykh | ... | ... |
1 | +<?php | |
2 | + | |
3 | +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |
4 | + | |
5 | +namespace models; | |
6 | + | |
7 | +class orders_1c extends \db | |
8 | +{ | |
9 | + ///////////////////////////////////////////////////////////////////////////// | |
10 | + | |
11 | + public function addOrder( $order) | |
12 | + { | |
13 | + $connection = $this->database; | |
14 | + $this->updateOrderId(); | |
15 | + try | |
16 | + | |
17 | + { | |
18 | + $connection->begin(); | |
19 | + if( !empty( $order['email'] ) ) | |
20 | + { | |
21 | + $data_customer_isset = $this->get( | |
22 | + ' | |
23 | + SELECT | |
24 | + id, | |
25 | + status | |
26 | + FROM | |
27 | + public.customers | |
28 | + WHERE | |
29 | + email = :email | |
30 | + LIMIT | |
31 | + 1 | |
32 | + ', | |
33 | + [ | |
34 | + 'email' => $order['email'] | |
35 | + ], | |
36 | + -1 | |
37 | + ); | |
38 | + } | |
39 | + else | |
40 | + { | |
41 | + $data_customer_isset = $this->get( | |
42 | + ' | |
43 | + SELECT | |
44 | + id, | |
45 | + status | |
46 | + FROM | |
47 | + public.customers | |
48 | + WHERE | |
49 | + phone = :phone | |
50 | + LIMIT | |
51 | + 1 | |
52 | + ', | |
53 | + [ | |
54 | + 'phone' => $order['phone'] | |
55 | + ], | |
56 | + -1 | |
57 | + ); | |
58 | + } | |
59 | + | |
60 | + if( empty( $data_customer_isset ) ) // new customer | |
61 | + { | |
62 | + $data_confirm_key = $this->getDi()->get('models')->getCustomers()->addNewCustomer( $order ); | |
63 | + $confirmed = 0; | |
64 | + $new = 1; | |
65 | + $customer_id = $data_confirm_key['0']['id']; | |
66 | + } | |
67 | + elseif( !empty( $data_customer_isset ) and $data_customer_isset['0']['status'] == 0 ) // the customer do not finish registration | |
68 | + { | |
69 | + $confirmed = 0; | |
70 | + $new = 0; | |
71 | + $customer_id = $data_customer_isset['0']['id']; | |
72 | + } | |
73 | + elseif( !empty( $data_customer_isset ) and $data_customer_isset['0']['status'] == 1 ) // the customer finish registration | |
74 | + { | |
75 | + $confirmed = 1; | |
76 | + $new = 0; | |
77 | + $customer_id = $data_customer_isset['0']['id']; | |
78 | + } | |
79 | + $data_orders = $this->get( | |
80 | + ' | |
81 | + INSERT INTO | |
82 | + public.orders_1c | |
83 | + ( | |
84 | + customer_id, | |
85 | + name, | |
86 | + phone, | |
87 | + city, | |
88 | + address, | |
89 | + delivery, | |
90 | + pay, | |
91 | + email, | |
92 | + comments, | |
93 | + action_discount_id, | |
94 | + firm_total, | |
95 | + promo_code | |
96 | + ) | |
97 | + VALUES | |
98 | + ( | |
99 | + :customer_id, | |
100 | + :name, | |
101 | + :phone, | |
102 | + :city, | |
103 | + :address, | |
104 | + :delivery, | |
105 | + :pay, | |
106 | + :email, | |
107 | + :comments, | |
108 | + :action_discount_id, | |
109 | + :firm_total, | |
110 | + :promo_code | |
111 | + ) | |
112 | + RETURNING id | |
113 | + ', | |
114 | + [ | |
115 | + 'customer_id' => $customer_id, | |
116 | + 'name' => $order['name'], | |
117 | + 'phone' => $order['phone'], | |
118 | + 'city' => $order['city'], | |
119 | + 'address' => $order['address'], | |
120 | + 'delivery' => $order['delivery'], | |
121 | + 'pay' => $order['pay'], | |
122 | + 'email' => $order['email'], | |
123 | + 'comments' => $order['comments'], | |
124 | + 'action_discount_id' => isset($order['action_id']) ? $order['action_id'] : null, | |
125 | + 'firm_total' => isset($order['firm_total']) ? $order['firm_total'] : null, | |
126 | + 'promo_code' => isset($order['promo_code']) ? $order['promo_code'] : null | |
127 | + ], | |
128 | + -1 | |
129 | + ); | |
130 | + | |
131 | + foreach( $order['items'] as $i ) | |
132 | + { | |
133 | + $data_orders2items = $this->get( | |
134 | + ' | |
135 | + INSERT INTO | |
136 | + public.orders2items_1c | |
137 | + ( | |
138 | + order_id, | |
139 | + item_id, | |
140 | + item_count, | |
141 | + price | |
142 | + ) | |
143 | + VALUES | |
144 | + ( | |
145 | + :order_id, | |
146 | + :item_id, | |
147 | + :item_count, | |
148 | + :price | |
149 | + ) | |
150 | + ', | |
151 | + [ | |
152 | + 'order_id' => $data_orders['0']['id'], | |
153 | + 'item_id' => $i['id'], | |
154 | + 'item_count' => $i['count'], | |
155 | + 'price' => $i['price2'] | |
156 | + ] | |
157 | + ); | |
158 | + } | |
159 | + | |
160 | + $data = | |
161 | + [ | |
162 | + 'proposal_number' => $data_orders['0']['id'], | |
163 | + 'confirmed' => $confirmed, | |
164 | + 'new' => $new, | |
165 | + ]; | |
166 | + | |
167 | + if( $order['delivery'] == 3 || $order['delivery'] == 4 ) | |
168 | + { | |
169 | + switch( $order['delivery'] ) | |
170 | + { | |
171 | + case 3: | |
172 | + default: | |
173 | + $order['rcpt_warehouse'] = substr( $order['store_address'], 0, strpos( $order['store_address'], '-' ) ); | |
174 | + $order['novaposhta_tnn'] = $this->getDi()->get('novaposhta')->ttn( $data_orders['0']['id'], $order['city'], $order['rcpt_warehouse'], NULL, $order['name'], $order['phone'], '10', $order['total_sum'] ); | |
175 | + //$order['novaposhta_tnn'] = $this->getDi()->get('novaposhta')->ttn_ref( $data_orders['0']['id'], $order['city_ref'], $order['store_ref'], NULL, $order['name'], $order['phone'], '10', $order['total_sum'] ); | |
176 | + break; | |
177 | + case 4: | |
178 | + $order['novaposhta_tnn'] = $this->getDi()->get('novaposhta')->ttn( $data_orders['0']['id'], $order['city'], NULL, $order['address'], $order['name'], $order['phone'], '10', $order['total_sum'] ); | |
179 | + break; | |
180 | + | |
181 | + | |
182 | + } | |
183 | + | |
184 | + if( !empty( $order['novaposhta_tnn'] ) && !empty( $data_orders['0']['id'] ) ) | |
185 | + { | |
186 | + $this->addNovaposhtaTnn( $order['novaposhta_tnn'], $data_orders['0']['id'] ); | |
187 | + $data['novaposhta_tnn'] = $order['novaposhta_tnn']; | |
188 | + } | |
189 | + } | |
190 | + | |
191 | + $connection->commit(); | |
192 | + return $data; | |
193 | + } | |
194 | + catch(\Exception $e) | |
195 | + { | |
196 | + $connection->rollback(); | |
197 | + } | |
198 | + | |
199 | + return false; | |
200 | + } | |
201 | + | |
202 | + ///////////////////////////////////////////////////////////////////////////// | |
203 | + | |
204 | + public function addNovaposhtaTnn( $tnn, $order_id ) | |
205 | + { | |
206 | + return $this->exec( | |
207 | + ' | |
208 | + UPDATE | |
209 | + public.orders_1c | |
210 | + SET | |
211 | + novaposhta_tnn = :novaposhta_tnn | |
212 | + WHERE | |
213 | + id = :id | |
214 | + ', | |
215 | + [ | |
216 | + 'novaposhta_tnn' => $tnn, | |
217 | + 'id' => $order_id | |
218 | + ] | |
219 | + ); | |
220 | + } | |
221 | + | |
222 | + ///////////////////////////////////////////////////////////////////////////// | |
223 | + | |
224 | + public function getOrdersSumById($id) { | |
225 | + return $this->get( | |
226 | + ' | |
227 | + SELECT | |
228 | + SUM((price * item_count)) as price | |
229 | + FROM | |
230 | + public.orders2items_1c | |
231 | + WHERE | |
232 | + order_id = :id | |
233 | + GROUP BY | |
234 | + order_id | |
235 | + ', | |
236 | + [ | |
237 | + 'id' => $id, | |
238 | + ], | |
239 | + -1 | |
240 | + ); | |
241 | + } | |
242 | + | |
243 | + public function getOrdersByCustomerId( $customer_id ) | |
244 | + { | |
245 | + return $this->get( | |
246 | + ' | |
247 | + SELECT | |
248 | + id, | |
249 | + created_date, | |
250 | + status, | |
251 | + delivery | |
252 | + FROM | |
253 | + public.orders_1c | |
254 | + WHERE | |
255 | + customer_id = :customer_id | |
256 | + ORDER BY id DESC | |
257 | + ', | |
258 | + [ | |
259 | + 'customer_id' => $customer_id | |
260 | + ], | |
261 | + -1 | |
262 | + ); | |
263 | + } | |
264 | + | |
265 | + ///////////////////////////////////////////////////////////////////////////// | |
266 | + | |
267 | + public function getOrdersByOrderId( $order_id, $lang_id ) | |
268 | + { | |
269 | + return $this->get( | |
270 | + ' | |
271 | + SELECT | |
272 | + item_id, | |
273 | + item_count, | |
274 | + ( | |
275 | + SELECT | |
276 | + group_id | |
277 | + FROM | |
278 | + public.items | |
279 | + WHERE | |
280 | + id = public.orders2items_1c.item_id | |
281 | + LIMIT 1 | |
282 | + ) AS group_id, | |
283 | + ( | |
284 | + SELECT | |
285 | + firm | |
286 | + FROM | |
287 | + public.items | |
288 | + WHERE | |
289 | + id = public.orders2items_1c.item_id | |
290 | + LIMIT 1 | |
291 | + ) AS firm, | |
292 | + ( | |
293 | + SELECT | |
294 | + price2 | |
295 | + FROM | |
296 | + public.items | |
297 | + WHERE | |
298 | + id = public.orders2items_1c.item_id | |
299 | + LIMIT 1 | |
300 | + ) AS price2, | |
301 | + ( | |
302 | + SELECT | |
303 | + size | |
304 | + FROM | |
305 | + public.items | |
306 | + WHERE | |
307 | + id = public.orders2items_1c.item_id | |
308 | + LIMIT 1 | |
309 | + ) AS size, | |
310 | + ( | |
311 | + SELECT | |
312 | + title | |
313 | + FROM | |
314 | + public.items_i18n | |
315 | + WHERE | |
316 | + item_id = public.orders2items_1c.item_id | |
317 | + AND | |
318 | + lang_id = :lang_id | |
319 | + LIMIT 1 | |
320 | + ) AS title, | |
321 | + ( | |
322 | + SELECT | |
323 | + alias | |
324 | + FROM | |
325 | + public.items_group_alias | |
326 | + WHERE | |
327 | + group_id = | |
328 | + ( | |
329 | + SELECT | |
330 | + group_id | |
331 | + FROM | |
332 | + public.items | |
333 | + WHERE | |
334 | + id = public.orders2items_1c.item_id | |
335 | + LIMIT 1 | |
336 | + ) | |
337 | + LIMIT 1 | |
338 | + ) AS group_alias, | |
339 | + ( | |
340 | + SELECT | |
341 | + cover | |
342 | + FROM | |
343 | + public.items_group | |
344 | + WHERE | |
345 | + group_id = | |
346 | + ( | |
347 | + SELECT | |
348 | + group_id | |
349 | + FROM | |
350 | + public.items | |
351 | + WHERE | |
352 | + id = public.orders2items_1c.item_id | |
353 | + LIMIT 1 | |
354 | + ) | |
355 | + LIMIT 1 | |
356 | + ) as cover, | |
357 | + ( | |
358 | + SELECT | |
359 | + alias | |
360 | + FROM | |
361 | + public.types_i18n | |
362 | + WHERE | |
363 | + type = | |
364 | + ( | |
365 | + SELECT | |
366 | + type | |
367 | + FROM | |
368 | + public.items | |
369 | + WHERE | |
370 | + id = public.orders2items_1c.item_id | |
371 | + LIMIT 1 | |
372 | + ) | |
373 | + AND | |
374 | + lang_id = :lang_id | |
375 | + LIMIT 1 | |
376 | + ) AS type_alias, | |
377 | + ( | |
378 | + SELECT | |
379 | + alias | |
380 | + FROM | |
381 | + public.subtypes_i18n | |
382 | + WHERE | |
383 | + subtype = | |
384 | + ( | |
385 | + SELECT | |
386 | + subtype | |
387 | + FROM | |
388 | + public.items | |
389 | + WHERE | |
390 | + id = public.orders2items_1c.item_id | |
391 | + LIMIT 1 | |
392 | + ) | |
393 | + AND | |
394 | + type = | |
395 | + ( | |
396 | + SELECT | |
397 | + type | |
398 | + FROM | |
399 | + public.items | |
400 | + WHERE | |
401 | + id = public.orders2items_1c.item_id | |
402 | + LIMIT 1 | |
403 | + ) | |
404 | + AND | |
405 | + lang_id = :lang_id | |
406 | + ) AS subtype_alias | |
407 | + FROM | |
408 | + public.orders2items_1c | |
409 | + WHERE | |
410 | + order_id = :order_id | |
411 | + ', | |
412 | + [ | |
413 | + 'order_id' => $order_id, | |
414 | + 'lang_id' => $lang_id | |
415 | + ], | |
416 | + -1 | |
417 | + ); | |
418 | + } | |
419 | + | |
420 | + ///////////////////////////////////////////////////////////////////////////// | |
421 | + | |
422 | + ///////////////////////////////////////////////////////////////////////////// | |
423 | + | |
424 | + ///////////////////////////////////////////////////////////////////////////// | |
425 | + | |
426 | + public function getAllOrders( $page ) | |
427 | + { | |
428 | + return $this->get( | |
429 | + ' | |
430 | + SELECT | |
431 | + id, | |
432 | + name, | |
433 | + created_date, | |
434 | + phone, | |
435 | + comments, | |
436 | + status, | |
437 | + status_pay, | |
438 | + delivery | |
439 | + FROM | |
440 | + public.orders_1c | |
441 | + ORDER BY | |
442 | + created_date | |
443 | + LIMIT | |
444 | + '.\config::get( 'limits/admin_orders' ).' | |
445 | + OFFSET | |
446 | + '.($page-1)*(\config::get( 'limits/admin_orders' )) | |
447 | + , | |
448 | + [ | |
449 | + | |
450 | + ], | |
451 | + -1 | |
452 | + ); | |
453 | + } | |
454 | + | |
455 | + ///////////////////////////////////////////////////////////////////////////// | |
456 | + | |
457 | + public function getSortedOrders( $sort_type, $sort_id, $page ) | |
458 | + { | |
459 | + return $this->get( | |
460 | + ' | |
461 | + SELECT | |
462 | + id, | |
463 | + name, | |
464 | + created_date, | |
465 | + phone, | |
466 | + comments, | |
467 | + status, | |
468 | + status_pay, | |
469 | + delivery | |
470 | + FROM | |
471 | + public.orders_1c | |
472 | + WHERE | |
473 | + '.$sort_type.' = '.$sort_id.' | |
474 | + ORDER BY | |
475 | + created_date | |
476 | + LIMIT | |
477 | + '.\config::get( 'limits/admin_orders' ).' | |
478 | + OFFSET | |
479 | + '.($page-1)*(\config::get( 'limits/admin_orders' )) | |
480 | + , | |
481 | + [ | |
482 | + | |
483 | + ], | |
484 | + -1 | |
485 | + ); | |
486 | + } | |
487 | + | |
488 | + ///////////////////////////////////////////////////////////////////////////// | |
489 | + | |
490 | + public function getOrdersWithIds( $orders_ids ) | |
491 | + { | |
492 | + return $this->get( | |
493 | + ' | |
494 | + SELECT | |
495 | + order_id, | |
496 | + item_count, | |
497 | + price | |
498 | + FROM | |
499 | + public.orders2items_1c | |
500 | + WHERE | |
501 | + order_id IN ('.join( ',', $orders_ids ).') | |
502 | + ', | |
503 | + [ | |
504 | + | |
505 | + ], | |
506 | + -1 | |
507 | + ); | |
508 | + } | |
509 | + | |
510 | + ///////////////////////////////////////////////////////////////////////////// | |
511 | + | |
512 | + public function countAllOrders() | |
513 | + { | |
514 | + return $this->get( | |
515 | + ' | |
516 | + SELECT | |
517 | + COUNT(id) AS total | |
518 | + FROM | |
519 | + public.orders_1c | |
520 | + ', | |
521 | + [ | |
522 | + | |
523 | + ], | |
524 | + -1 | |
525 | + ); | |
526 | + } | |
527 | + | |
528 | + ///////////////////////////////////////////////////////////////////////////// | |
529 | + | |
530 | + public function countSortedOrders( $sort_type, $sort_id ) | |
531 | + { | |
532 | + return $this->get( | |
533 | + ' | |
534 | + SELECT | |
535 | + COUNT(id) AS total | |
536 | + FROM | |
537 | + public.orders_1c | |
538 | + WHERE | |
539 | + '.$sort_type.' = '.$sort_id.' | |
540 | + ', | |
541 | + [ | |
542 | + | |
543 | + ], | |
544 | + -1 | |
545 | + ); | |
546 | + } | |
547 | + | |
548 | + ///////////////////////////////////////////////////////////////////////////// | |
549 | + | |
550 | + public function countStatus() | |
551 | + { | |
552 | + return $this->get( | |
553 | + ' | |
554 | + SELECT | |
555 | + COUNT(status) AS total, | |
556 | + status | |
557 | + FROM | |
558 | + public.orders_1c | |
559 | + GROUP BY | |
560 | + status | |
561 | + ', | |
562 | + [ | |
563 | + | |
564 | + ], | |
565 | + -1 | |
566 | + ); | |
567 | + } | |
568 | + | |
569 | + public function updateOrderId() | |
570 | + { | |
571 | + return $this->get( | |
572 | + " | |
573 | + SELECT setval('orders_id_seq', (SELECT MAX(id) FROM public.orders_1c)) | |
574 | + ", | |
575 | + [ | |
576 | + | |
577 | + ], | |
578 | + -1 | |
579 | + ); | |
580 | + } | |
581 | + | |
582 | + ///////////////////////////////////////////////////////////////////////////// | |
583 | + | |
584 | + | |
585 | +} | |
586 | + | |
587 | +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |
0 | 588 | \ No newline at end of file | ... | ... |