カテゴリー
EC-CUBE

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

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

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

[temp id=3]

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

対象コードを一部抜粋

ファイルパス: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());
}

作成者: kenshi

ゲーム大好きです。
ApexLegends, Arkやっています。
携帯販売員4年(240万)

プログラマー3年(350万)

フリーランスエンジニア1年(500万)