fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [8988] property: move orders to new home


From: Sigurd Nes
Subject: [Fmsystem-commits] [8988] property: move orders to new home
Date: Sat, 17 Mar 2012 19:25:24 +0000

Revision: 8988
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=8988
Author:   sigurdne
Date:     2012-03-17 19:25:24 +0000 (Sat, 17 Mar 2012)
Log Message:
-----------
property: move orders to new home

Modified Paths:
--------------
    trunk/property/inc/class.boproject.inc.php
    trunk/property/inc/class.boworkorder.inc.php
    trunk/property/inc/class.soentity.inc.php
    trunk/property/inc/class.soproject.inc.php
    trunk/property/inc/class.soworkorder.inc.php
    trunk/property/inc/class.uiproject.inc.php
    trunk/property/inc/class.uiworkorder.inc.php
    trunk/property/setup/phpgw_no.lang
    trunk/property/templates/base/project.xsl
    trunk/property/templates/base/workorder.xsl

Modified: trunk/property/inc/class.boproject.inc.php
===================================================================
--- trunk/property/inc/class.boproject.inc.php  2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/inc/class.boproject.inc.php  2012-03-17 19:25:24 UTC (rev 
8988)
@@ -591,10 +591,12 @@
 
                function read_single_mini($project_id)
                {
-                       $project                                                
= $this->so->read_single($project_id);
-                       $dateformat                                             
= $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];
-                       $project['start_date']                  = 
$GLOBALS['phpgw']->common->show_date($project['start_date'],$dateformat);
-                       $project['end_date']                    = 
isset($project['end_date']) && $project['end_date'] ? 
$GLOBALS['phpgw']->common->show_date($project['end_date'],$dateformat) : '';
+                       if($project     = $this->so->read_single($project_id))
+                       {
+                               $dateformat                                     
        = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];
+                               $project['start_date']                  = 
$GLOBALS['phpgw']->common->show_date($project['start_date'],$dateformat);
+                               $project['end_date']                    = 
isset($project['end_date']) && $project['end_date'] ? 
$GLOBALS['phpgw']->common->show_date($project['end_date'],$dateformat) : '';
+                       }
 
                        if($project['location_code'])
                        {

Modified: trunk/property/inc/class.boworkorder.inc.php
===================================================================
--- trunk/property/inc/class.boworkorder.inc.php        2012-03-16 14:04:26 UTC 
(rev 8987)
+++ trunk/property/inc/class.boworkorder.inc.php        2012-03-17 19:25:24 UTC 
(rev 8988)
@@ -598,33 +598,34 @@
 
                                switch ($value['status'])
                                {
-                               case 'R': $type = lang('Re-opened'); break;
-                               case 'RM': $type = lang('remark'); break;
-                               case 'X': $type = lang('Closed');    break;
-                               case 'O': $type = lang('Opened');    break;
-                               case 'A': $type = lang('Re-assigned'); break;
-                               case 'P': $type = lang('Priority changed'); 
break;
-                               case 'M':
-                                       $type = lang('Sent by email to');
-                                       $_order_sent_adress = 
explode('::',$value['new_value']);
-                                       $this->order_sent_adress = 
$_order_sent_adress[0]; // in case we want to resend the order as an reminder
-                                       unset($_order_sent_adress);
-                                       break;
-                               case 'MS':
-                                       $type = lang('Sent by sms');
-                                       break;
-                               case 'B': $type = lang('Budget changed'); break;
-                               case 'CO': $type = lang('Initial Coordinator'); 
break;
-                               case 'C': $type = lang('Coordinator changed'); 
break;
-                               case 'TO': $type = lang('Initial Category'); 
break;
-                               case 'T': $type = lang('Category changed'); 
break;
-                               case 'SO': $type = lang('Initial Status'); 
break;
-                               case 'S': $type = lang('Status changed'); break;
-                               case 'SC': $type = lang('Status confirmed'); 
break;
-                               case 'AP': $type = lang('Ask for approval'); 
break;
-                               case 'ON': $type = lang('Owner notified'); 
break;
-                               case 'H': $type = lang('Billable hours 
changed'); break;
-                               default: break;
+                                       case 'R': $type = lang('Re-opened'); 
break;
+                                       case 'RM': $type = lang('remark'); 
break;
+                                       case 'X': $type = lang('Closed');    
break;
+                                       case 'O': $type = lang('Opened');    
break;
+                                       case 'A': $type = lang('Re-assigned'); 
break;
+                                       case 'P': $type = lang('Priority 
changed'); break;
+                                       case 'M':
+                                               $type = lang('Sent by email 
to');
+                                               $_order_sent_adress = 
explode('::',$value['new_value']);
+                                               $this->order_sent_adress = 
$_order_sent_adress[0]; // in case we want to resend the order as an reminder
+                                               unset($_order_sent_adress);
+                                               break;
+                                       case 'MS':
+                                               $type = lang('Sent by sms');
+                                               break;
+                                       case 'B': $type = lang('Budget 
changed'); break;
+                                       case 'CO': $type = lang('Initial 
Coordinator'); break;
+                                       case 'C': $type = lang('Coordinator 
changed'); break;
+                                       case 'TO': $type = lang('Initial 
Category'); break;
+                                               case 'T': $type = 
lang('Category changed'); break;
+                                       case 'SO': $type = lang('Initial 
Status'); break;
+                                       case 'S': $type = lang('Status 
changed'); break;
+                                       case 'SC': $type = lang('Status 
confirmed'); break;
+                                       case 'AP': $type = lang('Ask for 
approval'); break;
+                                       case 'ON': $type = lang('Owner 
notified'); break;
+                                       case 'H': $type = lang('Billable hours 
changed'); break;
+                                       case 'NP': $type = lang('moved to 
another project'); break;
+                                       default:
                                }
 
                                
if($value['new_value']=='O'){$value['new_value']=lang('Opened');}

Modified: trunk/property/inc/class.soentity.inc.php
===================================================================
--- trunk/property/inc/class.soentity.inc.php   2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/inc/class.soentity.inc.php   2012-03-17 19:25:24 UTC (rev 
8988)
@@ -295,7 +295,7 @@
                                $uicols['datatype'][]           = '';
                                $uicols['sortable'][]           = true;
                                $uicols['exchange'][]           = false;
-                               $uicols['formatter'][]          = '';
+                               $uicols['formatter'][]          = $lookup ? '' 
: 'linktToEntity';
                                $uicols['classname'][]          = '';
 
                                $cols_return[]                          = 'id';
@@ -930,7 +930,7 @@
                                $uicols['datatype'][]           = '';
                                $uicols['sortable'][]           = true;
                                $uicols['exchange'][]           = false;
-                               $uicols['formatter'][]          = 
'linktToEntity';
+                               $uicols['formatter'][]          = $lookup ? '' 
: 'linktToEntity';
                                $uicols['classname'][]          = '';
 
                                $cols_return[]                          = 'id';

Modified: trunk/property/inc/class.soproject.inc.php
===================================================================
--- trunk/property/inc/class.soproject.inc.php  2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/inc/class.soproject.inc.php  2012-03-17 19:25:24 UTC (rev 
8988)
@@ -735,6 +735,7 @@
                function read_single($project_id, $values = array())
                {
                        $project_id = (int) $project_id;
+                       $project = array();
                        $sql = "SELECT * from fm_project WHERE 
id={$project_id}";
 
                        $this->db->query($sql,__LINE__,__FILE__);
@@ -1160,9 +1161,13 @@
 
                        if($project['budget'])
                        {
-                               $new_budget = 
$this->updat_budget($project['id'], $project['budget_year'], 
$project['budget']);
+                               $this->updat_budget($project['id'], 
$project['budget_year'], $project['budget']);
                        }
 
+                       $this->db->query("SELECT sum(budget) AS sum_budget FROM 
fm_project_budget WHERE project_id = " . (int)$project['id'],__LINE__,__FILE__);
+                       $this->db->next_record();
+                       $new_budget =(int)$this->db->f('sum_budget');
+
                        if($project['extra']['contact_phone'] && 
$project['extra']['tenant_id'])
                        {
                                $this->db->query("UPDATE fm_tenant SET 
contact_phone='". $project['extra']['contact_phone']. "' WHERE id='". 
$project['extra']['tenant_id']. "'",__LINE__,__FILE__);
@@ -1190,13 +1195,18 @@
                        }
 
                        
$this->update_request_status($project['id'],$project['status'],$project['cat_id'],$project['coordinator']);
-                       $this->db->query("SELECT id from fm_workorder WHERE 
project_id=" .  (int)$project['id'] ,__LINE__,__FILE__);
+                       $this->db->query("SELECT id FROM fm_workorder WHERE 
project_id=" .  (int)$project['id'] ,__LINE__,__FILE__);
                        $workorders = array();
                        while ($this->db->next_record())
                        {
                                $workorders[] = $this->db->f('id');
                        }
 
+                       if ($workorders)
+                       {
+                               $historylog_workorder   = 
CreateObject('property.historylog','workorder');
+                       }
+
                        if (($old_status != $project['status']) || 
$project['confirm_status'])
                        {
                                $close_pending_action = false;
@@ -1229,10 +1239,6 @@
                                        unset($action_params);
                                }
 
-                               if ($workorders)
-                               {
-                                       $historylog_workorder   = 
CreateObject('property.historylog','workorder');
-                               }
 
                                if($old_status != $project['status'])
                                {
@@ -1326,6 +1332,88 @@
 
 //                     execMethod('property.soworkorder.update_planned_cost', 
$project['id']);
 
+                       if (isset($project['new_project_id']) && 
$project['new_project_id'] && ($project['new_project_id'] != $project['id']))
+                       {
+                               $new_project_id = (int) 
$project['new_project_id'];
+                               reset($workorders);
+                               foreach($workorders as $workorder_id)
+                               {
+                                       
$historylog_workorder->add('NP',$workorder_id,$new_project_id, $project['id']);
+                               }
+
+                               $sql = "SELECT sum(budget) AS sum_budget FROM 
fm_project_budget WHERE project_id = {$new_project_id}";
+                               $this->db->query($sql,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $old_budget_new_project = 
(int)$this->db->f('sum_budget');
+
+                               $sql = "SELECT * FROM fm_project_budget WHERE 
project_id = " . (int)$project['id'];
+                               $this->db->query($sql,__LINE__,__FILE__);
+
+                               $budget = array();
+                               while ($this->db->next_record())
+                               {
+                                       $budget[] = array
+                                       (
+                                               'project_id'            => 
(int)$project['id'],
+                                               'year'                          
=> $this->db->f('year'),
+                                               'budget'                        
=> (int)$this->db->f('budget'),
+                                               'user_id'                       
=> $this->db->f('user_id'),
+                                               'entry_date'            => 
$this->db->f('entry_date'),
+                                               'modified_date'         => 
$this->db->f('modified_date')
+                                       );
+                               }
+                               
+                               foreach($budget as $entry)
+                               {
+                                       $sql = "SELECT * FROM fm_project_budget 
WHERE project_id = {$new_project_id} AND year = {$entry['year']}";
+                                       
$this->db->query($sql,__LINE__,__FILE__);
+                                       if($this->db->next_record())
+                                       {
+                                               $sql = "UPDATE 
fm_project_budget SET budget = budget + {$entry['budget']} WHERE project_id = 
{$new_project_id} AND year = {$entry['year']}";
+                                       }
+                                       else
+                                       {
+                                               $value_set = array
+                                               (
+                                                       'project_id'            
=> $new_project_id,
+                                                       'year'                  
        => $entry['year'],
+                                                       'budget'                
        => $entry['budget'],
+                                                       'user_id'               
        => $entry['user_id'],
+                                                       'entry_date'            
=> $entry['entry_date'],
+                                                       'modified_date'         
=> $entry['modified_date']
+                                               );
+                                               $cols = implode(',', 
array_keys($value_set));
+                                               $values = 
$this->db->validate_insert(array_values($value_set));
+                                               $this->db->query("INSERT INTO 
fm_project_budget ({$cols}) VALUES ({$values})",__LINE__,__FILE__);
+                                       }
+                               }
+
+                               if ($old_budget)
+                               {
+                                       $historylog->add('B',$project['id'],0, 
$old_budget);
+                               }
+
+                               $sql = "SELECT sum(budget) AS sum_budget FROM 
fm_project_budget WHERE project_id = {$new_project_id}";
+                               $this->db->query($sql,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $new_budget_new_project = 
(int)$this->db->f('sum_budget');
+
+                               $sql = "SELECT reserve FROM fm_project WHERE id 
= " . (int)$project['id'];
+                               $this->db->query($sql,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $reserve_old_project    = 
(int)$this->db->f('reserve');
+
+                               if ($new_budget_new_project != 
$old_budget_new_project)
+                               {
+                                       $historylog->add('B',$new_project_id, 
$new_budget_new_project, $old_budget_new_project);
+                               }
+                               $this->db->query("UPDATE fm_workorder SET 
project_id = {$new_project_id} WHERE project_id = 
{$project['id']}",__LINE__,__FILE__);
+                               $this->db->query("UPDATE fm_project SET reserve 
= 0 WHERE reserve IS NULL AND id = {$new_project_id}" ,__LINE__,__FILE__);
+                               $this->db->query("UPDATE fm_project SET budget 
= {$new_budget_new_project}, reserve = reserve + {$reserve_old_project} WHERE 
id = {$new_project_id}" ,__LINE__,__FILE__);
+                               $this->db->query("UPDATE fm_project SET budget 
= 0, reserve = 0 WHERE id =  " . (int)$project['id'] ,__LINE__,__FILE__);
+                               $this->db->query("DELETE FROM fm_project_budget 
WHERE project_id =  " . (int)$project['id'] ,__LINE__,__FILE__);
+                       }
+
                        $receipt['id'] = $project['id'];
                        $receipt['message'][] = array('msg'=>lang('project %1 
has been edited', $project['id']));
 

Modified: trunk/property/inc/class.soworkorder.inc.php
===================================================================
--- trunk/property/inc/class.soworkorder.inc.php        2012-03-16 14:04:26 UTC 
(rev 8987)
+++ trunk/property/inc/class.soworkorder.inc.php        2012-03-17 19:25:24 UTC 
(rev 8988)
@@ -1256,6 +1256,13 @@
                                $historylog->add('B', $workorder['id'], 
$workorder['budget'], $old_budget);
                        }
 
+                       if (isset($workorder['new_project_id']) && 
$workorder['new_project_id'] && ($workorder['new_project_id'] != 
$workorder['project_id']))
+                       {
+                               $new_project_id = (int) 
$workorder['new_project_id'];
+                               $this->db->query("UPDATE fm_workorder SET 
project_id = {$new_project_id} WHERE id= {$workorder['id']}" 
,__LINE__,__FILE__);
+                               
$historylog->add('NP',$workorder['id'],$new_project_id, 
$workorder['project_id']);
+                       }
+
                        if ($workorder['remark'])
                        {
                                $historylog->add('RM', $workorder['id'], 
$workorder['remark']);

Modified: trunk/property/inc/class.uiproject.inc.php
===================================================================
--- trunk/property/inc/class.uiproject.inc.php  2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/inc/class.uiproject.inc.php  2012-03-17 19:25:24 UTC (rev 
8988)
@@ -1131,6 +1131,16 @@
                                                }
                                        }
 
+                                       if(isset($values['new_project_id']) && 
$values['new_project_id'] && 
!$this->bo->read_single_mini($values['new_project_id']))
+                                       {
+                                               
$receipt['error'][]=array('msg'=>lang('the project %1 does not exist', 
$values['new_project_id']));
+                                       }
+
+                                       if(isset($values['new_project_id']) && 
$values['new_project_id'] && $values['new_project_id'] == $id)
+                                       {
+                                               
unset($values['new_project_id']);
+                                       }
+
                                        if(!isset($values['end_date']) || 
!$values['end_date'])
                                        {
                                                
$receipt['error'][]=array('msg'=>lang('Please select an end date!'));

Modified: trunk/property/inc/class.uiworkorder.inc.php
===================================================================
--- trunk/property/inc/class.uiworkorder.inc.php        2012-03-16 14:04:26 UTC 
(rev 8987)
+++ trunk/property/inc/class.uiworkorder.inc.php        2012-03-17 19:25:24 UTC 
(rev 8988)
@@ -959,6 +959,16 @@
                                        $values = 
$this->bocommon->collect_locationdata($values,$insert_record);
                                }
 
+                               if(isset($values['new_project_id']) && 
$values['new_project_id'] && 
!$boproject->read_single_mini($values['new_project_id']))
+                               {
+                                       
$receipt['error'][]=array('msg'=>lang('the project %1 does not exist', 
$values['new_project_id']));
+                               }
+
+                               if(isset($values['new_project_id']) && 
$values['new_project_id'] && $values['new_project_id'] == $values['project_id'])
+                               {
+                                       unset($values['new_project_id']);
+                               }
+
                                if(!$values['title'])
                                {
                                        
$receipt['error'][]=array('msg'=>lang('Please enter a workorder title !'));

Modified: trunk/property/setup/phpgw_no.lang
===================================================================
--- trunk/property/setup/phpgw_no.lang  2012-03-16 14:04:26 UTC (rev 8987)
+++ trunk/property/setup/phpgw_no.lang  2012-03-17 19:25:24 UTC (rev 8988)
@@ -1050,6 +1050,10 @@
 month  property        no      Måned
 Monthly (by day)       property        no      Månedlig (dag)
 Monthly (by date)      property        no      Månedlig (dato)
+move   property        no      Flytt
+move budget and orders to another project      property        no      Flytt 
budsjett og bestillinger til et annet prosjekt
+move to another project        property        no      Flytt til et annet 
prosjekt
+moved to another project       property        no      Flyttet til et annet 
prosjekt
 muliple checkbox       property        no      Flervalgs avkrysningsknapp
 muliple radio  property        no      Flervalgs radioknapp
 multiple checkbox      property        no      Flervalgs avkrysningsknapp
@@ -1694,6 +1698,7 @@
 the mail server returned       property        no      E-post serveren 
returnerte
 the number of %1 hour is added!        property        no      %1 poster er 
lagt til
 The order will also be sent to this one        property        no      
Bestillinga blir også sendt til denne
+the project %1 does not exist  property        no      Prosjekt %1 finnes ikke
 the project has not been saved property        no      Prosjektet er ikke 
lagret
 the property is private. if the property should be public, uncheck this box    
property        no      Eiendommen er merket privat. Dersom den skulle være 
public - fjern krysset i denne boksen
 the property is public. if the property should be private, check this box      
property        no      Eiendommen er merket public. Dersom den skulle være 
privat - kryss av denne boksen

Modified: trunk/property/templates/base/project.xsl
===================================================================
--- trunk/property/templates/base/project.xsl   2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/templates/base/project.xsl   2012-03-17 19:25:24 UTC (rev 
8988)
@@ -356,6 +356,23 @@
                                                                        
</xsl:choose>
                                                                </xsl:when>
                                                        </xsl:choose>
+                                                       <xsl:choose>
+                                                               <xsl:when 
test="value_project_id!='' and mode='edit'">
+                                                                       <tr>
+                                                                               
<td valign="top">
+                                                                               
        <xsl:value-of select="php:function('lang', 'move')"/>
+                                                                               
</td>
+                                                                               
<td>
+                                                                               
        <input type="text" name="values[new_project_id]" value="">
+                                                                               
                <xsl:attribute name="title">
+                                                                               
                        <xsl:value-of select="php:function('lang', 'move budget 
and orders to another project')"/>
+                                                                               
                </xsl:attribute>
+                                                                               
        </input>
+                                                                               
</td>
+                                                                       </tr>
+                                                               </xsl:when>
+                                                       </xsl:choose>
+
                                                        <tr>
                                                                <td 
valign="top">
                                                                        
<xsl:value-of select="php:function('lang', 'budget')"/>

Modified: trunk/property/templates/base/workorder.xsl
===================================================================
--- trunk/property/templates/base/workorder.xsl 2012-03-16 14:04:26 UTC (rev 
8987)
+++ trunk/property/templates/base/workorder.xsl 2012-03-17 19:25:24 UTC (rev 
8988)
@@ -166,6 +166,22 @@
                                                                </td>
                                                        </tr>
                                                        <xsl:choose>
+                                                               <xsl:when 
test="value_workorder_id!='' and mode='edit'">
+                                                                       <tr>
+                                                                               
<td valign="top">
+                                                                               
        <xsl:value-of select="php:function('lang', 'move to another project')"/>
+                                                                               
</td>
+                                                                               
<td>
+                                                                               
        <input type="text" name="values[new_project_id]" value="">
+                                                                               
                <xsl:attribute name="title">
+                                                                               
                        <xsl:value-of select="php:function('lang', 'move to 
another project')"/>
+                                                                               
                </xsl:attribute>
+                                                                               
        </input>
+                                                                               
</td>
+                                                                       </tr>
+                                                               </xsl:when>
+                                                       </xsl:choose>
+                                                       <xsl:choose>
                                                                <xsl:when 
test="location_template_type='form'">
                                                                        
<xsl:call-template name="location_form"/>
                                                                </xsl:when>
@@ -294,7 +310,7 @@
                                                                <td>
                                                                        <input 
type="hidden" name="values[origin]" value="{value_origin_type}"/>
                                                                        <input 
type="hidden" name="values[origin_id]" value="{value_origin_id}"/>
-                                                                       <input 
type="text" name="values[title]" value="{value_title}" 
onMouseout="window.status='';return true;">
+                                                                       <input 
type="text" name="values[title]" value="{value_title}" size="60">
                                                                                
<xsl:attribute name="title">
                                                                                
        <xsl:value-of select="lang_title_statustext"/>
                                                                                
</xsl:attribute>




reply via email to

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