Как добавить SKU в счета
В OpenCart 3.0.2.0 я пытаюсь заставить страницы Invoices отображать переменную "SKU" для каждого продукта. Переменная находится в базе данных вместе с другими данными о продукте, но по какой-то безбожной причине у OpenCart нет возможности ее отобразить. Вы можете отобразить название продукта, цену, наличие на складе и т. Д., Но не SKU.
Кто-нибудь знает, как это сделать конкретно в OC 3? Они перешли с PHP на Twig для шаблонов, и я не уверен, что делаю неправильно, но метод, который я использовал в OC 2.0, НЕ работает в 3.0.
2 ответа
Если вы хотите, чтобы SKU был указан в order_invoice на стороне администратора, измените его следующим образом:
админ / модель / продажа / order.php
находить:
public function getOrderProducts($order_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
return $query->rows;
}
заменить:
public function getOrderProducts($order_id) {
$query = $this->db->query("SELECT op.*,p.sku FROM " . DB_PREFIX . "order_product op LEFT JOIN " . DB_PREFIX . "product p on op.product_id = p.product_id WHERE order_id = '" . (int)$order_id . "'");
return $query->rows;
}
админ / контроллер / продажа / order.php
в
`public function invoice()`
находить:
`$product_data[] = array(
'name' => $product['name'],`
добавить после этого:
`'sku' => $product['sku'],`
в админ / просмотр / продажа /order_invoice.twig
добавлять:
`{{ product.sku }}`
Таким образом, вы должны сначала получить sku из таблицы продуктов, которая недоступна на странице накладной заказа по умолчанию.
Вы говорите об этом в admin/view/sale/order_invoice.twig?
Если это так, сначала измените admin / controller / sale / order.php в строке 518:
foreach ($products as $product) {
$data['order_products'][] = array(
'product_id' => $product['product_id'],
'name' => $product['name'],
'model' => $product['model'],
'option' => $this->model_sale_order->getOrderOptions($this->request->get['order_id'], $product['order_product_id']),
'quantity' => $product['quantity'],
'price' => $product['price'],
'total' => $product['total'],
'reward' => $product['reward']
);
}
включить где-то там (например, после модельной линии) строку с:
'sku' => $product['sku'],
Затем в admin / view / sale / order_invoice.twig добавьте туда, где вы хотите, чтобы он отображался:
{{ product.sku }}
Вы должны будете стилизовать его или сделать для него колонку, как считаете нужным. Надеюсь, это указывает на правильное направление.