1: | <?php
|
2: | namespace Opencart\Admin\Controller\Sale;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class Order extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: | |
12: | |
13: |
|
14: | public function index(): void {
|
15: | $this->load->language('sale/order');
|
16: |
|
17: | $this->document->setTitle($this->language->get('heading_title'));
|
18: |
|
19: | if (isset($this->request->get['filter_order_id'])) {
|
20: | $filter_order_id = (int)$this->request->get['filter_order_id'];
|
21: | } else {
|
22: | $filter_order_id = '';
|
23: | }
|
24: |
|
25: | if (isset($this->request->get['filter_customer_id'])) {
|
26: | $filter_customer_id = $this->request->get['filter_customer_id'];
|
27: | } else {
|
28: | $filter_customer_id = '';
|
29: | }
|
30: |
|
31: | if (isset($this->request->get['filter_customer'])) {
|
32: | $filter_customer = $this->request->get['filter_customer'];
|
33: | } else {
|
34: | $filter_customer = '';
|
35: | }
|
36: |
|
37: | if (isset($this->request->get['filter_store_id'])) {
|
38: | $filter_store_id = (int)$this->request->get['filter_store_id'];
|
39: | } else {
|
40: | $filter_store_id = '';
|
41: | }
|
42: |
|
43: | if (isset($this->request->get['filter_order_status'])) {
|
44: | $filter_order_status = $this->request->get['filter_order_status'];
|
45: | } else {
|
46: | $filter_order_status = '';
|
47: | }
|
48: |
|
49: | if (isset($this->request->get['filter_order_status_id'])) {
|
50: | $filter_order_status_id = (int)$this->request->get['filter_order_status_id'];
|
51: | } else {
|
52: | $filter_order_status_id = '';
|
53: | }
|
54: |
|
55: | if (isset($this->request->get['filter_total'])) {
|
56: | $filter_total = $this->request->get['filter_total'];
|
57: | } else {
|
58: | $filter_total = '';
|
59: | }
|
60: |
|
61: | if (isset($this->request->get['filter_date_from'])) {
|
62: | $filter_date_from = $this->request->get['filter_date_from'];
|
63: | } else {
|
64: | $filter_date_from = '';
|
65: | }
|
66: |
|
67: | if (isset($this->request->get['filter_date_to'])) {
|
68: | $filter_date_to = $this->request->get['filter_date_to'];
|
69: | } else {
|
70: | $filter_date_to = '';
|
71: | }
|
72: |
|
73: | $url = '';
|
74: |
|
75: | if (isset($this->request->get['filter_order_id'])) {
|
76: | $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
|
77: | }
|
78: |
|
79: | if (isset($this->request->get['filter_customer_id'])) {
|
80: | $url .= '&filter_customer_id=' . (int)$this->request->get['filter_customer_id'];
|
81: | }
|
82: |
|
83: | if (isset($this->request->get['filter_customer'])) {
|
84: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
85: | }
|
86: |
|
87: | if (isset($this->request->get['filter_store_id'])) {
|
88: | $url .= '&filter_store_id=' . (int)$this->request->get['filter_store_id'];
|
89: | }
|
90: |
|
91: | if (isset($this->request->get['filter_order_status'])) {
|
92: | $url .= '&filter_order_status=' . $this->request->get['filter_order_status'];
|
93: | }
|
94: |
|
95: | if (isset($this->request->get['filter_order_status_id'])) {
|
96: | $url .= '&filter_order_status_id=' . (int)$this->request->get['filter_order_status_id'];
|
97: | }
|
98: |
|
99: | if (isset($this->request->get['filter_total'])) {
|
100: | $url .= '&filter_total=' . $this->request->get['filter_total'];
|
101: | }
|
102: |
|
103: | if (isset($this->request->get['filter_date_from'])) {
|
104: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
105: | }
|
106: |
|
107: | if (isset($this->request->get['filter_date_to'])) {
|
108: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
109: | }
|
110: |
|
111: | if (isset($this->request->get['sort'])) {
|
112: | $url .= '&sort=' . $this->request->get['sort'];
|
113: | }
|
114: |
|
115: | if (isset($this->request->get['order'])) {
|
116: | $url .= '&order=' . $this->request->get['order'];
|
117: | }
|
118: |
|
119: | if (isset($this->request->get['page'])) {
|
120: | $url .= '&page=' . $this->request->get['page'];
|
121: | }
|
122: |
|
123: | $data['breadcrumbs'] = [];
|
124: |
|
125: | $data['breadcrumbs'][] = [
|
126: | 'text' => $this->language->get('text_home'),
|
127: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
128: | ];
|
129: |
|
130: | $data['breadcrumbs'][] = [
|
131: | 'text' => $this->language->get('heading_title'),
|
132: | 'href' => $this->url->link('sale/order', 'user_token=' . $this->session->data['user_token'] . $url)
|
133: | ];
|
134: |
|
135: | $data['add'] = $this->url->link('sale/order.info', 'user_token=' . $this->session->data['user_token'] . $url);
|
136: | $data['delete'] = $this->url->link('sale/order.delete', 'user_token=' . $this->session->data['user_token'] . $url);
|
137: | $data['invoice'] = $this->url->link('sale/order.invoice', 'user_token=' . $this->session->data['user_token']);
|
138: | $data['shipping'] = $this->url->link('sale/order.shipping', 'user_token=' . $this->session->data['user_token']);
|
139: |
|
140: | $data['list'] = $this->getList();
|
141: |
|
142: | $data['stores'] = [];
|
143: |
|
144: | $data['stores'][] = [
|
145: | 'store_id' => 0,
|
146: | 'name' => $this->language->get('text_default')
|
147: | ];
|
148: |
|
149: | $this->load->model('setting/store');
|
150: |
|
151: | $stores = $this->model_setting_store->getStores();
|
152: |
|
153: | foreach ($stores as $store) {
|
154: | $data['stores'][] = [
|
155: | 'store_id' => $store['store_id'],
|
156: | 'name' => $store['name']
|
157: | ];
|
158: | }
|
159: |
|
160: | $this->load->model('localisation/order_status');
|
161: |
|
162: | $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
|
163: |
|
164: | $data['filter_order_id'] = $filter_order_id;
|
165: | $data['filter_customer_id'] = $filter_customer_id;
|
166: | $data['filter_customer'] = $filter_customer;
|
167: | $data['filter_store_id'] = $filter_store_id;
|
168: | $data['filter_order_status'] = $filter_order_status;
|
169: | $data['filter_order_status_id'] = $filter_order_status_id;
|
170: | $data['filter_total'] = $filter_total;
|
171: | $data['filter_date_from'] = $filter_date_from;
|
172: | $data['filter_date_to'] = $filter_date_to;
|
173: |
|
174: | $data['user_token'] = $this->session->data['user_token'];
|
175: |
|
176: | $data['header'] = $this->load->controller('common/header');
|
177: | $data['column_left'] = $this->load->controller('common/column_left');
|
178: | $data['footer'] = $this->load->controller('common/footer');
|
179: |
|
180: | $this->response->setOutput($this->load->view('sale/order', $data));
|
181: | }
|
182: |
|
183: | |
184: | |
185: | |
186: | |
187: |
|
188: | public function list(): void {
|
189: | $this->load->language('sale/order');
|
190: |
|
191: | $this->response->setOutput($this->getList());
|
192: | }
|
193: |
|
194: | |
195: | |
196: | |
197: | |
198: |
|
199: | protected function getList(): string {
|
200: | if (isset($this->request->get['filter_order_id'])) {
|
201: | $filter_order_id = (int)$this->request->get['filter_order_id'];
|
202: | } else {
|
203: | $filter_order_id = '';
|
204: | }
|
205: |
|
206: | if (isset($this->request->get['filter_customer_id'])) {
|
207: | $filter_customer_id = $this->request->get['filter_customer_id'];
|
208: | } else {
|
209: | $filter_customer_id = '';
|
210: | }
|
211: |
|
212: | if (isset($this->request->get['filter_customer'])) {
|
213: | $filter_customer = $this->request->get['filter_customer'];
|
214: | } else {
|
215: | $filter_customer = '';
|
216: | }
|
217: |
|
218: | if (isset($this->request->get['filter_store_id'])) {
|
219: | $filter_store_id = (int)$this->request->get['filter_store_id'];
|
220: | } else {
|
221: | $filter_store_id = '';
|
222: | }
|
223: |
|
224: | if (isset($this->request->get['filter_order_status'])) {
|
225: | $filter_order_status = $this->request->get['filter_order_status'];
|
226: | } else {
|
227: | $filter_order_status = '';
|
228: | }
|
229: |
|
230: | if (isset($this->request->get['filter_order_status_id'])) {
|
231: | $filter_order_status_id = (int)$this->request->get['filter_order_status_id'];
|
232: | } else {
|
233: | $filter_order_status_id = '';
|
234: | }
|
235: |
|
236: | if (isset($this->request->get['filter_total'])) {
|
237: | $filter_total = $this->request->get['filter_total'];
|
238: | } else {
|
239: | $filter_total = '';
|
240: | }
|
241: |
|
242: | if (isset($this->request->get['filter_date_from'])) {
|
243: | $filter_date_from = $this->request->get['filter_date_from'];
|
244: | } else {
|
245: | $filter_date_from = '';
|
246: | }
|
247: |
|
248: | if (isset($this->request->get['filter_date_to'])) {
|
249: | $filter_date_to = $this->request->get['filter_date_to'];
|
250: | } else {
|
251: | $filter_date_to = '';
|
252: | }
|
253: |
|
254: | if (isset($this->request->get['sort'])) {
|
255: | $sort = (string)$this->request->get['sort'];
|
256: | } else {
|
257: | $sort = 'o.order_id';
|
258: | }
|
259: |
|
260: | if (isset($this->request->get['order'])) {
|
261: | $order = (string)$this->request->get['order'];
|
262: | } else {
|
263: | $order = 'DESC';
|
264: | }
|
265: |
|
266: | if (isset($this->request->get['page'])) {
|
267: | $page = (int)$this->request->get['page'];
|
268: | } else {
|
269: | $page = 1;
|
270: | }
|
271: |
|
272: | $url = '';
|
273: |
|
274: | if (isset($this->request->get['filter_order_id'])) {
|
275: | $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
|
276: | }
|
277: |
|
278: | if (isset($this->request->get['filter_customer_id'])) {
|
279: | $url .= '&filter_customer_id=' . (int)$this->request->get['filter_customer_id'];
|
280: | }
|
281: |
|
282: | if (isset($this->request->get['filter_customer'])) {
|
283: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
284: | }
|
285: |
|
286: | if (isset($this->request->get['filter_store_id'])) {
|
287: | $url .= '&filter_store_id=' . (int)$this->request->get['filter_store_id'];
|
288: | }
|
289: |
|
290: | if (isset($this->request->get['filter_order_status'])) {
|
291: | $url .= '&filter_order_status=' . $this->request->get['filter_order_status'];
|
292: | }
|
293: |
|
294: | if (isset($this->request->get['filter_order_status_id'])) {
|
295: | $url .= '&filter_order_status_id=' . (int)$this->request->get['filter_order_status_id'];
|
296: | }
|
297: |
|
298: | if (isset($this->request->get['filter_total'])) {
|
299: | $url .= '&filter_total=' . $this->request->get['filter_total'];
|
300: | }
|
301: |
|
302: | if (isset($this->request->get['filter_date_from'])) {
|
303: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
304: | }
|
305: |
|
306: | if (isset($this->request->get['filter_date_to'])) {
|
307: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
308: | }
|
309: |
|
310: | if (isset($this->request->get['sort'])) {
|
311: | $url .= '&sort=' . $this->request->get['sort'];
|
312: | }
|
313: |
|
314: | if (isset($this->request->get['order'])) {
|
315: | $url .= '&order=' . $this->request->get['order'];
|
316: | }
|
317: |
|
318: | if (isset($this->request->get['page'])) {
|
319: | $url .= '&page=' . $this->request->get['page'];
|
320: | }
|
321: |
|
322: | $data['action'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . $url);
|
323: |
|
324: | $data['orders'] = [];
|
325: |
|
326: | $filter_data = [
|
327: | 'filter_order_id' => $filter_order_id,
|
328: | 'filter_customer_id' => $filter_customer_id,
|
329: | 'filter_customer' => $filter_customer,
|
330: | 'filter_store_id' => $filter_store_id,
|
331: | 'filter_order_status' => $filter_order_status,
|
332: | 'filter_order_status_id' => $filter_order_status_id,
|
333: | 'filter_total' => $filter_total,
|
334: | 'filter_date_from' => $filter_date_from,
|
335: | 'filter_date_to' => $filter_date_to,
|
336: | 'sort' => $sort,
|
337: | 'order' => $order,
|
338: | 'start' => ($page - 1) * (int)$this->config->get('config_pagination_admin'),
|
339: | 'limit' => (int)$this->config->get('config_pagination_admin')
|
340: | ];
|
341: |
|
342: | $this->load->model('sale/order');
|
343: |
|
344: | $results = $this->model_sale_order->getOrders($filter_data);
|
345: |
|
346: | foreach ($results as $result) {
|
347: | $data['orders'][] = [
|
348: | 'order_id' => $result['order_id'],
|
349: | 'store_name' => $result['store_name'],
|
350: | 'customer' => $result['customer'],
|
351: | 'order_status' => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
|
352: | 'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
|
353: | 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
|
354: | 'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
|
355: | 'shipping_method' => $result['shipping_method'],
|
356: | 'view' => $this->url->link('sale/order.info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $result['order_id'] . $url)
|
357: | ];
|
358: | }
|
359: |
|
360: | $url = '';
|
361: |
|
362: | if (isset($this->request->get['filter_order_id'])) {
|
363: | $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
|
364: | }
|
365: |
|
366: | if (isset($this->request->get['filter_customer_id'])) {
|
367: | $url .= '&filter_customer_id=' . (int)$this->request->get['filter_customer_id'];
|
368: | }
|
369: |
|
370: | if (isset($this->request->get['filter_customer'])) {
|
371: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
372: | }
|
373: |
|
374: | if (isset($this->request->get['filter_store_id'])) {
|
375: | $url .= '&filter_store_id=' . (int)$this->request->get['filter_store_id'];
|
376: | }
|
377: |
|
378: | if (isset($this->request->get['filter_order_status'])) {
|
379: | $url .= '&filter_order_status=' . $this->request->get['filter_order_status'];
|
380: | }
|
381: |
|
382: | if (isset($this->request->get['filter_order_status_id'])) {
|
383: | $url .= '&filter_order_status_id=' . (int)$this->request->get['filter_order_status_id'];
|
384: | }
|
385: |
|
386: | if (isset($this->request->get['filter_total'])) {
|
387: | $url .= '&filter_total=' . $this->request->get['filter_total'];
|
388: | }
|
389: |
|
390: | if (isset($this->request->get['filter_date_from'])) {
|
391: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
392: | }
|
393: |
|
394: | if (isset($this->request->get['filter_date_to'])) {
|
395: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
396: | }
|
397: |
|
398: | if ($order == 'ASC') {
|
399: | $url .= '&order=DESC';
|
400: | } else {
|
401: | $url .= '&order=ASC';
|
402: | }
|
403: |
|
404: | $data['sort_order'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=o.order_id' . $url);
|
405: | $data['sort_store_name'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=o.store_name' . $url);
|
406: | $data['sort_customer'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=customer' . $url);
|
407: | $data['sort_status'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=order_status' . $url);
|
408: | $data['sort_total'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=o.total' . $url);
|
409: | $data['sort_date_added'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=o.date_added' . $url);
|
410: | $data['sort_date_modified'] = $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . '&sort=o.date_modified' . $url);
|
411: |
|
412: | $url = '';
|
413: |
|
414: | if (isset($this->request->get['filter_order_id'])) {
|
415: | $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
|
416: | }
|
417: |
|
418: | if (isset($this->request->get['filter_customer_id'])) {
|
419: | $url .= '&filter_customer_id=' . (int)$this->request->get['filter_customer_id'];
|
420: | }
|
421: |
|
422: | if (isset($this->request->get['filter_customer'])) {
|
423: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
424: | }
|
425: |
|
426: | if (isset($this->request->get['filter_store_id'])) {
|
427: | $url .= '&filter_store_id=' . (int)$this->request->get['filter_store_id'];
|
428: | }
|
429: |
|
430: | if (isset($this->request->get['filter_order_status'])) {
|
431: | $url .= '&filter_order_status=' . $this->request->get['filter_order_status'];
|
432: | }
|
433: |
|
434: | if (isset($this->request->get['filter_order_status_id'])) {
|
435: | $url .= '&filter_order_status_id=' . (int)$this->request->get['filter_order_status_id'];
|
436: | }
|
437: |
|
438: | if (isset($this->request->get['filter_total'])) {
|
439: | $url .= '&filter_total=' . $this->request->get['filter_total'];
|
440: | }
|
441: |
|
442: | if (isset($this->request->get['filter_date_from'])) {
|
443: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
444: | }
|
445: |
|
446: | if (isset($this->request->get['filter_date_to'])) {
|
447: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
448: | }
|
449: |
|
450: | if (isset($this->request->get['sort'])) {
|
451: | $url .= '&sort=' . $this->request->get['sort'];
|
452: | }
|
453: |
|
454: | if (isset($this->request->get['order'])) {
|
455: | $url .= '&order=' . $this->request->get['order'];
|
456: | }
|
457: |
|
458: | $order_total = $this->model_sale_order->getTotalOrders($filter_data);
|
459: |
|
460: | $data['pagination'] = $this->load->controller('common/pagination', [
|
461: | 'total' => $order_total,
|
462: | 'page' => $page,
|
463: | 'limit' => $this->config->get('config_pagination_admin'),
|
464: | 'url' => $this->url->link('sale/order.list', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}')
|
465: | ]);
|
466: |
|
467: | $data['results'] = sprintf($this->language->get('text_pagination'), ($order_total) ? (($page - 1) * $this->config->get('config_pagination_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_pagination_admin')) > ($order_total - $this->config->get('config_pagination_admin'))) ? $order_total : ((($page - 1) * $this->config->get('config_pagination_admin')) + $this->config->get('config_pagination_admin')), $order_total, ceil($order_total / $this->config->get('config_pagination_admin')));
|
468: |
|
469: | $data['sort'] = $sort;
|
470: | $data['order'] = $order;
|
471: |
|
472: | return $this->load->view('sale/order_list', $data);
|
473: | }
|
474: |
|
475: | |
476: | |
477: | |
478: | |
479: | |
480: | |
481: |
|
482: | public function info(): void {
|
483: | $this->load->language('sale/order');
|
484: |
|
485: | if (isset($this->request->get['order_id'])) {
|
486: | $order_id = (int)$this->request->get['order_id'];
|
487: | } else {
|
488: | $order_id = 0;
|
489: | }
|
490: |
|
491: | $this->document->setTitle($this->language->get('heading_title'));
|
492: |
|
493: | $data['text_form'] = !$order_id ? $this->language->get('text_add') : sprintf($this->language->get('text_edit'), $order_id);
|
494: |
|
495: | $data['error_upload_size'] = sprintf($this->language->get('error_upload_size'), $this->config->get('config_file_max_size'));
|
496: |
|
497: | $data['config_file_max_size'] = ((int)$this->config->get('config_file_max_size') * 1024 * 1024);
|
498: | $data['config_telephone_required'] = $this->config->get('config_telephone_required');
|
499: |
|
500: | $url = '';
|
501: |
|
502: | if (isset($this->request->get['filter_order_id'])) {
|
503: | $url .= '&filter_order_id=' . $this->request->get['filter_order_id'];
|
504: | }
|
505: |
|
506: | if (isset($this->request->get['filter_customer_id'])) {
|
507: | $url .= '&filter_customer_id=' . (int)$this->request->get['filter_customer_id'];
|
508: | }
|
509: |
|
510: | if (isset($this->request->get['filter_customer'])) {
|
511: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
512: | }
|
513: |
|
514: | if (isset($this->request->get['filter_store_id'])) {
|
515: | $url .= '&filter_store_id=' . (int)$this->request->get['filter_store_id'];
|
516: | }
|
517: |
|
518: | if (isset($this->request->get['filter_order_status'])) {
|
519: | $url .= '&filter_order_status=' . $this->request->get['filter_order_status'];
|
520: | }
|
521: |
|
522: | if (isset($this->request->get['filter_order_status_id'])) {
|
523: | $url .= '&filter_order_status_id=' . (int)$this->request->get['filter_order_status_id'];
|
524: | }
|
525: |
|
526: | if (isset($this->request->get['filter_total'])) {
|
527: | $url .= '&filter_total=' . $this->request->get['filter_total'];
|
528: | }
|
529: |
|
530: | if (isset($this->request->get['filter_date_from'])) {
|
531: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
532: | }
|
533: |
|
534: | if (isset($this->request->get['filter_date_to'])) {
|
535: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
536: | }
|
537: |
|
538: | if (isset($this->request->get['sort'])) {
|
539: | $url .= '&sort=' . $this->request->get['sort'];
|
540: | }
|
541: |
|
542: | if (isset($this->request->get['order'])) {
|
543: | $url .= '&order=' . $this->request->get['order'];
|
544: | }
|
545: |
|
546: | if (isset($this->request->get['page'])) {
|
547: | $url .= '&page=' . $this->request->get['page'];
|
548: | }
|
549: |
|
550: | $data['breadcrumbs'] = [];
|
551: |
|
552: | $data['breadcrumbs'][] = [
|
553: | 'text' => $this->language->get('text_home'),
|
554: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
555: | ];
|
556: |
|
557: | $data['breadcrumbs'][] = [
|
558: | 'text' => $this->language->get('heading_title'),
|
559: | 'href' => $this->url->link('sale/order', 'user_token=' . $this->session->data['user_token'] . $url)
|
560: | ];
|
561: |
|
562: | $data['shipping'] = $this->url->link('sale/order.shipping', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_id);
|
563: | $data['invoice'] = $this->url->link('sale/order.invoice', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_id);
|
564: | $data['back'] = $this->url->link('sale/order', 'user_token=' . $this->session->data['user_token'] . $url);
|
565: | $data['upload'] = $this->url->link('tool/upload.upload', 'user_token=' . $this->session->data['user_token']);
|
566: | $data['customer_add'] = $this->url->link('customer/customer.form', 'user_token=' . $this->session->data['user_token']);
|
567: |
|
568: | if ($order_id) {
|
569: | $this->load->model('sale/order');
|
570: |
|
571: | $order_info = $this->model_sale_order->getOrder($order_id);
|
572: | }
|
573: |
|
574: | if (!empty($order_info)) {
|
575: | $data['order_id'] = $order_info['order_id'];
|
576: | } else {
|
577: | $data['order_id'] = '';
|
578: | }
|
579: |
|
580: |
|
581: | if (!empty($order_info)) {
|
582: | $data['invoice_no'] = $order_info['invoice_no'];
|
583: | } else {
|
584: | $data['invoice_no'] = '';
|
585: | }
|
586: |
|
587: | if (!empty($order_info)) {
|
588: | $data['invoice_prefix'] = $order_info['invoice_prefix'];
|
589: | } else {
|
590: | $data['invoice_prefix'] = '';
|
591: | }
|
592: |
|
593: |
|
594: | if (!empty($order_info)) {
|
595: | $data['customer_id'] = $order_info['customer_id'];
|
596: | } else {
|
597: | $data['customer_id'] = 0;
|
598: | }
|
599: |
|
600: | $this->load->model('customer/customer_group');
|
601: |
|
602: | $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
|
603: |
|
604: | if (!empty($order_info)) {
|
605: | $data['customer_group_id'] = $order_info['customer_group_id'];
|
606: | } else {
|
607: | $data['customer_group_id'] = $this->config->get('config_customer_group_id');
|
608: | }
|
609: |
|
610: | if (!empty($order_info)) {
|
611: | $data['firstname'] = $order_info['firstname'];
|
612: | } else {
|
613: | $data['firstname'] = '';
|
614: | }
|
615: |
|
616: | if (!empty($order_info)) {
|
617: | $data['lastname'] = $order_info['lastname'];
|
618: | } else {
|
619: | $data['lastname'] = '';
|
620: | }
|
621: |
|
622: | if (!empty($order_info)) {
|
623: | $data['email'] = $order_info['email'];
|
624: | } else {
|
625: | $data['email'] = '';
|
626: | }
|
627: |
|
628: | if (!empty($order_info)) {
|
629: | $data['telephone'] = $order_info['telephone'];
|
630: | } else {
|
631: | $data['telephone'] = '';
|
632: | }
|
633: |
|
634: | if (!empty($order_info)) {
|
635: | $data['account_custom_field'] = $order_info['custom_field'];
|
636: | } else {
|
637: | $data['account_custom_field'] = [];
|
638: | }
|
639: |
|
640: |
|
641: | $data['custom_fields'] = [];
|
642: |
|
643: | $filter_data = [
|
644: | 'filter_status' => 1,
|
645: | 'sort' => 'cf.sort_order',
|
646: | 'order' => 'ASC'
|
647: | ];
|
648: |
|
649: | $this->load->model('customer/custom_field');
|
650: |
|
651: | $custom_fields = $this->model_customer_custom_field->getCustomFields($filter_data);
|
652: |
|
653: | foreach ($custom_fields as $custom_field) {
|
654: | $data['custom_fields'][] = [
|
655: | 'custom_field_id' => $custom_field['custom_field_id'],
|
656: | 'custom_field_value' => $this->model_customer_custom_field->getValues($custom_field['custom_field_id']),
|
657: | 'name' => $custom_field['name'],
|
658: | 'value' => $custom_field['value'],
|
659: | 'type' => $custom_field['type'],
|
660: | 'location' => $custom_field['location'],
|
661: | 'sort_order' => $custom_field['sort_order']
|
662: | ];
|
663: | }
|
664: |
|
665: |
|
666: | $data['order_products'] = [];
|
667: |
|
668: | $this->load->model('sale/order');
|
669: | $this->load->model('sale/subscription');
|
670: | $this->load->model('tool/upload');
|
671: |
|
672: | $products = $this->model_sale_order->getProducts($order_id);
|
673: |
|
674: | if (!empty($order_info)) {
|
675: | $data['currency_code'] = $order_info['currency_code'];
|
676: | $currency_value = $order_info['currency_value'];
|
677: | } else {
|
678: | $data['currency_code'] = $this->config->get('config_currency');
|
679: | $currency_value = 1;
|
680: | }
|
681: |
|
682: | foreach ($products as $product) {
|
683: | $option_data = [];
|
684: |
|
685: | $options = $this->model_sale_order->getOptions($order_id, $product['order_product_id']);
|
686: |
|
687: | foreach ($options as $option) {
|
688: | if ($option['type'] != 'file') {
|
689: | $option_data[] = [
|
690: | 'name' => $option['name'],
|
691: | 'value' => $option['value'],
|
692: | 'type' => $option['type']
|
693: | ];
|
694: | } else {
|
695: | $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
|
696: |
|
697: | if ($upload_info) {
|
698: | $option_data[] = [
|
699: | 'name' => $option['name'],
|
700: | 'value' => $upload_info['name'],
|
701: | 'type' => $option['type'],
|
702: | 'href' => $this->url->link('tool/upload.download', 'user_token=' . $this->session->data['user_token'] . '&code=' . $upload_info['code'])
|
703: | ];
|
704: | }
|
705: | }
|
706: | }
|
707: |
|
708: | $description = '';
|
709: |
|
710: | $subscription_info = $this->model_sale_order->getSubscription($order_id, $product['order_product_id']);
|
711: |
|
712: | if ($subscription_info) {
|
713: | if ($subscription_info['trial_status']) {
|
714: | $trial_price = $this->currency->format($subscription_info['trial_price'], $this->config->get('config_currency'));
|
715: | $trial_cycle = $subscription_info['trial_cycle'];
|
716: | $trial_frequency = $this->language->get('text_' . $subscription_info['trial_frequency']);
|
717: | $trial_duration = $subscription_info['trial_duration'];
|
718: |
|
719: | $description .= sprintf($this->language->get('text_subscription_trial'), $trial_price, $trial_cycle, $trial_frequency, $trial_duration);
|
720: | }
|
721: |
|
722: | $price = $this->currency->format($subscription_info['price'], $this->config->get('config_currency'));
|
723: | $cycle = $subscription_info['cycle'];
|
724: | $frequency = $this->language->get('text_' . $subscription_info['frequency']);
|
725: | $duration = $subscription_info['duration'];
|
726: |
|
727: | if ($subscription_info['duration']) {
|
728: | $description .= sprintf($this->language->get('text_subscription_duration'), $price, $cycle, $frequency, $duration);
|
729: | } else {
|
730: | $description .= sprintf($this->language->get('text_subscription_cancel'), $price, $cycle, $frequency);
|
731: | }
|
732: | }
|
733: |
|
734: | $subscription_info = $this->model_sale_subscription->getSubscriptionByOrderProductId($order_id, $product['order_product_id']);
|
735: |
|
736: | if ($subscription_info) {
|
737: | $subscription = $this->url->link('sale/subscription.info', 'user_token=' . $this->session->data['user_token'] . '&subscription_id=' . $subscription_info['subscription_id']);
|
738: | } else {
|
739: | $subscription = '';
|
740: | }
|
741: |
|
742: | $data['order_products'][] = [
|
743: | 'order_product_id' => $product['order_product_id'],
|
744: | 'product_id' => $product['product_id'],
|
745: | 'name' => $product['name'],
|
746: | 'model' => $product['model'],
|
747: | 'option' => $option_data,
|
748: | 'subscription' => $subscription,
|
749: | 'subscription_description' => $description,
|
750: | 'quantity' => $product['quantity'],
|
751: | 'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $data['currency_code'], $currency_value),
|
752: | 'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $data['currency_code'], $currency_value),
|
753: | 'reward' => $product['reward']
|
754: | ];
|
755: | }
|
756: |
|
757: |
|
758: | $data['order_vouchers'] = [];
|
759: |
|
760: | $vouchers = $this->model_sale_order->getVouchers($order_id);
|
761: |
|
762: | foreach ($vouchers as $voucher) {
|
763: | $data['order_vouchers'][] = [
|
764: | 'description' => $voucher['description'],
|
765: | 'amount' => $this->currency->format($voucher['amount'], $data['currency_code'], $currency_value),
|
766: | 'href' => $this->url->link('sale/voucher.form', 'user_token=' . $this->session->data['user_token'] . '&voucher_id=' . $voucher['voucher_id'])
|
767: | ];
|
768: | }
|
769: |
|
770: |
|
771: | $data['order_totals'] = [];
|
772: |
|
773: | $totals = $this->model_sale_order->getTotals($order_id);
|
774: |
|
775: | foreach ($totals as $total) {
|
776: | $data['order_totals'][] = [
|
777: | 'title' => $total['title'],
|
778: | 'text' => $this->currency->format($total['value'], $data['currency_code'], $currency_value)
|
779: | ];
|
780: | }
|
781: |
|
782: |
|
783: | if (isset($this->session->data['api_session'])) {
|
784: | $session = new \Opencart\System\Library\Session($this->config->get('session_engine'), $this->registry);
|
785: | $session->start($this->session->data['api_session']);
|
786: | $session->destroy();
|
787: | }
|
788: |
|
789: | if (!empty($order_info)) {
|
790: | $store_id = $order_info['store_id'];
|
791: | } else {
|
792: | $store_id = 0;
|
793: | }
|
794: |
|
795: | if (!empty($order_info)) {
|
796: | $language = $order_info['language_code'];
|
797: | } else {
|
798: | $language = $this->config->get('config_language');
|
799: | }
|
800: |
|
801: |
|
802: | $this->load->model('setting/store');
|
803: |
|
804: | $store = $this->model_setting_store->createStoreInstance($store_id, $language);
|
805: |
|
806: |
|
807: | $this->session->data['api_session'] = $store->session->getId();
|
808: |
|
809: |
|
810: | $store->session->data['api_id'] = (int)$this->config->get('config_api_id');
|
811: |
|
812: | if (!empty($order_info)) {
|
813: |
|
814: | $store->request->get = $this->request->get;
|
815: | $store->request->post = $this->request->post;
|
816: |
|
817: |
|
818: | $store->request->get['route'] = 'api/sale/order.load';
|
819: | $store->request->get['language'] = $language;
|
820: |
|
821: | unset($store->request->get['user_token']);
|
822: | unset($store->request->get['action']);
|
823: |
|
824: | $store->load->controller($store->request->get['route']);
|
825: | }
|
826: |
|
827: |
|
828: | $data['stores'] = [];
|
829: |
|
830: | $data['stores'][] = [
|
831: | 'store_id' => 0,
|
832: | 'name' => $this->config->get('config_name')
|
833: | ];
|
834: |
|
835: | $this->load->model('setting/store');
|
836: |
|
837: | $results = $this->model_setting_store->getStores();
|
838: |
|
839: | foreach ($results as $result) {
|
840: | $data['stores'][] = [
|
841: | 'store_id' => $result['store_id'],
|
842: | 'name' => $result['name']
|
843: | ];
|
844: | }
|
845: |
|
846: | if (!empty($order_info)) {
|
847: | $data['store_id'] = $order_info['store_id'];
|
848: | } else {
|
849: | $data['store_id'] = $this->config->get('config_store_id');
|
850: | }
|
851: |
|
852: |
|
853: | $this->load->model('localisation/language');
|
854: |
|
855: | $data['languages'] = $this->model_localisation_language->getLanguages();
|
856: |
|
857: | if (!empty($order_info)) {
|
858: | $data['language_code'] = $order_info['language_code'];
|
859: | } else {
|
860: | $data['language_code'] = $this->config->get('config_language');
|
861: | }
|
862: |
|
863: |
|
864: | $this->load->model('sale/voucher_theme');
|
865: |
|
866: | $data['voucher_themes'] = $this->model_sale_voucher_theme->getVoucherThemes();
|
867: |
|
868: |
|
869: | $this->load->model('localisation/currency');
|
870: |
|
871: | $data['currencies'] = $this->model_localisation_currency->getCurrencies();
|
872: |
|
873: |
|
874: | $data['total_coupon'] = '';
|
875: | $data['total_voucher'] = '';
|
876: | $data['total_reward'] = 0;
|
877: |
|
878: | if ($order_id) {
|
879: | $order_totals = $this->model_sale_order->getTotals($order_id);
|
880: |
|
881: | foreach ($order_totals as $order_total) {
|
882: |
|
883: | $start = strpos($order_total['title'], '(');
|
884: | $end = strrpos($order_total['title'], ')');
|
885: |
|
886: | if ($start !== false && $end !== false) {
|
887: | $data['total_' . $order_total['code']] = substr($order_total['title'], $start + 1, $end - ($start + 1));
|
888: | }
|
889: | }
|
890: | }
|
891: |
|
892: |
|
893: | if (!empty($order_info)) {
|
894: | $data['points'] = $this->model_sale_order->getRewardTotal($order_id);
|
895: | } else {
|
896: | $data['points'] = 0;
|
897: | }
|
898: |
|
899: |
|
900: | if (!empty($order_info)) {
|
901: | $data['reward_total'] = $this->model_customer_customer->getTotalRewardsByOrderId($order_id);
|
902: | } else {
|
903: | $data['reward_total'] = 0;
|
904: | }
|
905: |
|
906: |
|
907: | if (!empty($order_info)) {
|
908: | $data['affiliate_id'] = $order_info['affiliate_id'];
|
909: | } else {
|
910: | $data['affiliate_id'] = 0;
|
911: | }
|
912: |
|
913: | if (!empty($order_info)) {
|
914: | $data['affiliate'] = $order_info['affiliate'];
|
915: | } else {
|
916: | $data['affiliate'] = '';
|
917: | }
|
918: |
|
919: |
|
920: | if (!empty($order_info) && (float)$order_info['commission']) {
|
921: | $data['commission'] = $this->currency->format($order_info['commission'], $this->config->get('config_currency'));
|
922: | } else {
|
923: | $data['commission'] = '';
|
924: | }
|
925: |
|
926: | if (!empty($order_info)) {
|
927: | $data['commission_total'] = $this->model_customer_customer->getTotalTransactionsByOrderId($order_id);
|
928: | } else {
|
929: | $data['commission_total'] = '';
|
930: | }
|
931: |
|
932: |
|
933: | if (!empty($order_info)) {
|
934: | $this->load->model('customer/customer');
|
935: |
|
936: | $data['addresses'] = $this->model_customer_customer->getAddresses($order_info['customer_id']);
|
937: | } else {
|
938: | $data['addresses'] = [];
|
939: | }
|
940: |
|
941: |
|
942: | if (!empty($order_info)) {
|
943: | $data['payment_address_id'] = $order_info['payment_address_id'];
|
944: | } else {
|
945: | $data['payment_address_id'] = 0;
|
946: | }
|
947: |
|
948: | if (!empty($order_info)) {
|
949: | $data['payment_firstname'] = $order_info['payment_firstname'];
|
950: | } else {
|
951: | $data['payment_firstname'] = '';
|
952: | }
|
953: |
|
954: | if (!empty($order_info)) {
|
955: | $data['payment_lastname'] = $order_info['payment_lastname'];
|
956: | } else {
|
957: | $data['payment_lastname'] = '';
|
958: | }
|
959: |
|
960: | if (!empty($order_info)) {
|
961: | $data['payment_company'] = $order_info['payment_company'];
|
962: | } else {
|
963: | $data['payment_company'] = '';
|
964: | }
|
965: |
|
966: | if (!empty($order_info)) {
|
967: | $data['payment_address_1'] = $order_info['payment_address_1'];
|
968: | } else {
|
969: | $data['payment_address_1'] = '';
|
970: | }
|
971: |
|
972: | if (!empty($order_info)) {
|
973: | $data['payment_address_2'] = $order_info['payment_address_2'];
|
974: | } else {
|
975: | $data['payment_address_2'] = '';
|
976: | }
|
977: |
|
978: | if (!empty($order_info)) {
|
979: | $data['payment_city'] = $order_info['payment_city'];
|
980: | } else {
|
981: | $data['payment_city'] = '';
|
982: | }
|
983: |
|
984: | if (!empty($order_info)) {
|
985: | $data['payment_postcode'] = $order_info['payment_postcode'];
|
986: | } else {
|
987: | $data['payment_postcode'] = '';
|
988: | }
|
989: |
|
990: |
|
991: | $this->load->model('localisation/country');
|
992: |
|
993: | $data['countries'] = $this->model_localisation_country->getCountries();
|
994: |
|
995: | if (!empty($order_info)) {
|
996: | $data['payment_country_id'] = $order_info['payment_country_id'];
|
997: | } else {
|
998: | $data['payment_country_id'] = 0;
|
999: | }
|
1000: |
|
1001: | if (!empty($order_info)) {
|
1002: | $data['payment_country'] = $order_info['payment_country'];
|
1003: | } else {
|
1004: | $data['payment_country'] = '';
|
1005: | }
|
1006: |
|
1007: | if (!empty($order_info)) {
|
1008: | $data['payment_zone_id'] = $order_info['payment_zone_id'];
|
1009: | } else {
|
1010: | $data['payment_zone_id'] = 0;
|
1011: | }
|
1012: |
|
1013: | if (!empty($order_info)) {
|
1014: | $data['payment_zone'] = $order_info['payment_zone'];
|
1015: | } else {
|
1016: | $data['payment_zone'] = '';
|
1017: | }
|
1018: |
|
1019: | if (!empty($order_info)) {
|
1020: | $data['payment_custom_field'] = $order_info['payment_custom_field'];
|
1021: | } else {
|
1022: | $data['payment_custom_field'] = [];
|
1023: | }
|
1024: |
|
1025: |
|
1026: | if (isset($order_info['payment_method']['name'])) {
|
1027: | $data['payment_method'] = $order_info['payment_method']['name'];
|
1028: | } else {
|
1029: | $data['payment_method'] = '';
|
1030: | }
|
1031: |
|
1032: | if (isset($order_info['payment_method']['code'])) {
|
1033: | $data['payment_code'] = $order_info['payment_method']['code'];
|
1034: | } else {
|
1035: | $data['payment_code'] = '';
|
1036: | }
|
1037: |
|
1038: |
|
1039: | if (!empty($order_info)) {
|
1040: | $data['shipping_address_id'] = $order_info['shipping_address_id'];
|
1041: | } else {
|
1042: | $data['shipping_address_id'] = 0;
|
1043: | }
|
1044: |
|
1045: | if (!empty($order_info)) {
|
1046: | $data['shipping_firstname'] = $order_info['shipping_firstname'];
|
1047: | } else {
|
1048: | $data['shipping_firstname'] = '';
|
1049: | }
|
1050: |
|
1051: | if (!empty($order_info)) {
|
1052: | $data['shipping_lastname'] = $order_info['shipping_lastname'];
|
1053: | } else {
|
1054: | $data['shipping_lastname'] = '';
|
1055: | }
|
1056: |
|
1057: | if (!empty($order_info)) {
|
1058: | $data['shipping_company'] = $order_info['shipping_company'];
|
1059: | } else {
|
1060: | $data['shipping_company'] = '';
|
1061: | }
|
1062: |
|
1063: | if (!empty($order_info)) {
|
1064: | $data['shipping_address_1'] = $order_info['shipping_address_1'];
|
1065: | } else {
|
1066: | $data['shipping_address_1'] = '';
|
1067: | }
|
1068: |
|
1069: | if (!empty($order_info)) {
|
1070: | $data['shipping_address_2'] = $order_info['shipping_address_2'];
|
1071: | } else {
|
1072: | $data['shipping_address_2'] = '';
|
1073: | }
|
1074: |
|
1075: | if (!empty($order_info)) {
|
1076: | $data['shipping_city'] = $order_info['shipping_city'];
|
1077: | } else {
|
1078: | $data['shipping_city'] = '';
|
1079: | }
|
1080: |
|
1081: | if (!empty($order_info)) {
|
1082: | $data['shipping_postcode'] = $order_info['shipping_postcode'];
|
1083: | } else {
|
1084: | $data['shipping_postcode'] = '';
|
1085: | }
|
1086: |
|
1087: | if (!empty($order_info)) {
|
1088: | $data['shipping_country_id'] = $order_info['shipping_country_id'];
|
1089: | } else {
|
1090: | $data['shipping_country_id'] = 0;
|
1091: | }
|
1092: |
|
1093: | if (!empty($order_info)) {
|
1094: | $data['shipping_country'] = $order_info['shipping_country'];
|
1095: | } else {
|
1096: | $data['shipping_country'] = '';
|
1097: | }
|
1098: |
|
1099: | if (!empty($order_info)) {
|
1100: | $data['shipping_zone_id'] = $order_info['shipping_zone_id'];
|
1101: | } else {
|
1102: | $data['shipping_zone_id'] = 0;
|
1103: | }
|
1104: |
|
1105: | if (!empty($order_info)) {
|
1106: | $data['shipping_zone'] = $order_info['shipping_zone'];
|
1107: | } else {
|
1108: | $data['shipping_zone'] = '';
|
1109: | }
|
1110: |
|
1111: | if (!empty($order_info)) {
|
1112: | $data['shipping_custom_field'] = $order_info['shipping_custom_field'];
|
1113: | } else {
|
1114: | $data['shipping_custom_field'] = [];
|
1115: | }
|
1116: |
|
1117: |
|
1118: | if (isset($order_info['shipping_method']['name'])) {
|
1119: | $data['shipping_method'] = $order_info['shipping_method']['name'];
|
1120: | } else {
|
1121: | $data['shipping_method'] = '';
|
1122: | }
|
1123: |
|
1124: | if (isset($order_info['shipping_method']['code'])) {
|
1125: | $data['shipping_code'] = $order_info['shipping_method']['code'];
|
1126: | } else {
|
1127: | $data['shipping_code'] = '';
|
1128: | }
|
1129: |
|
1130: |
|
1131: | if (!empty($order_info)) {
|
1132: | $data['comment'] = nl2br($order_info['comment']);
|
1133: | } else {
|
1134: | $data['comment'] = '';
|
1135: | }
|
1136: |
|
1137: |
|
1138: | $data['order_totals'] = [];
|
1139: |
|
1140: | if (!empty($order_info)) {
|
1141: | $totals = $this->model_sale_order->getTotals($order_id);
|
1142: |
|
1143: | foreach ($totals as $total) {
|
1144: | $data['order_totals'][] = [
|
1145: | 'title' => $total['title'],
|
1146: | 'text' => $this->currency->format($total['value'], $order_info['currency_code'], $order_info['currency_value'])
|
1147: | ];
|
1148: | }
|
1149: | }
|
1150: |
|
1151: |
|
1152: | $this->load->model('localisation/order_status');
|
1153: |
|
1154: | $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
|
1155: |
|
1156: | if (!empty($order_info)) {
|
1157: | $data['order_status_id'] = $order_info['order_status_id'];
|
1158: | } else {
|
1159: | $data['order_status_id'] = $this->config->get('config_order_status_id');
|
1160: | }
|
1161: |
|
1162: |
|
1163: | $data['tabs'] = [];
|
1164: |
|
1165: |
|
1166: | $this->load->model('setting/extension');
|
1167: |
|
1168: | if (!empty($order_info['payment_method']['code'])) {
|
1169: | if (isset($order_info['payment_method']['code'])) {
|
1170: | $code = oc_substr($order_info['payment_method']['code'], 0, strpos($order_info['payment_method']['code'], '.'));
|
1171: | } else {
|
1172: | $code = '';
|
1173: | }
|
1174: |
|
1175: | $extension_info = $this->model_setting_extension->getExtensionByCode('payment', $code);
|
1176: |
|
1177: | if ($extension_info && $this->user->hasPermission('access', 'extension/' . $extension_info['extension'] . '/payment/' . $extension_info['code'])) {
|
1178: | $output = $this->load->controller('extension/' . $extension_info['extension'] . '/payment/' . $extension_info['code'] . '.order');
|
1179: |
|
1180: | if (!$output instanceof \Exception) {
|
1181: | $this->load->language('extension/' . $extension_info['extension'] . '/payment/' . $extension_info['code'], 'extension');
|
1182: |
|
1183: | $data['tabs'][] = [
|
1184: | 'code' => $extension_info['code'],
|
1185: | 'title' => $this->language->get('extension_heading_title'),
|
1186: | 'content' => $output
|
1187: | ];
|
1188: | }
|
1189: | }
|
1190: | }
|
1191: |
|
1192: |
|
1193: | $this->load->model('setting/extension');
|
1194: |
|
1195: | $extensions = $this->model_setting_extension->getExtensionsByType('fraud');
|
1196: |
|
1197: | foreach ($extensions as $extension) {
|
1198: | if ($this->config->get('fraud_' . $extension['code'] . '_status')) {
|
1199: | $this->load->language('extension/' . $extension['extension'] . '/fraud/' . $extension['code'], 'extension');
|
1200: |
|
1201: | $output = $this->load->controller('extension/' . $extension['extension'] . '/fraud/' . $extension['code'] . '.order');
|
1202: |
|
1203: | if (!$output instanceof \Exception) {
|
1204: | $data['tabs'][] = [
|
1205: | 'code' => $extension['extension'],
|
1206: | 'title' => $this->language->get('extension_heading_title'),
|
1207: | 'content' => $output
|
1208: | ];
|
1209: | }
|
1210: | }
|
1211: | }
|
1212: |
|
1213: |
|
1214: | if (!empty($order_info)) {
|
1215: | $data['ip'] = $order_info['ip'];
|
1216: | $data['forwarded_ip'] = $order_info['forwarded_ip'];
|
1217: | $data['user_agent'] = $order_info['user_agent'];
|
1218: | $data['accept_language'] = $order_info['accept_language'];
|
1219: | $data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added']));
|
1220: | $data['date_modified'] = date($this->language->get('date_format_short'), strtotime($order_info['date_modified']));
|
1221: | } else {
|
1222: | $data['ip'] = '';
|
1223: | $data['forwarded_ip'] = '';
|
1224: | $data['user_agent'] = '';
|
1225: | $data['accept_language'] = '';
|
1226: | $data['date_added'] = date($this->language->get('date_format_short'), time());
|
1227: | $data['date_modified'] = date($this->language->get('date_format_short'), time());
|
1228: | }
|
1229: |
|
1230: |
|
1231: | $data['history'] = $this->getHistory();
|
1232: |
|
1233: | $data['user_token'] = $this->session->data['user_token'];
|
1234: |
|
1235: | $data['header'] = $this->load->controller('common/header');
|
1236: | $data['column_left'] = $this->load->controller('common/column_left');
|
1237: | $data['footer'] = $this->load->controller('common/footer');
|
1238: |
|
1239: | $this->response->setOutput($this->load->view('sale/order_info', $data));
|
1240: | }
|
1241: |
|
1242: |
|
1243: |
|
1244: | |
1245: | |
1246: | |
1247: | |
1248: |
|
1249: | public function call(): void {
|
1250: | $this->load->language('sale/order');
|
1251: |
|
1252: | $json = [];
|
1253: |
|
1254: | if (isset($this->request->get['store_id'])) {
|
1255: | $store_id = (int)$this->request->get['store_id'];
|
1256: | } else {
|
1257: | $store_id = 0;
|
1258: | }
|
1259: |
|
1260: | if (isset($this->request->get['language'])) {
|
1261: | $language = $this->request->get['language'];
|
1262: | } else {
|
1263: | $language = $this->config->get('config_language');
|
1264: | }
|
1265: |
|
1266: | if (isset($this->request->get['action'])) {
|
1267: | $action = $this->request->get['action'];
|
1268: | } else {
|
1269: | $action = '';
|
1270: | }
|
1271: |
|
1272: | if (isset($this->session->data['api_session'])) {
|
1273: | $session_id = $this->session->data['api_session'];
|
1274: | } else {
|
1275: | $session_id = '';
|
1276: | }
|
1277: |
|
1278: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
1279: | $json['error']['warning'] = $this->language->get('error_permission');
|
1280: | }
|
1281: |
|
1282: | if (!$json) {
|
1283: |
|
1284: | $this->load->model('setting/store');
|
1285: |
|
1286: | $store = $this->model_setting_store->createStoreInstance($store_id, $language, $session_id);
|
1287: |
|
1288: |
|
1289: | $store->request->get = $this->request->get;
|
1290: | $store->request->post = $this->request->post;
|
1291: |
|
1292: | $store->request->get['route'] = 'api/' . $action;
|
1293: |
|
1294: |
|
1295: | unset($store->request->get['action']);
|
1296: | unset($store->request->get['user_token']);
|
1297: |
|
1298: |
|
1299: | $store->load->controller($store->request->get['route']);
|
1300: |
|
1301: | $output = $store->response->getOutput();
|
1302: | } else {
|
1303: | $output = json_encode($json);
|
1304: | }
|
1305: |
|
1306: | $this->response->addHeader('Content-Type: application/json');
|
1307: | $this->response->setOutput($output);
|
1308: | }
|
1309: |
|
1310: | |
1311: | |
1312: | |
1313: | |
1314: |
|
1315: | public function invoice(): void {
|
1316: | $this->load->language('sale/order');
|
1317: |
|
1318: | $data['title'] = $this->language->get('text_invoice');
|
1319: |
|
1320: | $data['base'] = HTTP_SERVER;
|
1321: | $data['direction'] = $this->language->get('direction');
|
1322: | $data['lang'] = $this->language->get('code');
|
1323: |
|
1324: |
|
1325: | $data['bootstrap_css'] = 'view/stylesheet/bootstrap.css';
|
1326: | $data['icons'] = 'view/stylesheet/fonts/fontawesome/css/all.min.css';
|
1327: | $data['stylesheet'] = 'view/stylesheet/stylesheet.css';
|
1328: |
|
1329: |
|
1330: | $data['jquery'] = 'view/javascript/jquery/jquery-3.7.1.min.js';
|
1331: | $data['bootstrap_js'] = 'view/javascript/bootstrap/js/bootstrap.bundle.min.js';
|
1332: |
|
1333: | $this->load->model('sale/order');
|
1334: | $this->load->model('sale/subscription');
|
1335: | $this->load->model('setting/setting');
|
1336: | $this->load->model('tool/upload');
|
1337: |
|
1338: | $data['orders'] = [];
|
1339: |
|
1340: | $orders = [];
|
1341: |
|
1342: | if (isset($this->request->post['selected'])) {
|
1343: | $orders = $this->request->post['selected'];
|
1344: | }
|
1345: |
|
1346: | if (isset($this->request->get['order_id'])) {
|
1347: | $orders[] = (int)$this->request->get['order_id'];
|
1348: | }
|
1349: |
|
1350: | foreach ($orders as $order_id) {
|
1351: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1352: |
|
1353: | if ($order_info) {
|
1354: | $store_info = $this->model_setting_setting->getSetting('config', $order_info['store_id']);
|
1355: |
|
1356: | if ($store_info) {
|
1357: | $store_address = $store_info['config_address'];
|
1358: | $store_email = $store_info['config_email'];
|
1359: | $store_telephone = $store_info['config_telephone'];
|
1360: | } else {
|
1361: | $store_address = $this->config->get('config_address');
|
1362: | $store_email = $this->config->get('config_email');
|
1363: | $store_telephone = $this->config->get('config_telephone');
|
1364: | }
|
1365: |
|
1366: | if ($order_info['invoice_no']) {
|
1367: | $invoice_no = $order_info['invoice_prefix'] . $order_info['invoice_no'];
|
1368: | } else {
|
1369: | $invoice_no = '';
|
1370: | }
|
1371: |
|
1372: |
|
1373: | if ($order_info['payment_address_format']) {
|
1374: | $format = $order_info['payment_address_format'];
|
1375: | } else {
|
1376: | $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
|
1377: | }
|
1378: |
|
1379: | $find = [
|
1380: | '{firstname}',
|
1381: | '{lastname}',
|
1382: | '{company}',
|
1383: | '{address_1}',
|
1384: | '{address_2}',
|
1385: | '{city}',
|
1386: | '{postcode}',
|
1387: | '{zone}',
|
1388: | '{zone_code}',
|
1389: | '{country}'
|
1390: | ];
|
1391: |
|
1392: | $replace = [
|
1393: | 'firstname' => $order_info['payment_firstname'],
|
1394: | 'lastname' => $order_info['payment_lastname'],
|
1395: | 'company' => $order_info['payment_company'],
|
1396: | 'address_1' => $order_info['payment_address_1'],
|
1397: | 'address_2' => $order_info['payment_address_2'],
|
1398: | 'city' => $order_info['payment_city'],
|
1399: | 'postcode' => $order_info['payment_postcode'],
|
1400: | 'zone' => $order_info['payment_zone'],
|
1401: | 'zone_code' => $order_info['payment_zone_code'],
|
1402: | 'country' => $order_info['payment_country']
|
1403: | ];
|
1404: |
|
1405: | $pattern_1 = [
|
1406: | "\r\n",
|
1407: | "\r",
|
1408: | "\n"
|
1409: | ];
|
1410: |
|
1411: | $pattern_2 = [
|
1412: | "/\\s\\s+/",
|
1413: | "/\r\r+/",
|
1414: | "/\n\n+/"
|
1415: | ];
|
1416: |
|
1417: | $payment_address = str_replace($pattern_1, '<br/>', preg_replace($pattern_2, '<br/>', trim(str_replace($find, $replace, $format))));
|
1418: |
|
1419: |
|
1420: | if ($order_info['shipping_address_format']) {
|
1421: | $format = $order_info['shipping_address_format'];
|
1422: | } else {
|
1423: | $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
|
1424: | }
|
1425: |
|
1426: | $find = [
|
1427: | '{firstname}',
|
1428: | '{lastname}',
|
1429: | '{company}',
|
1430: | '{address_1}',
|
1431: | '{address_2}',
|
1432: | '{city}',
|
1433: | '{postcode}',
|
1434: | '{zone}',
|
1435: | '{zone_code}',
|
1436: | '{country}'
|
1437: | ];
|
1438: |
|
1439: | $replace = [
|
1440: | 'firstname' => $order_info['shipping_firstname'],
|
1441: | 'lastname' => $order_info['shipping_lastname'],
|
1442: | 'company' => $order_info['shipping_company'],
|
1443: | 'address_1' => $order_info['shipping_address_1'],
|
1444: | 'address_2' => $order_info['shipping_address_2'],
|
1445: | 'city' => $order_info['shipping_city'],
|
1446: | 'postcode' => $order_info['shipping_postcode'],
|
1447: | 'zone' => $order_info['shipping_zone'],
|
1448: | 'zone_code' => $order_info['shipping_zone_code'],
|
1449: | 'country' => $order_info['shipping_country']
|
1450: | ];
|
1451: |
|
1452: | $shipping_address = str_replace($pattern_1, '<br/>', preg_replace($pattern_2, '<br/>', trim(str_replace($find, $replace, $format))));
|
1453: |
|
1454: | $product_data = [];
|
1455: |
|
1456: | $products = $this->model_sale_order->getProducts($order_id);
|
1457: |
|
1458: | foreach ($products as $product) {
|
1459: | $option_data = [];
|
1460: |
|
1461: | $options = $this->model_sale_order->getOptions($order_id, $product['order_product_id']);
|
1462: |
|
1463: | foreach ($options as $option) {
|
1464: | if ($option['type'] != 'file') {
|
1465: | $value = $option['value'];
|
1466: | } else {
|
1467: | $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
|
1468: |
|
1469: | if ($upload_info) {
|
1470: | $value = $upload_info['name'];
|
1471: | } else {
|
1472: | $value = '';
|
1473: | }
|
1474: | }
|
1475: |
|
1476: | $option_data[] = [
|
1477: | 'name' => $option['name'],
|
1478: | 'value' => $value
|
1479: | ];
|
1480: | }
|
1481: |
|
1482: |
|
1483: | $description = '';
|
1484: |
|
1485: | $subscription_info = $this->model_sale_order->getSubscription($order_id, $product['order_product_id']);
|
1486: |
|
1487: | if ($subscription_info) {
|
1488: | if ($subscription_info['trial_status']) {
|
1489: | $trial_price = $this->currency->format($subscription_info['trial_price'], $this->config->get('config_currency'));
|
1490: | $trial_cycle = $subscription_info['trial_cycle'];
|
1491: | $trial_frequency = $this->language->get('text_' . $subscription_info['trial_frequency']);
|
1492: | $trial_duration = $subscription_info['trial_duration'];
|
1493: |
|
1494: | $description .= sprintf($this->language->get('text_subscription_trial'), $trial_price, $trial_cycle, $trial_frequency, $trial_duration);
|
1495: | }
|
1496: |
|
1497: | $price = $this->currency->format($subscription_info['price'], $this->config->get('config_currency'));
|
1498: | $cycle = $subscription_info['cycle'];
|
1499: | $frequency = $this->language->get('text_' . $subscription_info['frequency']);
|
1500: | $duration = $subscription_info['duration'];
|
1501: |
|
1502: | if ($subscription_info['duration']) {
|
1503: | $description .= sprintf($this->language->get('text_subscription_duration'), $price, $cycle, $frequency, $duration);
|
1504: | } else {
|
1505: | $description .= sprintf($this->language->get('text_subscription_cancel'), $price, $cycle, $frequency);
|
1506: | }
|
1507: | }
|
1508: |
|
1509: | $product_data[] = [
|
1510: | 'name' => $product['name'],
|
1511: | 'model' => $product['model'],
|
1512: | 'option' => $option_data,
|
1513: | 'subscription' => $description,
|
1514: | 'quantity' => $product['quantity'],
|
1515: | 'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),
|
1516: | 'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value'])
|
1517: | ];
|
1518: | }
|
1519: |
|
1520: | $voucher_data = [];
|
1521: |
|
1522: | $vouchers = $this->model_sale_order->getVouchers($order_id);
|
1523: |
|
1524: | foreach ($vouchers as $voucher) {
|
1525: | $voucher_data[] = [
|
1526: | 'description' => $voucher['description'],
|
1527: | 'amount' => $this->currency->format($voucher['amount'], $order_info['currency_code'], $order_info['currency_value'])
|
1528: | ];
|
1529: | }
|
1530: |
|
1531: | $total_data = [];
|
1532: |
|
1533: | $totals = $this->model_sale_order->getTotals($order_id);
|
1534: |
|
1535: | foreach ($totals as $total) {
|
1536: | $total_data[] = [
|
1537: | 'title' => $total['title'],
|
1538: | 'text' => $this->currency->format($total['value'], $order_info['currency_code'], $order_info['currency_value'])
|
1539: | ];
|
1540: | }
|
1541: |
|
1542: | $data['orders'][] = [
|
1543: | 'order_id' => $order_id,
|
1544: | 'invoice_no' => $invoice_no,
|
1545: | 'date_added' => date($this->language->get('date_format_short'), strtotime($order_info['date_added'])),
|
1546: | 'store_name' => $order_info['store_name'],
|
1547: | 'store_url' => rtrim($order_info['store_url'], '/'),
|
1548: | 'store_address' => nl2br($store_address),
|
1549: | 'store_email' => $store_email,
|
1550: | 'store_telephone' => $store_telephone,
|
1551: | 'email' => $order_info['email'],
|
1552: | 'telephone' => $order_info['telephone'],
|
1553: | 'shipping_address' => $shipping_address,
|
1554: | 'shipping_method' => ($order_info['shipping_method'] ? $order_info['shipping_method']['name'] : ''),
|
1555: | 'payment_address' => $payment_address,
|
1556: | 'payment_method' => $order_info['payment_method']['name'],
|
1557: | 'product' => $product_data,
|
1558: | 'voucher' => $voucher_data,
|
1559: | 'total' => $total_data,
|
1560: | 'comment' => nl2br($order_info['comment'])
|
1561: | ];
|
1562: | }
|
1563: | }
|
1564: |
|
1565: | $this->response->setOutput($this->load->view('sale/order_invoice', $data));
|
1566: | }
|
1567: |
|
1568: | |
1569: | |
1570: | |
1571: | |
1572: |
|
1573: | public function shipping(): void {
|
1574: | $this->load->language('sale/order');
|
1575: |
|
1576: | $data['title'] = $this->language->get('text_shipping');
|
1577: |
|
1578: | $data['base'] = HTTP_SERVER;
|
1579: | $data['direction'] = $this->language->get('direction');
|
1580: | $data['lang'] = $this->language->get('code');
|
1581: |
|
1582: |
|
1583: | $data['bootstrap_css'] = 'view/stylesheet/bootstrap.css';
|
1584: | $data['icons'] = 'view/stylesheet/fonts/fontawesome/css/all.min.css';
|
1585: | $data['stylesheet'] = 'view/stylesheet/stylesheet.css';
|
1586: |
|
1587: |
|
1588: | $data['jquery'] = 'view/javascript/jquery/jquery-3.7.1.min.js';
|
1589: | $data['bootstrap_js'] = 'view/javascript/bootstrap/js/bootstrap.bundle.min.js';
|
1590: |
|
1591: | $this->load->model('sale/order');
|
1592: | $this->load->model('catalog/product');
|
1593: | $this->load->model('setting/setting');
|
1594: | $this->load->model('tool/upload');
|
1595: | $this->load->model('sale/subscription');
|
1596: |
|
1597: | $data['orders'] = [];
|
1598: |
|
1599: | $orders = [];
|
1600: |
|
1601: | if (isset($this->request->post['selected'])) {
|
1602: | $orders = $this->request->post['selected'];
|
1603: | }
|
1604: |
|
1605: | if (isset($this->request->get['order_id'])) {
|
1606: | $orders[] = (int)$this->request->get['order_id'];
|
1607: | }
|
1608: |
|
1609: | foreach ($orders as $order_id) {
|
1610: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1611: |
|
1612: |
|
1613: | if ($order_info && $order_info['shipping_method']) {
|
1614: | $store_info = $this->model_setting_setting->getSetting('config', $order_info['store_id']);
|
1615: |
|
1616: | if ($store_info) {
|
1617: | $store_address = $store_info['config_address'];
|
1618: | $store_email = $store_info['config_email'];
|
1619: | $store_telephone = $store_info['config_telephone'];
|
1620: | } else {
|
1621: | $store_address = $this->config->get('config_address');
|
1622: | $store_email = $this->config->get('config_email');
|
1623: | $store_telephone = $this->config->get('config_telephone');
|
1624: | }
|
1625: |
|
1626: | if ($order_info['invoice_no']) {
|
1627: | $invoice_no = $order_info['invoice_prefix'] . $order_info['invoice_no'];
|
1628: | } else {
|
1629: | $invoice_no = '';
|
1630: | }
|
1631: |
|
1632: |
|
1633: | if ($order_info['shipping_address_format']) {
|
1634: | $format = $order_info['shipping_address_format'];
|
1635: | } else {
|
1636: | $format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
|
1637: | }
|
1638: |
|
1639: | $find = [
|
1640: | '{firstname}',
|
1641: | '{lastname}',
|
1642: | '{company}',
|
1643: | '{address_1}',
|
1644: | '{address_2}',
|
1645: | '{city}',
|
1646: | '{postcode}',
|
1647: | '{zone}',
|
1648: | '{zone_code}',
|
1649: | '{country}'
|
1650: | ];
|
1651: |
|
1652: | $replace = [
|
1653: | 'firstname' => $order_info['shipping_firstname'],
|
1654: | 'lastname' => $order_info['shipping_lastname'],
|
1655: | 'company' => $order_info['shipping_company'],
|
1656: | 'address_1' => $order_info['shipping_address_1'],
|
1657: | 'address_2' => $order_info['shipping_address_2'],
|
1658: | 'city' => $order_info['shipping_city'],
|
1659: | 'postcode' => $order_info['shipping_postcode'],
|
1660: | 'zone' => $order_info['shipping_zone'],
|
1661: | 'zone_code' => $order_info['shipping_zone_code'],
|
1662: | 'country' => $order_info['shipping_country']
|
1663: | ];
|
1664: |
|
1665: | $pattern_1 = [
|
1666: | "\r\n",
|
1667: | "\r",
|
1668: | "\n"
|
1669: | ];
|
1670: |
|
1671: | $pattern_2 = [
|
1672: | "/\\s\\s+/",
|
1673: | "/\r\r+/",
|
1674: | "/\n\n+/"
|
1675: | ];
|
1676: |
|
1677: | $shipping_address = str_replace($pattern_1, '<br/>', preg_replace($pattern_2, '<br/>', trim(str_replace($find, $replace, $format))));
|
1678: |
|
1679: | $product_data = [];
|
1680: |
|
1681: | $products = $this->model_sale_order->getProducts($order_id);
|
1682: |
|
1683: | foreach ($products as $product) {
|
1684: | $option_weight = 0;
|
1685: |
|
1686: | $product_info = $this->model_catalog_product->getProduct($product['product_id']);
|
1687: |
|
1688: | if ($product_info) {
|
1689: | $option_data = [];
|
1690: |
|
1691: | $options = $this->model_sale_order->getOptions($order_id, $product['order_product_id']);
|
1692: |
|
1693: | foreach ($options as $option) {
|
1694: | if ($option['type'] != 'file') {
|
1695: | $value = $option['value'];
|
1696: | } else {
|
1697: | $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
|
1698: |
|
1699: | if ($upload_info) {
|
1700: | $value = $upload_info['name'];
|
1701: | } else {
|
1702: | $value = '';
|
1703: | }
|
1704: | }
|
1705: |
|
1706: | $option_data[] = [
|
1707: | 'name' => $option['name'],
|
1708: | 'value' => $value
|
1709: | ];
|
1710: |
|
1711: | $product_option_value_info = $this->model_catalog_product->getOptionValue($product['product_id'], $option['product_option_value_id']);
|
1712: |
|
1713: | if (!empty($product_option_value_info['weight'])) {
|
1714: | if ($product_option_value_info['weight_prefix'] == '+') {
|
1715: | $option_weight += $product_option_value_info['weight'];
|
1716: | } elseif ($product_option_value_info['weight_prefix'] == '-') {
|
1717: | $option_weight -= $product_option_value_info['weight'];
|
1718: | }
|
1719: | }
|
1720: | }
|
1721: |
|
1722: | $product_data[] = [
|
1723: | 'name' => $product_info['name'],
|
1724: | 'model' => $product_info['model'],
|
1725: | 'option' => $option_data,
|
1726: | 'quantity' => $product['quantity'],
|
1727: | 'location' => $product_info['location'],
|
1728: | 'sku' => $product_info['sku'],
|
1729: | 'upc' => $product_info['upc'],
|
1730: | 'ean' => $product_info['ean'],
|
1731: | 'jan' => $product_info['jan'],
|
1732: | 'isbn' => $product_info['isbn'],
|
1733: | 'mpn' => $product_info['mpn'],
|
1734: | 'weight' => $this->weight->format(($product_info['weight'] + (float)$option_weight) * $product['quantity'], $product_info['weight_class_id'], $this->language->get('decimal_point'), $this->language->get('thousand_point'))
|
1735: | ];
|
1736: | }
|
1737: | }
|
1738: |
|
1739: | $data['orders'][] = [
|
1740: | 'order_id' => $order_id,
|
1741: | 'invoice_no' => $invoice_no,
|
1742: | 'date_added' => date($this->language->get('date_format_short'), strtotime($order_info['date_added'])),
|
1743: | 'store_name' => $order_info['store_name'],
|
1744: | 'store_url' => rtrim($order_info['store_url'], '/'),
|
1745: | 'store_address' => nl2br($store_address),
|
1746: | 'store_email' => $store_email,
|
1747: | 'store_telephone' => $store_telephone,
|
1748: | 'email' => $order_info['email'],
|
1749: | 'telephone' => $order_info['telephone'],
|
1750: | 'shipping_address' => $shipping_address,
|
1751: | 'shipping_method' => $order_info['shipping_method']['name'],
|
1752: | 'product' => $product_data,
|
1753: | 'comment' => nl2br($order_info['comment'])
|
1754: | ];
|
1755: | }
|
1756: | }
|
1757: |
|
1758: | $this->response->setOutput($this->load->view('sale/order_shipping', $data));
|
1759: | }
|
1760: |
|
1761: | |
1762: | |
1763: | |
1764: | |
1765: |
|
1766: | public function history(): void {
|
1767: | $this->load->language('sale/order');
|
1768: |
|
1769: | $this->response->setOutput($this->getHistory());
|
1770: | }
|
1771: |
|
1772: | |
1773: | |
1774: | |
1775: | |
1776: |
|
1777: | public function getHistory(): string {
|
1778: | if (isset($this->request->get['order_id'])) {
|
1779: | $order_id = (int)$this->request->get['order_id'];
|
1780: | } else {
|
1781: | $order_id = 0;
|
1782: | }
|
1783: |
|
1784: | if (isset($this->request->get['page']) && $this->request->get['route'] == 'sale/order.history') {
|
1785: | $page = (int)$this->request->get['page'];
|
1786: | } else {
|
1787: | $page = 1;
|
1788: | }
|
1789: |
|
1790: | $limit = 10;
|
1791: |
|
1792: | $data['histories'] = [];
|
1793: |
|
1794: | $this->load->model('sale/order');
|
1795: |
|
1796: | $results = $this->model_sale_order->getHistories($order_id, ($page - 1) * $limit, $limit);
|
1797: |
|
1798: | foreach ($results as $result) {
|
1799: | $data['histories'][] = [
|
1800: | 'status' => $result['status'],
|
1801: | 'comment' => nl2br($result['comment']),
|
1802: | 'notify' => $result['notify'] ? $this->language->get('text_yes') : $this->language->get('text_no'),
|
1803: | 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
|
1804: | ];
|
1805: | }
|
1806: |
|
1807: | $history_total = $this->model_sale_order->getTotalHistories($order_id);
|
1808: |
|
1809: | $data['pagination'] = $this->load->controller('common/pagination', [
|
1810: | 'total' => $history_total,
|
1811: | 'page' => $page,
|
1812: | 'limit' => $limit,
|
1813: | 'url' => $this->url->link('sale/order.history', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_id . '&page={page}')
|
1814: | ]);
|
1815: |
|
1816: | $data['results'] = sprintf($this->language->get('text_pagination'), ($history_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($history_total - $limit)) ? $history_total : ((($page - 1) * $limit) + $limit), $history_total, ceil($history_total / $limit));
|
1817: |
|
1818: | return $this->load->view('sale/order_history', $data);
|
1819: | }
|
1820: |
|
1821: | |
1822: | |
1823: | |
1824: | |
1825: |
|
1826: | public function createInvoiceNo(): void {
|
1827: | $this->load->language('sale/order');
|
1828: |
|
1829: | $json = [];
|
1830: |
|
1831: | if (isset($this->request->get['order_id'])) {
|
1832: | $order_id = (int)$this->request->get['order_id'];
|
1833: | } else {
|
1834: | $order_id = 0;
|
1835: | }
|
1836: |
|
1837: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
1838: | $json['error'] = $this->language->get('error_permission');
|
1839: | }
|
1840: |
|
1841: | $this->load->model('sale/order');
|
1842: |
|
1843: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1844: |
|
1845: | if ($order_info) {
|
1846: | if ($order_info['invoice_no']) {
|
1847: | $json['error'] = $this->language->get('error_invoice_no');
|
1848: | }
|
1849: | } else {
|
1850: | $json['error'] = $this->language->get('error_order');
|
1851: | }
|
1852: |
|
1853: | if (!$json) {
|
1854: | $json['success'] = $this->language->get('text_success');
|
1855: |
|
1856: | $this->load->model('sale/order');
|
1857: |
|
1858: | $json['invoice_no'] = $this->model_sale_order->createInvoiceNo($order_id);
|
1859: | }
|
1860: |
|
1861: | $this->response->addHeader('Content-Type: application/json');
|
1862: | $this->response->setOutput(json_encode($json));
|
1863: | }
|
1864: |
|
1865: | |
1866: | |
1867: | |
1868: | |
1869: |
|
1870: | public function addReward(): void {
|
1871: | $this->load->language('sale/order');
|
1872: |
|
1873: | $json = [];
|
1874: |
|
1875: | if (isset($this->request->get['order_id'])) {
|
1876: | $order_id = (int)$this->request->get['order_id'];
|
1877: | } else {
|
1878: | $order_id = 0;
|
1879: | }
|
1880: |
|
1881: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
1882: | $json['error'] = $this->language->get('error_permission');
|
1883: | }
|
1884: |
|
1885: | $this->load->model('sale/order');
|
1886: |
|
1887: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1888: |
|
1889: | if ($order_info) {
|
1890: | if (!$order_info['customer_id']) {
|
1891: | $json['error'] = $this->language->get('error_customer');
|
1892: | }
|
1893: | } else {
|
1894: | $json['error'] = $this->language->get('error_order');
|
1895: | }
|
1896: |
|
1897: | $this->load->model('customer/customer');
|
1898: |
|
1899: | $reward_total = $this->model_customer_customer->getTotalRewardsByOrderId($order_id);
|
1900: |
|
1901: | if ($reward_total) {
|
1902: | $json['error'] = $this->language->get('error_reward_add');
|
1903: | }
|
1904: |
|
1905: | if (!$json) {
|
1906: | $this->model_customer_customer->addReward($order_info['customer_id'], $this->language->get('text_order_id') . ' #' . $order_id, $order_info['reward'], $order_id);
|
1907: |
|
1908: | $json['success'] = $this->language->get('text_reward_add');
|
1909: | }
|
1910: |
|
1911: | $this->response->addHeader('Content-Type: application/json');
|
1912: | $this->response->setOutput(json_encode($json));
|
1913: | }
|
1914: |
|
1915: | |
1916: | |
1917: | |
1918: | |
1919: |
|
1920: | public function removeReward(): void {
|
1921: | $this->load->language('sale/order');
|
1922: |
|
1923: | $json = [];
|
1924: |
|
1925: | if (isset($this->request->get['order_id'])) {
|
1926: | $order_id = (int)$this->request->get['order_id'];
|
1927: | } else {
|
1928: | $order_id = 0;
|
1929: | }
|
1930: |
|
1931: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
1932: | $json['error'] = $this->language->get('error_permission');
|
1933: | }
|
1934: |
|
1935: | $this->load->model('sale/order');
|
1936: |
|
1937: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1938: |
|
1939: | if (!$order_info) {
|
1940: | $json['error'] = $this->language->get('error_order');
|
1941: | }
|
1942: |
|
1943: | if (!$json) {
|
1944: | $this->load->model('customer/customer');
|
1945: |
|
1946: | $this->model_customer_customer->deleteRewardByOrderId($order_id);
|
1947: |
|
1948: | $json['success'] = $this->language->get('text_reward_remove');
|
1949: | }
|
1950: |
|
1951: | $this->response->addHeader('Content-Type: application/json');
|
1952: | $this->response->setOutput(json_encode($json));
|
1953: | }
|
1954: |
|
1955: | |
1956: | |
1957: | |
1958: | |
1959: |
|
1960: | public function addCommission(): void {
|
1961: | $this->load->language('sale/order');
|
1962: |
|
1963: | $json = [];
|
1964: |
|
1965: | if (isset($this->request->get['order_id'])) {
|
1966: | $order_id = (int)$this->request->get['order_id'];
|
1967: | } else {
|
1968: | $order_id = 0;
|
1969: | }
|
1970: |
|
1971: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
1972: | $json['error'] = $this->language->get('error_permission');
|
1973: | }
|
1974: |
|
1975: | $this->load->model('sale/order');
|
1976: |
|
1977: | $order_info = $this->model_sale_order->getOrder($order_id);
|
1978: |
|
1979: | if ($order_info) {
|
1980: | $this->load->model('customer/customer');
|
1981: |
|
1982: | $customer_info = $this->model_customer_customer->getCustomer($order_info['affiliate_id']);
|
1983: |
|
1984: | if (!$customer_info) {
|
1985: | $json['error'] = $this->language->get('error_affiliate');
|
1986: | }
|
1987: |
|
1988: | $affiliate_total = $this->model_customer_customer->getTotalTransactionsByOrderId($order_id);
|
1989: |
|
1990: | if ($affiliate_total) {
|
1991: | $json['error'] = $this->language->get('error_commission_add');
|
1992: | }
|
1993: | } else {
|
1994: | $json['error'] = $this->language->get('error_order');
|
1995: | }
|
1996: |
|
1997: | if (!$json) {
|
1998: | $this->model_customer_customer->addTransaction($order_info['affiliate_id'], $this->language->get('text_order_id') . ' #' . $order_id, $order_info['commission'], $order_id);
|
1999: |
|
2000: | $json['success'] = $this->language->get('text_commission_add');
|
2001: | }
|
2002: |
|
2003: | $this->response->addHeader('Content-Type: application/json');
|
2004: | $this->response->setOutput(json_encode($json));
|
2005: | }
|
2006: |
|
2007: | |
2008: | |
2009: | |
2010: | |
2011: |
|
2012: | public function removeCommission(): void {
|
2013: | $this->load->language('sale/order');
|
2014: |
|
2015: | $json = [];
|
2016: |
|
2017: | if (isset($this->request->get['order_id'])) {
|
2018: | $order_id = (int)$this->request->get['order_id'];
|
2019: | } else {
|
2020: | $order_id = 0;
|
2021: | }
|
2022: |
|
2023: | if (!$this->user->hasPermission('modify', 'sale/order')) {
|
2024: | $json['error'] = $this->language->get('error_permission');
|
2025: | }
|
2026: |
|
2027: | $this->load->model('sale/order');
|
2028: |
|
2029: | $order_info = $this->model_sale_order->getOrder($order_id);
|
2030: |
|
2031: | if (!$order_info) {
|
2032: | $json['error'] = $this->language->get('error_order');
|
2033: | }
|
2034: |
|
2035: | if (!$json) {
|
2036: | $this->load->model('customer/customer');
|
2037: |
|
2038: | $this->model_customer_customer->deleteTransactionByOrderId($order_id);
|
2039: |
|
2040: | $json['success'] = $this->language->get('text_commission_remove');
|
2041: | }
|
2042: |
|
2043: | $this->response->addHeader('Content-Type: application/json');
|
2044: | $this->response->setOutput(json_encode($json));
|
2045: | }
|
2046: | }
|
2047: | |