勝手に机上で検証してみました。
税込金額の表示部分
テンプレート:edit.tpl
<td class="right">
<!--{$price|sfCalcIncTax:$tax_rate:$tax_rule|number_format}--> 円<br />
<!--{assign var=key value="tax_rate"}-->
<span class="attention"><!--{$arrErr[$key][$product_index]}--></span>
税率<input type="text" name="<!--{$key}-->[<!--{$product_index}-->]" value="<!--{$arrForm[$key].value[$product_index]|h}-->" size="3" class="box3" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$product_index]|sfGetErrorColor}-->" id="<!--{$key}-->_<!--{$product_index}-->" />%
</td>
<td class="right"><!--{$price|sfCalcIncTax:$tax_rate:$tax_rule|sfMultiply:$quantity|number_format}-->円</td>
ここで、表示にあたり、sfCalcIncTaxを使用している。
sfCalcIncTaxは、SC_Utils.phpにあり、
public function sfCalcIncTax($price, $tax, $tax_rule)
{
return $price + SC_Utils_Ex::sfTax($price, $tax, $tax_rule);
}
public function sfTax($price, $tax, $tax_rule)
{
$real_tax = $tax / 100;
$ret = $price * $real_tax;
switch ($tax_rule) {
// 四捨五入
case 1:
$ret = round($ret);
break;
// 切り捨て
case 2:
$ret = floor($ret);
break;
// 切り上げ
case 3:
$ret = ceil($ret);
break;
// デフォルト:切り上げ
default:
$ret = ceil($ret);
break;
}
return $ret;
}
ここでは、$tax_ruleがないと、「切り上げ」としている。
そこで、$tax_ruleがない可能性を考えてみた。
LC_Page_Admin_Order_Edit.phpは、何となくこの部分のような。
public function checkInsertOrderProducts(&$objFormParam, $arrProductClassIds, $insert_product_class_id, $arrAddProductInfo)
{
if(!$arrProductClassIds || !in_array($insert_product_class_id, $arrProductClassIds)){
$arrAddProducts = array();
$arrAddProductInfo['product_name'] = ($arrAddProductInfo['product_name'])?
$arrAddProductInfo['product_name']:$arrAddProductInfo['name'];
$arrAddProductInfo['price'] = ($arrAddProductInfo['price'])?
$arrAddProductInfo['price']:$arrAddProductInfo['price02'];
$arrAddProductInfo['quantity'] = 1;
$arrAddProductInfo['tax_rate'] = ($objFormParam->getValue('order_tax_rate') == '')?
$this->arrInfo['tax'] :$objFormParam->getValue('order_tax_rate');
$arrAddProductInfo['tax_rule'] = ($objFormParam->getValue('order_tax_rule') == '')?
$this->arrInfo['tax_rule']:$objFormParam->getValue('order_tax_rule');
foreach ($this->arrProductKeys as $insert_key) {
$value = $objFormParam->getValue($insert_key);
$arrAddProducts[$insert_key] = (is_array($value))? $value: array();
$arrAddProducts[$insert_key][] = $arrAddProductInfo[$insert_key];
}
return $arrAddProducts;
} else {
//受注商品の数量は、複数配送側の集計で出しているので、重複しても数量を増やさない。
return null;
}
}
ここは、v2.13.2では、先の投稿でも触れた
http://svn.ec-cube.net/open_trac/ticket/2430の修正が行われている場所になる。
あくまで机上の検証です。
この部分で、端数の指定は、説明がつきそうなのですが、
税率の指定は、説明がつきませんでした。