Opencart:查询数据库以获取tax_rate数据

时间:2013-05-17 00:53:07

标签: opencart

我正在尝试在产品管理页面中获得一个计算器助手,靠近价格输入我想添加一个文本框,帮助用户计算价格,不含税增值税插入。 这与PLUGIN类似,但我需要查询数据库以获取所有税率的数组,并将其与价格低于用户选择的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价格管理的结果。

请给我一些帮助!

编辑:

我用放在getForm()函数中的admin/controller/catalog/product.php中添加的代码解决了:

$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;

感谢所有参与者

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我还为OpenCart开发了price including VAT扩展程序,因此我可以就如何继续提供一些建议:

  1. 使用jQuery处理
    • Tax Class 选择框的change事件
    • 价格 / Price Helper 输入keyup事件(或任何您想要的事件)
    • 通过查询数据库(在AJAX请求调用的控制器操作中),使用类似的代码 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']
      从AJAX调用中从GET中检索tax_class_id索引
  2. 现在您已经tax_rate您可以计算价格(我这样做是双向的,即使一个人输入的价格不包括增值税,价格包括增值税计算,反之亦然......)
  3. 对不起,我不能给你具体的代码,但如果我这样做,我可以直接转到OpenCart扩展程序并删除我的价格,包括增值税延期; - )