mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 19:18:44 +02:00
808 lines
28 KiB
XML
Executable File
808 lines
28 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1">
|
|
<constants>
|
|
<constant id="RESPONSE_TICKET_SLT_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT SLT AS slt JOIN lnkSLAToSLT AS l1 ON l1.slt_id=slt.id JOIN SLA AS sla ON l1.sla_id=sla.id JOIN lnkCustomerContractToService AS l2 ON l2.sla_id=sla.id JOIN CustomerContract AS sc ON l2.customercontract_id=sc.id WHERE slt.metric = :metric AND l2.service_id = :this->service_id AND sc.org_id = :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]></constant>
|
|
<constant id="PORTAL_POWER_USER_PROFILE" xsi:type="string" _delta="define"><![CDATA[Portal power user]]></constant>
|
|
<constant id="PORTAL_SERVICECATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.status != 'obsolete']]></constant>
|
|
<constant id="PORTAL_SERVICE_SUBCATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT ServiceSubcategory WHERE service_id = :svc_id AND ServiceSubcategory.status != 'obsolete']]></constant>
|
|
<constant id="PORTAL_VALIDATE_SERVICECATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.id = :id AND s.status != 'obsolete']]></constant>
|
|
<constant id="PORTAL_VALIDATE_SERVICESUBCATEGORY_QUERY" xsi:type="string" _delta="define"><![CDATA[SELECT ServiceSubcategory AS Sub JOIN Service AS Svc ON Sub.service_id = Svc.id WHERE Sub.id=:id AND Sub.status != 'obsolete']]></constant>
|
|
<constant id="PORTAL_ALL_PARAMS" xsi:type="string" _delta="define"><![CDATA[from_service_id,org_id,caller_id,service_id,servicesubcategory_id,title,description,impact,emergency,moreinfo,caller_id,start_date,end_date,duration,impact_duration]]></constant>
|
|
<constant id="PORTAL_SET_TYPE_FROM" xsi:type="string" _delta="define"><![CDATA[request_type]]></constant>
|
|
<constant id="PORTAL_TYPE_TO_CLASS" xsi:type="string" _delta="define"><![CDATA[]]></constant>
|
|
<constant id="PORTAL_TICKETS_SEARCH_CRITERIA" xsi:type="string" _delta="define"><![CDATA[ref,start_date,close_date,service_id,caller_id]]></constant>
|
|
<constant id="PORTAL_TICKETS_SEARCH_FILTER_service_id" xsi:type="string" _delta="define"><![CDATA[SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :org_id AND s.status != 'obsolete']]></constant>
|
|
<constant id="PORTAL_TICKETS_SEARCH_FILTER_caller_id" xsi:type="string" _delta="define"><![CDATA[SELECT Person WHERE org_id = :org_id]]></constant>
|
|
</constants>
|
|
<classes>
|
|
<class id="Ticket" _delta="define">
|
|
<parent>cmdbAbstractObject</parent>
|
|
<properties>
|
|
<comment><![CDATA[/**
|
|
* Persistent classes for a CMDB
|
|
*
|
|
* @copyright Copyright (C) 2010-2012 Combodo SARL
|
|
* @license http://opensource.org/licenses/AGPL-3.0
|
|
*/]]></comment>
|
|
<category>bizmodel,searchable,structure</category>
|
|
<abstract>true</abstract>
|
|
<key_type>autoincrement</key_type>
|
|
<db_table>ticket</db_table>
|
|
<db_key_field>id</db_key_field>
|
|
<db_final_class_field>finalclass</db_final_class_field>
|
|
<naming>
|
|
<format>%1$s</format>
|
|
<attributes>
|
|
<attribute id="ref"/>
|
|
</attributes>
|
|
</naming>
|
|
<display_template/>
|
|
<icon/>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute id="ref"/>
|
|
</attributes>
|
|
</reconciliation>
|
|
</properties>
|
|
<fields>
|
|
<field id="ref" xsi:type="AttributeString">
|
|
<sql>ref</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="org_id" xsi:type="AttributeExternalKey">
|
|
<sql>org_id</sql>
|
|
<target_class>Organization</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="org_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>org_id</extkey_attcode>
|
|
<target_attcode>name</target_attcode>
|
|
</field>
|
|
<field id="caller_id" xsi:type="AttributeExternalKey">
|
|
<filter><![CDATA[SELECT Person WHERE org_id = :this->org_id]]></filter>
|
|
<dependencies>
|
|
<attribute id="org_id"/>
|
|
</dependencies>
|
|
<sql>caller_id</sql>
|
|
<target_class>Person</target_class>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="caller_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>caller_id</extkey_attcode>
|
|
<target_attcode>name</target_attcode>
|
|
</field>
|
|
<field id="team_id" xsi:type="AttributeExternalKey">
|
|
<sql>team_id</sql>
|
|
<target_class>Team</target_class>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="team_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>team_id</extkey_attcode>
|
|
<target_attcode>email</target_attcode>
|
|
</field>
|
|
<field id="agent_id" xsi:type="AttributeExternalKey">
|
|
<filter><![CDATA[SELECT Person AS p JOIN lnkPersonToTeam AS l ON l.person_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->team_id]]></filter>
|
|
<dependencies>
|
|
<attribute id="team_id"/>
|
|
</dependencies>
|
|
<sql>agent_id</sql>
|
|
<target_class>Person</target_class>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
<allow_target_creation>false</allow_target_creation>
|
|
</field>
|
|
<field id="agent_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>agent_id</extkey_attcode>
|
|
<target_attcode>name</target_attcode>
|
|
</field>
|
|
<field id="title" xsi:type="AttributeString">
|
|
<sql>title</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="description" xsi:type="AttributeText">
|
|
<sql>description</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="start_date" xsi:type="AttributeDateTime">
|
|
<always_load_in_tables>true</always_load_in_tables>
|
|
<sql>start_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="end_date" xsi:type="AttributeDateTime">
|
|
<sql>end_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="last_update" xsi:type="AttributeDateTime">
|
|
<sql>last_update</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<tracking_level>none</tracking_level>
|
|
</field>
|
|
<field id="close_date" xsi:type="AttributeDateTime">
|
|
<sql>close_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="private_log" xsi:type="AttributeCaseLog">
|
|
<sql>private_log</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect">
|
|
<linked_class>lnkContactToTicket</linked_class>
|
|
<ext_key_to_me>ticket_id</ext_key_to_me>
|
|
<count_min>0</count_min>
|
|
<count_max>0</count_max>
|
|
<ext_key_to_remote>contact_id</ext_key_to_remote>
|
|
<duplicates/>
|
|
</field>
|
|
<field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
|
|
<linked_class>lnkFunctionalCIToTicket</linked_class>
|
|
<ext_key_to_me>ticket_id</ext_key_to_me>
|
|
<count_min>0</count_min>
|
|
<count_max>0</count_max>
|
|
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
|
|
<duplicates/>
|
|
</field>
|
|
<field id="workorders_list" xsi:type="AttributeLinkedSet">
|
|
<linked_class>WorkOrder</linked_class>
|
|
<ext_key_to_me>ticket_id</ext_key_to_me>
|
|
<count_min>0</count_min>
|
|
<count_max>0</count_max>
|
|
</field>
|
|
</fields>
|
|
<methods>
|
|
<method id="DBInsertNoReload">
|
|
<static>false</static>
|
|
<access>public</access>
|
|
<type>Overload-DBObject</type>
|
|
<code><![CDATA[
|
|
public function DBInsertNoReload()
|
|
{
|
|
$oMutex = new iTopMutex('ticket_insert');
|
|
$oMutex->Lock();
|
|
$iNextId = MetaModel::GetNextKey(get_class($this));
|
|
$sRef = $this->MakeTicketRef($iNextId);
|
|
$this->Set('ref', $sRef);
|
|
$iKey = parent::DBInsertNoReload();
|
|
$oMutex->Unlock();
|
|
return $iKey;
|
|
}
|
|
]]></code>
|
|
</method>
|
|
<method id="MakeTicketRef">
|
|
<static>false</static>
|
|
<access>protected</access>
|
|
<type>Overload-DBObject</type>
|
|
<code><![CDATA[
|
|
protected function MakeTicketRef($iNextId)
|
|
{
|
|
switch(get_class($this))
|
|
{
|
|
case 'UserRequest':
|
|
$sFormat = 'R-%06d';
|
|
break;
|
|
|
|
case 'Incident':
|
|
$sFormat = 'I-%06d';
|
|
break;
|
|
|
|
case 'Change':
|
|
case 'RoutineChange':
|
|
case 'EmergencyChange':
|
|
case 'NormalChange':
|
|
$sFormat = 'C-%06d';
|
|
break;
|
|
|
|
case 'Problem':
|
|
$sFormat = 'P-%06d';
|
|
break;
|
|
|
|
default:
|
|
$sFormat = 'T-%06d';
|
|
}
|
|
return sprintf($sFormat, $iNextId);
|
|
}
|
|
]]></code>
|
|
</method>
|
|
</methods>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item id="ref">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="org_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="caller_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="team_id">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="agent_id">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="title">
|
|
<rank>60</rank>
|
|
</item>
|
|
<item id="description">
|
|
<rank>70</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>80</rank>
|
|
</item>
|
|
<item id="end_date">
|
|
<rank>90</rank>
|
|
</item>
|
|
<item id="last_update">
|
|
<rank>100</rank>
|
|
</item>
|
|
<item id="close_date">
|
|
<rank>110</rank>
|
|
</item>
|
|
<item id="private_log">
|
|
<rank>120</rank>
|
|
</item>
|
|
<item id="contacts_list">
|
|
<rank>130</rank>
|
|
</item>
|
|
<item id="functionalcis_list">
|
|
<rank>140</rank>
|
|
</item>
|
|
<item id="workorders_list">
|
|
<rank>150</rank>
|
|
</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item id="ref">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="title">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="description">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="end_date">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="last_update">
|
|
<rank>60</rank>
|
|
</item>
|
|
<item id="close_date">
|
|
<rank>70</rank>
|
|
</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item id="ref">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="org_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="title">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="caller_id">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="team_id">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="agent_id">
|
|
<rank>60</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>70</rank>
|
|
</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
<class id="lnkContactToTicket" _delta="define">
|
|
<parent>cmdbAbstractObject</parent>
|
|
<properties>
|
|
<is_link>1</is_link>
|
|
<category>bizmodel</category>
|
|
<abstract>false</abstract>
|
|
<key_type>autoincrement</key_type>
|
|
<db_table>lnkcontacttoticket</db_table>
|
|
<db_key_field>id</db_key_field>
|
|
<db_final_class_field/>
|
|
<naming>
|
|
<format>%1$s %2$s</format>
|
|
<attributes>
|
|
<attribute id="ticket_id"/>
|
|
<attribute id="contact_id"/>
|
|
</attributes>
|
|
</naming>
|
|
<display_template/>
|
|
<icon/>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute id="ticket_id"/>
|
|
<attribute id="contact_id"/>
|
|
</attributes>
|
|
</reconciliation>
|
|
</properties>
|
|
<fields>
|
|
<field id="ticket_id" xsi:type="AttributeExternalKey">
|
|
<sql>ticket_id</sql>
|
|
<target_class>Ticket</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="ticket_ref" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>ticket_id</extkey_attcode>
|
|
<target_attcode>ref</target_attcode>
|
|
</field>
|
|
<field id="contact_id" xsi:type="AttributeExternalKey">
|
|
<sql>contact_id</sql>
|
|
<target_class>Contact</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="contact_email" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>contact_id</extkey_attcode>
|
|
<target_attcode>email</target_attcode>
|
|
</field>
|
|
<field id="role" xsi:type="AttributeString">
|
|
<sql>role</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
</fields>
|
|
<methods/>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="contact_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="role">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="contact_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="role">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="contact_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="role">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
<class id="lnkFunctionalCIToTicket" _delta="define">
|
|
<parent>cmdbAbstractObject</parent>
|
|
<properties>
|
|
<is_link>1</is_link>
|
|
<category>bizmodel</category>
|
|
<abstract>false</abstract>
|
|
<key_type>autoincrement</key_type>
|
|
<db_table>lnkfunctionalcitoticket</db_table>
|
|
<db_key_field>id</db_key_field>
|
|
<db_final_class_field/>
|
|
<naming>
|
|
<format>%1$s %2$s</format>
|
|
<attributes>
|
|
<attribute id="ticket_id"/>
|
|
<attribute id="functionalci_id"/>
|
|
</attributes>
|
|
</naming>
|
|
<display_template/>
|
|
<icon/>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute id="ticket_id"/>
|
|
<attribute id="functionalci_id"/>
|
|
</attributes>
|
|
</reconciliation>
|
|
</properties>
|
|
<fields>
|
|
<field id="ticket_id" xsi:type="AttributeExternalKey">
|
|
<sql>ticket_id</sql>
|
|
<target_class>Ticket</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="ticket_ref" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>ticket_id</extkey_attcode>
|
|
<target_attcode>ref</target_attcode>
|
|
</field>
|
|
<field id="ticket_title" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>ticket_id</extkey_attcode>
|
|
<target_attcode>title</target_attcode>
|
|
</field>
|
|
<field id="functionalci_id" xsi:type="AttributeExternalKey">
|
|
<sql>functionalci_id</sql>
|
|
<target_class>FunctionalCI</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="functionalci_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>functionalci_id</extkey_attcode>
|
|
<target_attcode>name</target_attcode>
|
|
</field>
|
|
<field id="impact" xsi:type="AttributeString">
|
|
<sql>impact</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
</fields>
|
|
<methods/>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="functionalci_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="impact">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="functionalci_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="impact">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item id="ticket_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="functionalci_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="impact">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
<class id="WorkOrder" _delta="define">
|
|
<parent>cmdbAbstractObject</parent>
|
|
<properties>
|
|
<category>bizmodel,searchable,incidentmgmt,requestmgmt,changemgmt,m2prequest</category>
|
|
<abstract>false</abstract>
|
|
<key_type>autoincrement</key_type>
|
|
<db_table>workorder</db_table>
|
|
<db_key_field>id</db_key_field>
|
|
<db_final_class_field/>
|
|
<naming>
|
|
<format>%1$s</format>
|
|
<attributes>
|
|
<attribute id="name"/>
|
|
</attributes>
|
|
</naming>
|
|
<display_template/>
|
|
<icon>images/workorder.png</icon>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute id="name"/>
|
|
<attribute id="ticket_id"/>
|
|
</attributes>
|
|
</reconciliation>
|
|
</properties>
|
|
<fields>
|
|
<field id="name" xsi:type="AttributeString">
|
|
<sql>name</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="status" xsi:type="AttributeEnum">
|
|
<values>
|
|
<value id="open">open</value>
|
|
<value id="closed">closed</value>
|
|
</values>
|
|
<sql>status</sql>
|
|
<default_value>open</default_value>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<display_style>list</display_style>
|
|
</field>
|
|
<field id="description" xsi:type="AttributeText">
|
|
<sql>description</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="ticket_id" xsi:type="AttributeExternalKey">
|
|
<sql>ticket_id</sql>
|
|
<target_class>Ticket</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_AUTO</on_target_delete>
|
|
</field>
|
|
<field id="ticket_ref" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>ticket_id</extkey_attcode>
|
|
<target_attcode>ref</target_attcode>
|
|
</field>
|
|
<field id="team_id" xsi:type="AttributeExternalKey">
|
|
<filter>SELECT Team</filter>
|
|
<sql>team_id</sql>
|
|
<target_class>Team</target_class>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
<on_target_delete>DEL_MANUAL</on_target_delete>
|
|
</field>
|
|
<field id="team_name" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>team_id</extkey_attcode>
|
|
<target_attcode>email</target_attcode>
|
|
</field>
|
|
<field id="agent_id" xsi:type="AttributeExternalKey">
|
|
<filter><![CDATA[SELECT Person AS p JOIN lnkPersonToTeam AS l ON l.person_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->team_id]]></filter>
|
|
<dependencies>
|
|
<attribute id="team_id"/>
|
|
</dependencies>
|
|
<sql>owner_id</sql>
|
|
<target_class>Person</target_class>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<on_target_delete>DEL_MANUAL</on_target_delete>
|
|
<allow_target_creation>false</allow_target_creation>
|
|
</field>
|
|
<field id="agent_email" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>agent_id</extkey_attcode>
|
|
<target_attcode>email</target_attcode>
|
|
</field>
|
|
<field id="start_date" xsi:type="AttributeDateTime">
|
|
<sql>start_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="end_date" xsi:type="AttributeDateTime">
|
|
<sql>end_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="log" xsi:type="AttributeCaseLog">
|
|
<sql>log</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
</fields>
|
|
<lifecycle>
|
|
<attribute>status</attribute>
|
|
<stimuli>
|
|
<stimulus id="ev_close" xsi:type="StimulusUserAction"/>
|
|
</stimuli>
|
|
<states>
|
|
<state id="open">
|
|
<flags/>
|
|
<transitions>
|
|
<transition id="ev_close">
|
|
<target>closed</target>
|
|
<actions/>
|
|
</transition>
|
|
</transitions>
|
|
</state>
|
|
<state id="closed">
|
|
<flags/>
|
|
<transitions/>
|
|
</state>
|
|
</states>
|
|
</lifecycle>
|
|
<methods>
|
|
<method id="UpdateParentTicketLog">
|
|
<static>false</static>
|
|
<access>public</access>
|
|
<type>StimulusUserAction</type>
|
|
<arguments>
|
|
</arguments>
|
|
<code><![CDATA[ public function UpdateParentTicketLog()
|
|
{
|
|
$oLog = $this->Get('log');
|
|
$sLog = $oLog->GetModifiedEntry();
|
|
if ($sLog != '')
|
|
{
|
|
$oTicket = MetaModel::GetObject('Ticket', $this->Get('ticket_id'), false);
|
|
if ($oTicket)
|
|
{
|
|
$oTicket->Set('private_log', $sLog);
|
|
$oTicket->DBUpdate();
|
|
}
|
|
}
|
|
}]]></code>
|
|
</method>
|
|
<method id="OnUpdate">
|
|
<static>false</static>
|
|
<access>protected</access>
|
|
<type>Overload-DBObject</type>
|
|
<code><![CDATA[ protected function OnUpdate()
|
|
{
|
|
$this->UpdateParentTicketLog();
|
|
}]]></code>
|
|
</method>
|
|
</methods>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item id="name">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="status">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="ticket_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="team_id">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="agent_id">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="description">
|
|
<rank>60</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>70</rank>
|
|
</item>
|
|
<item id="end_date">
|
|
<rank>80</rank>
|
|
</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item id="name">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="status">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="ticket_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="team_id">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="agent_id">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>60</rank>
|
|
</item>
|
|
<item id="end_date">
|
|
<rank>70</rank>
|
|
</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item id="status">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="ticket_id">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="start_date">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="end_date">
|
|
<rank>40</rank>
|
|
</item>
|
|
<item id="team_id">
|
|
<rank>50</rank>
|
|
</item>
|
|
<item id="agent_id">
|
|
<rank>60</rank>
|
|
</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
</classes>
|
|
<meta>
|
|
<classes>
|
|
<class id="cmdbAbstractObject" _delta="define">
|
|
<methods>
|
|
<method id="Set">
|
|
<arguments>
|
|
<argument>
|
|
<label>Field Code</label>
|
|
<type>attcode</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The field to set, in the current object</description>
|
|
</argument>
|
|
<argument>
|
|
<label>Value</label>
|
|
<type>string</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The value to set</description>
|
|
</argument>
|
|
</arguments>
|
|
</method>
|
|
<method id="SetCurrentDate">
|
|
<arguments>
|
|
<argument>
|
|
<label>Field Code</label>
|
|
<type>attcode</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The field, in the current object, to set to
|
|
the current date</description>
|
|
</argument>
|
|
</arguments>
|
|
</method>
|
|
<method id="Reset">
|
|
<arguments>
|
|
<argument>
|
|
<label>Field Code</label>
|
|
<type>attcode</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The field, in the current object, to reset
|
|
to its default value</description>
|
|
</argument>
|
|
</arguments>
|
|
</method>
|
|
<method id="Copy">
|
|
<arguments>
|
|
<argument>
|
|
<label>Destination</label>
|
|
<type>attcode</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The field, in the current object, to set</description>
|
|
</argument>
|
|
<argument>
|
|
<label>Source</label>
|
|
<type>attcode</type>
|
|
<mandatory>true</mandatory>
|
|
<description>The field, in the current object, to get
|
|
the value from</description>
|
|
</argument>
|
|
</arguments>
|
|
</method>
|
|
</methods>
|
|
</class>
|
|
</classes>
|
|
</meta>
|
|
</itop_design>
|