如何将SKU添加到发票中

时间:2018-04-04 12:47:35

标签: opencart opencart-3 sku

在OpenCart 3.0.2.0中,我试图让Invoices页面显示每个产品的“SKU”变量。变量与数据库以及其他产品数据一起存在于数据库中,但由于某种不正当的原因,OpenCart没有显示它的选项。您可以显示产品名称,价格,库存可用性等,但不能显示SKU。

有没有人知道如何在OC 3中专门做到这一点?他们已经从PHP切换到Twig用于模板,我不确定我做错了什么,但我在OC 2.0中使用的方法不适用于3.0。

2 个答案:

答案 0 :(得分:2)

如果您想在管理员端按顺序购买SKU,则需要修改如下:

管理员/模型/销售/ 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

in

`public function invoice()`

查找

 `$product_data[] = array(
    'name'     => $product['name'],`

之后添加:

`'sku'  => $product['sku'],`

在admin / view / sale / order_invoice.twig

添加:

`{{ product.sku }}`

因此,您必须先从产品表中获取sku,这在默认订单发票页面中不可用。

答案 1 :(得分:0)

你在谈论它出现在admin / view / sale / order_invoice.twig吗?

如果是这样,首先在第518行附近修改admin / controller / sale / order.php:

    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 }}

您必须按照自己的方式对其进行样式化或为其制作专栏。希望这能指出你正确的方向。