[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [10742] property: filter orders on year in project::e
From: |
Sigurd Nes |
Subject: |
[Fmsystem-commits] [10742] property: filter orders on year in project::edit() |
Date: |
Sun, 03 Feb 2013 13:34:54 +0000 |
Revision: 10742
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=10742
Author: sigurdne
Date: 2013-02-03 13:34:51 +0000 (Sun, 03 Feb 2013)
Log Message:
-----------
property: filter orders on year in project::edit()
Modified Paths:
--------------
trunk/property/inc/class.boproject.inc.php
trunk/property/inc/class.soproject.inc.php
trunk/property/inc/class.uiproject.inc.php
trunk/property/js/portico/ajax_project_edit.js
trunk/property/templates/base/project.xsl
Modified: trunk/property/inc/class.boproject.inc.php
===================================================================
--- trunk/property/inc/class.boproject.inc.php 2013-02-02 16:13:28 UTC (rev
10741)
+++ trunk/property/inc/class.boproject.inc.php 2013-02-03 13:34:51 UTC (rev
10742)
@@ -69,10 +69,10 @@
$this->use_session = true;
}
-
-
+
+
$default_filter_year =
isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_project_filter_year'])
&&
$GLOBALS['phpgw_info']['user']['preferences']['property']['default_project_filter_year']
== 'current_year' ? date('Y') : 'all';
-
+
$start =
phpgw::get_var('start', 'int', 'REQUEST', 0);
$query =
phpgw::get_var('query');
$sort =
phpgw::get_var('sort');
@@ -242,7 +242,7 @@
'id' => 3,
'name' => lang('buffer')
),
-
+
);
return $this->bocommon->select_list($selected, $values);
}
@@ -429,7 +429,7 @@
else
{
return $criteria;
- }
+ }
}
function select_key_location_list($selected='')
@@ -517,7 +517,7 @@
)
),
'text'
=> $origin[0]['data'][0]['id'],
- 'statustext' =>
$origin[0]['data'][0]['statustext'],
+ 'statustext' =>
$origin[0]['data'][0]['statustext'],
);
}
}
@@ -527,13 +527,6 @@
function read_single($project_id = 0, $values = array(), $view
= false)
{
- $contacts = CreateObject('property.sogeneric');
- $contacts->get_location_info('vendor',false);
-
- $config =
CreateObject('phpgwapi.config','property');
- $config->read();
- $tax =
1+(isset($config->config_data['fm_tax'])?$config->config_data['fm_tax']:0)/100;
-
$values['attributes'] = $this->custom->find('property',
'.project', 0, '', 'ASC', 'attrib_sort', true, true);
if($project_id)
{
@@ -550,71 +543,7 @@
$dateformat =
$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];
$values['start_date'] =
$GLOBALS['phpgw']->common->show_date($values['start_date'],$dateformat);
$values['end_date'] =
isset($values['end_date']) && $values['end_date'] ?
$GLOBALS['phpgw']->common->show_date($values['end_date'],$dateformat) : '';
- $workorder_data =
$this->so->project_workorder_data($project_id);
- $sum_deviation = 0;
-//combined_cost
-//diff
-
- for ($i=0;$i<count($workorder_data);$i++)
- {
- $sum_deviation+=
$workorder_data[$i]['deviation'];
-
-/*
- $_cost = (float)number_format(0, 2, ',', '');
- if(abs($workorder_data[$i]['contract_sum']) > 0)
- {
- $_cost =
(float)number_format($workorder_data[$i]['contract_sum'] *
(1+(((int)$workorder_data[$i]['addition_percentage'])/100)), 2, ',', '');
- }
- else if(abs($workorder_data[$i]['calculation'])
> 0)
- {
- $_cost =
(float)number_format($workorder_data[$i]['calculation'] * $tax, 2, ',', '');
- }
- else if(abs($workorder_data[$i]['budget']) > 0)
- {
- $_cost =
(float)number_format($workorder_data[$i]['budget'] * $tax, 2, ',', '');
- }
-*/
- $values['workorder_budget'][$i]['cost'] =
$workorder_data[$i]['combined_cost'];
- $values['workorder_budget'][$i]['actual_cost']
= $workorder_data[$i]['actual_cost'];
-
-
$values['workorder_budget'][$i]['title']=htmlspecialchars_decode($workorder_data[$i]['title']);
-
$values['workorder_budget'][$i]['workorder_id']=$workorder_data[$i]['workorder_id'];
- //
$values['workorder_budget'][$i]['contract_sum']=(float)number_format($workorder_data[$i]['contract_sum']
* (1+(((int)$workorder_data[$i]['addition_percentage'])/100)), 2, ',', '');
- $values['workorder_budget'][$i]['budget']=
$workorder_data[$i]['budget'];
- //
$values['workorder_budget'][$i]['calculation']=(float)number_format($workorder_data[$i]['calculation']*$tax,
2, ',', '');
-
$values['workorder_budget'][$i]['charge_tenant'] =
$workorder_data[$i]['charge_tenant'];
- $values['workorder_budget'][$i]['status'] =
$workorder_data[$i]['status'];
- // $values['workorder_budget'][$i]['actual_cost']
= (float)number_format($workorder_data[$i]['actual_cost'] ?
$workorder_data[$i]['actual_cost'] : 0, 2, ',', '');
- $values['workorder_budget'][$i]['b_account_id']
= $workorder_data[$i]['b_account_id'];
-// $values['workorder_budget'][$i]['paid_percent']
= (int)$workorder_data[$i]['paid_percent'];
-
$values['workorder_budget'][$i]['addition_percentage'] =
$workorder_data[$i]['addition_percentage'];
-
- $values['workorder_budget'][$i]['obligation'] =
$workorder_data[$i]['obligation'];
-
-//
$values['workorder_budget'][$i]['combined_cost'] =
$workorder_data[$i]['closed'] ? 0 : ($_cost -
$workorder_data[$i]['actual_cost']);
- $values['workorder_budget'][$i]['diff'] =
$workorder_data[$i]['diff'];
-
- if(isset($workorder_data[$i]['vendor_id']) &&
$workorder_data[$i]['vendor_id'])
- {
- $vendor['attributes'] =
$this->custom->find('property','.vendor', 0, '', 'ASC', 'attrib_sort', true,
true);
-
- $vendor =
$contacts->read_single(array('id' => $workorder_data[$i]['vendor_id']),
$vendor);
- foreach($vendor['attributes'] as
$attribute)
- {
-
if($attribute['name']=='org_name')
- {
-
$values['workorder_budget'][$i]['vendor_name']=$attribute['value'];
- break;
- }
- }
- }
- }
- if($workorder_data)
- {
- $values['deviation']= $sum_deviation;
- }
-
if($values['location_code'])
{
$values['location_data'] =
execMethod('property.solocation.read_single', $values['location_code']);
@@ -654,6 +583,48 @@
return $values;
}
+ public function get_orders($data)
+ {
+ $contacts = CreateObject('property.sogeneric');
+ $contacts->get_location_info('vendor',false);
+
+ static $vendor_name = array();
+ $values = $this->so->project_workorder_data($data);
+
+ $sum_deviation = 0;
+ foreach ($values as &$entry)
+ {
+ $sum_deviation+= $entry['deviation'];
+
+ $entry['cost'] = $entry['combined_cost'];
+
$entry['title']=htmlspecialchars_decode($entry['title']);
+
+ if(isset($entry['vendor_id']) &&
$entry['vendor_id'])
+ {
+
if(isset($vendor_name[$entry['vendor_id']]) &&
$vendor_name[$entry['vendor_id']])
+ {
+ $entry['vendor_name'] =
$vendor_name[$entry['vendor_id']];
+ }
+ else
+ {
+ $vendor['attributes'] =
$this->custom->find('property','.vendor', 0, '', 'ASC', 'attrib_sort', true,
true);
+
+ $vendor =
$contacts->read_single(array('id' => $entry['vendor_id']), $vendor);
+ foreach($vendor['attributes']
as $attribute)
+ {
+
if($attribute['name']=='org_name')
+ {
+
$entry['vendor_name'] = $attribute['value'];
+
$vendor_name[$entry['vendor_id']] = $attribute['value'];
+ break;
+ }
+ }
+ }
+ }
+ }
+ return $values;
+ }
+
function read_single_mini($project_id)
{
if($project = $this->so->read_single($project_id))
@@ -694,7 +665,7 @@
$historylog =
CreateObject('property.historylog','project');
$history_array =
$historylog->return_array(array('O'),array(),'','',$id);
$i=0;
- foreach ($history_array as $value)
+ foreach ($history_array as $value)
{
$record_history[$i]['value_date'] =
$GLOBALS['phpgw']->common->show_date($value['datetime']);
@@ -938,4 +909,10 @@
$values = $this->so->get_filter_year_list();
return $this->bocommon->select_list($selected, $values);
}
+
+ public function get_order_time_span($id)
+ {
+ $values = $this->so->get_order_time_span($id);
+ return $this->bocommon->select_list(date('Y'), $values);
+ }
}
Modified: trunk/property/inc/class.soproject.inc.php
===================================================================
--- trunk/property/inc/class.soproject.inc.php 2013-02-02 16:13:28 UTC (rev
10741)
+++ trunk/property/inc/class.soproject.inc.php 2013-02-03 13:34:51 UTC (rev
10742)
@@ -958,15 +958,27 @@
return $this->db->f('power_meter');
}
- function project_workorder_data($project_id = 0)
+ function project_workorder_data($data = array())
{
- $project_id = (int) $project_id;
+ $project_id = (int) $data['project_id'];
+ $year = (int) $data['year'];
$values = array();
- $this->db->query("SELECT fm_workorder.title,
fm_workorder.actual_cost, fm_workorder.id as
workorder_id,fm_workorder.contract_sum,"
+
+ $filter_year = '';
+ if($year)
+ {
+// $start_date = mktime(0, 0, 0, 1, 1, $year)
+// $end_date = mktime(23, 59, 59, 12, 31, $year)
+ $filter_year = "AND fm_workorder_budget.year =
{$year}";
+ }
+
+ $this->db->query("SELECT DISTINCT fm_workorder.title,
fm_workorder.actual_cost, fm_workorder.id as
workorder_id,fm_workorder.contract_sum,"
. " fm_workorder.vendor_id,
fm_workorder.calculation,fm_workorder.rig_addition,fm_workorder.addition,fm_workorder.deviation,fm_workorder.charge_tenant,"
. " fm_workorder_status.descr as status,
fm_workorder_status.closed, fm_workorder.account_id as b_account_id"
- . " FROM fm_workorder {$this->join}
fm_workorder_status ON fm_workorder.status = fm_workorder_status.id"
- . " WHERE
project_id={$project_id}",__LINE__,__FILE__);
+ . " 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"
+ . " WHERE project_id={$project_id}
{$filter_year}",__LINE__,__FILE__);
$_orders = array();
@@ -3039,4 +3051,30 @@
return $year_list;
}
+
+ public function get_order_time_span($id)
+ {
+ if(!$id)
+ {
+ return array();
+ }
+ $year_list = array();
+ $sql = 'SELECT min(start_date) AS start_date,
max(end_date) AS end_date FROM fm_workorder WHERE project_id = ' . (int) $id;
+ $this->db->query($sql,__LINE__,__FILE__);
+ if($this->db->next_record())
+ {
+ $start_year = $this->db->f('start_date') ?
date('Y',$this->db->f('start_date')) : date('Y');
+ $end_year = $this->db->f('end_date') ?
date('Y',$this->db->f('end_date')) : date('Y');
+
+ for ($i=$start_year;$i< ($end_year+1) ;$i++)
+ {
+ $year_list[] = array
+ (
+ 'id' => $i,
+ 'name' => $i
+ );
+ }
+ }
+ return $year_list;
+ }
}
Modified: trunk/property/inc/class.uiproject.inc.php
===================================================================
--- trunk/property/inc/class.uiproject.inc.php 2013-02-02 16:13:28 UTC (rev
10741)
+++ trunk/property/inc/class.uiproject.inc.php 2013-02-03 13:34:51 UTC (rev
10742)
@@ -67,7 +67,8 @@
'columns' => true,
'bulk_update_status' => true,
'project_group' => true,
- 'view_file' => true
+ 'view_file' => true,
+ 'get_orders' => true
);
function property_uiproject()
@@ -1871,11 +1872,13 @@
//_debug_array($values['workorder_budget']);die();
+ $content_orders = $this->get_orders($id, date('Y'));
+ //FIXME: deviation from this one
$datavalues[1] = array
(
'name'
=> "1",
- 'values'
=> json_encode($values['workorder_budget']),
- 'total_records' =>
count($values['workorder_budget']),
+ 'values'
=> json_encode($content_orders),
+ 'total_records' =>
count($content_orders),
'edit_action' =>
json_encode($GLOBALS['phpgw']->link('/index.php',array('menuaction'=>
'property.uiworkorder.edit'))),
'is_paginator' => 1,
'footer'
=> 0
@@ -2105,6 +2108,7 @@
'origin_id' => $id
);
}
+
$selected_tab = phpgw::get_var('tab', 'string',
'REQUEST', 'general');
$project_type_id = isset($values['project_type_id']) &&
$values['project_type_id'] ? $values['project_type_id'] :
$GLOBALS['phpgw_info']['user']['preferences']['property']['default_project_type'];
@@ -2131,6 +2135,7 @@
'value_origin_type'
=> isset($origin)?$origin:'',
'value_origin_id'
=> isset($origin_id)?$origin_id:'',
'year_list'
=> array('options' => $year_list),
+ 'order_time_span'
=> array('options' => $this->bo->get_order_time_span($id)),
'periodization_list'
=> array('options' => $periodization_list),
'lang_select_request'
=> lang('Select request'),
'lang_select_request_statustext'
=> lang('Add request for this project'),
@@ -2307,6 +2312,35 @@
$GLOBALS['phpgw']->js->validate_file( 'portico',
'ajax_project_edit', 'property' );
}
+
+ public function get_orders($project_id = 0, $year = 0)
+ {
+ if(!$project_id)
+ {
+ $project_id = phpgw::get_var('project_id',
'int');
+ }
+ if(!$year)
+ {
+ $year = phpgw::get_var('year', 'int');
+ }
+
+ $content = $this->bo->get_orders(array('project_id'=>
$project_id,'year'=> $year));
+
+ if( phpgw::get_var('phpgw_return_as') == 'json' )
+ {
+
+ if(count($content))
+ {
+ return json_encode($content);
+ }
+ else
+ {
+ return "";
+ }
+ }
+ return $content;
+ }
+
function delete()
{
if(!$this->acl_delete)
Modified: trunk/property/js/portico/ajax_project_edit.js
===================================================================
--- trunk/property/js/portico/ajax_project_edit.js 2013-02-02 16:13:28 UTC
(rev 10741)
+++ trunk/property/js/portico/ajax_project_edit.js 2013-02-03 13:34:51 UTC
(rev 10742)
@@ -23,3 +23,12 @@
});
});
+$(document).ready(function(){
+
+ $("#order_time_span").change(function(){
+ var oArgs = {menuaction:'property.uiproject.get_orders',
project_id:project_id, year:$(this).val()};
+ var requestUrl = phpGWLink('index.php', oArgs, true);
+ execute_async(myDataTable_1, oArgs);
+ });
+});
+
Modified: trunk/property/templates/base/project.xsl
===================================================================
--- trunk/property/templates/base/project.xsl 2013-02-02 16:13:28 UTC (rev
10741)
+++ trunk/property/templates/base/project.xsl 2013-02-03 13:34:51 UTC (rev
10742)
@@ -41,6 +41,7 @@
document.add_sub_entry_form.submit();
}
var project_type_id = '<xsl:value-of
select="project_type_id"/>';
+ var project_id = '<xsl:value-of
select="value_project_id"/>';
function set_tab(tab)
{
@@ -579,6 +580,15 @@
</xsl:when>
<xsl:otherwise>
<td>
+
<select id = "order_time_span" name="order_time_span">
+
<xsl:attribute name="title">
+
<xsl:value-of select="php:function('lang', 'select')"/>
+
</xsl:attribute>
+
<option value="0">
+
<xsl:value-of select="php:function('lang',
'select')"/>
+
</option>
+
<xsl:apply-templates select="order_time_span/options"/>
+
</select>
<!-- DataTable -->
<div id="paging_1"> </div>
<div id="datatable-container_1"/>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [10742] property: filter orders on year in project::edit(),
Sigurd Nes <=