Друзья, в миллионный раз обращаюсь к Вам за помощью, не хватает мне знаний и опыта, очень надеюсь на вас) Суть проблемы: Установлен модуль Serial Keys который выдает вместе с заказом серийный номер В просмотре заказа в личном кабинете работает корректно, поле модель заменяется на серийный номер model модуля Спойлер: model/serilkeys Код: <?php class ModelExtensionModuleSerialKeys extends Model { public function assignOrder($order_id, $product_id, $quantity) { /* $SerialKeysStock = $this->db->query("SELECT * FROM `" . DB_PREFIX . "product` WHERE product_id = '" . (int)$product_id . "' AND serialkeys_enabled = '1'"); $SerialKeysShifted = array(); if ($SerialKeysStock->num_rows) { $unserialized = unserialize($SerialKeysStock->row['serialkeys_list']); for($i = 0; $i < $quantity; $i++) { $SerialKeysShifted[] = array_shift($unserialized); } $SerialKeysOrder = serialize((array)$SerialKeysShifted); $SerialKeysStock = serialize((array)$unserialized); $this->db->query("UPDATE `" . DB_PREFIX . "order_product` SET serialkeys_list = '" . $SerialKeysOrder . "', serialkeys_enabled = '1' WHERE order_id = '" . (int)$order_id . "' AND product_id = '" . (int)$product_id . "'"); $this->db->query("UPDATE `" . DB_PREFIX . "product` SET serialkeys_list = '" . $SerialKeysStock . "' WHERE product_id = '" . (int)$product_id . "'"); }*/ $enabled = $this->db->query("SELECT * FROM `" . DB_PREFIX . "product` WHERE product_id = '" . (int)$product_id . "' AND serialkeys_enabled = '1'"); if ($enabled->num_rows) { $alreadyAssignedKeys = $this->db->query("SELECT COUNT(*) AS assigned FROM `" . DB_PREFIX . "serial_keys` WHERE order_id = '" . (int)$order_id . "' AND product_id = '" . (int)$product_id . "'"); if ($alreadyAssignedKeys->row['assigned'] < $quantity) { $quantity -= $alreadyAssignedKeys->row['assigned']; $this->db->query("UPDATE `" . DB_PREFIX . "serial_keys` SET order_id = '" . (int)$order_id . "', date_used = NOW() WHERE product_id = '" . (int)$product_id . "' AND order_id IS NULL AND date_used IS NULL ORDER BY serial_key_id ASC LIMIT ". (int)$quantity . ""); } /* $update = $this->db->query("SELECT * FROM `" . DB_PREFIX . "serial_keys` WHERE product_id = '" . (int)$product_id . "' AND order_id = '" . (int)$order_id . "'"); if (!$update->num_rows) { $this->db->query("UPDATE `" . DB_PREFIX . "serial_keys` SET order_id = '" . (int)$order_id . "', date_used = NOW() WHERE product_id = '" . (int)$product_id . "' AND order_id IS NULL AND date_used IS NULL LIMIT ". (int)$quantity . ""); $this->db->query("UPDATE `" . DB_PREFIX . "order_product` SET serialkeys_enabled = '1' WHERE order_id = '" . (int)$order_id . "' AND product_id = '" . (int)$product_id . "'"); } */ } } public function orderInfo($order_id, $product_id) { $queryOrderStatus = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_history` WHERE order_id = '{$order_id}' ORDER BY `date_added` DESC LIMIT 1"); $queryProductHasSerialKeys = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_product` WHERE product_id = '{$product_id}' AND order_id = '{$order_id}'"); $ret = ''; if ($queryProductHasSerialKeys->row['serialkeys_enabled'] == '1') { $ret = "<br /><br />"; $ret .= "<b>Serial keys:</b><br />"; if (in_array($queryOrderStatus->row['order_status_id'], $this->config->get("config_complete_status"))) { /*$keys = unserialize($queryProductHasSerialKeys->row['serialkeys_list']); foreach ($keys as $key) { $ret .= $key . "<br />";*/ $SerialKeys = $this->db->query("SELECT * FROM `" . DB_PREFIX . "serial_keys` WHERE order_id = '" . (int)$order_id . "' AND product_id = '" . (int)$product_id . "'"); foreach ($SerialKeys->rows as $SerialKey) { $ret .= $SerialKey['serial_key'] . "<br />"; } } else { $ret .= "Serial keys will be visible once order is completed."; } } return $ret; } public function ViewSerialKey($order_id, $product_id, $serial_key_id, $session_id) { $querySerialKey = $this->db->query("SELECT `serial_key` FROM `" . DB_PREFIX . "serial_keys` WHERE order_id = '" . (int)$order_id . "' AND product_id = '" . (int)$product_id . "' AND serial_key_id = '" . (int)$serial_key_id . "' AND date_used IS NOT NULL AND viewed = '0' LIMIT 1"); if ($querySerialKey->num_rows) { $json['success'] = $querySerialKey->row['serial_key']; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } ?> Делается за счет такого куска кода в контроллере order Спойлер: order.php Код: // ****************************** // Begin Serial Keys modification // ****************************** $this->load->model('extension/module/serial_keys'); // **************************** // End Serial Keys modification // **************************** $data['products'][] = array( // ****************************** // Begin Serial Keys modification // ****************************** 'name' => $product['name'], // **************************** // End Serial Keys modification // **************************** 'model' => $this->model_extension_module_serial_keys->orderInfo($order_id, $product['product_id']), 'option' => $option_data, 'quantity' => $product['quantity'], 'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), 'reorder' => $reorder, 'return' => $this->url->link('account/return/add', 'order_id=' . $order_info['order_id'] . '&product_id=' . $product['product_id'], true) ); Если мы ставим точно такой же кусок в mail/order.php то естественно ничего в письме не отражается, немного поменял код, т.к. в файле mail/order.php вместо => $product[' '] используется => $order_product[' '] Поэтому кусок кода вставляем Спойлер: mail/order.php Код: // ****************************** // Begin Serial Keys modification // ****************************** $this->load->model('extension/module/serial_keys'); // **************************** // End Serial Keys modification // **************************** $data['products'][] = array( // ****************************** // Begin Serial Keys modification // ****************************** 'name' => $order_product['name'], // **************************** // End Serial Keys modification // **************************** 'model' => $this->model_extension_module_serial_keys->orderInfo($order_info['order_id'], $order_product['order_product_id']), 'option' => $option_data, 'quantity' => $order_product['quantity'], 'price' => $this->currency->format($order_product['price'] + ($this->config->get('config_tax') ? $order_product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 'total' => $this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']) ); Но так и не помагает Я думаю проблема в model/serialkeys, но где, не знаю(
Вот пара скринов Спойлер: Как работает в личном кабинете Хотя опять же вопрос, почему серийный приписывается в название а вот как в письме Спойлер: в письме За помощь естественно готов отблагодарить небольшим донатом =)