Prestashop - 后台 table 表格中的计算字段

Prestashop - calculated field in backoffice table form

我想在后台向 Prestashop 1.6 自定义 table 添加一个 "virtual" 字段。字段 indice_calculo_pvp2 不应保存到数据库中,因为它是根据 indice_calculo_pvp 和 precio_venta_recomendado 的值计算得出的。实现这个的正确方法是什么?

我的代码如下:

public function renderList() {
    $this->addRowAction('edit');
    $this->addRowAction('delete');

    $this->fields_list = array(
        'id_product_price' => array(
            'search' => false,
            'title' => 'ID'
        ),
        'precio_coste' => array(
            'title' => 'Precio coste',
            'search' => false,
            'callback' => 'callback_format_price',
            'suffix' => '€'
        ),
        'indice_calculo_pvp' => array(
            'title' => 'Indice de cálculo PVP',
            'search' => false,
            'callback' => 'callback_format_price',
            'suffix' => '%'
        ),
        'indice_calculo_pvp2' => array(
            'title' => 'Indice de cálculo PVP2',
            'search' => false,
            'callback' => 'callback_calculate_pvp',
            'suffix' => '%'
        ),
        'precio_venta_recomendado' => array(
            'title' => 'Precio de venta recomendado con IVA',
            'search' => false,
            'callback' => 'callback_format_price',
            'suffix' => '€'
        )
    );

    return parent::renderList();
}

您有 2 个选择:

  • 您可以在代码中使用回调函数:

    public 函数 callback_calculate_pvp($id, $tr) { return $tr['indice_calculo_pvp'] * $tr['precio_venta_recomendado'];
    }

  • 您可以在字段列表 indice_calculo_pvp2 中使用虚拟列并在 SQL 查询或 getList 覆盖函数中设置值(就像 ProductController 对价格所做的那样)。

祝你好运。

在列表的 SQL SELECT 查询中使用计算。我不知道你的计算公式和你的 SELECT 查询是什么,但举个例子:

$this->_select = 'a.indice_calculo_pvp / a.precio_venta_recomendado AS indice_calculo_pvp2';