apmuthu wrote:

If there is a non-exchange rate related error that arises from just tax computation, which account do you want the error to get into or
how do we balance it?

We want it to go into some "tax variance account" which we can define in the system.

@apmuthu: What do you mean account? This happened when we enter the customer invoice. All services are billing on local currency.

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.