From d4587c91e567ade454556bd8cf38e518f8d9b028 Mon Sep 17 00:00:00 2001 From: Joe Hunt Date: Wed, 19 Aug 2009 17:24:47 +0000 Subject: [PATCH] Change of Quick Entries to use the Tax Types instead, due to complexity using the Tax Groups in EU. If you for need more than one Tax Type row in a Quick Entry, please keep the rows together and use the same action type. --- CHANGELOG.txt | 7 ++ gl/includes/db/gl_db_bank_accounts.inc | 6 +- gl/manage/gl_quick_entries.php | 10 +-- includes/ui/ui_view.inc | 105 ++++++++++++++++++++++++- 4 files changed, 119 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 845bc5e1..94c0fb24 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -19,6 +19,13 @@ Legend: ! -> Note $ -> Affected files +19-Aug-2009 Joe Hunt +! Change of Quick Entries to use the Tax Types instead, due to complexity using the Tax Groups in EU. + If you for need more than one Tax Type row in a Quick Entry, please keep the rows together and use the same action type. +$ /gl/includes/db/gl_db_bank_accounts.inc + /gl/manage/gl_quick_entries.php + /includes/ui/ui_view.inc + 18-Aug-2009 Joe Hunt ! When using Quick Entries in Supplier Invoices/credit notes the tax sum now shows correctly. $ /purchasing/includes/db/invoice_db.inc diff --git a/gl/includes/db/gl_db_bank_accounts.inc b/gl/includes/db/gl_db_bank_accounts.inc index c6b71cf3..53f3facf 100644 --- a/gl/includes/db/gl_db_bank_accounts.inc +++ b/gl/includes/db/gl_db_bank_accounts.inc @@ -166,12 +166,12 @@ function get_quick_entry($selected_id) function get_quick_entry_lines($qid) { $sql = "SELECT ".TB_PREF."quick_entry_lines.*, ".TB_PREF."chart_master.account_name, - ".TB_PREF."tax_groups.name as tax_name + ".TB_PREF."tax_types.name as tax_name FROM ".TB_PREF."quick_entry_lines LEFT JOIN ".TB_PREF."chart_master ON ".TB_PREF."quick_entry_lines.dest_id = ".TB_PREF."chart_master.account_code - LEFT JOIN ".TB_PREF."tax_groups ON - ".TB_PREF."quick_entry_lines.dest_id = ".TB_PREF."tax_groups.id + LEFT JOIN ".TB_PREF."tax_types ON + ".TB_PREF."quick_entry_lines.dest_id = ".TB_PREF."tax_types.id WHERE qid=$qid ORDER by id"; diff --git a/gl/manage/gl_quick_entries.php b/gl/manage/gl_quick_entries.php index de19943f..ed19b7fe 100644 --- a/gl/manage/gl_quick_entries.php +++ b/gl/manage/gl_quick_entries.php @@ -229,11 +229,11 @@ if ($selected_id != -1) start_table($table_style2); $dim = get_company_pref('use_dimension'); if ($dim == 2) - $th = array(_("Post"), _("Account") . "/" . _("Tax Group"), _("Amount"), _("Dimension"), _("Dimension")." 2", "", ""); + $th = array(_("Post"), _("Account/Tax Type"), _("Amount"), _("Dimension"), _("Dimension")." 2", "", ""); else if ($dim == 1) - $th = array(_("Post"), _("Account") . "/" . _("Tax Group"), _("Amount"), _("Dimension"), "", ""); + $th = array(_("Post"), _("Account/Tax Type"), _("Amount"), _("Dimension"), "", ""); else - $th = array(_("Post"), _("Account") . "/" . _("Tax Group"), _("Amount"), "", ""); + $th = array(_("Post"), _("Account/Tax Type"), _("Amount"), "", ""); table_header($th); $k = 0; @@ -303,7 +303,7 @@ if ($selected_id != -1) if ($actn == 't') { //item_tax_types_list_row(_("Item Tax Type").":",'dest_id', null); - tax_groups_list_row(_("Tax Group").":", 'dest_id', null); + tax_types_list_row(_("Tax Type").":", 'dest_id', null); } else { @@ -341,4 +341,4 @@ if ($selected_id != -1) end_page(); -?> +?> \ No newline at end of file diff --git a/includes/ui/ui_view.inc b/includes/ui/ui_view.inc index b7e0a12e..4e50bbf6 100644 --- a/includes/ui/ui_view.inc +++ b/includes/ui/ui_view.inc @@ -566,7 +566,109 @@ function display_quick_entries(&$cart, $id, $base, $type, $descr='') $cart->clear_items(); $qe = get_quick_entry($id); if ($descr != '') $qe['description'] .= ': '.$descr; - $qe_lines = get_quick_entry_lines($id); + $result = get_quick_entry_lines($id); + $totrate = 0; + while ($row = db_fetch($result)) + { + $qe_lines[] = $row; + + switch (strtolower($row['action'])) { + case "t": // post taxes calculated on base amount + case "t+": // ditto & increase base amount + case "t-": // ditto & reduce base amount + if (substr($qe_line['action'],0,1) != 'T') + $totrate += get_tax_type_default_rate($row['dest_id']); + } + } + $first = true; + $taxbase = 0; + foreach($qe_lines as $qe_line) + { + switch (strtolower($qe_line['action'])) { + case "=": // post current base amount to GL account + $part = $base; + break; + case "a": // post amount to GL account and reduce base + $part = $qe_line['amount']; + break; + case "a+": // post amount to GL account and increase base + $part = $qe_line['amount']; $base += $part; + break; + case "a-": // post amount to GL account and reduce base + $part = $qe_line['amount']; $base -= $part; + break; + case "%": // store acc*amount% to GL account + $part = round2($base * $qe_line['amount'] / 100, user_price_dec()); + break; + case "%+": // ditto & increase base amount + $part = round2($base * $qe_line['amount'] / 100, user_price_dec()); + $base += $part; + break; + case "%-": // ditto & reduce base amount + $part = round2($base * $qe_line['amount'] / 100, user_price_dec()); + $base -= $part; + break; + case "t": // post taxes calculated on base amount + case "t+": // ditto & increase base amount + case "t-": // ditto & reduce base amount + if ($first) + { + $taxbase = $base/($totrate+100); + $first = false; + } + + if (substr($qe_line['action'],0,1) != 'T') + $part = $taxbase; + else + $part = $base; + $item_tax = get_tax_type($qe_line['dest_id']); + if ($type == QE_SUPPINV && substr($qe_line['action'],0,1) != 'T') + { + $taxgroup = $cart->tax_group_id; + $rates = 0; + $res = get_tax_group_items($cart->tax_group_id); + while ($row = db_fetch($res)) + $rates += $row['rate']; + if ($rates == 0) + continue 2; + } + $tax = round2($part * $item_tax['rate'], user_price_dec()); + if ($tax==0) continue 2; + $gl_code = ($type == QE_DEPOSIT || ($type == QE_JOURNAL && $base < 0)) + ? $item_tax['sales_gl_code'] : $item_tax['purchasing_gl_code']; + if (!is_tax_gl_unique($gl_code)) { + display_error(_("Cannot post to GL account used by more than one tax type.")); + break 2; + } + if ($type != QE_SUPPINV) + $cart->add_gl_item($gl_code, + $qe_line['dimension_id'], $qe_line['dimension2_id'], + $tax, $qe['description']); + else + { + $acc_name = get_gl_account_name($gl_code); + $cart->add_gl_codes_to_trans($gl_code, + $acc_name, $qe_line['dimension_id'], + $qe_line['dimension2_id'], $tax, $qe['description']); + } + if (strpos($qe_line['action'], '+')) + $base += $tax; + elseif (strpos($qe_line['action'], '-')) + $base -= $tax; + continue 2; + } + if ($type != QE_SUPPINV) + $cart->add_gl_item($qe_line['dest_id'], $qe_line['dimension_id'], + $qe_line['dimension2_id'], $part, $qe['description']); + else + { + $acc_name = get_gl_account_name($qe_line['dest_id']); + $cart->add_gl_codes_to_trans($qe_line['dest_id'], + $acc_name, $qe_line['dimension_id'], + $qe_line['dimension2_id'], $part, $qe['description']); + } + } +/* while ($qe_line = db_fetch($qe_lines)) { switch (strtolower($qe_line['action'])) { @@ -651,6 +753,7 @@ function display_quick_entries(&$cart, $id, $base, $type, $descr='') $qe_line['dimension2_id'], $part, $qe['description']); } } +*/ } return $bank_amount; } -- 2.30.2