From 1431b89949b816de1d9304875bdde655cbdf9cc1 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Wed, 21 May 2014 08:59:54 +0200 Subject: [PATCH] Fixed unexpected additional GL postings when tax was used in Supplier Invoice additional GL lines. --- purchasing/includes/supp_trans_class.inc | 26 ++++++++++++++---------- purchasing/supplier_credit.php | 18 ++++++++++++---- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/purchasing/includes/supp_trans_class.inc b/purchasing/includes/supp_trans_class.inc index c85f8ae7..c36fa816 100644 --- a/purchasing/includes/supp_trans_class.inc +++ b/purchasing/includes/supp_trans_class.inc @@ -121,23 +121,27 @@ class supp_trans $taxes = get_tax_for_items($items, $prices, $shipping_cost, $tax_group_id, $this->tax_included); - if ($gl_codes) + if (isset($this->tax_overrides)) + foreach($this->tax_overrides as $id => $value) // add values entered manually + { + $taxes[$id]['Override'] = $value; + } + + // Taxes included in gl_codes table have exact value, but count to overrides as well. + // Therefore when we want to now taxes only for items (gl_codes==false), + // we have to subtract gl_taxes from override values. + foreach ($this->gl_codes as $gl_code) { - foreach ($this->gl_codes as $gl_code) + $index = is_tax_account($gl_code->gl_code); + if ($index !== false) { - $index = is_tax_account($gl_code->gl_code); - if ($index !== false) - { + if ($gl_codes) $taxes[$index]['Value'] += $gl_code->amount; - } + elseif (isset($this->tax_overrides)) + $taxes[$index]['Override'] -= $gl_code->amount; } } - if(isset($this->tax_overrides)) - foreach($this->tax_overrides as $id => $value) // add values entered manually - { - $taxes[$id]['Override'] = $value; - } return $taxes; } // diff --git a/purchasing/supplier_credit.php b/purchasing/supplier_credit.php index 0806b7cf..57e8696e 100644 --- a/purchasing/supplier_credit.php +++ b/purchasing/supplier_credit.php @@ -82,6 +82,15 @@ function clear_fields() $Ajax->activate('gl_items'); set_focus('gl_code'); } + +function reset_tax_input() +{ + global $Ajax; + + unset($_POST['mantax']); + $Ajax->activate('inv_tot'); +} + //------------------------------------------------------------------------------------------------ // GL postings are often entered in the same form to two accounts // so fileds are cleared only on user demand. @@ -126,6 +135,7 @@ if (isset($_POST['AddGLCodeToTrans'])){ $_SESSION['supp_trans']->add_gl_codes_to_trans($_POST['gl_code'], $gl_act_name, $_POST['dimension_id'], $_POST['dimension2_id'], input_num('amount'), $_POST['memo_']); + reset_tax_input(); set_focus('gl_code'); } } @@ -297,7 +307,7 @@ if ($id3 != -1) { $_SESSION['supp_trans']->remove_grn_from_trans($id3); $Ajax->activate('grn_items'); - $Ajax->activate('inv_tot'); + reset_tax_input(); } $id4 = find_submit('Delete2'); @@ -305,13 +315,13 @@ if ($id4 != -1) { $_SESSION['supp_trans']->remove_gl_codes_from_trans($id4); clear_fields(); + reset_tax_input(); $Ajax->activate('gl_items'); - $Ajax->activate('inv_tot'); } if (isset($_POST['RefreshInquiry'])) { $Ajax->activate('grn_items'); - $Ajax->activate('inv_tot'); + reset_tax_input(); } if (isset($_POST['go'])) @@ -319,7 +329,7 @@ if (isset($_POST['go'])) $Ajax->activate('gl_items'); display_quick_entries($_SESSION['supp_trans'], $_POST['qid'], input_num('totamount'), QE_SUPPINV); $_POST['totamount'] = price_format(0); $Ajax->activate('totamount'); - $Ajax->activate('inv_tot'); + reset_tax_input(); } -- 2.30.2