1

オープンカートでモジュールを作成していて、価格計算がどのように行われるかを知る必要があり、このコードに出くわしました

$price = $this->currency->format($this->tax->calculate($result['price'], 
        $result['tax_class_id'], $this->config->get('config_tax')));
if ((float)$result['special']) {
    $special = $this->currency->format($this->tax->calculate(
        $result['special'], 
        $result['tax_class_id'], $this->config->get('config_tax')));
} else {
    $special = false;
}                       
if ($this->config->get('config_tax')) {
    $tax = $this->currency->format((float)$result['special'] ? 
           $result['special'] : $result['price']);
} else {
    $tax = false;
}

実際、ここで実際に何が起こっているのかわかりませんでした。ととの間に実際には違いがないことがわかりますが$price$specialこの$taxように実装されているのには理由があるはずです。

私はここで何かが欠けていると確信しています誰かがopencartで価格計算がどのように行われるかを私に説明しますか?

4

2 に答える 2

4

ソースを読むと、これは私が理解していることです: $price$specialおよび$tax表示するためにビューに渡される変数です。

$price = $this->currency->format($this->tax->calculate($result['price'], 
        $result['tax_class_id'], $this->config->get('config_tax')));

すべてのアイテムには価格があるため、$price常に設定されています。$priceは ; 適用される税クラスと税が適用された基本価格。

if ((float)$result['special']) {
    $special = $this->currency->format($this->tax->calculate(
        $result['special'], 
        $result['tax_class_id'], $this->config->get('config_tax')));
} else {
    $special = false;
}                       

アイテムが特別になる場合があります。そうである場合は$special、基本特別価格に設定され、同じ一連の税計算が適用されます。(ビューコードがオリジナルとSPECIAL!価格の両方を並べて表示できるように)

if ($this->config->get('config_tax')) {
    $tax = $this->currency->format((float)$result['special'] ? 
           $result['special'] : $result['price']);
} else {
    $tax = false;
}

すべてのインストールに税金が設定されているわけではありません。そうである場合$tax、ベースまたはベース特別価格に設定されます。(ビューコードが税抜きのアイテムの価格を表示できるようにします$tax (税抜きの価格であるというのは少し非論理的です)

わかる?価格の計算方法について詳しく知りたい場合は、 を詳しく見てくださいtax->calculate()。そうでなければそれは

$taxed_price = $special ? $special : $price; 
$untaxed_price = (float)$result['special'] ? $result['special'] : $result['price'];
于 2011-11-09T13:46:17.810 に答える
2

トリック氏の答えを簡単にメモします。$this->tax->calculate() の 3 つのパラメーターは次のとおりです。

$value、$tax_class_id、$calculate = true

3 番目は必須ではありませんが、元のコードでは、税金を適用するかどうかのグローバル構成値を取得します (設定で無効にできるため)。また、税オブジェクトがバージョン間で変更されていることも注目に値します (最後に変更されたのは 1.5.1.2 だったと思います)。

于 2011-11-09T17:31:10.587 に答える