fmsystem-commits
[Top][All Lists]
Advanced

[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"/>




reply via email to

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