fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [10928] Property: budget handling


From: Sigurd Nes
Subject: [Fmsystem-commits] [10928] Property: budget handling
Date: Tue, 19 Feb 2013 20:05:07 +0000

Revision: 10928
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=10928
Author:   sigurdne
Date:     2013-02-19 20:05:05 +0000 (Tue, 19 Feb 2013)
Log Message:
-----------
Property: budget handling

Modified Paths:
--------------
    trunk/property/inc/class.soproject.inc.php
    trunk/property/inc/class.soworkorder.inc.php
    trunk/property/js/yahoo/project.edit.js
    trunk/property/js/yahoo/workorder.edit.js

Modified: trunk/property/inc/class.soproject.inc.php
===================================================================
--- trunk/property/inc/class.soproject.inc.php  2013-02-19 15:53:22 UTC (rev 
10927)
+++ trunk/property/inc/class.soproject.inc.php  2013-02-19 20:05:05 UTC (rev 
10928)
@@ -233,7 +233,7 @@
                                $uicols['classname'][]          = '';
                                $uicols['sortable'][]           = '';
 
-                               $cols.= ",(fm_project.budget + 
fm_project.reserve) as budget";
+//                             $cols.= ",(fm_project.budget + 
fm_project.reserve) as budget";
                                $cols_return[]                          = 
'budget';
                                $uicols['input_type'][]         = 'text';
                                $uicols['name'][]                       = 
'budget';
@@ -249,9 +249,9 @@
 //                             $cols .= ',sum(fm_workorder.combined_cost) as 
combined_cost';
 //                             $cols_return[] = 'combined_cost';
                                $uicols['input_type'][]         = 'text';
-                               $uicols['name'][]                       = 
'combined_cost';
-                               $uicols['descr'][]                      = 
lang('sum orders');
-                               $uicols['statustext'][]         = lang('Cost - 
either budget or calculation');
+                               $uicols['name'][]                       = 
'obligation';
+                               $uicols['descr'][]                      = 
lang('obligation');
+                               $uicols['statustext'][]         = 
lang('obligation');
                                $uicols['exchange'][]           = false;
                                $uicols['align'][]                      = '';
                                $uicols['datatype'][]           = '';
@@ -693,148 +693,7 @@
                                        $project['actual_cost']         = 0;
                                        $project['billable_hours']      = 0;
 
-
-                                       $sql_workder_date_filter = '';
-                                       if ($start_date)
-                                       {
-                                               $sql_workder_date_filter = "AND 
fm_workorder.start_date >= {$start_date} AND fm_workorder.start_date <= 
{$end_date} ";
-                                       }
-
-/*
-                                       $sql_workder  = 'SELECT 
fm_workorder.id, budget, combined_cost, billable_hours, closed, 
sum(fm_orders_paid_or_pending_view.amount) AS actual_cost'//, contract_sum, 
addition, calculation, budget'
-                                       . " FROM fm_workorder"
-                                       . " {$this->join} fm_workorder_status 
ON fm_workorder.status  = fm_workorder_status.id"
-                                       . " {$this->left_join} 
fm_orders_paid_or_pending_view ON fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id"
-                                       . " WHERE project_id = 
'{$project['project_id']}' {$sql_workder_date_filter}"
-                                       . " GROUP BY fm_workorder.id, budget, 
combined_cost, billable_hours, closed";
-
-*/
-
-                                       $_get_accounting = true;
-                                       if($_get_accounting)
-                                       {
-
-                                       $get_spesific = false;
-                                       if ($filter_year && $filter_year != 
'all')
-                                       {
-                                               $this->db->query("SELECT 
sum(fm_project_budget.budget) AS budget"
-                                                        . " FROM 
fm_project_budget WHERE project_id ='{$project['project_id']}' AND year = 
'{$filter_year}'",__LINE__,__FILE__);
-                                               $this->db->next_record();
-                                               $project['budget'] =  
$this->db->f('budget');
-
-                                               $get_spesific = true;
-                                               $_year_arr = array();
-                                               for ($i=1;$i<14;$i++)
-                                               {
-                                                       $_year_arr[] = 
sprintf("%04s%02s", $filter_year, $i);
-                                               }
-
-                                               $sql_filter_period = 'AND 
(periode IN (' . implode(',', $_year_arr) . ') OR periode IS NULL)';
-
-                                               $sql_workder  = "SELECT 
fm_workorder.id,"// sum(fm_workorder_budget.budget) AS budget, 
sum(fm_workorder_budget.combined_cost) AS combined_cost,"
-                                               . " billable_hours, closed, 
sum(fm_orders_paid_or_pending_view.amount) AS actual_cost"
-                                               . " FROM fm_workorder"
-                                               . " {$this->join} 
fm_workorder_status ON fm_workorder.status  = fm_workorder_status.id"
-                                               . " {$this->join} 
fm_workorder_budget ON (fm_workorder.id = fm_workorder_budget.order_id)"// AND 
year = '{$filter_year}')"
-//                                             . " {$this->join} 
fm_workorder_budget ON (fm_workorder.id = fm_workorder_budget.order_id )"
-//                                             . " {$this->left_join} 
fm_orders_paid_or_pending_view ON (fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id {$sql_filter_period})"
-                                               . " {$this->left_join} 
fm_orders_paid_or_pending_view ON (fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id AND( periode > {$filter_year}00 AND 
periode < {$filter_year}13 OR periode IS NULL))"
-//                                             . " WHERE project_id = 
'{$project['project_id']}' {$sql_workder_date_filter} OR (project_id = 
'{$project['project_id']}' AND fm_workorder_status.closed IS NULL)"
-                                               . " WHERE (project_id = 
'{$project['project_id']}' AND fm_workorder_budget.year = {$filter_year} ) OR 
(project_id = '{$project['project_id']}' AND fm_workorder_status.closed IS 
NULL)"
-                                               . " GROUP BY fm_workorder.id, 
billable_hours, closed";
-//_debug_array($sql_workder);
-
-                                       }
-                                       else
-                                       {
-                                               $this->db->query("SELECT 
sum(fm_project_budget.budget) AS budget"
-                                                . " FROM fm_project_budget 
WHERE active =1 AND project_id ='{$project['project_id']}'",__LINE__,__FILE__);
-                                               $this->db->next_record();
-                                               $project['budget'] =  
$this->db->f('budget');
-
-                                               $sql_workder  = "SELECT 
fm_workorder.id,"// sum(fm_workorder_budget.budget) AS budget, 
sum(fm_workorder_budget.combined_cost) AS combined_cost,"
-                                               . " billable_hours, closed"//, 
sum(fm_orders_paid_or_pending_view.amount) as actual_cost"
-                                               . " FROM fm_workorder"
-                                               . " {$this->join} 
fm_workorder_status ON fm_workorder.status  = fm_workorder_status.id"
-                                       //      . " {$this->left_join} 
fm_workorder_budget ON (fm_workorder.id = fm_workorder_budget.order_id AND 
active = 1)"
-                                       //      . " {$this->left_join} 
fm_orders_paid_or_pending_view ON fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id"
-                                               . " WHERE project_id = 
'{$project['project_id']}' {$sql_workder_date_filter}"
-                                               . " GROUP BY fm_workorder.id, 
billable_hours, closed";
-
-                                       }
-_debug_array($sql_workder);
-
-                                       
$this->db->query($sql_workder,__LINE__,__FILE__);
-
-                                       $_obligation = 0;
-                                       $project['obligation'] = 0;
-
-                                       while ($this->db->next_record())
-                                       {
-                                               if(true)
-                                               {
-                                                       
$this->db2->query("SELECT sum(fm_workorder_budget.budget) AS budget,"
-                                                        . " 
sum(fm_workorder_budget.combined_cost) AS combined_cost"
-                                                        . " FROM 
fm_workorder_budget WHERE active =1 AND order_id =" . 
$this->db->f('id'),__LINE__,__FILE__);
-                                                        
$this->db2->next_record();
-
-                                                       $_combined_cost = 
$this->db2->f('combined_cost');
-                                                       $_budget = 
$this->db2->f('budget');
-
-                                                       
$this->db2->query("SELECT sum(fm_orders_paid_or_pending_view.amount) as 
actual_cost"
-                                                        . " FROM 
fm_orders_paid_or_pending_view WHERE order_id =" . 
$this->db->f('id'),__LINE__,__FILE__);
-                                                        
$this->db2->next_record();
-                                               }
-                                               else
-                                               {
-                                                       $_combined_cost = 
$this->db->f('combined_cost');
-                                                       $_budget = 
$this->db->f('budget');
-                                               }
-
-                                               $_actual_cost =  
$this->db2->f('actual_cost') + (float)$this->db->f('pending_cost');
-                                               if(!$this->db->f('closed'))
-                                               {
-//$test[] = $this->db->f('id');
-
-                                                       if ($filter_year && 
$filter_year != 'all')
-                                                       {
-                                                               if($filter_year 
== date('Y'))
-                                                               {
-                                                                       
$_obligation = $_combined_cost - $_actual_cost;
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               $_obligation = 
$_combined_cost - $_actual_cost;
-                                                       }
-
-//                                                     $_obligation = 
$_combined_cost - $_actual_cost;
-
-                                                       if((int)$_budget >= 0)
-                                                       {
-                                                               if($_obligation 
< 0)
-                                                               {
-                                                                       
$_obligation = 0;
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               if($_obligation 
> 0)
-                                                               {
-                                                                       
$_obligation = 0;
-                                                               }
-                                                       }
-                                                       $project['obligation'] 
+= $_obligation;
-                                               }
-
-                                               $project['billable_hours']      
+= (int)$this->db->f('billable_hours');
-                                               $project['actual_cost']         
+= $_actual_cost;
-                                       }
-
-                                       $project['combined_cost']       = 
$project['obligation'];
-                                       $project['diff'] =  $project['budget'] 
- $project['combined_cost'] - $project['actual_cost'];
                                }
-                               }
 
                                unset($project);
 
@@ -862,6 +721,44 @@
                                }
 
                                $values = 
$this->custom->translate_value($dataset, $location_id);
+                               foreach($values as &$project)
+                               {
+                                       $project['combined_cost'] = 0;
+                                       $project['budget'] = 0;
+                                       $project['obligation'] = 0;
+                                       $project['actual_cost'] = 0;
+
+                                       $budget = 
$this->get_budget($project['project_id']);
+                                       foreach($budget as $entry)
+                                       {
+                                               if ($filter_year && 
$filter_year != 'all')
+                                               {
+                                                       if($entry['year'] == 
$filter_year)
+                                                       {
+                                                               
$project['combined_cost'] += $entry['sum_orders'];
+                                                               
$project['budget'] += $entry['budget'];
+                                                               
$project['obligation']  += $entry['sum_oblications'];
+                                                               
$project['actual_cost'] += $entry['actual_cost'];
+                                                       }
+                                               }
+                                               else 
+                                               {
+                                                       $project['actual_cost'] 
+= $entry['actual_cost'];
+                                                       if($entry['active'])
+                                                       {
+                                                               
$project['combined_cost'] += $entry['sum_orders'];
+                                                               
$project['budget'] += $entry['budget'];
+                                                               
$project['obligation'] += $entry['sum_oblications'];
+                                                       }
+                                               }
+                                       }
+
+                                       $_diff_start = abs($project['budget']) 
> 0 ? $project['budget'] : $project['combined_cost'];
+                                       $project['diff'] = $_diff_start - 
$project['obligation'] - $project['actual_cost'];
+
+                               }
+
+//_debug_array($values);
 //_debug_array($test);
                                return $values;
                        }
@@ -984,15 +881,20 @@
 
                        while ($this->db->next_record())
                        {
-                               $values[] = array(
-                                       'workorder_id'          => 
$this->db->f('workorder_id'),
-                                       'title'                         => 
$this->db->f('title',true),
-                                       'vendor_id'                     => 
$this->db->f('vendor_id'),
-                                       'charge_tenant'         => 
$this->db->f('charge_tenant'),
-                                       'status'                        => 
$this->db->f('status'),
-                                       'closed'                        => 
!!$this->db->f('closed'),
-                                       'b_account_id'          => 
$this->db->f('b_account_id'),
-                                       'addition_percentage'   => 
(int)$this->db->f('addition')
+                               $values[] = array
+                               (
+                                       'workorder_id'                  => 
$this->db->f('workorder_id'),
+                                       'title'                                 
=> $this->db->f('title',true),
+                                       'vendor_id'                             
=> $this->db->f('vendor_id'),
+                                       'charge_tenant'                 => 
$this->db->f('charge_tenant'),
+                                       'status'                                
=> $this->db->f('status'),
+                                       'closed'                                
=> !!$this->db->f('closed'),
+                                       'b_account_id'                  => 
$this->db->f('b_account_id'),
+                                       'addition_percentage'   => 
(int)$this->db->f('addition'),
+                                       'combined_cost'                 => 0,
+                                       'budget'                                
=> 0,
+                                       'obligation'                    => 0,
+                                       'actual_cost'                   => 0
                                );
                                $_orders[] = $this->db->f('workorder_id');
                        }
@@ -1015,18 +917,21 @@
                                        {
                                                if($budget['year'] == $year)
                                                {
+                                                       $entry['actual_cost'] 
+= $budget['actual_cost'];
                                                        $entry['combined_cost'] 
+= $budget['sum_orders'];
                                                        $entry['budget'] += 
$budget['budget'];
                                                        $entry['obligation']  
+= $budget['sum_oblications'];
-                                                       $entry['actual_cost'] 
+= $budget['actual_cost'];
                                                }
                                        }
                                        else
                                        {
-                                               $entry['combined_cost'] += 
$budget['sum_orders'];
-                                               $entry['budget'] += 
$budget['budget'];
-                                               $entry['obligation'] += 
$budget['sum_oblications'];
                                                $entry['actual_cost'] += 
$budget['actual_cost'];
+                                               if($budget['active'])
+                                               {
+                                                       $entry['combined_cost'] 
+= $budget['sum_orders'];
+                                                       $entry['budget'] += 
$budget['budget'];
+                                                       $entry['obligation'] += 
$budget['sum_oblications'];
+                                               }
                                        }
                                }
 

Modified: trunk/property/inc/class.soworkorder.inc.php
===================================================================
--- trunk/property/inc/class.soworkorder.inc.php        2013-02-19 15:53:22 UTC 
(rev 10927)
+++ trunk/property/inc/class.soworkorder.inc.php        2013-02-19 20:05:05 UTC 
(rev 10928)
@@ -753,72 +753,7 @@
                        $this->db->set_fetch_single(false);
 
                        $_actual_cost_arr = array();
-                       if($workorder_list)
-                       {
-/*
-                               $sql_cost = "SELECT fm_workorder.id as 
order_id,closed, sum(amount) AS actual_cost"
-                               . " FROM fm_workorder {$this->left_join} 
fm_orders_paid_or_pending_view ON fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id"
-                               . " {$this->join} fm_workorder_status ON 
fm_workorder.status = fm_workorder_status.id"
-                               . ' WHERE fm_workorder.id IN (' . implode(',', 
$_order_list ) .') GROUP BY fm_workorder.id, closed';
-*/
-                               $config = 
CreateObject('phpgwapi.config','property');
-                               $config->read_repository();
 
-
-                               
if(isset($config->config_data['location_at_workorder']) && 
$config->config_data['location_at_workorder'])
-                               {
-                                       $_join_district =       "{$this->join} 
fm_locations ON fm_workorder.location_code = fm_locations.location_code"
-                                                                               
. " {$this->join} fm_location1 ON fm_location1.loc1 = fm_locations.loc1";
-                               }
-                               else
-                               {
-                                       $_join_district = "{$this->join} 
fm_project ON fm_project.id = fm_workorder.project_id"
-                                                                               
. " {$this->join} fm_location1 ON fm_project.loc1 = fm_location1.loc1";
-                               }
-
-
-                               $sql_cost = "SELECT fm_workorder.id as 
order_id,closed, fm_location1.mva,"
-                               . " sum(fm_workorder_budget.budget) AS budget, 
sum(fm_workorder_budget.combined_cost) AS combined_cost"
-                               . " FROM fm_workorder" // {$this->left_join} 
fm_orders_paid_or_pending_view ON fm_workorder.id = 
fm_orders_paid_or_pending_view.order_id"
-                               . " {$this->join} fm_workorder_status ON 
fm_workorder.status = fm_workorder_status.id"
-                               . " {$this->left_join} fm_workorder_budget ON 
(fm_workorder.id = fm_workorder_budget.order_id AND fm_workorder_budget.active 
= 1)"
-                               . " {$_join_district}"
-                               . ' WHERE fm_workorder.id IN (' . implode(',', 
$_order_list ) .')'
-                               . " GROUP BY fm_workorder.id,closed, 
fm_location1.mva";
-
-
-                               $_paid_filter = '';
-                               if ($filter_year && $filter_year != 'all')
-                               {
-                                       $_paid_filter = " AND (periode > 
{$filter_year}00 AND periode < {$filter_year}13 OR periode IS NULL)";
-                               }
-
-                               $_get_accounting = true;
-                               if($_get_accounting)
-                               {
-                               $this->db->query($sql_cost,__LINE__,__FILE__);
-                               while ($this->db->next_record())
-                               {
-                                       
$_actual_cost_arr[$this->db->f('order_id')] = array
-                                       (
-                                               'actual_cost'   => 
$this->db->f('actual_cost'),
-                                               'budget'                => 
$this->db->f('budget'),
-                                               'combined_cost' => 
$this->db->f('combined_cost'),
-                                               'closed'                => 
!!$this->db->f('closed'),
-                                               'mva'                   => 
(int)$this->db->f('mva'),
-                                       );
-
-                                       $this->db2->query('SELECT 
sum(fm_orders_paid_or_pending_view.amount) as actual_cost'
-                                       . ' FROM fm_orders_paid_or_pending_view 
WHERE order_id = '. $this->db->f('order_id') . $_paid_filter,__LINE__,__FILE__);
-                                       $this->db2->next_record();
-                                       
$_actual_cost_arr[$this->db->f('order_id')]['actual_cost'] = 
$this->db2->f('actual_cost');
-                               }
-
-                               unset($_order_list);
-                               }
-
-                       }
-
                        $this->db->query('SELECT id, percent FROM 
fm_ecomva',__LINE__,__FILE__);
                        $_taxcode = array(0 => 0);
                        while ($this->db->next_record())
@@ -835,40 +770,10 @@
                                {
                                        $workorder[$cols_return[$i]] = 
$this->db->f($cols_return[$i]);
                                }
-                               $workorder['actual_cost'] = 0;
-                               $workorder['obligation'] = 0;
-
-                               if 
(isset($_actual_cost_arr[$workorder['workorder_id']]))
-                               {
-                                       $workorder['budget'] = 
$_actual_cost_arr[$workorder['workorder_id']]['budget'];
-                                       $workorder['combined_cost'] = 
$_actual_cost_arr[$workorder['workorder_id']]['combined_cost'];
-
-                                       $_combined_cost = 
$workorder['combined_cost'];
-
-                                       $_taxfactor = 1 + 
($_taxcode[$_actual_cost_arr[$workorder['workorder_id']]['mva']]/100);
-                                       $workorder['actual_cost'] =  
round($_actual_cost_arr[$workorder['workorder_id']]['actual_cost']/$_taxfactor);
-
-                                       
if(!$_actual_cost_arr[$workorder['workorder_id']]['closed'])
-                                       {
-                                               $_obligation = $_combined_cost 
- $workorder['actual_cost'];
-                                               if((int)$workorder['budget'] >= 
0)
-                                               {
-                                                       if($_obligation < 0)
-                                                       {
-                                                               $_obligation = 
0;
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       if($_obligation > 0)
-                                                       {
-                                                               $_obligation = 
0;
-                                                       }
-                                               }
-                                               $workorder['obligation'] = 
$_obligation;
-                                       }
-                               }
-
+                               $workorder['actual_cost']       = 0;
+                               $workorder['obligation']        = 0;
+                               $workorder['combined_cost']     = 0;
+                               $workorder['budget']            = 0;
 //---------
                                $workorder['grants'] = 
(int)$this->grants[$this->db->f('project_owner')];
 
@@ -881,9 +786,38 @@
                                        $workorder['loc' . ($m+1)] = 
$location[$m];
                                        $workorder['query_location']['loc' . 
($m+1)]=implode("-", array_slice($location, 0, ($m+1)));
                                }
+                       }
+                       reset($workorder_list);
 
+                       foreach($workorder_list as &$workorder)
+                       {
+                               $order_budget = 
$this->get_budget($workorder['workorder_id']);
+                               foreach($order_budget as $entry)
+                               {
+                                       if ($filter_year && $filter_year != 
'all')
+                                       {
+                                               if($entry['year'] == 
$filter_year)
+                                               {
+                                                       
$workorder['combined_cost'] += $entry['sum_orders'];
+                                                       $workorder['budget'] += 
$entry['budget'];
+                                                       
$workorder['obligation']  += $entry['sum_oblications'];
+                                                       
$workorder['actual_cost'] += $entry['actual_cost'];
+                                               }
+                                       }
+                                       else 
+                                       {
+                                               $workorder['actual_cost'] += 
$entry['actual_cost'];
+                                               if($entry['active'])
+                                               {
+                                                       
$workorder['combined_cost'] += $entry['sum_orders'];
+                                                       $workorder['budget'] += 
$entry['budget'];
+                                                       
$workorder['obligation'] += $entry['sum_oblications'];
+                                               }
+                                       }
+                               }
 
-                               $workorder['diff'] =  $workorder['budget'] - 
$workorder['obligation'] - $workorder['actual_cost'];
+                               $_diff_start = abs($workorder['budget']) > 0 ? 
$workorder['budget'] : $workorder['combined_cost'];
+                               $workorder['diff'] = $_diff_start - 
$workorder['obligation'] - $workorder['actual_cost'];
                        }
 
                        return $workorder_list;

Modified: trunk/property/js/yahoo/project.edit.js
===================================================================
--- trunk/property/js/yahoo/project.edit.js     2013-02-19 15:53:22 UTC (rev 
10927)
+++ trunk/property/js/yahoo/project.edit.js     2013-02-19 20:05:05 UTC (rev 
10928)
@@ -178,7 +178,7 @@
                tmp_sum1 = getTotalSum_active('budget',0,paginator,datatable);
  //            tmp_sum2 = 
getTotalSum_active('sum_orders',0,paginator,datatable);
                tmp_sum3 = 
getTotalSum_active('sum_oblications',0,paginator,datatable);
-               tmp_sum4 = 
getTotalSum_active('actual_cost',0,paginator,datatable);
+               tmp_sum4 = getTotalSum('actual_cost',0,paginator,datatable);
                tmp_sum5 = getTotalSum_active('diff',0,paginator,datatable);
                tmp_sum6 = 
getTotalSum_active('deviation',0,paginator,datatable);
 

Modified: trunk/property/js/yahoo/workorder.edit.js
===================================================================
--- trunk/property/js/yahoo/workorder.edit.js   2013-02-19 15:53:22 UTC (rev 
10927)
+++ trunk/property/js/yahoo/workorder.edit.js   2013-02-19 20:05:05 UTC (rev 
10928)
@@ -176,7 +176,7 @@
                tmp_sum1 = getTotalSum_active('budget',0,paginator,datatable);
                tmp_sum2 = 
getTotalSum_active('sum_orders',0,paginator,datatable);
                tmp_sum3 = 
getTotalSum_active('sum_oblications',0,paginator,datatable);
-               tmp_sum4 = 
getTotalSum_active('actual_cost',0,paginator,datatable);
+               tmp_sum4 = getTotalSum('actual_cost',0,paginator,datatable);
                tmp_sum5 = getTotalSum_active('diff',0,paginator,datatable);
                tmp_sum6 = 
getTotalSum_active('deviation',0,paginator,datatable);
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]