[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';
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [11353] property: update project status based on workorder,
Sigurd Nes <=