Как добавить 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 }}

Вы должны будете стилизовать его или сделать для него колонку, как считаете нужным. Надеюсь, это указывает на правильное направление.

Другие вопросы по тегам