Change of Quick Entries to use the Tax Types instead, due to complexity using the...
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 19 Aug 2009 17:24:47 +0000 (17:24 +0000)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 19 Aug 2009 17:24:47 +0000 (17:24 +0000)
  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
gl/includes/db/gl_db_bank_accounts.inc
gl/manage/gl_quick_entries.php
includes/ui/ui_view.inc

index 845bc5e1af8a8b67f08d58d250566cc93bff1cd9..94c0fb24b45df94d31577260a7063efcddcbf49d 100644 (file)
@@ -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
index c6b71cf368eca2625c12da49ef49c9ee9d9b91ef..53f3facfbc9ba0c168ce77e455b75a772e94e096 100644 (file)
@@ -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";
index de19943f83d70a38551e27efed7954d71642a13a..ed19b7fe2f5b21e185a339c75a3a76146dd46160 100644 (file)
@@ -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
index b7e0a12e0f2ac9cef2932e009b80ceaec85b5025..4e50bbf6d79d944f4073832166c02240834d4ef0 100644 (file)
@@ -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;
 }