From: Joe Hunt Date: Wed, 19 Aug 2009 17:24:47 +0000 (+0000) Subject: Change of Quick Entries to use the Tax Types instead, due to complexity using the... X-Git-Tag: 2.3-final~1153 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=d4587c91e567ade454556bd8cf38e518f8d9b028;p=fa-stable.git 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. --- 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; }