$low_stock = array();
- if (!$SysPrefs->allow_negative_stock() || is_fixed_asset($line_item->mb_flag))
+ if (!$SysPrefs->allow_negative_stock())
{
foreach ($this->line_items as $line_no => $line_item)
if (has_stock_holding($line_item->mb_flag) || is_fixed_asset($line_item->mb_flag))
$this->gl_items[$index]->code_id = $code_id;
$this->gl_items[$index]->person_id = $person_id;
- $gl_type = is_subledger_account($code_id, $person_id);
- if ($gl_type)
+ $gl_type = is_subledger_account($code_id);
+ if ($person_id != null && $gl_type)
{
$this->gl_items[$index]->person_type_id = $gl_type > 0 ? PT_CUSTOMER : PT_SUPPLIER;
$data = get_subaccount_data($code_id, $person_id);
{
foreach ($this->gl_items as $gl_item)
{
- if ($gl_item->person_id)
+ if (is_subledger_account($gl_item->code_id))
return true;
}
return false;
foreach($this->gl_items as $gl)
{
- if ($person_type = is_subledger_account($gl->code_id, $gl->person_id))
+ if ($person_type = is_subledger_account($gl->code_id))
{
$tax_info['person_type'] = $person_type < 0 ? PT_SUPPLIER : PT_CUSTOMER;
$tax_info['person_id'] = $gl->person_id;
} elseif ($tax_id = is_tax_account($gl->code_id))
{
$tax_type = get_tax_type($tax_id);
- if ($gl->code_id == $tax_type['purchasing_gl_code']) {
+ if ($gl->code_id == $tax_type['purchasing_gl_code'] && $gl->amount > 0) {
if (!isset($tax_info['tax_in'][$tax_id]))
$tax_info['tax_in'][$tax_id] = 0;
$tax_info['tax_in'][$tax_id] += $gl->amount;
// we can have both input and output tax postings in some cases like intra-EU trade.
// so just calculate net_amount from the higher in/out tax
$tax_info['net_amount'][$tax_id]
- = $sign*round2(max(abs(@$tax_info['tax_in'][$tax_id]), abs(@$tax_info['tax_out'][$tax_id]))/$tax_type['rate']*100, 2)/$factor;
+ = $sign*round2(max(abs(@$tax_info['tax_in'][$tax_id]), abs(@$tax_info['tax_out'][$tax_id]))/$tax_type['rate']*100, user_price_dec())/$factor;
}
} else
if (!isset($tax_info['tax_reg']) && isset($tax_info['person_type']))
$tax_info['tax_reg'] = $tax_info['person_type']==PT_CUSTOMER ? TR_OUTPUT : TR_INPUT;
- if (count(@$tax_info['net_amount'])) // guess exempt sales/purchase if any tax has been found
+ if (count_array(@$tax_info['net_amount'])) // guess exempt sales/purchase if any tax has been found
{
$ex_net = abs($net_sum) - @array_sum($tax_info['net_amount']);
if ($ex_net != 0)
$this->code_id = $code_id;
$this->person_id = $person_id;
- $gl_type = is_subledger_account($code_id, $person_id);
- if ($gl_type)
+ $gl_type = is_subledger_account($code_id);
+ if ($person_id != null && $gl_type)
{
$this->person_type_id = $gl_type > 0 ? PT_CUSTOMER : PT_SUPPLIER;
$data = get_subaccount_data($code_id, $person_id);
}
$this->dimension_id = $dimension_id;
$this->dimension2_id = $dimension2_id;
- $this->amount = round($amount, 2);
+ $this->amount = round2($amount, user_price_dec());
$this->reference = $memo;
$this->date = $date;
}