Bug in exchange variation calculation in certain situations
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 19 Feb 2010 17:04:43 +0000 (17:04 +0000)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 19 Feb 2010 17:04:43 +0000 (17:04 +0000)
Better and cleaner layout in graphics
Fixed better layout in customer delivery form

CHANGELOG.txt
gl/includes/db/gl_db_banking.inc
reporting/includes/class.graphic.inc
sales/customer_delivery.php

index 3ea790ceab141d9c83716fa4d1674ce3b1b4bde5..483892c4b2a4b3d4b2ddc9938e3e5bd2572063e5 100644 (file)
@@ -19,6 +19,14 @@ Legend:
 ! -> Note
 $ -> Affected files
 
+19-Feb-2010 Joe Hunt/Ary Wibowo
+# Bug in exchange variation calculation in certain situations.
+$ /gl/includes/gl_db_banking.inc
+! Better and cleaner layout in graphics
+$ /reporting/includes/class.graphic.inc
+! Fixed better layout in customer delivery form
+$ /sales/customer_delivery.php
+
 17-Feb-2010 Joe Hunt
 # Missing border layout in report centre
 $ /reporting/includes/reports_classes.inc
index afc9e516ccdad66570c4dd028863e230eb8e9353..d002f1d63d68c561e8992cb5e0441a50a7c38984 100644 (file)
@@ -17,24 +17,27 @@ function add_exchange_variation($trans_type, $trans_no, $date_, $acc_id, $accoun
        if ($date_ == null)
                $date_ = Today();
        $rate = get_exchange_rate_from_home_currency($currency, $date_);
-/*     
-       $result = db_query("SELECT SUM(amount) FROM ".TB_PREF."bank_trans WHERE 
-               bank_act=".db_escape($acc_id)." AND trans_date<='".date2sql($date_)."'", 
-               "Transactions for account $account could not be calculated");
-       $row = db_fetch_row($result);
-       $foreign_amount = $row[0];
-       $amount = get_gl_trans_from_to("", $date_, $account);
-       $diff = $amount - (round2($foreign_amount * $rate, user_price_dec()));
-*/
-       $result = db_query("SELECT SUM(bt.amount) AS foreign_amount, SUM(gt.amount) AS amount           
-               FROM ".TB_PREF."bank_trans bt,  ".TB_PREF."gl_trans gt, ".TB_PREF."bank_accounts ba
-               WHERE bt.bank_act=".db_escape($acc_id)." AND bt.trans_date<='".date2sql($date_)."'
-               AND ((bt.amount > 0 AND gt.amount > 0) OR (bt.amount <= 0 AND gt.amount <= 0)) 
-               AND bt.type = gt.type AND bt.trans_no = gt.type_no 
-               AND ba.id = bt.bank_act AND ba.account_code = gt.account",
-               "Transactions for account $account could not be calculated");
-       $row = db_fetch($result);
-       $diff = $row['amount'] - (round2($row['foreign_amount'] * $rate, user_price_dec()));
+       $for_amount = $amount = 0;
+       // We had to split up the SQL statements to retrieve the correct GL counter-parts
+       // 2010-02-19 Joe Hunt with help of Ary Wibowo
+       $sql = "SELECT bt.*, SUM(bt.amount) AS for_amount, ba.account_code              
+               FROM ".TB_PREF."bank_trans bt, ".TB_PREF."bank_accounts ba
+               WHERE ba.id = bt.bank_act AND bt.bank_act=".db_escape($acc_id)." AND bt.trans_date<='".date2sql($date_)."'
+               GROUP BY bt.type, bt.trans_no";
+       $result = db_query($sql, "Transactions for bank account $acc_id could not be calculated");
+       while ($row = db_fetch($result))
+       {
+               $for_amount += $row['for_amount'];
+               
+               $sql2 = "SELECT SUM(gt.amount) AS amount FROM ".TB_PREF."gl_trans gt
+                       WHERE gt.account = ".$row['account_code']." AND gt.type = ".$row['type']."
+                       AND gt.type_no = ".$row['trans_no']." AND gt.tran_date = '".$row['trans_date']."'
+                       AND gt.person_type_id = ".$row['person_type_id'];
+               $res = db_query($sql2, "Transactions for GL account ".$row['account_code']." could not be calculated");
+               $row2 = db_fetch_row($res);
+               $amount += $row2[0];
+       }       
+       $diff = $amount - (round2($for_amount * $rate, user_price_dec()));
        if ($diff != 0)
        {
                if ($trans_type == null)
index 20022f1b809145dae49d0c2e73210b95ffe40bb5..c1133648eddd578edba73171f450009c6c341760 100644 (file)
@@ -222,8 +222,8 @@ class graph
         // Fill background
         imagefill($this->img, 0, 0, $this->color['background']);
         //imagefilledrectangle($this->img, 0, 0, $this->width, $this->height, $this->color['background']);
-        if ($border)
-               imagerectangle($this->img, 0, 0, $this->width-1, $this->height-1, imagecolorallocate($this->img, 100, 150, 200));
+        //if ($border)
+        //     imagerectangle($this->img, 0, 0, $this->width-1, $this->height-1, imagecolorallocate($this->img, 100, 150, 200));
 
         // Draw title
         if (!empty($this->title))
@@ -396,7 +396,8 @@ class graph
                 imagefilledrectangle($this->img, $x1, $y1, $x2, $y2, $this->color['bars']);
                 $this->_imagestring($this->img, $this->size, ($x2+7), ($y1+2), $this->number_formated($this->y[$i], $this->dec2), $this->color['bars_shadow']);
 
-                $this->_imagestring($this->img, $this->size, ($x1 - ((strlen($parameter)*7)+7)), ($y1+2), $parameter, $this->color['axis_values']);
+                //$this->_imagestring($this->img, $this->size, ($x1 - ((strlen($parameter)*7)+7)), ($y1+2), $parameter, $this->color['axis_values']);
+                $this->_imagestring($this->img, $this->size, 30, ($y1+2), $parameter, $this->color['axis_values']);
             }
         }
 
@@ -811,8 +812,10 @@ class graph
         {
             // Office
             case 1:
-                $this->color['title']       = imagecolorallocate($this->img,  50,  50,  50);
-                $this->color['background']  = imagecolorallocate($this->img, 238, 255, 238);
+                //$this->color['title']       = imagecolorallocate($this->img,  50,  50,  50);
+                $this->color['title']       = imagecolorallocate($this->img,  40,  70,  130);
+                //$this->color['background']  = imagecolorallocate($this->img, 238, 255, 238);
+                $this->color['background']  = imagecolorallocate($this->img, 255, 255, 255);
                 $this->color['axis_values'] = imagecolorallocate($this->img,  50,  50,  50);
                 $this->color['axis_line']   = imagecolorallocate($this->img, 100, 100, 100);
                 $this->color['bg_lines']    = imagecolorallocate($this->img, 220, 220, 220);
@@ -893,11 +896,13 @@ class graph
             // Spring
             case 3:
                 $this->color['title']       = imagecolorallocate($this->img, 250,  50,  50);
-                $this->color['background']  = imagecolorallocate($this->img, 250, 250, 220);
+                //$this->color['background']  = imagecolorallocate($this->img, 250, 250, 220);
+                $this->color['background']  = imagecolorallocate($this->img, 255, 255, 255);
                 $this->color['axis_values'] = imagecolorallocate($this->img,  50, 150,  50);
                 $this->color['axis_line']   = imagecolorallocate($this->img,  50, 100,  50);
                 $this->color['bg_lines']    = imagecolorallocate($this->img, 200, 224, 180);
-                $this->color['bg_legend']   = imagecolorallocate($this->img, 230, 230, 200);
+                //$this->color['bg_legend']   = imagecolorallocate($this->img, 230, 230, 200);
+                $this->color['bg_legend']   = imagecolorallocate($this->img, 255, 255, 255);
 
                 if (preg_match("/^(1|2)$/", $this->type))
                 {
index cd7299a8d18d96c807129f913ce453edc8161f82..a1ac4eb78af9f9bc3ef9a9a1045e38903c49ba53 100644 (file)
@@ -377,7 +377,9 @@ start_table("$table_style width=90%");
 if (!isset($_POST['due_date']) || !is_date($_POST['due_date'])) {
        $_POST['due_date'] = get_invoice_duedate($_SESSION['Items']->customer_id, $_POST['DispatchDate']);
 }
-date_row(_("Invoice Dead-line"), 'due_date', '', null, 0, 0, 0, "class='tableheader2'");
+start_row();
+date_cells(_("Invoice Dead-line"), 'due_date', '', null, 0, 0, 0, "class='tableheader2'");
+end_row();
 end_table();
 
 echo "</td></tr>";