fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [11353] property: update project status based on work


From: Sigurd Nes
Subject: [Fmsystem-commits] [11353] property: update project status based on workorder
Date: Mon, 07 Oct 2013 13:37:11 +0000

Revision: 11353
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=11353
Author:   sigurdne
Date:     2013-10-07 13:37:10 +0000 (Mon, 07 Oct 2013)
Log Message:
-----------
property: update project status based on workorder

Modified Paths:
--------------
    trunk/property/inc/class.soworkorder.inc.php
    trunk/property/inc/hook_config.inc.php
    trunk/property/templates/base/config.tpl
    trunk/sms/bin/default/set_workorder_status.php

Modified: trunk/property/inc/class.soworkorder.inc.php
===================================================================
--- trunk/property/inc/class.soworkorder.inc.php        2013-10-07 07:06:33 UTC 
(rev 11352)
+++ trunk/property/inc/class.soworkorder.inc.php        2013-10-07 13:37:10 UTC 
(rev 11353)
@@ -1328,12 +1328,19 @@
                                'mail_recipients'       => 
isset($workorder['vendor_email']) && is_array($workorder['vendor_email']) ? 
implode(',', $workorder['vendor_email']) : '',
                        );
 
-                       if($workorder['status'] == 'closed')
+
+                       $this->db->query("SELECT closed AS is_closed FROM 
fm_workorder_status WHERE id = '{$workorder['status']}'");
+                       $this->db->next_record();
+                       $is_closed = !!$this->db->f('is_closed');
+
+
+                       if($is_closed)
                        {
                                $value_set['paid'] = $paid = 
(isset($paid)?$paid:0);
                                $value_set['paid_percent'] = 100;
                        }
 
+
                        if (isset($workorder['extra']) && 
is_array($workorder['extra']))
                        {
                                foreach ($workorder['extra'] as $input_name => 
$value)
@@ -1513,7 +1520,6 @@
                                }
                        }
 
-
                        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'];
@@ -1525,6 +1531,9 @@
                        {
                                $historylog->add('RM', $workorder['id'], 
$workorder['remark']);
                        }
+
+                       $this->check_project_status($workorder['id']);
+                       
                        if($this->db->transaction_commit())
                        {
 
@@ -1539,6 +1548,45 @@
                        return $receipt;
                }
 
+
+               public function check_project_status($order_id)
+               {
+                       $config = CreateObject('phpgwapi.config','property');
+                       $config->read_repository();
+
+                       $project_status_on_last_order_closed 
=isset($config->config_data['project_status_on_last_order_closed']) && 
$config->config_data['project_status_on_last_order_closed'] ? 
$config->config_data['project_status_on_last_order_closed'] : '';
+                       
+                       if($project_status_on_last_order_closed)
+                       {
+                               $this->db->query("SELECT project_id FROM 
fm_workorder WHERE id= '{$order_id}'" ,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $project_id = (int)$this->db->f('project_id');
+
+                               $this->db->query("SELECT count(id) AS 
orders_at_project FROM fm_workorder WHERE project_id= {$project_id}" 
,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $orders_at_project = 
(int)$this->db->f('orders_at_project');
+
+                               $this->db->query("SELECT count(fm_workorder.id) 
AS closed_orders_at_project FROM fm_workorder {$this->join} fm_workorder_status 
ON (fm_workorder.status = fm_workorder_status.id) WHERE project_id= 
{$project_id} AND fm_workorder_status.closed = 1" ,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $closed_orders_at_project = 
(int)$this->db->f('closed_orders_at_project');
+
+                               $this->db->query("SELECT 
fm_project_status.closed AS closed_project, fm_project.status as old_status 
FROM fm_project {$this->join} fm_project_status ON (fm_project.status = 
fm_project_status.id) WHERE fm_project.id= {$project_id}" ,__LINE__,__FILE__);
+                               $this->db->next_record();
+                               $closed_project = 
!!$this->db->f('closed_project');
+                               $old_status = $this->db->f('old_status');
+                       
+                               if ($orders_at_project == 
$closed_orders_at_project && !$closed_project)
+                               {
+                                       $this->db->query("UPDATE fm_project SET 
status = '{$project_status_on_last_order_closed}' WHERE id= {$project_id}" 
,__LINE__,__FILE__);
+
+                                       $historylog_project     = 
CreateObject('property.historylog','project');
+
+                                       $historylog_project->add('S', 
$project_id, $project_status_on_last_order_closed, $old_status);
+                                       $historylog_project->add('RM', 
$project_id,'Status endret ved at siste bestilling er avsluttet');
+                               }
+                       }
+               }
+
                function delete($workorder_id )
                {
                        $this->db->transaction_begin();

Modified: trunk/property/inc/hook_config.inc.php
===================================================================
--- trunk/property/inc/hook_config.inc.php      2013-10-07 07:06:33 UTC (rev 
11352)
+++ trunk/property/inc/hook_config.inc.php      2013-10-07 13:37:10 UTC (rev 
11353)
@@ -168,7 +168,33 @@
                return $out;
        }
 
+
        /**
+       * Get HTML listbox with project status that are to be set when asking 
for approval
+       *
+       * @param $config
+       * @return string HTML checkboxes to be placed in a table
+       */
+       function project_status_on_last_order_closed($config)
+       {
+               $status_assigned = 
isset($config['project_status_on_last_order_closed']) ? 
$config['project_status_on_last_order_closed'] : array();
+
+               $status_entries = 
execMethod('property.bogeneric.get_list',array('type' => 'project_status', 
'selected' => $status_assigned));
+
+               $out = '<option value="">' . lang('none selected') . 
'</option>' . "\n";
+               foreach ( $status_entries as $status)
+               {
+                       $selected =  $status['selected'] ? 'selected =  
"selected"' : '';
+
+                       $out .=  <<<HTML
+                       <option 
value='{$status['id']}'{$selected}>{$status['name']}</option>
+HTML;
+               }
+               return $out;
+       }
+
+
+       /**
        * Get HTML listbox with workorder status that are to be set when asking 
for approval
        *
        * @param $config

Modified: trunk/property/templates/base/config.tpl
===================================================================
--- trunk/property/templates/base/config.tpl    2013-10-07 07:06:33 UTC (rev 
11352)
+++ trunk/property/templates/base/config.tpl    2013-10-07 13:37:10 UTC (rev 
11353)
@@ -56,7 +56,7 @@
                </tr>
 
                <tr class="row_on">
-                       <td>{lang_SMS_client_order_notice}:</td>
+                       <td>{lang_SMS_client_order_notice}:'ref: __order_id__. 
Message'</td>
                        <td>
                                <textarea cols="40" rows="4" 
name="newsettings[sms_client_order_notice]" 
wrap="virtual">{value_sms_client_order_notice}</textarea>
                        </td>
@@ -105,6 +105,15 @@
                        </td>
                </tr>
 
+               <tr class="row_off">
+                       <td>{lang_project_status_on_last_order_closed}:</td>
+                       <td>
+                               <select 
name="newsettings[project_status_on_last_order_closed]">
+                                       
{hook_project_status_on_last_order_closed}
+                               </select>
+                       </td>
+               </tr>
+
                <tr class="row_on">
                        <td>{lang_workorder_status_on_approval}:</td>
                        <td>

Modified: trunk/sms/bin/default/set_workorder_status.php
===================================================================
--- trunk/sms/bin/default/set_workorder_status.php      2013-10-07 07:06:33 UTC 
(rev 11352)
+++ trunk/sms/bin/default/set_workorder_status.php      2013-10-07 13:37:10 UTC 
(rev 11353)
@@ -56,6 +56,8 @@
                                                
$historylog_project->add('RM',$project_id,"Bestilling {$workorder_id} endret 
av: {$sms_sender}");
                                        }
                                }
+
+                               
execMethod('property.soworkorder.check_project_status',$workorder_id);
                                $command_output = 'success';
                        }
                }




reply via email to

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