1: | <?php
2: | namespace Opencart\Catalog\Controller\Api\Sale;
3: | /**
4: | * Class Order
5: | *
6: | * @package Opencart\Catalog\Controller\Api\Sale
7: | */
8: | class Order extends \Opencart\System\Engine\Controller {
9: | // Loads order info
10: | /**
11: | * Load
12: | *
13: | * @return void
14: | */
15: | public function load(): void {
16: | $this->load->language('api/sale/order');
17: |
18: | $json = [];
19: |
20: | if (isset($this->request->get['order_id'])) {
21: | $order_id = (int)$this->request->get['order_id'];
22: | } else {
23: | $order_id = 0;
24: | }
25: |
26: | $this->load->model('checkout/order');
27: |
28: | $order_info = $this->model_checkout_order->getOrder($order_id);
29: |
30: | if (!$order_info) {
31: | $json['error'] = $this->language->get('error_order');
32: | }
33: |
34: | if (!$json) {
35: | $this->session->data['order_id'] = $order_id;
36: |
37: | // Customer Details
38: | $this->session->data['customer'] = [
39: | 'customer_id' => $order_info['customer_id'],
40: | 'customer_group_id' => $order_info['customer_group_id'],
41: | 'firstname' => $order_info['firstname'],
42: | 'lastname' => $order_info['lastname'],
43: | 'email' => $order_info['email'],
44: | 'telephone' => $order_info['telephone'],
45: | 'custom_field' => $order_info['custom_field']
46: | ];
47: |
48: | // Payment Details
49: | if ($this->config->get('config_checkout_payment_address')) {
50: | $this->session->data['payment_address'] = [
51: | 'address_id' => $order_info['payment_address_id'],
52: | 'firstname' => $order_info['payment_firstname'],
53: | 'lastname' => $order_info['payment_lastname'],
54: | 'company' => $order_info['payment_company'],
55: | 'address_1' => $order_info['payment_address_1'],
56: | 'address_2' => $order_info['payment_address_2'],
57: | 'postcode' => $order_info['payment_postcode'],
58: | 'city' => $order_info['payment_city'],
59: | 'zone_id' => $order_info['payment_zone_id'],
60: | 'zone' => $order_info['payment_zone'],
61: | 'zone_code' => $order_info['payment_zone_code'],
62: | 'country_id' => $order_info['payment_country_id'],
63: | 'country' => $order_info['payment_country'],
64: | 'iso_code_2' => $order_info['payment_iso_code_2'],
65: | 'iso_code_3' => $order_info['payment_iso_code_3'],
66: | 'address_format' => $order_info['payment_address_format'],
67: | 'custom_field' => $order_info['payment_custom_field']
68: | ];
69: | } else {
70: | unset($this->session->data['payment_address']);
71: | }
72: |
73: | $this->session->data['payment_method'] = $order_info['payment_method'];
74: |
75: | if ($order_info['shipping_method']) {
76: | $this->session->data['shipping_address'] = [
77: | 'address_id' => $order_info['shipping_address_id'],
78: | 'firstname' => $order_info['shipping_firstname'],
79: | 'lastname' => $order_info['shipping_lastname'],
80: | 'company' => $order_info['shipping_company'],
81: | 'address_1' => $order_info['shipping_address_1'],
82: | 'address_2' => $order_info['shipping_address_2'],
83: | 'postcode' => $order_info['shipping_postcode'],
84: | 'city' => $order_info['shipping_city'],
85: | 'zone_id' => $order_info['shipping_zone_id'],
86: | 'zone' => $order_info['shipping_zone'],
87: | 'zone_code' => $order_info['shipping_zone_code'],
88: | 'country_id' => $order_info['shipping_country_id'],
89: | 'country' => $order_info['shipping_country'],
90: | 'iso_code_2' => $order_info['shipping_iso_code_2'],
91: | 'iso_code_3' => $order_info['shipping_iso_code_3'],
92: | 'address_format' => $order_info['shipping_address_format'],
93: | 'custom_field' => $order_info['shipping_custom_field']
94: | ];
95: |
96: | $this->session->data['shipping_method'] = $order_info['shipping_method'];
97: | }
98: |
99: | if ($order_info['comment']) {
100: | $this->session->data['comment'] = $order_info['comment'];
101: | }
102: |
103: | if ($order_info['currency_code']) {
104: | $this->session->data['currency'] = $order_info['currency_code'];
105: | }
106: |
107: | $products = $this->model_checkout_order->getProducts($order_id);
108: |
109: | foreach ($products as $product) {
110: | $option_data = [];
111: |
112: | $options = $this->model_checkout_order->getOptions($order_id, $product['order_product_id']);
113: |
114: | foreach ($options as $option) {
115: | if ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {
116: | $option_data[$option['product_option_id']] = $option['value'];
117: | } elseif ($option['type'] == 'select' || $option['type'] == 'radio') {
118: | $option_data[$option['product_option_id']] = $option['product_option_value_id'];
119: | } elseif ($option['type'] == 'checkbox') {
120: | $option_data[$option['product_option_id']][] = $option['product_option_value_id'];
121: | }
122: | }
123: |
124: | $subscription_info = $this->model_checkout_order->getSubscription($order_id, $product['order_product_id']);
125: |
126: | if ($subscription_info) {
127: | $subscription_plan_id = $subscription_info['subscription_plan_id'];
128: | } else {
129: | $subscription_plan_id = 0;
130: | }
131: |
132: | $this->cart->add($product['product_id'], $product['quantity'], $option_data, $subscription_plan_id, true, $product['price']);
133: | }
134: |
135: | $this->session->data['vouchers'] = [];
136: |
137: | $this->load->model('checkout/voucher');
138: |
139: | $vouchers = $this->model_checkout_order->getVouchers($order_id);
140: |
141: | foreach ($vouchers as $voucher) {
142: | $this->session->data['vouchers'][] = [
143: | 'code' => $voucher['code'],
144: | 'description' => sprintf($this->language->get('text_for'), $this->currency->format($voucher['amount'], $this->session->data['currency'], 1.0), $voucher['to_name']),
145: | 'to_name' => $voucher['to_name'],
146: | 'to_email' => $voucher['to_email'],
147: | 'from_name' => $voucher['from_name'],
148: | 'from_email' => $voucher['from_email'],
149: | 'voucher_theme_id' => $voucher['voucher_theme_id'],
150: | 'message' => $voucher['message'],
151: | 'amount' => $this->currency->convert($voucher['amount'], $this->session->data['currency'], $this->config->get('config_currency'))
152: | ];
153: | }
154: |
155: | if ($order_info['affiliate_id']) {
156: | $this->session->data['affiliate_id'] = $order_info['affiliate_id'];
157: | }
158: |
159: | // Coupon, Voucher, Reward
160: | $order_totals = $this->model_checkout_order->getTotals($order_id);
161: |
162: | foreach ($order_totals as $order_total) {
163: | // If coupon, voucher or reward points
164: | $start = strpos($order_total['title'], '(');
165: | $end = strrpos($order_total['title'], ')');
166: |
167: | if ($start !== false && $end !== false) {
168: | $this->session->data[$order_total['code']] = substr($order_total['title'], $start + 1, $end - ($start + 1));
169: | }
170: | }
171: |
172: | $json['success'] = $this->language->get('text_success');
173: | }
174: |
175: | $this->response->addHeader('Content-Type: application/json');
176: | $this->response->setOutput(json_encode($json));
177: | }
178: |
179: | /**
180: | * Save
181: | *
182: | * @return void
183: | */
184: | public function save(): void {
185: | $this->load->language('api/sale/order');
186: |
187: | $json = [];
188: |
189: | if (!isset($this->request->post['order_id'])) {
190: | $json['error'] = $this->language->get('error_order');
191: | }
192: |
193: | if (!$json) {
194: | $this->load->model('checkout/order');
195: |
196: | $this->model_checkout_order->editOrder($this->request->post['order_id'], $this->request->post);
197: |
198: | $json['success'] = $this->language->get('text_success');
199: | }
200: |
201: | $this->response->addHeader('Content-Type: application/json');
202: | $this->response->setOutput(json_encode($json));
203: | }
204: |
205: | /**
206: | * Comment
207: | *
208: | * @return void
209: | */
210: | public function comment(): void {
211: | $this->load->language('api/sale/order');
212: |
213: | $json = [];
214: |
215: | if (!isset($this->request->post['comment'])) {
216: | $json['error'] = $this->language->get('error_comment');
217: | }
218: |
219: | if (!$json) {
220: | $this->session->data['comment'] = $this->request->post['comment'];
221: |
222: | $json['success'] = $this->language->get('text_success');
223: | }
224: |
225: | $this->response->addHeader('Content-Type: application/json');
226: | $this->response->setOutput(json_encode($json));
227: | }
228: |
229: | /**
230: | * Confirm
231: | *
232: | * @return void
233: | */
234: | public function confirm(): void {
235: | $this->load->language('api/sale/order');
236: |
237: | $json = [];
238: |
239: | // Validate cart has products and has stock.
240: | if (($this->cart->hasProducts() || !empty($this->session->data['vouchers']))) {
241: | if (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {
242: | $json['error']['stock'] = $this->language->get('error_stock');
243: | }
244: | } else {
245: | $json['error']['product'] = $this->language->get('error_product');
246: | }
247: |
248: | // Validate minimum quantity requirements.
249: | $products = $this->cart->getProducts();
250: |
251: | foreach ($products as $product) {
252: | if (!$product['minimum']) {
253: | $json['error']['minimum'] = sprintf($this->language->get('error_minimum'), $product['name'], $product['minimum']);
254: |
255: | break;
256: | }
257: | }
258: |
259: | // Customer
260: | if (!isset($this->session->data['customer'])) {
261: | $json['error']['customer'] = $this->language->get('error_customer');
262: | }
263: |
264: | // Payment Address
265: | if ($this->config->get('config_checkout_payment_address') && !isset($this->session->data['payment_address'])) {
266: | $json['error']['payment_address'] = $this->language->get('error_payment_address');
267: | }
268: |
269: | // Shipping
270: | if ($this->cart->hasShipping()) {
271: | // Shipping Address
272: | if (!isset($this->session->data['shipping_address'])) {
273: | $json['error']['shipping_address'] = $this->language->get('error_shipping_address');
274: | }
275: |
276: | // Validate shipping method
277: | if (!isset($this->session->data['shipping_method'])) {
278: | $json['error']['shipping_method'] = $this->language->get('error_shipping_method');
279: | }
280: | } else {
281: | unset($this->session->data['shipping_address']);
282: | unset($this->session->data['shipping_method']);
283: | unset($this->session->data['shipping_methods']);
284: | }
285: |
286: | // Payment Method
287: | if (empty($this->session->data['payment_method'])) {
288: | $json['error']['payment_method'] = $this->language->get('error_payment_method');
289: | }
290: |
291: | if (!$json) {
292: | $order_data = [];
293: |
294: | // Store Details
295: | $order_data['invoice_prefix'] = $this->config->get('config_invoice_prefix');
296: |
297: | $order_data['store_id'] = $this->config->get('config_store_id');
298: | $order_data['store_name'] = $this->config->get('config_name');
299: | $order_data['store_url'] = $this->config->get('config_url');
300: |
301: | // Customer Details
302: | $order_data['customer_id'] = $this->session->data['customer']['customer_id'];
303: | $order_data['customer_group_id'] = $this->session->data['customer']['customer_group_id'];
304: | $order_data['firstname'] = $this->session->data['customer']['firstname'];
305: | $order_data['lastname'] = $this->session->data['customer']['lastname'];
306: | $order_data['email'] = $this->session->data['customer']['email'];
307: | $order_data['telephone'] = $this->session->data['customer']['telephone'];
308: | $order_data['custom_field'] = $this->session->data['customer']['custom_field'];
309: |
310: | // Payment Details
311: | if ($this->config->get('config_checkout_payment_address')) {
312: | $order_data['payment_address_id'] = $this->session->data['payment_address']['address_id'];
313: | $order_data['payment_lastname'] = $this->session->data['payment_address']['lastname'];
314: | $order_data['payment_company'] = $this->session->data['payment_address']['company'];
315: | $order_data['payment_address_1'] = $this->session->data['payment_address']['address_1'];
316: | $order_data['payment_address_2'] = $this->session->data['payment_address']['address_2'];
317: | $order_data['payment_city'] = $this->session->data['payment_address']['city'];
318: | $order_data['payment_postcode'] = $this->session->data['payment_address']['postcode'];
319: | $order_data['payment_zone'] = $this->session->data['payment_address']['zone'];
320: | $order_data['payment_zone_id'] = $this->session->data['payment_address']['zone_id'];
321: | $order_data['payment_country'] = $this->session->data['payment_address']['country'];
322: | $order_data['payment_country_id'] = $this->session->data['payment_address']['country_id'];
323: | $order_data['payment_address_format'] = $this->session->data['payment_address']['address_format'];
324: | $order_data['payment_custom_field'] = $this->session->data['payment_address']['custom_field'] ?? [];
325: | } else {
326: | $order_data['payment_address_id'] = 0;
327: | $order_data['payment_firstname'] = '';
328: | $order_data['payment_lastname'] = '';
329: | $order_data['payment_company'] = '';
330: | $order_data['payment_address_1'] = '';
331: | $order_data['payment_address_2'] = '';
332: | $order_data['payment_city'] = '';
333: | $order_data['payment_postcode'] = '';
334: | $order_data['payment_zone'] = '';
335: | $order_data['payment_zone_id'] = 0;
336: | $order_data['payment_country'] = '';
337: | $order_data['payment_country_id'] = 0;
338: | $order_data['payment_address_format'] = '';
339: | $order_data['payment_custom_field'] = [];
340: | }
341: |
342: | $order_data['payment_method'] = $this->session->data['payment_method'];
343: |
344: | // Shipping Details
345: | if ($this->cart->hasShipping()) {
346: | $order_data['shipping_address_id'] = $this->session->data['shipping_address']['address_id'];
347: | $order_data['shipping_firstname'] = $this->session->data['shipping_address']['firstname'];
348: | $order_data['shipping_lastname'] = $this->session->data['shipping_address']['lastname'];
349: | $order_data['shipping_company'] = $this->session->data['shipping_address']['company'];
350: | $order_data['shipping_address_1'] = $this->session->data['shipping_address']['address_1'];
351: | $order_data['shipping_address_2'] = $this->session->data['shipping_address']['address_2'];
352: | $order_data['shipping_city'] = $this->session->data['shipping_address']['city'];
353: | $order_data['shipping_postcode'] = $this->session->data['shipping_address']['postcode'];
354: | $order_data['shipping_zone'] = $this->session->data['shipping_address']['zone'];
355: | $order_data['shipping_zone_id'] = $this->session->data['shipping_address']['zone_id'];
356: | $order_data['shipping_country'] = $this->session->data['shipping_address']['country'];
357: | $order_data['shipping_country_id'] = $this->session->data['shipping_address']['country_id'];
358: | $order_data['shipping_address_format'] = $this->session->data['shipping_address']['address_format'];
359: | $order_data['shipping_custom_field'] = $this->session->data['shipping_address']['custom_field'] ?? [];
360: |
361: | $order_data['shipping_method'] = $this->session->data['shipping_method'];
362: | } else {
363: | $order_data['shipping_address_id'] = 0;
364: | $order_data['shipping_firstname'] = '';
365: | $order_data['shipping_lastname'] = '';
366: | $order_data['shipping_company'] = '';
367: | $order_data['shipping_address_1'] = '';
368: | $order_data['shipping_address_2'] = '';
369: | $order_data['shipping_city'] = '';
370: | $order_data['shipping_postcode'] = '';
371: | $order_data['shipping_zone'] = '';
372: | $order_data['shipping_zone_id'] = 0;
373: | $order_data['shipping_country'] = '';
374: | $order_data['shipping_country_id'] = 0;
375: | $order_data['shipping_address_format'] = '';
376: | $order_data['shipping_custom_field'] = [];
377: |
378: | $order_data['shipping_method'] = [];
379: | }
380: |
381: | $points = 0;
382: |
383: | // Products
384: | $order_data['products'] = [];
385: |
386: | foreach ($this->cart->getProducts() as $product) {
387: | $option_data = [];
388: |
389: | foreach ($product['option'] as $option) {
390: | $option_data[] = [
391: | 'product_option_id' => $option['product_option_id'],
392: | 'product_option_value_id' => $option['product_option_value_id'],
393: | 'option_id' => $option['option_id'],
394: | 'option_value_id' => $option['option_value_id'],
395: | 'name' => $option['name'],
396: | 'value' => $option['value'],
397: | 'type' => $option['type']
398: | ];
399: | }
400: |
401: | $subscription_data = [];
402: |
403: | if ($product['subscription']) {
404: | $subscription_data = [
405: | 'subscription_plan_id' => $product['subscription']['subscription_plan_id'],
406: | 'name' => $product['subscription']['name'],
407: | 'trial_frequency' => $product['subscription']['trial_frequency'],
408: | 'trial_cycle' => $product['subscription']['trial_cycle'],
409: | 'trial_duration' => $product['subscription']['trial_duration'],
410: | 'trial_remaining' => $product['subscription']['trial_remaining'],
411: | 'trial_status' => $product['subscription']['trial_status'],
412: | 'frequency' => $product['subscription']['frequency'],
413: | 'cycle' => $product['subscription']['cycle'],
414: | 'duration' => $product['subscription']['duration']
415: | ];
416: | }
417: |
418: | $order_data['products'][] = [
419: | 'product_id' => $product['product_id'],
420: | 'master_id' => $product['master_id'],
421: | 'name' => $product['name'],
422: | 'model' => $product['model'],
423: | 'option' => $option_data,
424: | 'subscription' => $subscription_data,
425: | 'download' => $product['download'],
426: | 'quantity' => $product['quantity'],
427: | 'subtract' => $product['subtract'],
428: | 'price' => $product['price'],
429: | 'total' => $product['total'],
430: | 'tax' => $this->tax->getTax($product['price'], $product['tax_class_id']),
431: | 'reward' => $product['reward']
432: | ];
433: |
434: | $points += $product['reward'];
435: | }
436: |
437: | // Gift Voucher
438: | $order_data['vouchers'] = [];
439: |
440: | if (!empty($this->session->data['vouchers'])) {
441: | foreach ($this->session->data['vouchers'] as $voucher) {
442: | $order_data['vouchers'][] = [
443: | 'description' => $voucher['description'],
444: | 'code' => oc_token(10),
445: | 'to_name' => $voucher['to_name'],
446: | 'to_email' => $voucher['to_email'],
447: | 'from_name' => $voucher['from_name'],
448: | 'from_email' => $voucher['from_email'],
449: | 'voucher_theme_id' => $voucher['voucher_theme_id'],
450: | 'message' => $voucher['message'],
451: | 'amount' => $voucher['amount']
452: | ];
453: | }
454: | }
455: |
456: | if (isset($this->session->data['comment'])) {
457: | $order_data['comment'] = $this->session->data['comment'];
458: | } else {
459: | $order_data['comment'] = '';
460: | }
461: |
462: | // Order Totals
463: | $totals = [];
464: | $taxes = $this->cart->getTaxes();
465: | $total = 0;
466: |
467: | $this->load->model('checkout/cart');
468: |
469: | ($this->model_checkout_cart->getTotals)($totals, $taxes, $total);
470: |
471: | $total_data = [
472: | 'totals' => $totals,
473: | 'taxes' => $taxes,
474: | 'total' => $total
475: | ];
476: |
477: | $order_data = array_merge($order_data, $total_data);
478: |
479: | $order_data['affiliate_id'] = 0;
480: | $order_data['commission'] = 0;
481: | $order_data['marketing_id'] = 0;
482: | $order_data['tracking'] = '';
483: |
484: | if (isset($this->session->data['affiliate_id'])) {
485: | $subtotal = $this->cart->getSubTotal();
486: |
487: | // Affiliate
488: | $this->load->model('account/affiliate');
489: |
490: | $affiliate_info = $this->model_account_affiliate->getAffiliate($this->session->data['affiliate_id']);
491: |
492: | if ($affiliate_info) {
493: | $order_data['affiliate_id'] = $affiliate_info['customer_id'];
494: | $order_data['commission'] = ($subtotal / 100) * $affiliate_info['commission'];
495: | $order_data['tracking'] = $affiliate_info['tracking'];
496: | }
497: | }
498: |
499: | // We use session to store language code for API access
500: | $order_data['language_id'] = $this->config->get('config_language_id');
501: | $order_data['language_code'] = $this->config->get('config_language');
502: |
503: | $order_data['currency_id'] = $this->currency->getId($this->session->data['currency']);
504: | $order_data['currency_code'] = $this->session->data['currency'];
505: | $order_data['currency_value'] = $this->currency->getValue($this->session->data['currency']);
506: |
507: | $order_data['ip'] = $this->request->server['REMOTE_ADDR'];
508: |
509: | if (!empty($this->request->server['HTTP_X_FORWARDED_FOR'])) {
510: | $order_data['forwarded_ip'] = $this->request->server['HTTP_X_FORWARDED_FOR'];
511: | } elseif (!empty($this->request->server['HTTP_CLIENT_IP'])) {
512: | $order_data['forwarded_ip'] = $this->request->server['HTTP_CLIENT_IP'];
513: | } else {
514: | $order_data['forwarded_ip'] = '';
515: | }
516: |
517: | if (isset($this->request->server['HTTP_USER_AGENT'])) {
518: | $order_data['user_agent'] = $this->request->server['HTTP_USER_AGENT'];
519: | } else {
520: | $order_data['user_agent'] = '';
521: | }
522: |
523: | if (isset($this->request->server['HTTP_ACCEPT_LANGUAGE'])) {
524: | $order_data['accept_language'] = $this->request->server['HTTP_ACCEPT_LANGUAGE'];
525: | } else {
526: | $order_data['accept_language'] = '';
527: | }
528: |
529: | $this->load->model('checkout/order');
530: |
531: | if (!isset($this->session->data['order_id'])) {
532: | $this->session->data['order_id'] = $this->model_checkout_order->addOrder($order_data);
533: | } else {
534: | $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
535: |
536: | if ($order_info) {
537: | $this->model_checkout_order->editOrder($this->session->data['order_id'], $order_data);
538: | }
539: | }
540: |
541: | $json['order_id'] = $this->session->data['order_id'];
542: |
543: | // Set the order history
544: | if (isset($this->request->post['order_status_id'])) {
545: | $order_status_id = (int)$this->request->post['order_status_id'];
546: | } else {
547: | $order_status_id = $this->config->get('config_order_status_id');
548: | }
549: |
550: | $this->model_checkout_order->addHistory($json['order_id'], $order_status_id);
551: |
552: | $json['success'] = $this->language->get('text_success');
553: |
554: | $json['points'] = $points;
555: |
556: | if (isset($order_data['affiliate_id'])) {
557: | $json['commission'] = $this->currency->format($order_data['commission'], $this->config->get('config_currency'));
558: | }
559: | }
560: |
561: | $this->response->addHeader('Content-Type: application/json');
562: | $this->response->setOutput(json_encode($json));
563: | }
564: |
565: | /**
566: | * Delete
567: | *
568: | * @return void
569: | */
570: | public function delete(): void {
571: | $this->load->language('api/sale/order');
572: |
573: | $json = [];
574: |
575: | $selected = [];
576: |
577: | if (isset($this->request->post['selected'])) {
578: | $selected = $this->request->post['selected'];
579: | }
580: |
581: | if (isset($this->request->get['order_id'])) {
582: | $selected[] = (int)$this->request->get['order_id'];
583: | }
584: |
585: | foreach ($selected as $order_id) {
586: | $this->load->model('checkout/order');
587: |
588: | $order_info = $this->model_checkout_order->getOrder($order_id);
589: |
590: | if ($order_info) {
591: | $this->model_checkout_order->deleteOrder($order_id);
592: | }
593: | }
594: |
595: | $json['success'] = $this->language->get('text_success');
596: |
597: | $this->response->addHeader('Content-Type: application/json');
598: | $this->response->setOutput(json_encode($json));
599: | }
600: |
601: | /**
602: | * Add History
603: | *
604: | * @return void
605: | */
606: | public function addHistory(): void {
607: | $this->load->language('api/sale/order');
608: |
609: | $json = [];
610: |
611: | // Add keys for missing post vars
612: | $keys = [
613: | 'order_id',
614: | 'order_status_id',
615: | 'comment',
616: | 'notify',
617: | 'override'
618: | ];
619: |
620: | foreach ($keys as $key) {
621: | if (!isset($this->request->post[$key])) {
622: | $this->request->post[$key] = '';
623: | }
624: | }
625: |
626: | $this->load->model('checkout/order');
627: |
628: | $order_info = $this->model_checkout_order->getOrder((int)$this->request->post['order_id']);
629: |
630: | if (!$order_info) {
631: | $json['error'] = $this->language->get('error_order');
632: | }
633: |
634: | if (!$json) {
635: | $this->model_checkout_order->addHistory((int)$this->request->post['order_id'], (int)$this->request->post['order_status_id'], (string)$this->request->post['comment'], (bool)$this->request->post['notify'], (bool)$this->request->post['override']);
636: |
637: | $json['success'] = $this->language->get('text_success');
638: | }
639: |
640: | $this->response->addHeader('Content-Type: application/json');
641: | $this->response->setOutput(json_encode($json));
642: | }
643: | }
644: |

OpenCart API API documentation generated by ApiGen dev-master