Topic: Function for even out rounding problems
I need a clarification of the following function.
function add_gl_balance($type, $trans_id, $date_, $amount, $person_type_id=null, $person_id=null)
{
$amount = round2($amount, user_price_dec());
if (floatcmp($amount, 0))
{
error_log(sprintf( _("Rounding error %s encountered for trans_type:%s,trans_no:%s"), $amount, $type, $trans_id));
return add_gl_trans($type, $trans_id, $date_, get_company_pref('exchange_diff_act'), 0, 0, "",
$amount, null, $person_type_id, $person_id, "The balanced GL transaction could not be inserted");
} else
return 0;
}
This function is placed on the file gl/includes/db/gl_db_trans.inc. And it is for even out the rounding problems.
When round off error occurred due to tax calculation on the sales invoice, that error amount will pass to this function.
So then rounding off error due to tax calculation will be going to exchange_diff_act. That is actually not an exchange rate given at all.
Is there any suggestion to handle those kinds of rounding problems.