1

我试图在产品管理页面中获得一个计算器助手,靠近价格输入我想添加一个文本框,帮助用户计算不含增值税的价格插入。它类似于这个插件,但我需要查询数据库以获取所有税率的数组,并将它们与tax_class_id用户选择的价格进行比较。

我在此页面中发现了一种请求:admin/controller/localisation/tax_rate.php

if (isset($this->request->post['rate'])) {
    $this->data['rate'] = $this->request->post['rate'];
} elseif (!empty($tax_rate_info)) {
    $this->data['rate'] = $tax_rate_info['rate'];
} else {
    $this->data['rate'] = '';
}

但我不知道如何查询数据库并获取页面内的数据admin/view/template/catalog/product_form.tpl。我试图获得类似于 Prestashop 的价格管理的结果。

请给我一些帮助!

编辑:

我通过添加admin/controller/catalog/product.php到 getForm() 函数中的代码解决了这个问题:

$sql = 'SELECT tra.rate, tra.type, tru.tax_class_id FROM '.DB_PREFIX.'tax_rate tra LEFT JOIN '.DB_PREFIX.'tax_rule tru ON tru.tax_rate_id = tra.tax_rate_id WHERE tru.tax_class_id IS NOT NULL' ;
$query = $this->db->query($sql);
$rates = array();
foreach($query->rows as $result){
    $rates[] = $result;
}
$this->data['rates'] = $rates;

感谢所有参与者

4

2 回答 2

2

要获取费率列表,请使用以下代码:

// get tax rates
$sql = 'SELECT * FROM '.DB_PREFIX.'tax_rate ';
$query = $this->db->query($sql);
$rates = array();
foreach($query->rows as $result){
    $rates[] = $result;
}

输出:

Array
(
[0] => Array
    (
        [tax_rate_id] => 86
        [geo_zone_id] => 3
        [name] => VAT (17.5%)
        [rate] => 17.5000
        [type] => P
        [date_added] => 2011-03-09 21:17:10
        [date_modified] => 2011-09-22 22:24:29
    )

[1] => Array
    (
        [tax_rate_id] => 87
        [geo_zone_id] => 3
        [name] => Eco Tax (-2.00)
        [rate] => 2.0000
        [type] => F
        [date_added] => 2011-09-21 21:49:23
        [date_modified] => 2011-09-23 00:40:19
    )

)

编辑:上面的代码进入控制器。要将数据传递给模板,请使用以下内容:

$this->data['rates'] = $rates;

然后,这些数据将可以通过 访问$rates。很抱歉没有从一开始就澄清这一点。换句话说,$this->data保存视图的所有变量:$this->data['foo']变成$foo模板文件(视图)。

于 2013-05-17T04:45:23.113 回答
1

我还price including VAT为 OpenCart 开发了一个扩展,所以我可以给你一些关于如何继续前进的建议:

  1. 使用 jQuery 处理
    • 税类选择框的change事件
    • 价格/价格助手输入keyup事件(或任何您希望的)
    • 通过使用代码查询数据库(在 AJAX 请求调用的控制器操作中),例如从 AJAX 调用的 GET 检索索引的
      SELECT * FROM '.DB_PREFIX.'tax_rate tra LEFT JOIN '.DB_PREFIX.'tax_rule tru ON tru.tax_rate_id = tra.tax_rate_id WHERE tru.tax_class_id = ' . (int)$this->request->get['tax_class_id']
      位置tax_class_id
  2. 既然你有tax_rate你可以计算价格(我这样做是双向的,即使是一个人输入的价格不包括增值税,价格包括增值税,反之亦然......)

很抱歉,我不能给你具体的代码,但如果我这样做了,我可以直接转到 OpenCart 扩展并删除我的价格,包括增值税扩展 ;-)

于 2013-05-17T09:32:14.513 回答