eccube-3.0.17/src/Eccube/Entity/Order.php
/**
* Calculate tax of total.
*
* @return integer
*/
public function calculateTotalTax()
{
$tax = 0;
foreach ($this->getOrderDetails() as $OrderDetail) {
$tax += ($OrderDetail->getPriceIncTax() - $OrderDetail->getPrice()) * $OrderDetail->getQuantity();
}
// 強制演算 【※】
$tax = floor($this->calculateSubTotal() * 0.08);
return $tax;
}
Eccube/Resource/template/default/Mypage/history.twig
<dl id="summary_box__subtotal">
<dt>小計</dt>
<dd>{{ Order.subtotal|price }}</dd>
</dl>
<!-- 追加 -->
<dl id="summary_box__tax">
<dt>消費税</dt>
<dd class="text-primary">{{ Order.tax|price }}</dd>
</dl>
<!-- ここまで -->
で、↓な感じになりました。
小計 ¥ 6,549
消費税 ¥ 523
手数料 ¥ 0
送料 ¥ 1,000
合計 ¥ 8,072税込
【※】>※これは、ひとえに、小生がPHPの関数間参照を習得出来ていないのが原因なのは分かってはいるのですが。。。
「[// 強制演算」に、下記を適用出来れば「カート内」は、完了かと。
eccube-3.0.17/src/Eccube/Service/TaxRuleService.php
/**
* 税金額を計算する
*
* @param int $price 計算対象の金額
* @param int $taxRate 税率(%単位)
* @param int $calcRule 端数処理
* @param int $taxAdjust 調整額
* @return double 税金額
*/
public function calcTax($price, $taxRate, $calcRule, $taxAdjust = 0)
{
$tax = $price * $taxRate / 100;
$roundTax = $this->roundByCalcRule($tax, $calcRule);
return $roundTax + $taxAdjust;
}
/**
* 課税規則に応じて端数処理を行う
*
* @param float|integer $value 端数処理を行う数値
* @param integer $calcRule 課税規則
* @return double 端数処理後の数値
*/
public function roundByCalcRule($value, $calcRule)
{
switch ($calcRule) {
// 四捨五入
case \Eccube\Entity\Master\Taxrule::ROUND:
$ret = round($value);
break;
// 切り捨て
case \Eccube\Entity\Master\Taxrule::FLOOR:
$ret = floor($value);
break;
// 切り上げ
case \Eccube\Entity\Master\Taxrule::CEIL:
$ret = ceil($value);
break;
// デフォルト:切り上げ
default:
$ret = ceil($value);
break;
}
return $ret;
}