【EC-CUBE4】1円ズレる原因

スポンサーリンク
スポンサーリンク

カスタマイズにより、マイナス伝票を作成していたプロジェクトで発生

通常の消費税計算へマイナス値を渡すと、切り捨て処理が反転する

こんにちは!@vVv_kenshi_vVvです!

スポンサーリンク

消費税取得処理へ負数を使用すると端数処理が反転する。

対象コードを一部抜粋

ファイルパス:src/Eccube/Service/PurchaseFlow/Processor/TaxProcessor.php

PHP
<?php
// 税込表示の場合は, priceが税込金額のため割り戻す.
if ($item->getTaxDisplayType()->getId() == TaxDisplayType::INCLUDED) {
    $tax = $this->taxRuleService->calcTaxIncluded(
        $item->getPrice(), $item->getTaxRate(), $item->getRoundingType()->getId(),
        $item->getTaxAdjust());
} else {
    $tax = $this->taxRuleService->calcTax(
        $item->getPrice(), $item->getTaxRate(), $item->getRoundingType()->getId(),
        $item->getTaxAdjust());
}

端数を切り捨てにしている場合は、第三引数をnullにして繰切り上げにすれば良い

PHP
<?php
// 税込表示の場合は, priceが税込金額のため割り戻す.
if ($item->getTaxDisplayType()->getId() == TaxDisplayType::INCLUDED) {
    $tax = $this->taxRuleService->calcTaxIncluded(
        $item->getPrice(), $item->getTaxRate(), null,
        $item->getTaxAdjust());
} else {
    $tax = $this->taxRuleService->calcTax(
        $item->getPrice(), $item->getTaxRate(), null,
        $item->getTaxAdjust());
}
タイトルとURLをコピーしました