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

时间:2017-02-24 17:26:48

标签: module prestashop-1.6

我想在后台办公室的Prestashop 1.6自定义表中添加一个“虚拟”字段。字段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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您有两个选择:

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

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

  • 您可以在字段列表indice_calculo_pvp2中使用虚拟列,并在SQL查询或getList覆盖函数中设置值(如ProductController的价格)。
祝你好运。