[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [10928] Property: budget handling,
Sigurd Nes <=