fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [13178] Syncromind: Merge 12988:13177 from trunk


From: Sigurd Nes
Subject: [Fmsystem-commits] [13178] Syncromind: Merge 12988:13177 from trunk
Date: Sun, 10 May 2015 18:19:26 +0000

Revision: 13178
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=13178
Author:   sigurdne
Date:     2015-05-10 18:19:25 +0000 (Sun, 10 May 2015)
Log Message:
-----------
Syncromind: Merge 12988:13177 from trunk

Modified Paths:
--------------
    branches/dev-syncromind/controller/inc/class.socheck_list.inc.php
    branches/dev-syncromind/controller/inc/class.socontrol.inc.php
    branches/dev-syncromind/controller/inc/class.uicomponent.inc.php
    
branches/dev-syncromind/controller/inc/component/class.check_list_status_manager.inc.php
    branches/dev-syncromind/controller/inc/component/class.year_calendar.inc.php
    branches/dev-syncromind/controller/inc/model/class.check_list.inc.php
    branches/dev-syncromind/controller/setup/phpgw_no.lang
    branches/dev-syncromind/controller/setup/setup.inc.php
    branches/dev-syncromind/controller/setup/tables_current.inc.php
    branches/dev-syncromind/controller/setup/tables_update.inc.php
    branches/dev-syncromind/controller/templates/base/component.xsl
    branches/dev-syncromind/property/inc/class.boentity.inc.php
    branches/dev-syncromind/property/inc/class.bolookup.inc.php
    branches/dev-syncromind/property/inc/class.soinvoice.inc.php
    branches/dev-syncromind/property/inc/class.sotts.inc.php
    branches/dev-syncromind/property/inc/class.uientity.inc.php
    branches/dev-syncromind/property/inc/class.uilookup.inc.php
    branches/dev-syncromind/property/js/portico/entity.edit.js
    branches/dev-syncromind/property/setup/tables_current.inc.php
    branches/dev-syncromind/property/setup/tables_update.inc.php
    branches/dev-syncromind/property/templates/base/entity.xsl
    branches/dev-syncromind/rental/inc/class.uibilling.inc.php

Property Changed:
----------------
    branches/dev-syncromind/


Property changes on: branches/dev-syncromind
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/stavangerkommune:12743-12875,12986
/trunk:12111-12211,12213-12246,12250-12363,12366-12405,12407-12435,12437-12462,12464-12527,12530-12602,12604-12670,12672-12683,12686-12750,12753-12785,12787-12974,12987
   + /branches/stavangerkommune:12743-12875,12986
/trunk:12111-12211,12213-12246,12250-12363,12366-12405,12407-12435,12437-12462,12464-12527,12530-12602,12604-12670,12672-12683,12686-12750,12753-12785,12787-12974,12987,12989-13177

Modified: branches/dev-syncromind/controller/inc/class.socheck_list.inc.php
===================================================================
--- branches/dev-syncromind/controller/inc/class.socheck_list.inc.php   
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/inc/class.socheck_list.inc.php   
2015-05-10 18:19:25 UTC (rev 13178)
@@ -629,16 +629,19 @@
         * @param $repeat_type_expr repeat type expression
         * @return array with check list objects
        */
-       function get_check_lists_for_control_and_component( $control_id, 
$location_id, $component_id, $from_date_ts, $to_date_ts, $repeat_type = null )
+       function get_check_lists_for_control_and_component( $control_id, 
$location_id, $component_id, $from_date_ts, $to_date_ts, $repeat_type = null, 
$user_id=0 )
        {
                $control_id = (int) $control_id;
                $location_id = (int) $location_id;
                $component_id = (int) $component_id;
+               $user_id = (int) $user_id;
 
-               $sql =  "SELECT cl.id as cl_id, cl.status as cl_status, 
cl.comment as cl_comment, deadline, planned_date, completed_date, assigned_to, 
";
-               $sql .= "cl.component_id as cl_component_id, cl.location_id as 
cl_location_id, cl.location_code as cl_location_code, num_open_cases, 
num_pending_cases ,cl.serie_id ";
+               $sql =  "SELECT cl.id as cl_id, cl.status as cl_status, 
cl.comment as cl_comment, deadline, planned_date, completed_date, 
cl.assigned_to, ";
+               $sql .= "cl.component_id as cl_component_id, cl.location_id as 
cl_location_id,"
+               . " cl.location_code as cl_location_code, num_open_cases, 
num_pending_cases ,cl.serie_id, cs.repeat_type ";
                $sql .= "FROM controller_check_list cl ";
                $sql .= "LEFT JOIN controller_control c on cl.control_id = c.id 
";
+               $sql .= "LEFT JOIN controller_control_serie cs on cl.serie_id = 
cs.id ";
                $sql .= "WHERE cl.control_id = {$control_id} ";
                $sql .= "AND cl.component_id = {$component_id} ";
                $sql .= "AND cl.location_id = {$location_id} ";
@@ -647,9 +650,14 @@
                {
                        $sql .= "AND c.repeat_type = $repeat_type ";
                }
+
+//             if($user_id)
+//             {
+//                     $sql .= " AND assigned_to = {$user_id} ";
+//             }
                
                $sql .= "AND deadline BETWEEN $from_date_ts AND $to_date_ts ";
-               
+//             _debug_array($sql);
                $this->db->query($sql);
                
                $check_lists_array = array();
@@ -668,6 +676,8 @@
                        
$check_list->set_num_pending_cases($this->unmarshal($this->db->f('num_pending_cases'),
 'int'));
                        
$check_list->set_assigned_to($this->unmarshal($this->db->f('assigned_to'), 
'int'));
                        $check_list->set_serie_id($this->db->f('serie_id'));
+                       
$check_list->set_repeat_type($this->db->f('repeat_type'));
+
                        
                        $check_lists_array[] = $check_list;
                }

Modified: branches/dev-syncromind/controller/inc/class.socontrol.inc.php
===================================================================
--- branches/dev-syncromind/controller/inc/class.socontrol.inc.php      
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/inc/class.socontrol.inc.php      
2015-05-10 18:19:25 UTC (rev 13178)
@@ -657,16 +657,17 @@
                 * @param $control_id control id
                 * @return array with arrays of component info  
                 */
-               function get_components_for_control($control_id, $location_id = 
0, $component_id = 0, $serie_id = 0)
+               function get_components_for_control($control_id, $location_id = 
0, $component_id = 0, $serie_id = 0, $user_id = 0)
                {
                        $control_id = (int) $control_id;
                        $serie_id = (int) $serie_id;
+                       $user_id = (int) $user_id;
 
                        $controls_array = array();
 
                        $sql =  "SELECT ccl.control_id, ccl.component_id as 
component_id,"
                        . " ccl.location_id as location_id, ccs.id as serie_id, 
ccs.assigned_to, ccs.start_date,"
-                       . " ccs.repeat_type, ccs.repeat_interval, 
ccs.service_time, ccs.controle_time,"
+                       . " ccs.repeat_type, ccs.repeat_interval, 
ccs.service_time, ccs.controle_time, ccs.enabled as serie_enabled,"
                        . " bim_type.description, bim_item.location_code ";
 
                        $sql .= "FROM controller_control_component_list 
ccl,controller_control_serie ccs, fm_bim_item bim_item, fm_bim_type bim_type ";
@@ -686,7 +687,11 @@
                        {
                                $sql .= " AND ccs.id = {$serie_id}";
                        }
-
+                       if($user_id)
+                       {
+                               $sql .= " AND ccs.assigned_to = {$user_id}";
+                       }
+//     _debug_array($sql);
                        $this->db->query($sql);
 
                        while($this->db->next_record())
@@ -699,7 +704,8 @@
                                        'repeat_type'           => 
$this->db->f('repeat_type'),
                                        'repeat_interval'       => 
$this->db->f('repeat_interval'),
                                        'service_time'          => 
$this->db->f('service_time'),
-                                       'controle_time'         => 
$this->db->f('controle_time')
+                                       'controle_time'         => 
$this->db->f('controle_time'),
+                                       'serie_enabled'         => 
(int)$this->db->f('serie_enabled')
                                );
 
                                $component = new controller_component();
@@ -715,7 +721,7 @@
                                
                                $components_array[] = $component;
                        }
-
+//     _debug_array($components_array);
                        if( count( $components_array ) > 0 )
                        {
                                return $components_array; 
@@ -895,9 +901,39 @@
                                        $sql .= "AND component_id = 
{$component_id}";
                                        
                                        $this->db->query($sql, __LINE__, 
__FILE__);
-                       
-                                       if(!$this->db->next_record() || 
$duplicate)
+                                       $this->db->next_record();
+                                       $relation_id = $this->db->f('id');
+                                       if(!$relation_id || $duplicate)
                                        {
+                                               if($relation_id)
+                                               {
+                                                       $sql = "SELECT * FROM 
controller_control_serie"
+                                                       . " WHERE 
control_relation_id = {$relation_id}"
+                                                       . " AND repeat_type = 
{$repeat_type}";
+                                                       //. " AND 
repeat_interval = {$repeat_interval}";
+                                                       $this->db->query($sql, 
__LINE__, __FILE__);
+                                                       
$this->db->next_record();
+                                                       $serie_id = 
$this->db->f('id');
+                                                       if($serie_id)
+                                                       {
+                                                               
$this->update_control_serie($data = array(
+                                                                       'ids'   
                        => array($serie_id),
+                                                                       
'action'                        => 'edit',
+                                                                       
'assigned_to'           => $assigned_to,
+                                                                       
'start_date'            => $start_date,
+                                                                       
'repeat_type'           => $repeat_type,
+                                                                       
'repeat_interval'       => $repeat_interval,
+                                                                       
'controle_time'         => $controle_time,
+                                                                       
'service_time'          => $service_time,
+                                                               ));
+                                                               $ret = 
$this->update_control_serie($data = array(
+                                                                       'ids'   
                        => array($serie_id),
+                                                                       
'action'                        => 'enable',
+                                                               ));
+                                                               continue;
+                                                       }
+                                               }
+
                                                $values_insert = array
                                                (
                                                        'control_id'            
=> $control_id,
@@ -992,6 +1028,7 @@
                        $sql = "SELECT controller_control_component_list.* ,"
                        . " controller_control.title, 
controller_control.enabled as control_enabled,"
                        . " controller_control_component_list.enabled as 
relation_enabled,"
+                       . " controller_control_serie.enabled as serie_enabled,"
                        . " controller_control_serie.id as serie_id,"
                        . " 
controller_control_serie.assigned_to,controller_control_serie.start_date,"
                        . " 
controller_control_serie.repeat_type,controller_control_serie.repeat_interval,"
@@ -1020,6 +1057,7 @@
                                        'repeat_interval'       => 
$this->db->f('repeat_interval'),
                                        'control_enabled'       => 
$this->db->f('control_enabled'),
                                        'relation_enabled'      => 
$this->db->f('relation_enabled'),
+                                       'serie_enabled'         => 
$this->db->f('serie_enabled'),
                                        'service_time'          => 
(float)$this->db->f('service_time'),
                                        'controle_time'         => 
(float)$this->db->f('controle_time'),
                                );
@@ -1348,4 +1386,64 @@
                                return $result;
                        }
                }
+               function update_control_serie($data = array())
+               {
+                       if(!isset($data['ids']) || !$data['ids'])
+                       {
+                               throw new 
Exception("controller_socontrol::update_control_serie - Missing ids in input");
+                       }
+                       if(!isset($data['action']) || !$data['action'])
+                       {
+                               throw new 
Exception("controller_socontrol::update_control_serie - Missing action in 
input");
+                       }
+
+                       $ids            = $data['ids'];
+                       $action         = $data['action'];
+                       $value_set = array();
+                       switch($action)
+                       {
+                               case 'enable':
+                                       $value_set['enabled'] = 1;
+                                       break;
+                               case 'disable':
+                                       $value_set['enabled'] = 0;
+                                       break;
+                               case 'edit':
+                                       if($data['assigned_to'])
+                                       {
+                                               $value_set['assigned_to']       
        = $data['assigned_to'];
+                                       }
+                                       if($data['start_date'])
+                                       {
+                                               $value_set['start_date']        
        = $data['start_date'];
+                                       }
+                                       if($data['repeat_type'])
+                                       {
+                                               $value_set['repeat_type']       
        = $data['repeat_type'];
+                                       }
+                                       if($data['repeat_interval'])
+                                       {
+                                               $value_set['repeat_interval']   
= $data['repeat_interval'];
+                                       }
+                                       if($data['controle_time'])
+                                       {
+                                               $value_set['controle_time']     
        = $data['controle_time'];
+                                       }
+                                       if($data['service_time'])
+                                       {
+                                               $value_set['service_time']      
        = $data['service_time'];
+                                       }
+                                       break;
+                               default:
+                                       throw new 
Exception("controller_socontrol::update_control_serie - not av valid action: 
'{$action}'");
+                                       break;
+                               }
+                               $value_set_update = 
$this->db->validate_update($value_set);
+
+                       $sql = "UPDATE controller_control_serie SET 
{$value_set_update} WHERE id IN (" . implode(',', $ids) . ')';
+                       if($this->db->query($sql,__LINE__,__FILE__))
+                       {
+                               return PHPGW_ACL_EDIT; // Bit - edit
+                       }
+               }
        }

Modified: branches/dev-syncromind/controller/inc/class.uicomponent.inc.php
===================================================================
--- branches/dev-syncromind/controller/inc/class.uicomponent.inc.php    
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/inc/class.uicomponent.inc.php    
2015-05-10 18:19:25 UTC (rev 13178)
@@ -4,7 +4,8 @@
         *
         * @author Erink Holm-Larsen <address@hidden>
         * @author Torstein Vadla <address@hidden>
-        * @copyright Copyright (C) 2011,2012 Free Software Foundation, Inc. 
http://www.fsf.org/
+        * @author Sigurd Nes <address@hidden>
+        * @copyright Copyright (C) 2015 Free Software Foundation, Inc. 
http://www.fsf.org/
         * This file is part of phpGroupWare.
         *
         * phpGroupWare is free software; you can redistribute it and/or modify
@@ -97,6 +98,7 @@
 
 
                        $component_type = 
'';//phpgwapi_cache::session_get('controller', 'component_type');
+                       $sort_key = array();
                        if(!$component_type)
                        {
                                $this->soadmin_entity   = 
CreateObject('property.soadmin_entity');
@@ -111,14 +113,23 @@
 
                                                
if($category['enable_controller'])
                                                {
+                                                       $sort_arr = explode(' 
', $category['name']);
                                                        $component_type[] = 
array
                                                        (
                                                                'id' => 
$category['location_id'],
-                                                               'name'=> 
"{$entry['name']}::{$category['name']}"
+                                                               'name'=> 
"{$entry['name']}::{$category['name']}",
+                                                               'sort_key' => 
trim($sort_arr[0])
                                                        );
                                                }
                                        }
                                }
+                               // Obtain a list of columns
+                               foreach ($component_type as $key => $row)
+                               {
+                                       $id[$key]  = $row['sort_key'];
+                               }
+
+                               array_multisort($id,SORT_ASC, SORT_STRING, 
$component_type);
                                array_unshift($component_type, array('id' => 
'', 'name' => lang('select value')));
 //                             phpgwapi_cache::session_set('controller', 
'component_type', $component_type);
                        }
@@ -134,6 +145,7 @@
                                        'selected'      => $this->account == 
$user['account_id'] ? 1 : 0
                                );
                        }
+                       array_unshift($user_list, array('id' => '', 'name' => 
lang('select')));
 
                        // Sigurd: Start categories
                        $cats                            = 
CreateObject('phpgwapi.categories', -1, 'controller', '.control');
@@ -158,7 +170,20 @@
                        array_unshift($district_list, array('id' => '', 'name' 
=> lang('no district')));
                        // end district
 
+                       $year_list      = array();
 
+                       $year = date('Y');
+                       for ( $_year= ($year - 2); $_year < ($year + 5); 
$_year++ )
+                       {
+                               $year_list[] = array
+                               (
+                                       'id'     => $_year,
+                                       'name'   => $_year,
+                                       'selected'      => $_year == $year ? 1 
: 0
+                               );
+                       }
+
+
                        $data = array(
                                'datatable_name' => lang('status components'),
                                'form'                   => array(
@@ -178,18 +203,24 @@
                                                                'text'   => 
lang('Control_area'),
                                                                'list'   => 
$control_areas_array,
                                                                'onchange'      
=> 'update_table();'
-                                                       ),
+                                                       ),*/
                                                        array('type'     => 
'filter',
                                                                'name'   => 
'user_id',
                                                                'text'   => 
lang('User'),
                                                                'list'   => 
$user_list,
                                                                'onchange'      
=> 'update_table();'
-                                                       ),*/
+                                                       ),
                                                        array('type'     => 
'filter',
                                                                'name'   => 
'district_id',
                                                                'text'   => 
lang('district'),
                                                                'list'   => 
$district_list,
                                                                'onchange'      
=> 'update_table();'
+                                                       ),
+                                                       array('type'     => 
'filter',
+                                                               'name'   => 
'year',
+                                                               'text'   => 
lang('year'),
+                                                               'list'   => 
$year_list,
+                                                               'onchange'      
=> 'update_table();'
                                                        ),/*
                                                        array('type'     => 
'text',
                                                                'text'   => 
lang('searchfield'),
@@ -234,62 +265,62 @@
                                ),
                                array(
                                        'key'            => '1',
-                                       'label'          => lang('jan'),
+                                       'label'          => lang('month 1'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '2',
-                                       'label'          => lang('feb'),
+                                       'label'          => lang('month 2'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '3',
-                                       'label'          => lang('mar'),
+                                       'label'          => lang('month 3'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '4',
-                                       'label'          => lang('apr'),
+                                       'label'          => lang('month 4'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '5',
-                                       'label'          => lang('may'),
+                                       'label'          => lang('month 5'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '6',
-                                       'label'          => lang('june'),
+                                       'label'          => lang('month 6'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '7',
-                                       'label'          => lang('july'),
+                                       'label'          => lang('month 7'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '8',
-                                       'label'          => lang('aug'),
+                                       'label'          => lang('month 8'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '9',
-                                       'label'          => lang('sept'),
+                                       'label'          => lang('month 9'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '10',
-                                       'label'          => lang('oct'),
+                                       'label'          => lang('month 10'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '11',
-                                       'label'          => lang('nov'),
+                                       'label'          => lang('month 11'),
                                        'sortable'       => true,
                                ),
                                array(
                                        'key'            => '12',
-                                       'label'          => lang('dec'),
+                                       'label'          => lang('month 12'),
                                        'sortable'       => true,
                                ),
                        );
@@ -319,19 +350,25 @@
                        $to_date_ts = 
execMethod('controller.uicalendar.get_end_date_year_ts',$year);
 
                        $components = 
execMethod('property.soentity.read',array('location_id' => $location_id, 
'district_id' => $district_id, 'allrows' => true));
+                       $total_records = count($components);
                        $all_components = array();
                        $components_with_calendar_array = array();
-
+//                     _debug_array($components);
                        foreach($components as $_component)
                        {
                                $component_id = $_component['id'];
                                $all_components[$component_id] = $_component;
                                $controls = 
execMethod('controller.socontrol.get_controls_at_component', 
array('location_id' => $location_id, 'component_id' => $component_id));
+//_debug_array($controls);
                                foreach($controls as $_control)
                                {
+                                       if(!$_control['serie_enabled'])
+                                       {
+       //                                      continue;
+                                       }
                                        $control_id                             
                = $_control['control_id'];
                                        $control                                
                = $so_control->get_single($_control['control_id']);
-                                       $components_for_control_array   = 
$so_control->get_components_for_control($control_id, $location_id, 
$component_id);
+                                       $components_for_control_array   = 
$so_control->get_components_for_control($control_id, $location_id, 
$component_id,0);//,$user_id);
 
                                        // LOCATIONS: Process aggregated values 
for controls with repeat type day or week
                                        if($control->get_repeat_type() <= 
controller_control::REPEAT_TYPE_WEEK)
@@ -413,7 +450,7 @@
                                                        
$component->set_xml_short_desc($short_desc_arr);
 
                                                        $repeat_type            
                 = $control->get_repeat_type();
-                                                       
$component_with_check_lists      = 
$this->so->get_check_lists_for_control_and_component($control_id, 
$component->get_location_id(), $component->get_id(), $from_date_ts, 
$to_date_ts, $repeat_type);
+                                                       
$component_with_check_lists      = 
$this->so->get_check_lists_for_control_and_component($control_id, 
$component->get_location_id(), $component->get_id(), $from_date_ts, 
$to_date_ts, $repeat_type);// ,$user_id);
 
                                                        $check_lists_array = 
$component_with_check_lists["check_lists_array"];
 
@@ -439,10 +476,18 @@
                                                                
$control->set_repeat_interval($control_relation['repeat_interval']);
                                                        }
 
+                                                       
if(!$control_relation['serie_enabled'])
+                                                       {
+               //                                              
$control->set_repeat_interval(1000);
+                                                       }
+
                                                        /*
                                                         * End override control 
with data from serie
                                                         */
-
+                                                       if($check_lists_array)
+                                                       {
+//                                                             
_debug_array($component_with_check_lists);
+                                                       }
                                                        $year_calendar   = new 
year_calendar($control, $year, $component, null, "component", 
$control_relation);
                                                        $calendar_array  = 
$year_calendar->build_calendar($check_lists_array);
 
@@ -450,13 +495,11 @@
                                                                
"calendar_array" => $calendar_array);
                                                }
                                        }
-
-
-
                                }
                        }
+                       _debug_array($components_with_calendar_array);
                        unset($component_id);
-                       _debug_array($components_with_calendar_array[1]);
+//                     _debug_array($components_with_calendar_array[1]);
 //                     _debug_array($components);
 //                     
_debug_array(array_keys($components_with_calendar_array));
                        $repeat_type_array = array
@@ -488,6 +531,9 @@
                                foreach($entry as $dataset)
                                {
                                        $repeat_type = 
(int)$dataset['component']['control_relation']['repeat_type'];
+                                       $service_time = 
$dataset['component']['control_relation']['service_time'];
+                                       $controle_time = 
$dataset['component']['control_relation']['controle_time'];
+
                                        if($repeat_type > $max_repeat_type)
                                        {
                                                $max_repeat_type = $repeat_type;
@@ -496,6 +542,8 @@
                                        {
                                                if($calendar)
                                                {
+                                                       
$calendar['info']['service_time'] = $calendar['info']['service_time'] ? 
$calendar['info']['service_time'] : $service_time;
+                                                       
$calendar['info']['controle_time'] = $calendar['info']['controle_time'] ? 
$calendar['info']['controle_time'] : $controle_time;
                                                        
$_data[$month][$repeat_type] = $calendar;
                                                }
                                        }
@@ -569,8 +617,11 @@
                        }
 //_debug_array($values);
                        $data_set = array();
+                       $total_time = array();
                        foreach ($values as $entry)
                        {
+                               $row            = array();
+                               $row_sum        = array();
                                $row['component_id'] = $entry['component_id'];
                                $row['year'] = '';
                                $row['descr'] = '';
@@ -584,16 +635,24 @@
                                for ( $_month=1; $_month < 13; $_month++ )
                                {
                                        $row[$_month] = 
$this->translate_calendar_info($entry[$_month],$year, $_month);
+                                       if( !$user_id || 
$entry[$_month]['info']['assigned_to'] == $user_id)
+                                       {
+                                               $row_sum[$_month] = 
$entry[$_month]['info']['service_time'] + 
$entry[$_month]['info']['controle_time'];
+                                       }
+                                       else
+                                       {
+                                               $row_sum[$_month] = 0;
+                                       }
                                }
-
+                               $total_time[] = $row_sum;
                                $data_set[] = $row;
                        }
                        $fields = $this->get_fields();
-
+                       $class = '';
                        $tbody = '';
                        foreach($data_set as $row_data )
                        {
-                               $tbody .= '<tr>';
+                               $tbody .= "<tr {$class}>";
                                foreach($fields as $field )
                                {
                                        $tbody .= '<td>';
@@ -601,12 +660,40 @@
                                        $tbody .= '</td>';
                                }
                                $tbody .= '</tr>';
+                               $class = $class ? '' : 'class="alt"';
+
                        }
 
                        $result = array
                        (
                                'tbody' => $tbody
                        );
+
+                       unset($_month);
+
+                       $sum_year = 0;
+
+                       if(!$total_time)
+                       {
+                               for ( $_month=1; $_month < 13; $_month++ )
+                               {
+                                       $result['time_sum'][$_month] = 0;
+                               }
+                       }
+                       else
+                       {
+                               foreach ($total_time as $_row)
+                               {
+                                       for ( $_month=1; $_month < 13; 
$_month++ )
+                                       {
+                                               $result['time_sum'][$_month] += 
$_row[$_month];
+                                               $sum_year += $_row[$_month];
+                                       }
+                               }
+                       }
+                       $result['time_sum'][0] = $sum_year;
+                       $result['total_records'] = $total_records;
+
                        return $result;
                }
 

Modified: 
branches/dev-syncromind/controller/inc/component/class.check_list_status_manager.inc.php
===================================================================
--- 
branches/dev-syncromind/controller/inc/component/class.check_list_status_manager.inc.php
    2015-05-09 17:49:21 UTC (rev 13177)
+++ 
branches/dev-syncromind/controller/inc/component/class.check_list_status_manager.inc.php
    2015-05-10 18:19:25 UTC (rev 13178)
@@ -35,10 +35,14 @@
                private $check_list;
                private $type;
 
-               public function __construct($check_list, $type)
+               public function __construct($check_list, $type = '')
                {
                        $this->check_list        = $check_list;
                        $this->type                      = $type;
+                       if(!$type)
+                       {
+                               $check_list->get_component_id() ? 'component' : 
'';
+                       }
                }
 
                function get_status_for_check_list()

Modified: 
branches/dev-syncromind/controller/inc/component/class.year_calendar.inc.php
===================================================================
--- 
branches/dev-syncromind/controller/inc/component/class.year_calendar.inc.php    
    2015-05-09 17:49:21 UTC (rev 13177)
+++ 
branches/dev-syncromind/controller/inc/component/class.year_calendar.inc.php    
    2015-05-10 18:19:25 UTC (rev 13178)
@@ -38,8 +38,13 @@
            {
                          $this->calendar_array[$i] = null;
            }
-               
-           $ctr_start_date_ts = $this->control->get_start_date();
+
+               if($this->control_relation && 
!$this->control_relation['serie_enabled'])
+               {
+                       return;
+               }
+
+               $ctr_start_date_ts = $this->control->get_start_date();
            $ctr_end_date_ts = $this->control->get_end_date();
            $period_start_date_ts = $this->get_start_date_year_ts($this->year);
            $period_end_date_ts = $this->get_start_date_year_ts($this->year+1);
@@ -56,7 +61,8 @@
                $check_list = new controller_check_list();
                $check_list->set_deadline( $date_ts );
                $check_list->set_control_id( $this->control->get_id() );
-       
+                       
$check_list->set_assigned_to($this->control_relation['assigned_to']);
+       
                if($this->type == "component")
                {
                        $check_list->set_component_id( 
$this->component->get_id() );
@@ -68,9 +74,9 @@
                        $check_list->set_location_code( $this->location_code );
                        $check_list_status_manager = new 
check_list_status_manager( $check_list, "location" );
                } 
+
+                       $check_list_status_info = 
$check_list_status_manager->get_status_for_check_list();
        
-                       $check_list_status_info = 
$check_list_status_manager->get_status_for_check_list(); 
-       
                        $month_nr = date("n", $date_ts);
       
              $this->calendar_array[ $month_nr ]["status"] = 
$check_list_status_info->get_status();
@@ -93,8 +99,13 @@
 
                        $month_nr = date("n", 
$check_list_status_info->get_deadline_date_ts());
                        
-                       $this->calendar_array[ $month_nr ]["status"] = 
$check_list_status_info->get_status();
-                       $this->calendar_array[ $month_nr ]["info"]   = 
$check_list_status_info->serialize();
+                       $repeat_type = $check_list->get_repeat_type();
+                       if( !isset($this->calendar_array[ $month_nr ]) || 
$repeat_type > $this->calendar_array[ $month_nr ]['repeat_type'])
+                       {
+                               $this->calendar_array[ $month_nr 
]['repeat_type'] = $repeat_type;
+                               $this->calendar_array[ $month_nr ]["status"] = 
$check_list_status_info->get_status();
+                               $this->calendar_array[ $month_nr ]["info"]   = 
$check_list_status_info->serialize();
+                       }
                }
                
                return $this->calendar_array;

Modified: branches/dev-syncromind/controller/inc/model/class.check_list.inc.php
===================================================================
--- branches/dev-syncromind/controller/inc/model/class.check_list.inc.php       
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/inc/model/class.check_list.inc.php       
2015-05-10 18:19:25 UTC (rev 13178)
@@ -43,6 +43,7 @@
                protected $description;//
                protected $control_id;
                protected $serie_id;
+               protected $repeat_type;
                protected $status;
                protected $comment;
                protected $deadline;
@@ -205,7 +206,16 @@
                {
                        return $this->serie_id;
                }
+               public function set_repeat_type($repeat_type)
+               {
+                       $this->repeat_type = $repeat_type;
+               }
 
+               public function get_repeat_type()
+               {
+                       return $this->repeat_type;
+               }
+
                public function get_num_open_cases() { return 
$this->num_open_cases; }
                
                public function set_num_open_cases($num_open_cases)

Modified: branches/dev-syncromind/controller/setup/phpgw_no.lang
===================================================================
--- branches/dev-syncromind/controller/setup/phpgw_no.lang      2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/setup/phpgw_no.lang      2015-05-10 
18:19:25 UTC (rev 13178)
@@ -23,6 +23,8 @@
 Choose_building_type   controller      no      Velg byggtype
 Choose_building_category       controller      no      Velg byggkategori
 Choose_district        controller      no      Velg distrikt
+district       controller      no      Distrikt
+user   controller      no      Bruker
 Choose_part_of_town    controller      no      Velg bydel
 DATATABLE_MSG_EMPTY    controller      no      Ingen data
 DATATABLE_MSG_ERROR    controller      no      Datafeil
@@ -373,4 +375,7 @@
 Status not done        controller      no      Status: Ikke utført
 Status done controller no      Status: Utført
 planned date   common  no      Planlagt Dato
-status components      controller      no      Status komponenter
\ No newline at end of file
+status components      controller      no      Status komponenter
+controle time  common  no      Kontrolltid
+service time   common  no      Servicetid
+total time     common  no      Totaltid
\ No newline at end of file

Modified: branches/dev-syncromind/controller/setup/setup.inc.php
===================================================================
--- branches/dev-syncromind/controller/setup/setup.inc.php      2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/setup/setup.inc.php      2015-05-10 
18:19:25 UTC (rev 13178)
@@ -1,6 +1,6 @@
 <?php
        $setup_info['controller']['name'] = 'controller';
-       $setup_info['controller']['version'] = '0.1.51';
+       $setup_info['controller']['version'] = '0.1.52';
        $setup_info['controller']['app_order'] = 100;
        $setup_info['controller']['enable'] = 1;
        $setup_info['controller']['app_group']  = 'office';

Modified: branches/dev-syncromind/controller/setup/tables_current.inc.php
===================================================================
--- branches/dev-syncromind/controller/setup/tables_current.inc.php     
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/setup/tables_current.inc.php     
2015-05-10 18:19:25 UTC (rev 13178)
@@ -167,6 +167,7 @@
                                        'repeat_interval'               => 
array('type' => 'int', 'precision' => '4', 'nullable' => true),
                                        'service_time'                  => 
array('type' => 'decimal','precision' => '20','scale' => '2','nullable' => 
True,'default' => '0.00'),
                                        'controle_time'                 => 
array('type' => 'decimal','precision' => '20','scale' => '2','nullable' => 
True,'default' => '0.00'),
+                                       'enabled'                               
=> array('type' => 'int', 'precision' => 2, 'nullable' => True,'default' => 1)
                                ),
                        'pk' => array('id'),
                        'fk' => array(),

Modified: branches/dev-syncromind/controller/setup/tables_update.inc.php
===================================================================
--- branches/dev-syncromind/controller/setup/tables_update.inc.php      
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/setup/tables_update.inc.php      
2015-05-10 18:19:25 UTC (rev 13178)
@@ -1082,3 +1082,18 @@
                $GLOBALS['setup_info']['controller']['currentver'] = '0.1.51';
                return $GLOBALS['setup_info']['controller']['currentver'];
        }
+
+       $test[] = '0.1.51';
+       function controller_upgrade0_1_51()
+       {
+               
$GLOBALS['phpgw_setup']->oProc->AddColumn('controller_control_serie','enabled',array(
+                               'type' => 'int',
+                               'precision' => '2',
+                               'nullable' => true,
+                               'default' => 1,
+                       )
+               );
+
+               $GLOBALS['setup_info']['controller']['currentver'] = '0.1.52';
+               return $GLOBALS['setup_info']['controller']['currentver'];
+       }

Modified: branches/dev-syncromind/controller/templates/base/component.xsl
===================================================================
--- branches/dev-syncromind/controller/templates/base/component.xsl     
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/controller/templates/base/component.xsl     
2015-05-10 18:19:25 UTC (rev 13178)
@@ -145,8 +145,34 @@
 </xsl:template>
 
 <xsl:template match="datatable">
-       <div id="paginator"/>
-       <div id="datatable-container"/>
+<style>
+#components {
+    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+    width: 100%;
+    border-collapse: collapse;
+}
+
+#components td, #components th {
+    font-size: 1em;
+    border: 1px solid #98bf21;
+    padding: 3px 7px 2px 7px;
+}
+
+#components th {
+    font-size: 1.1em;
+    text-align: left;
+    padding-top: 5px;
+    padding-bottom: 4px;
+    background-color: green;
+    color: #ffffff;
+}
+
+#components tr.alt td {
+    color: #000000;
+    background-color: #EAF2D3;
+}
+</style>
+
        <xsl:call-template name="datasource-definition" />
 </xsl:template>
 
@@ -167,6 +193,23 @@
                                        if( data != null)
                                        {
                                                $("#tbody").html(data.tbody);
+                                               var time_sum = data.time_sum;
+
+                                               
$("#total_records").html(data.total_records);
+                                               $("#sum_text").html('Sum');
+                                               $("#month0").html(time_sum[0]);
+                                               $("#month1").html(time_sum[1]);
+                                               $("#month2").html(time_sum[2]);
+                                               $("#month3").html(time_sum[3]);
+                                               $("#month4").html(time_sum[4]);
+                                               $("#month5").html(time_sum[5]);
+                                               $("#month6").html(time_sum[6]);
+                                               $("#month7").html(time_sum[7]);
+                                               $("#month8").html(time_sum[8]);
+                                               $("#month9").html(time_sum[9]);
+                                               
$("#month10").html(time_sum[10]);
+                                               
$("#month11").html(time_sum[11]);
+                                               
$("#month12").html(time_sum[12]);
                                        }
                                }
                        });
@@ -174,9 +217,43 @@
                };
 ]]>
        </script>
-       <table id="datatable-container" class="display cell-border compact 
responsive no-wrap" width="100%">
+       <table id="components">
                <thead>
                        <tr>
+                               <td id='total_records'>
+                               </td>
+                               <td id='sum_text'>
+                               </td>
+                               <td id='month0'>
+                               </td>
+                               <td id='month1'>
+                               </td>
+                               <td id='month2'>
+                               </td>
+                               <td id='month3'>
+                               </td>
+                               <td id='month4'>
+                               </td>
+                               <td id='month5'>
+                               </td>
+                               <td id='month6'>
+                               </td>
+                               <td id='month7'>
+                               </td>
+                               <td id='month8'>
+                               </td>
+                               <td id='month9'>
+                               </td>
+                               <td id='month10'>
+                               </td>
+                               <td id='month11'>
+                               </td>
+                               <td id='month12'>
+                               </td>
+                       </tr>
+               </thead>
+               <thead>
+                       <tr>
                                <xsl:for-each select="//datatable/field">
                                        <th>
                                                <xsl:value-of select="label"/>

Modified: branches/dev-syncromind/property/inc/class.boentity.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.boentity.inc.php 2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.boentity.inc.php 2015-05-10 
18:19:25 UTC (rev 13178)
@@ -56,12 +56,13 @@
 
                var $public_functions = array
                        (
-                               'read'                  => true,
-                               'read_single'   => true,
-                               'save'                  => true,
-                               'delete'                => true,
-                               'check_perms'   => true,
-                               'add_control'   => true
+                               'read'                                  => true,
+                               'read_single'                   => true,
+                               'save'                                  => true,
+                               'delete'                                => true,
+                               'check_perms'                   => true,
+                               'add_control'                   => true,
+                               'update_control_serie'  => true
                        );
 
                var $type_app = array();
@@ -998,7 +999,7 @@
                                                'service_time'                  
=> $service_time,
                                                'duplicate'                     
        => true
                                        );
-                                       _debug_array($values);
+       //                              _debug_array($values);
                                        if($add = 
$so_control->register_control_to_component($values))
                                        {
                                                if($add == PHPGW_ACL_ADD)
@@ -1070,4 +1071,50 @@
                        }
                }
 
+               function update_control_serie()
+               {
+                       if($start_date = phpgw::get_var('control_start_date', 
'string'))
+                       {
+                               phpgw::import_class('phpgwapi.datetime');
+                               $start_date = 
phpgwapi_datetime::date_to_timestamp($start_date);
+                       }
+
+                       $so_control     = CreateObject('controller.socontrol');
+
+                       $values = array
+                       (
+                               'ids'                           => 
phpgw::get_var('ids', 'int'),
+                               'action'                        => 
phpgw::get_var('action', 'string'),
+                               'assigned_to'           => 
phpgw::get_var('control_responsible', 'int'),
+                               'start_date'            => $start_date,
+                               'repeat_type'           => 
phpgw::get_var('repeat_type', 'int'),
+                               'repeat_interval'       => 
phpgw::get_var('repeat_interval', 'int'),
+                               'controle_time'         => 
phpgw::get_var('controle_time', 'float'),
+                               'service_time'          => 
phpgw::get_var('service_time', 'float')
+                       );
+                       $ret = $so_control->update_control_serie($values);
+
+                       if($ret)
+                       {
+                               $result =  array
+                               (
+                                       'status_kode'=> 'ok',
+                                       'status'        => 'Ok',
+                                       'msg'           => lang('updated')
+
+                               );
+                       }
+                       else
+                       {
+                               $result =  array
+                               (
+                                       'status_kode'=> 'error',
+                                       'status'        => lang('error'),
+                                       'msg'           => 'Noe gikk galt'
+                               );
+                       }
+
+                       return $result;
+
+               }
        }

Modified: branches/dev-syncromind/property/inc/class.bolookup.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.bolookup.inc.php 2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.bolookup.inc.php 2015-05-10 
18:19:25 UTC (rev 13178)
@@ -288,6 +288,23 @@
 
                function read_phpgw_user($data = array())
                {
+                       if($data['acl_app'] && $data['acl_location'] && 
$data['acl_required'])
+                       {
+                               $users = 
$GLOBALS['phpgw']->acl->get_user_list_right($data['acl_required'], 
$data['acl_location'], $data['acl_app']);
+                               $user_list = array();
+                               foreach($users as $user)
+                               {
+                                       $user_list[] = array
+                                       (
+                                               'id'            => 
$user['account_id'],
+                                               'last_name'     => 
$user['account_lastname'],
+                                               'first_name'    => 
$user['account_firstname'],
+                                       );
+                               }
+                               $this->total_record = count($user_list);
+                               return $user_list;
+                       }
+
                        $phpgw_user = $this->so->read_phpgw_user($data);
                        $this->total_records = $this->so->total_records;
 

Modified: branches/dev-syncromind/property/inc/class.soinvoice.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.soinvoice.inc.php        
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.soinvoice.inc.php        
2015-05-10 18:19:25 UTC (rev 13178)
@@ -2037,6 +2037,19 @@
                        $local_error = false;
                        if($condition)
                        {
+                               /*
+                               * Look for roles at lower level
+                               */
+
+                               $this->db->query("SELECT * FROM fm_ecobilag 
{$condition}", __LINE__, __FILE__);
+                               $this->db->next_record();
+                               $oppsynsigndato                 = 
$this->db->f('oppsynsigndato');
+                               $oppsynsmannid                  = 
$this->db->f('oppsynsmannid');
+                               $saksigndato                    = 
$this->db->f('saksigndato');
+                               $saksbehandlerid                = 
$this->db->f('saksbehandlerid');
+                               $budsjettansvarligid    = 
$this->db->f('budsjettansvarligid');
+
+
                                //start check
                                $check_count = 
$this->check_count($data['voucher_id']);
 
@@ -2101,9 +2114,21 @@
                                        {
                                                case 'is_janitor':
                                                        
$value_set['oppsynsigndato']     = null;
+                                                       if($oppsynsmannid == 
$saksbehandlerid)
+                                                       {
+                                                               
$value_set['oppsynsmannid']              = null;
+                                                       }
+                                                       if($saksbehandlerid 
==$budsjettansvarligid)
+                                                       {
+                                                               
$value_set['oppsynsmannid']              = null;
+                                                       }
                                                        break;
                                                case 'is_supervisor':
                                                        
$value_set['saksigndato']                = null;
+                                                       if($saksbehandlerid 
==$budsjettansvarligid)
+                                                       {
+                                                               
$value_set['saksbehandlerid']            = null;                                
                        
+                                                       }
                                                        break;
                                                case 'is_budget_responsible':
                                                        
$value_set['budsjettsigndato']   = null;
@@ -2119,10 +2144,25 @@
                                                case 'is_supervisor':
                                                        
$value_set['saksigndato']                        = 
date($this->db->datetime_format());
                                                        
$value_set['saksbehandlerid']            = $data['my_initials'];
+                                                       
if($data['forward']['oppsynsmannid'] == $data['my_initials'] && $oppsynsmannid 
== $data['my_initials'])
+                                                       {
+                                                               
$value_set['oppsynsmannid']              = '';
+                                                               
$value_set['oppsynsigndato']     = '';
+                                                       }
                                                        break;
                                                case 'is_budget_responsible':
                                                        
$value_set['budsjettsigndato']           = date($this->db->datetime_format());
                                                        
$value_set['budsjettansvarligid']        = $data['my_initials'];
+                                                       if( 
$data['forward']['saksbehandlerid'] == $data['my_initials'] && $saksbehandlerid 
== $data['my_initials'])
+                                                       {
+                                                               
$value_set['saksbehandlerid']    = '';
+                                                               
$value_set['saksigndato']                = '';
+                                                       }
+                                                       
if($data['forward']['oppsynsmannid'] == $data['my_initials'] && $oppsynsmannid 
== $data['my_initials'])
+                                                       {
+                                                               
$value_set['oppsynsmannid']              = '';
+                                                               
$value_set['oppsynsigndato']     = '';
+                                                       }
                                                        break;
                                        }
                                }

Modified: branches/dev-syncromind/property/inc/class.sotts.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.sotts.inc.php    2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.sotts.inc.php    2015-05-10 
18:19:25 UTC (rev 13178)
@@ -398,21 +398,19 @@
                        {
                                $order_add      = 
$GLOBALS['phpgw']->acl->check('.ticket.order', PHPGW_ACL_ADD, 'property');
                                $order_edit = 
$GLOBALS['phpgw']->acl->check('.ticket.order', PHPGW_ACL_EDIT, 'property');
+                               $_end_date      = $end_date + 3600 * 16 + 
phpgwapi_datetime::user_timezone();
+                               $_start_date    = $start_date - 3600 * 8 + 
phpgwapi_datetime::user_timezone();
+                               $filtermethod .= " $where 
fm_tts_tickets.entry_date >= $_start_date AND fm_tts_tickets.entry_date <= 
$_end_date ";
 
                                if($order_add || $order_edit)
                                {
                                        $end_period     = date('Ym', $end_date);
                                        $start_period   = date('Ym', 
$start_date);
-                                       $date_join = "JOIN fm_tts_payments ON ( 
fm_tts_tickets.id=fm_tts_payments.ticket_id AND fm_tts_payments.period >= 
$start_period AND fm_tts_payments.period <= $end_period )";
+                                       $date_join = "LEFT JOIN fm_tts_payments 
ON ( fm_tts_tickets.id=fm_tts_payments.ticket_id AND fm_tts_payments.period >= 
$start_period AND fm_tts_payments.period <= $end_period )";
                                        $actual_cost_field = 
'SUM(fm_tts_payments.amount) AS actual_cost';
                                        $actual_cost_group_field = '';
+
                                }
-                               else
-                               {
-                                       $_end_date      = $end_date + 3600 * 16 
+ phpgwapi_datetime::user_timezone();
-                                       $_start_date    = $start_date - 3600 * 
8 + phpgwapi_datetime::user_timezone();
-                                       $filtermethod .= " $where 
fm_tts_tickets.entry_date >= $_start_date AND fm_tts_tickets.entry_date <= 
$_end_date ";
-                               }
 
                                $where= 'AND';
                        }

Modified: branches/dev-syncromind/property/inc/class.uientity.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.uientity.inc.php 2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.uientity.inc.php 2015-05-10 
18:19:25 UTC (rev 13178)
@@ -2059,21 +2059,54 @@
                                        array('key' => 
'assigned_to_name','label'=>lang('user'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'start_date','label'=>lang('start date'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'repeat_type','label'=>lang('repeat 
type'),'sortable'=>false,'resizeable'=>true),
-                                       array('key' => 
'repeat_interval','label'=>lang('repeat 
interval'),'sortable'=>false,'resizeable'=>true),
+                                       array('key' => 
'repeat_interval','label'=>lang('interval'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'controle_time','label'=>lang('controle 
time'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'service_time','label'=>lang('service 
time'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'total_time','label'=>lang('total time'),'sortable'=>false,'resizeable'=>true),
-                                       array('key' => 
'relation_enabled','label'=>lang('enabled'),'sortable'=>false,'resizeable'=>true),
+                                       array('key' => 
'serie_enabled','label'=>lang('enabled'),'sortable'=>false,'resizeable'=>true),
+//                                     array('key' => 
'select','label'=>lang('select'),'sortable'=>false,'resizeable'=>true),
                                        array('key' => 
'location_id','hidden'=>true),
                                        array('key' => 
'component_id','hidden'=>true),
                                        array('key' => 'id','hidden'=>true),
                                        array('key' => 
'assigned_to','hidden'=>true),
                                );
+            $tabletools = array
+            (
+                array(
+                    'my_name'  => 'add',
+                    'text' => lang('add'),
+                     'type'                    => 'custom',
+                                       'custom_code' => "
+                                                                               
add_control();"
+                    ),
+                       array(
+                    'my_name'  => 'enable',
+                    'text' => lang('enable'),
+                     'type'                    => 'custom',
+                                       'custom_code' => "
+                                                                               
onActionsClick('enable');"
+                    ),
+                array(
+                    'my_name'  => 'disable',
+                    'text' => lang('disable'),
+                    'type'                     => 'custom',
+                                       'custom_code' => "
+                                                                               
onActionsClick('disable');"
+                    ),
+                array(
+                    'my_name'  => 'edit',
+                    'text' => lang('edit'),
+                    'type'                     => 'custom',
+                                       'custom_code' => "
+                                                                               
onActionsClick('edit');"
+                    )
+            );
 
                                $datatable_def[] = array
                                (
                                        'container'             => 
'datatable-container_4',
                                        'requestUrl'    => "''",
+                       'tabletools'    => $tabletools,
                                        'ColumnDefs'    => $controls_def,
                                        'data'                  => 
json_encode($_controls),
                                        'config'                => array(
@@ -2183,8 +2216,8 @@
                        $msgbox_data = 
$this->bocommon->msgbox_data($this->receipt);
 
                        $repeat_types = array();
-                       $repeat_types[] = array('id'=> -1, 'name' => 
lang('day'));
-                       $repeat_types[] = array('id'=> 1, 'name' => 
lang('weekly'));
+//                     $repeat_types[] = array('id'=> -1, 'name' => 
lang('day'));
+//                     $repeat_types[] = array('id'=> 1, 'name' => 
lang('weekly'));
                        $repeat_types[] = array('id'=> 2, 'name' => 
lang('month'));
                        $repeat_types[] = array('id'=> 3, 'name' => 
lang('year'));
 
@@ -3137,6 +3170,7 @@
                                $entry['start_date'] =  
$GLOBALS['phpgw']->common->show_date($entry['start_date'],$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
                                $entry['repeat_type'] = 
$repeat_type_array[$entry['repeat_type']];
                                $entry['total_time'] = $entry['service_time'] + 
$entry['controle_time'];
+//                             $entry['select'] = "<input type='checkbox' 
class='mychecks' value='{$entry['serie_id']}'></input>";
                        }
 
                        if (phpgw::get_var('phpgw_return_as') != 'json')

Modified: branches/dev-syncromind/property/inc/class.uilookup.inc.php
===================================================================
--- branches/dev-syncromind/property/inc/class.uilookup.inc.php 2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/inc/class.uilookup.inc.php 2015-05-10 
18:19:25 UTC (rev 13178)
@@ -1161,6 +1161,9 @@
                function phpgw_user()
                {
                        $column = phpgw::get_var('column');
+                       $acl_app = phpgw::get_var('acl_app');
+                       $acl_location = phpgw::get_var('acl_location');
+                       $acl_required = phpgw::get_var('acl_required', 'int');
 
                        if( phpgw::get_var('phpgw_return_as') == 'json' )
                        {
@@ -1191,7 +1194,10 @@
                                        'sort' => $order[0]['dir'],
                                        'dir' => $order[0]['dir'],
                                        'cat_id' => phpgw::get_var('cat_id', 
'int', 'REQUEST', 0),
-                                       'allrows' => phpgw::get_var('length', 
'int') == -1
+                                       'allrows' => phpgw::get_var('length', 
'int') == -1,
+                                       'acl_app'       => $acl_app,
+                                       'acl_location'  => $acl_location,
+                                       'acl_required'  => $acl_required
                                );
 
                                $values = $this->bo->read_phpgw_user($params);
@@ -1241,7 +1247,10 @@
                                                        'query'                 
        => $this->query,
                                                        'filter'                
        => $this->filter,
                                                        'column'                
        => $column,
-                                                       'phpgw_return_as' => 
'json'
+                                                       'acl_app'               
        => $acl_app,
+                                                       'acl_location'          
=> $acl_location,
+                                                       'acl_required'          
=> $acl_required,
+                                                       'phpgw_return_as'       
=> 'json'
                                        )),
                                        'allrows'       => false,
                                        'editor_action' => '',

Modified: branches/dev-syncromind/property/js/portico/entity.edit.js
===================================================================
--- branches/dev-syncromind/property/js/portico/entity.edit.js  2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/js/portico/entity.edit.js  2015-05-10 
18:19:25 UTC (rev 13178)
@@ -51,7 +51,148 @@
                var api = oTable3.api();
                api.ajax.url( requestUrl ).load();
        }
-       
+
+       this.onActionsClick=function(action)
+       {
+               $("#controller_receipt").html("");
+               if(action === 'add')
+               {
+                       add_control();
+               }
+               
+               var oTT = TableTools.fnGetInstance( 'datatable-container_4' );
+               var selected = oTT.fnGetSelectedData();
+               var numSelected =       selected.length;
+
+               if (numSelected ==0){
+                       alert('None selected');
+                       return false;
+               }
+               var ids = [];
+               for ( var n = 0; n < selected.length; ++n )
+               {
+                       var aData = selected[n];
+                       ids.push(aData['serie_id']);
+               }
+
+               if(ids.length > 0)
+               {
+                       var data = {"ids": ids, "action": action};
+                       data.repeat_interval = $("#repeat_interval").val();
+                       data.controle_time = $("#controle_time").val();
+                       data.service_time = $("#service_time").val();
+                       data.control_responsible = 
$("#control_responsible").val();
+                       data.control_start_date = 
$("#control_start_date").val();
+                       data.repeat_type = $("#repeat_type").val();
+
+                       var formUrl = $("#form").attr("action");
+                       var Url = parseURL(formUrl);
+                       oArgs  = Url.searchObject;
+                       delete oArgs.click_history;
+                       oArgs.menuaction = 
'property.boentity.update_control_serie';
+
+                       var requestUrl = phpGWLink('index.php', oArgs, true);
+
+                       $.ajax({
+                               type: 'POST',
+                               dataType: 'json',
+                               url: requestUrl,
+                               data: data,
+                               success: function(data) {
+                                       if( data != null)
+                                       {
+                                               
$("#controller_receipt").html(data.status + '::' + data.msg);
+                                               if(data.status_kode == 'ok')
+                                               {
+
+                                               }
+                                       }
+                               }
+                       });
+
+
+                       var oArgs2 = 
{menuaction:'property.uientity.get_controls_at_component', type:oArgs.type, 
entity_id:oArgs.entity_id, cat_id:oArgs.cat_id, id: oArgs.id};
+                       var requestUrl2 = phpGWLink('index.php', oArgs2, true);
+                       
JqueryPortico.updateinlineTableHelper('datatable-container_4', requestUrl2);
+               }
+       }
+
+       function parseURL(url)
+       {
+               var parser = document.createElement('a'),
+                       searchObject = {},
+                       queries, split, i;
+               // Let the browser do the work
+               parser.href = url;
+               // Convert query string to object
+               queries = parser.search.replace(/^\?/, '').split('&');
+               for( i = 0; i < queries.length; i++ ) {
+                       split = queries[i].split('=');
+                       searchObject[split[0]] = split[1];
+               }
+               return {
+                       protocol: parser.protocol,
+                       host: parser.host,
+                       hostname: parser.hostname,
+                       port: parser.port,
+                       pathname: parser.pathname,
+                       search: parser.search,
+                       searchObject: searchObject,
+                       hash: parser.hash
+               };
+       }
+
+       add_control = function()
+       {
+               var formUrl = $("#form").attr("action");
+               var Url = parseURL(formUrl);
+               oArgs  = Url.searchObject;
+               delete oArgs.click_history;
+               oArgs.menuaction = 'property.boentity.add_control';
+               oArgs.control_id = $("#control_id").val();
+               oArgs.control_responsible = $("#control_responsible").val();
+               oArgs.control_start_date = $("#control_start_date").val();
+               oArgs.repeat_type = $("#repeat_type").val();
+               if(!oArgs.repeat_type)
+               {
+                       alert('velg type serie');
+                       return;
+               }
+
+               oArgs.repeat_interval = $("#repeat_interval").val();
+               oArgs.controle_time = $("#controle_time").val();
+               oArgs.service_time = $("#service_time").val();
+               var requestUrl = phpGWLink('index.php', oArgs, true);
+//                                                             
alert(requestUrl);
+
+               $("#controller_receipt").html("");
+
+               $.ajax({
+                       type: 'POST',
+                       dataType: 'json',
+                       url: requestUrl,
+                       success: function(data) {
+                               if( data != null)
+                               {
+                                       
$("#controller_receipt").html(data.status + '::' + data.msg);
+                                       if(data.status_kode == 'ok')
+                                       {
+                                               $("#control_id").val('');
+                                               $("#control_name").val('');
+                                               
$("#control_responsible").val('');
+                                               
$("#control_responsible_user_name").val('');
+                                               
$("#control_start_date").val('');
+                                       }
+                               }
+                       }
+               });
+
+               var oArgs2 = 
{menuaction:'property.uientity.get_controls_at_component', type:oArgs.type, 
entity_id:oArgs.entity_id, cat_id:oArgs.cat_id, id: oArgs.id};
+               var requestUrl2 = phpGWLink('index.php', oArgs2, true);
+               JqueryPortico.updateinlineTableHelper('datatable-container_4', 
requestUrl2);
+       };
+
+
 var documents = null;
 var requestUrlDoc = null;
        

Modified: branches/dev-syncromind/property/setup/tables_current.inc.php
===================================================================
--- branches/dev-syncromind/property/setup/tables_current.inc.php       
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/setup/tables_current.inc.php       
2015-05-10 18:19:25 UTC (rev 13178)
@@ -997,7 +997,7 @@
                        'pk' => array('id'),
                        'fk' => array(),
                        'ix' => array(),
-                       'uc' => array('name')
+                       'uc' => array('num')
                ),
                'fm_tts_status' => array(
                        'fd' => array(

Modified: branches/dev-syncromind/property/setup/tables_update.inc.php
===================================================================
--- branches/dev-syncromind/property/setup/tables_update.inc.php        
2015-05-09 17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/setup/tables_update.inc.php        
2015-05-10 18:19:25 UTC (rev 13178)
@@ -7852,7 +7852,7 @@
        {
                $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
 
-               $GLOBALS['phpgw_setup']->oProc->query("ALTER TABLE fm_budget 
DROP CONSTRAINT fm_budget_year_key");
+               $GLOBALS['phpgw_setup']->oProc->query("ALTER TABLE fm_budget 
DROP CONSTRAINT fm_budget_year_b_account_id_district_id_revision_key");
                $GLOBALS['phpgw_setup']->oProc->query("ALTER TABLE fm_budget 
ADD CONSTRAINT fm_budget_year_key UNIQUE(year , b_account_id , district_id , 
revision, ecodimb ,category)");
 
                
$GLOBALS['phpgw_setup']->oProc->AlterColumn('fm_department','name', 
array('type' => 'varchar','precision' => '200','nullable' => False));

Modified: branches/dev-syncromind/property/templates/base/entity.xsl
===================================================================
--- branches/dev-syncromind/property/templates/base/entity.xsl  2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/property/templates/base/entity.xsl  2015-05-10 
18:19:25 UTC (rev 13178)
@@ -498,7 +498,7 @@
                                                        <script 
type="text/javascript">
                                                        
lookup_control_responsible = function()
                                                        {
-                                                               var oArgs = 
{menuaction:'property.uilookup.phpgw_user', column:'control_responsible'};
+                                                               var oArgs = 
{menuaction:'property.uilookup.phpgw_user', column:'control_responsible', 
acl_app:'controller', acl_location: '.control', acl_required:4};
                                                                var requestUrl 
= phpGWLink('index.php', oArgs);
                                                                
TINY.box.show({iframe:requestUrl, 
boxid:"frameless",width:750,height:450,fixed:false,maskid:"darkmask",maskopacity:40,
 mask:true, animate:true, close: true});
                                                        }
@@ -509,82 +509,7 @@
                                                                var requestUrl 
= phpGWLink('index.php', oArgs);
                                                                
TINY.box.show({iframe:requestUrl, 
boxid:"frameless",width:750,height:450,fixed:false,maskid:"darkmask",maskopacity:40,
 mask:true, animate:true, close: true});
                                                        }
-<![CDATA[
-                                                       function parseURL(url)
-                                                       {
-                                                               var parser = 
document.createElement('a'),
-                                                                       
searchObject = {},
-                                                                       
queries, split, i;
-                                                               // Let the 
browser do the work
-                                                               parser.href = 
url;
-                                                               // Convert 
query string to object
-                                                               queries = 
parser.search.replace(/^\?/, '').split('&');
-                                                               for( i = 0; i < 
queries.length; i++ ) {
-                                                                       split = 
queries[i].split('=');
-                                                                       
searchObject[split[0]] = split[1];
-                                                               }
-                                                               return {
-                                                                       
protocol: parser.protocol,
-                                                                       host: 
parser.host,
-                                                                       
hostname: parser.hostname,
-                                                                       port: 
parser.port,
-                                                                       
pathname: parser.pathname,
-                                                                       search: 
parser.search,
-                                                                       
searchObject: searchObject,
-                                                                       hash: 
parser.hash
-                                                               };
-                                                       }
-]]>
-                                                       add_control = function()
-                                                       {
-                                                               var formUrl = 
$("#form").attr("action");
-                                                               var Url = 
parseURL(formUrl);
-                                                               oArgs  = 
Url.searchObject;
-                                                               delete 
oArgs.click_history;
-                                                               
oArgs.menuaction = 'property.boentity.add_control';
-                                                               
oArgs.control_id = $("#control_id").val();
-                                                               
oArgs.control_responsible = $("#control_responsible").val();
-                                                               
oArgs.control_start_date = $("#control_start_date").val();
-                                                               
oArgs.repeat_type = $("#repeat_type").val();
-                                                               
if(!oArgs.repeat_type)
-                                                               {
-                                                                       
alert('velg type serie');
-                                                                       return;
-                                                               }
 
-                                                               
oArgs.repeat_interval = $("#repeat_interval").val();
-                                                               
oArgs.controle_time = $("#controle_time").val();
-                                                               
oArgs.service_time = $("#service_time").val();
-                                                               var requestUrl 
= phpGWLink('index.php', oArgs, true);
-//                                                             
alert(requestUrl);
-
-                                                               
$("#controller_receipt").html("");
-
-                                                               $.ajax({
-                                                                       type: 
'POST',
-                                                                       
dataType: 'json',
-                                                                       url: 
requestUrl,
-                                                                       
success: function(data) {
-                                                                               
if( data != null)
-                                                                               
{
-                                                                               
        $("#controller_receipt").html(data.status + '::' + data.msg);
-                                                                               
        if(data.status_kode == 'ok')
-                                                                               
        {
-                                                                               
                $("#control_id").val('');
-                                                                               
                $("#control_name").val('');
-                                                                               
                $("#control_responsible").val('');
-                                                                               
                $("#control_responsible_user_name").val('');
-                                                                               
                $("#control_start_date").val('');
-                                                                               
        }
-                                                                               
}
-                                                                       }
-                                                               });
-
-                                                               var oArgs2 = 
{menuaction:'property.uientity.get_controls_at_component', type:oArgs.type, 
entity_id:oArgs.entity_id, cat_id:oArgs.cat_id, id: oArgs.id};
-                                                               var requestUrl2 
= phpGWLink('index.php', oArgs2, true);
-                                                               
JqueryPortico.updateinlineTableHelper('datatable-container_4', requestUrl2);
-                                                       };
-
                                                        </script>
                                                        <div 
id="controller_receipt"></div>
                                                        <fieldset>
@@ -653,10 +578,6 @@
                                                                <input 
type="text" name="service_time" id="service_time" value="" size="">
                                                                </input>
                                                                </div>
-                                                               <div 
class="pure-control-group">
-                                                               <input 
type="button" name="" value="{$lang_add}" title="{$lang_add}" 
onClick="add_control();">
-                                                               </input>
-                                                               </div>
                                                        </fieldset>
                                                        <div 
class="pure-control-group">
                                                                <label>

Modified: branches/dev-syncromind/rental/inc/class.uibilling.inc.php
===================================================================
--- branches/dev-syncromind/rental/inc/class.uibilling.inc.php  2015-05-09 
17:49:21 UTC (rev 13177)
+++ branches/dev-syncromind/rental/inc/class.uibilling.inc.php  2015-05-10 
18:19:25 UTC (rev 13178)
@@ -464,7 +464,7 @@
                //set is_billed on invoice price items to false
                $billing_job_invoices = 
rental_soinvoice::get_instance()->get(null, null, null, null, null, null, 
array('billing_id' => phpgw::get_var('id')));
                foreach($billing_job_invoices as $invoice){
-                       $price_items = 
rental_socontract_price_item::get_instance()->get(null, null, null, null, null, 
null, array('contract_id' => $invoice->get_contract_id(), 'one_time' => true));
+                       $price_items = 
rental_socontract_price_item::get_instance()->get(null, null, null, null, null, 
null, array('contract_id' => $invoice->get_contract_id(), 'one_time' => true, 
'include_billed' => true));
                        foreach($price_items as $price_item){
                                if($price_item->get_date_start() >= 
$invoice->get_timestamp_start() && $price_item->get_date_start() <= 
$invoice->get_timestamp_end()){
                                        $price_item->set_is_billed(false);




reply via email to

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