2013-05-17 38 views
1

我試圖在產品管理頁面中輸入價格輸入附近的計算器助手我想添加一個文本框,以幫助用戶計算含稅增值稅插入的價格。 這與PLUGIN類似,但我需要查詢數據庫以獲取所有稅率數組,並將其與價格低於用戶選擇的tax_class_id進行比較。Opencart:查詢數據庫以獲取稅率數據

我發現這個網頁排序的要求: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; 

感謝所有參與者

回答

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

+0

這是很清楚,但我我只是在學習opencart MVC結構,我錯過了在.tpl文件中獲得$ rates []的方法。 我必須在controller/catalog/product.php中使用你的代碼嗎?在模型中?或直接在視圖中? –

1

我也制定了price including VAT擴展Opencart的,所以我能夠給你如何移動的一些建議:

  1. 使用jQuery處理
    • 稅種選擇框的change事件
    • 價格/價格助手輸入keyup事件(或任何你想要的)
    • 通過查詢數據庫中包含
      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指數從AJAX的GET檢索(通過AJAX請求調用控制器的動作中)叫
  2. 現在,你有你tax_rate可以計算價格(我這樣做是雙向的,甚至一個人輸入不含增值稅的價格,包括增值稅getd計算的價格,反之亦然......)

我很抱歉,我不能給你具體的代碼,但如果我這樣做,我可以直接去Opencart的擴展和刪除我的價格包括增值稅擴展;-)

+0

謝謝!我認爲不需要ajax調用,我正在考慮從tax_rate和tax_class表中查詢所有數據,然後在本地處理結果。 –

+0

然後查詢應該可以幫助你。不用謝! – shadyyx

+0

是的,它幫了我很多! –