From a17c123f086bd7ed96f0dd263d07d134d9760512 Mon Sep 17 00:00:00 2001 From: Erwan Taloc Date: Tue, 31 Aug 2010 07:51:26 +0000 Subject: [PATCH] Update KEDB and Problem Mgmt Modules Review other modules SVN:trunk[725] --- .../model.itop-change-mgmt.php | 46 +-- .../en.dict.itop-config-mgmt.php | 212 +++++++----- .../model.itop-config-mgmt.php | 20 +- .../model.itop-incident-mgmt.php | 40 ++- .../en.dict.itop-knownerror-mgmt.php | 91 +++++ .../model.itop-knownerror-mgmt.php | 144 ++++++++ .../module.itop-knownerror-mgmt.php | 1 - .../en.dict.itop-problem-mgmt.php | 109 ++++++ .../model.itop-problem-mgmt.php | 209 +++++++++++ .../en.dict.itop-request-mgmt.php | 45 ++- .../model.itop-request-mgmt.php | 9 +- .../en.dict.itop-service-mgmt.php | 29 +- .../model.itop-service-mgmt.php | 83 ++++- .../en.dict.itop-tickets.php | 326 ++++++++++-------- .../itop-tickets-1.0.0/model.itop-tickets.php | 40 ++- .../module.itop-tickets.php | 2 +- 16 files changed, 1085 insertions(+), 321 deletions(-) diff --git a/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php b/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php index 3d7c8cda0..4d7c9bfc3 100644 --- a/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php +++ b/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php @@ -71,12 +71,11 @@ abstract class Change extends Ticket MetaModel::Init_AddAttribute(new AttributeExternalKey("manager_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Person AS p JOIN lnkTeamToContact AS l ON l.contact_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->manager_group_id'), "sql"=>"manager_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("manager_group_id")))); MetaModel::Init_AddAttribute(new AttributeExternalField("manager_email", array("allowed_values"=>null, "extkey_attcode"=>"manager_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeEnum("outage", array("allowed_values"=>new ValueSetEnum('yes,no'), "sql"=>"outage", "default_value"=>"no", "is_null_allowed"=>false, "depends_on"=>array()))); - MetaModel::Init_AddAttribute(new AttributeText("change_request", array("allowed_values"=>null, "sql"=>"change_request", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeText("fallback", array("allowed_values"=>null, "sql"=>"fallback", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); + MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date','end_date', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback')); + MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); + MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); MetaModel::Init_SetZListItems('list', array('finalclass', 'title', 'start_date', 'status')); @@ -118,7 +117,9 @@ abstract class Change extends Ticket 'workgroup_id' => OPT_ATT_MANDATORY, 'supervisor_group_id' => OPT_ATT_MANDATORY, 'manager_group_id' => OPT_ATT_MANDATORY, - 'change_request' => OPT_ATT_READONLY, + 'description' => OPT_ATT_READONLY, + 'requestor_id' => OPT_ATT_READONLY, + 'title' => OPT_ATT_MANDATORY, ), ) ); @@ -139,6 +140,8 @@ abstract class Change extends Ticket 'agent_id' => OPT_ATT_MUSTCHANGE, 'supervisor_id' => OPT_ATT_MUSTCHANGE, 'manager_id' => OPT_ATT_MUSTCHANGE, + 'description' => OPT_ATT_READONLY, + 'requestor_id' => OPT_ATT_READONLY, ), ) ); @@ -208,7 +211,6 @@ abstract class Change extends Ticket "attribute_list" => array( 'end_date' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, - 'change_request' => OPT_ATT_READONLY, 'fallback' => OPT_ATT_READONLY, ), ) @@ -316,10 +318,10 @@ class RoutineChange extends Change MetaModel::Init_InheritAttributes(); MetaModel::Init_InheritLifecycle(); - MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); + MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); + MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id')); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array(), "user_restriction"=>null)); @@ -353,10 +355,10 @@ abstract class ApprovedChange extends Change MetaModel::Init_AddAttribute(new AttributeDateTime("approval_date", array("allowed_values"=>null, "sql"=>"approval_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeString("approval_comment", array("allowed_values"=>null, "sql"=>"approval_comment", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage','approval_date')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date')); + MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id')); MetaModel::Init_OverloadStateAttribute('new', 'approval_date', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('new', 'approval_comment', OPT_ATT_HIDDEN); @@ -404,10 +406,10 @@ class NormalChange extends ApprovedChange MetaModel::Init_AddAttribute(new AttributeDateTime("acceptance_date", array("allowed_values"=>null, "sql"=>"acceptance_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeString("acceptance_comment", array("allowed_values"=>null, "sql"=>"acceptance_comment", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment', 'acceptance_date', 'acceptance_comment')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); - MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback')); + MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date','end_date', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update','close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment', 'acceptance_date', 'acceptance_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage')); + MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id')); MetaModel::Init_OverloadStateAttribute('new', 'acceptance_date', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('new', 'acceptance_comment', OPT_ATT_HIDDEN); @@ -463,10 +465,10 @@ class EmergencyChange extends ApprovedChange MetaModel::Init_InheritAttributes(); MetaModel::Init_InheritLifecycle(); - MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); - MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date')); + MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id')); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array(), "user_restriction"=>null)); diff --git a/modules/itop-config-mgmt-1.0.0/en.dict.itop-config-mgmt.php b/modules/itop-config-mgmt-1.0.0/en.dict.itop-config-mgmt.php index 4b6de2b01..d78c9d120 100644 --- a/modules/itop-config-mgmt-1.0.0/en.dict.itop-config-mgmt.php +++ b/modules/itop-config-mgmt-1.0.0/en.dict.itop-config-mgmt.php @@ -299,28 +299,33 @@ Dict::Add('EN US', 'English', 'English', array( // Class: Licence // -Dict::Add('EN US', 'English', 'English', array( - 'Class:Licence' => 'Licence', - 'Class:Licence+' => '', - 'Class:Licence/Attribute:provider' => 'Provider', - 'Class:Licence/Attribute:provider+' => '', - 'Class:Licence/Attribute:product' => 'Product', - 'Class:Licence/Attribute:product+' => '', - 'Class:Licence/Attribute:name' => 'Name', - 'Class:Licence/Attribute:name+' => '', - 'Class:Licence/Attribute:start' => 'Start date', - 'Class:Licence/Attribute:start+' => '', - 'Class:Licence/Attribute:end' => 'End date', - 'Class:Licence/Attribute:end+' => '', - 'Class:Licence/Attribute:licence_key' => 'Key', - 'Class:Licence/Attribute:licence_key+' => '', - 'Class:Licence/Attribute:scope' => 'Scope', - 'Class:Licence/Attribute:scope+' => '', - 'Class:Licence/Attribute:usage_limit' => 'Usage limit', - 'Class:Licence/Attribute:usage_limit+' => '', - 'Class:Licence/Attribute:usage_list' => 'Usage', - 'Class:Licence/Attribute:usage_list+' => 'Application instances using this licence', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:Licence' => 'Licence', + 'Class:Licence+' => '', + 'Class:Licence/Attribute:provider' => 'Provider', + 'Class:Licence/Attribute:provider+' => '', + 'Class:Licence/Attribute:org_id' => 'Owner', + 'Class:Licence/Attribute:org_id+' => '', + 'Class:Licence/Attribute:org_name' => 'Name', + 'Class:Licence/Attribute:org_name+' => 'Common name', + 'Class:Licence/Attribute:product' => 'Product', + 'Class:Licence/Attribute:product+' => '', + 'Class:Licence/Attribute:name' => 'Name', + 'Class:Licence/Attribute:name+' => '', + 'Class:Licence/Attribute:start' => 'Start date', + 'Class:Licence/Attribute:start+' => '', + 'Class:Licence/Attribute:end' => 'End date', + 'Class:Licence/Attribute:end+' => '', + 'Class:Licence/Attribute:licence_key' => 'Key', + 'Class:Licence/Attribute:licence_key+' => '', + 'Class:Licence/Attribute:scope' => 'Scope', + 'Class:Licence/Attribute:scope+' => '', + 'Class:Licence/Attribute:usage_limit' => 'Usage limit', + 'Class:Licence/Attribute:usage_limit+' => '', + 'Class:Licence/Attribute:usage_list' => 'Usage', + 'Class:Licence/Attribute:usage_list+' => 'Application instances using this licence', +)); + // // Class: Subnet @@ -490,8 +495,6 @@ Dict::Add('EN US', 'English', 'English', array( 'Class:SoftwareInstance/Attribute:licence_id+' => '', 'Class:SoftwareInstance/Attribute:licence_name' => 'Licence', 'Class:SoftwareInstance/Attribute:licence_name+' => '', - 'Class:SoftwareInstance/Attribute:software_id' => 'Software', - 'Class:SoftwareInstance/Attribute:software_id+' => '', 'Class:SoftwareInstance/Attribute:software_name' => 'Software', 'Class:SoftwareInstance/Attribute:software_name+' => '', 'Class:SoftwareInstance/Attribute:version' => 'Version', @@ -504,21 +507,31 @@ Dict::Add('EN US', 'English', 'English', array( // Class: ApplicationInstance // -Dict::Add('EN US', 'English', 'English', array( - 'Class:ApplicationInstance' => 'Application Instance', - 'Class:ApplicationInstance+' => '', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:ApplicationInstance' => 'Application Instance', + 'Class:ApplicationInstance+' => '', + 'Class:ApplicationInstance/Attribute:software_id' => 'Software', + 'Class:ApplicationInstance/Attribute:software_id+' => '', + 'Class:ApplicationInstance/Attribute:software_name' => 'Name', + 'Class:ApplicationInstance/Attribute:software_name+' => '', +)); + // // Class: DBServerInstance // -Dict::Add('EN US', 'English', 'English', array( - 'Class:DBServerInstance' => 'DB Server Instance', - 'Class:DBServerInstance+' => '', - 'Class:DBServerInstance/Attribute:dbinstance_list' => 'Databases', - 'Class:DBServerInstance/Attribute:dbinstance_list+' => 'Database sources', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:DBServerInstance' => 'DB Server Instance', + 'Class:DBServerInstance+' => '', + 'Class:DBServerInstance/Attribute:software_id' => 'Software', + 'Class:DBServerInstance/Attribute:software_id+' => '', + 'Class:DBServerInstance/Attribute:software_name' => 'Name', + 'Class:DBServerInstance/Attribute:software_name+' => '', + 'Class:DBServerInstance/Attribute:dbinstance_list' => 'Databases', + 'Class:DBServerInstance/Attribute:dbinstance_list+' => 'Database sources', +)); + // // Class: DatabaseInstance @@ -584,64 +597,70 @@ Dict::Add('EN US', 'English', 'English', array( // Class: NetworkInterface // -Dict::Add('EN US', 'English', 'English', array( - 'Class:NetworkInterface' => 'Network Interface', - 'Class:NetworkInterface+' => '', - 'Class:NetworkInterface/Attribute:device_id' => 'Device', - 'Class:NetworkInterface/Attribute:device_id+' => '', - 'Class:NetworkInterface/Attribute:device_name' => 'Device', - 'Class:NetworkInterface/Attribute:device_name+' => '', - 'Class:NetworkInterface/Attribute:logical_type' => 'Logical Type', - 'Class:NetworkInterface/Attribute:logical_type+' => '', - 'Class:NetworkInterface/Attribute:logical_type/Value:backup' => 'Backup', - 'Class:NetworkInterface/Attribute:logical_type/Value:backup+' => '', - 'Class:NetworkInterface/Attribute:logical_type/Value:logical' => 'Logical', - 'Class:NetworkInterface/Attribute:logical_type/Value:logical+' => '', - 'Class:NetworkInterface/Attribute:logical_type/Value:port' => 'Port', - 'Class:NetworkInterface/Attribute:logical_type/Value:port+' => '', - 'Class:NetworkInterface/Attribute:logical_type/Value:primary' => 'Primary', - 'Class:NetworkInterface/Attribute:logical_type/Value:primary+' => '', - 'Class:NetworkInterface/Attribute:logical_type/Value:secondary' => 'Secondary', - 'Class:NetworkInterface/Attribute:logical_type/Value:secondary+' => '', - 'Class:NetworkInterface/Attribute:physical_type' => 'Physical Type', - 'Class:NetworkInterface/Attribute:physical_type+' => '', - 'Class:NetworkInterface/Attribute:physical_type/Value:atm' => 'ATM', - 'Class:NetworkInterface/Attribute:physical_type/Value:atm+' => '', - 'Class:NetworkInterface/Attribute:physical_type/Value:ethernet' => 'Ethernet', - 'Class:NetworkInterface/Attribute:physical_type/Value:ethernet+' => '', - 'Class:NetworkInterface/Attribute:physical_type/Value:framerelay' => 'Frame Relay', - 'Class:NetworkInterface/Attribute:physical_type/Value:framerelay+' => '', - 'Class:NetworkInterface/Attribute:physical_type/Value:vlan' => 'VLAN', - 'Class:NetworkInterface/Attribute:physical_type/Value:vlan+' => '', - 'Class:NetworkInterface/Attribute:ip_address' => 'IP Address', - 'Class:NetworkInterface/Attribute:ip_address+' => '', - 'Class:NetworkInterface/Attribute:ip_mask' => 'IP Mask', - 'Class:NetworkInterface/Attribute:ip_mask+' => '', - 'Class:NetworkInterface/Attribute:mac_address' => 'MAC Address', - 'Class:NetworkInterface/Attribute:mac_address+' => '', - 'Class:NetworkInterface/Attribute:speed' => 'Speed', - 'Class:NetworkInterface/Attribute:speed+' => '', - 'Class:NetworkInterface/Attribute:duplex' => 'Duplex', - 'Class:NetworkInterface/Attribute:duplex+' => '', - 'Class:NetworkInterface/Attribute:duplex/Value:full' => 'Full', - 'Class:NetworkInterface/Attribute:duplex/Value:full+' => '', - 'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half', - 'Class:NetworkInterface/Attribute:duplex/Value:half+' => '', - 'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Unknown', - 'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '', - 'Class:NetworkInterface/Attribute:connected_if' => 'Connected to', - 'Class:NetworkInterface/Attribute:connected_if+' => 'Connected interface', - 'Class:NetworkInterface/Attribute:connected_name' => 'Connected to', - 'Class:NetworkInterface/Attribute:connected_name+' => '', - 'Class:NetworkInterface/Attribute:connected_if_device_id' => 'Connected device', - 'Class:NetworkInterface/Attribute:connected_if_device_id+' => '', - 'Class:NetworkInterface/Attribute:link_type' => 'Link type', - 'Class:NetworkInterface/Attribute:link_type+' => '', - 'Class:NetworkInterface/Attribute:link_type/Value:uplink' => 'Up link', - 'Class:NetworkInterface/Attribute:link_type/Value:uplink+' => '', - 'Class:NetworkInterface/Attribute:link_type/Value:downlink' => 'Down link', - 'Class:NetworkInterface/Attribute:link_type/Value:downlink+' => '', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:NetworkInterface' => 'Network Interface', + 'Class:NetworkInterface+' => '', + 'Class:NetworkInterface/Attribute:device_id' => 'Device', + 'Class:NetworkInterface/Attribute:device_id+' => '', + 'Class:NetworkInterface/Attribute:device_name' => 'Device', + 'Class:NetworkInterface/Attribute:device_name+' => '', + 'Class:NetworkInterface/Attribute:logical_type' => 'Logical Type', + 'Class:NetworkInterface/Attribute:logical_type+' => '', + 'Class:NetworkInterface/Attribute:logical_type/Value:backup' => 'Backup', + 'Class:NetworkInterface/Attribute:logical_type/Value:backup+' => '', + 'Class:NetworkInterface/Attribute:logical_type/Value:logical' => 'Logical', + 'Class:NetworkInterface/Attribute:logical_type/Value:logical+' => '', + 'Class:NetworkInterface/Attribute:logical_type/Value:port' => 'Port', + 'Class:NetworkInterface/Attribute:logical_type/Value:port+' => '', + 'Class:NetworkInterface/Attribute:logical_type/Value:primary' => 'Primary', + 'Class:NetworkInterface/Attribute:logical_type/Value:primary+' => '', + 'Class:NetworkInterface/Attribute:logical_type/Value:secondary' => 'Secondary', + 'Class:NetworkInterface/Attribute:logical_type/Value:secondary+' => '', + 'Class:NetworkInterface/Attribute:physical_type' => 'Physical Type', + 'Class:NetworkInterface/Attribute:physical_type+' => '', + 'Class:NetworkInterface/Attribute:physical_type/Value:atm' => 'ATM', + 'Class:NetworkInterface/Attribute:physical_type/Value:atm+' => '', + 'Class:NetworkInterface/Attribute:physical_type/Value:ethernet' => 'Ethernet', + 'Class:NetworkInterface/Attribute:physical_type/Value:ethernet+' => '', + 'Class:NetworkInterface/Attribute:physical_type/Value:framerelay' => 'Frame Relay', + 'Class:NetworkInterface/Attribute:physical_type/Value:framerelay+' => '', + 'Class:NetworkInterface/Attribute:physical_type/Value:vlan' => 'VLAN', + 'Class:NetworkInterface/Attribute:physical_type/Value:vlan+' => '', + 'Class:NetworkInterface/Attribute:ip_address' => 'IP Address', + 'Class:NetworkInterface/Attribute:ip_address+' => '', + 'Class:NetworkInterface/Attribute:ip_mask' => 'IP Mask', + 'Class:NetworkInterface/Attribute:ip_mask+' => '', + 'Class:NetworkInterface/Attribute:mac_address' => 'MAC Address', + 'Class:NetworkInterface/Attribute:mac_address+' => '', + 'Class:NetworkInterface/Attribute:speed' => 'Speed', + 'Class:NetworkInterface/Attribute:speed+' => '', + 'Class:NetworkInterface/Attribute:duplex' => 'Duplex', + 'Class:NetworkInterface/Attribute:duplex+' => '', + 'Class:NetworkInterface/Attribute:duplex/Value:auto' => 'Auto', + 'Class:NetworkInterface/Attribute:duplex/Value:auto+' => 'Auto', + 'Class:NetworkInterface/Attribute:duplex/Value:full' => 'Full', + 'Class:NetworkInterface/Attribute:duplex/Value:full+' => '', + 'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half', + 'Class:NetworkInterface/Attribute:duplex/Value:half+' => '', + 'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Unknown', + 'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '', + 'Class:NetworkInterface/Attribute:connected_if' => 'Connected to', + 'Class:NetworkInterface/Attribute:connected_if+' => 'Connected interface', + 'Class:NetworkInterface/Attribute:connected_name' => 'Connected to', + 'Class:NetworkInterface/Attribute:connected_name+' => '', + 'Class:NetworkInterface/Attribute:connected_if_device_id' => 'Connected device', + 'Class:NetworkInterface/Attribute:connected_if_device_id+' => '', + 'Class:NetworkInterface/Attribute:connected_if_device_id_name' => 'Device', + 'Class:NetworkInterface/Attribute:connected_if_device_id_name+' => '', + 'Class:NetworkInterface/Attribute:link_type' => 'Link type', + 'Class:NetworkInterface/Attribute:link_type+' => '', + 'Class:NetworkInterface/Attribute:link_type/Value:downlink' => 'Down link', + 'Class:NetworkInterface/Attribute:link_type/Value:downlink+' => '', + 'Class:NetworkInterface/Attribute:link_type/Value:uplink' => 'Up link', + 'Class:NetworkInterface/Attribute:link_type/Value:uplink+' => '', +)); + + // // Class: Device @@ -955,5 +974,14 @@ Dict::Add('EN US', 'English', 'English', array( 'Menu:MobilePhone+' => 'All Mobile Phones', 'Menu:PC' => 'Personal Computers', 'Menu:PC+' => 'All Personal Computers', +'Menu:NewContact' => 'New Contact', +'Menu:NewContact+' => 'New Contact', +'Menu:SearchContacts' => 'Search for contacts', +'Menu:SearchContacts+' => 'Search for contacts', +'Menu:NewCI' => 'New CI', +'Menu:NewCI+' => 'New CI', +'Menu:SearchCIs' => 'Search for CIs', +'Menu:SearchCIs+' => 'Search for CIs', + )); ?> diff --git a/modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php b/modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php index cbfb8fa8b..daefa36f4 100644 --- a/modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php +++ b/modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php @@ -164,7 +164,7 @@ class Person extends Contact MetaModel::Init_AddAttribute(new AttributeString("first_name", array("allowed_values"=>null, "sql"=>"first_name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeString("employee_id", array("allowed_values"=>null, "sql"=>"employee_id", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('name','first_name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list')); + MetaModel::Init_SetZListItems('details', array('name','first_name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id','team_list', 'contract_list', 'service_list', 'ticket_list', 'ci_list')); MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id')); MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id')); MetaModel::Init_SetZListItems('list', array('first_name','status', 'org_id', 'email', 'phone', 'location_id')); @@ -1048,6 +1048,24 @@ class NetworkInterface extends ConnectableCI { return $this->Get('device_name').' - '.$this->Get('name'); } + + + + public static function GetRelationQueries($sRelCode) + { + switch ($sRelCode) + { + case "impacts": + $aRels = array( + "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5), + ); + return array_merge($aRels, parent::GetRelationQueries($sRelCode)); + break; + + default: + return parent::GetRelationQueries($sRelCode); + } + } } abstract class Device extends ConnectableCI { diff --git a/modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php b/modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php index 2db0f4a15..a2b2133c3 100644 --- a/modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php +++ b/modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php @@ -43,9 +43,9 @@ class Incident extends ResponseTicket MetaModel::Init_InheritAttributes(); MetaModel::Init_InheritLifecycle(); - MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority', 'workgroup_id', 'agent_id')); } @@ -77,6 +77,7 @@ class Incident extends ResponseTicket { $oNewLink = new lnkTicketToCI(); $oNewLink->Set('ci_id', $iKey); + $oNewLink->Set('impact', 'potentially impacted (automatically computed)'); $oToImpact->AddObject($oNewLink); } } @@ -94,6 +95,39 @@ class Incident extends ResponseTicket } } +class lnkTicketToIncident extends cmdbAbstractObject +{ + + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,incidentmgmt,requestmgmt", + "key_type" => "autoincrement", + "name_attcode" => "ticket_id", + "state_attcode" => "", + "reconc_keys" => array("ticket_id","incident_id"), + "db_table" => "lnktickettoincident", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_AddAttribute(new AttributeExternalKey("ticket_id", array("targetclass"=>"Ticket", "jointype"=>null, "allowed_values"=>null, "sql"=>"ticket_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("ticket_ref", array("allowed_values"=>null, "extkey_attcode"=>"ticket_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("incident_id", array("targetclass"=>"Incident", "jointype"=>null, "allowed_values"=>null, "sql"=>"incident_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("incident_ref", array("allowed_values"=>null, "extkey_attcode"=>"incident_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"reason", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_SetZListItems('details', array('ticket_id', 'incident_id','reason')); + MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'incident_id')); + MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'incident_id')); + MetaModel::Init_SetZListItems('list', array('ticket_id', 'incident_id','reason')); + + } +} + + $oMyMenuGroup = new MenuGroup('IncidentManagement', 40 /* fRank */); new TemplateMenuNode('Incident:Overview', '../modules/itop-incident-mgmt-1.0.0/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */); new NewObjectMenuNode('NewIncident', 'Incident', $oMyMenuGroup->GetIndex(), 1 /* fRank */); diff --git a/modules/itop-knownerror-mgmt-1.0.0/en.dict.itop-knownerror-mgmt.php b/modules/itop-knownerror-mgmt-1.0.0/en.dict.itop-knownerror-mgmt.php index c24bd674b..e16258e12 100644 --- a/modules/itop-knownerror-mgmt-1.0.0/en.dict.itop-knownerror-mgmt.php +++ b/modules/itop-knownerror-mgmt-1.0.0/en.dict.itop-knownerror-mgmt.php @@ -48,4 +48,95 @@ // Class:/Stimulus: // Class:/Stimulus:+ +// +// Class: KnownError +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:KnownError' => 'Known Error', + 'Class:KnownError+' => 'Error documented for a known issue', + 'Class:KnownError/Attribute:name' => 'Name', + 'Class:KnownError/Attribute:name+' => '', + 'Class:KnownError/Attribute:org_id' => 'Customer', + 'Class:KnownError/Attribute:org_id+' => '', + 'Class:KnownError/Attribute:cust_name' => 'Customer Name', + 'Class:KnownError/Attribute:cust_name+' => '', + 'Class:KnownError/Attribute:problem_id' => 'Related Problem', + 'Class:KnownError/Attribute:problem_id+' => '', + 'Class:KnownError/Attribute:problem_ref' => 'Ref', + 'Class:KnownError/Attribute:problem_ref+' => '', + 'Class:KnownError/Attribute:symptom' => 'Symptom', + 'Class:KnownError/Attribute:symptom+' => '', + 'Class:KnownError/Attribute:root_cause' => 'Root Cause', + 'Class:KnownError/Attribute:root_cause+' => '', + 'Class:KnownError/Attribute:workaround' => 'Workaround', + 'Class:KnownError/Attribute:workaround+' => '', + 'Class:KnownError/Attribute:solution' => 'Solution', + 'Class:KnownError/Attribute:solution+' => '', + 'Class:KnownError/Attribute:error_code' => 'Error Code', + 'Class:KnownError/Attribute:error_code+' => '', + 'Class:KnownError/Attribute:domain' => 'Domain', + 'Class:KnownError/Attribute:domain+' => '', + 'Class:KnownError/Attribute:domain/Value:Application' => 'Application', + 'Class:KnownError/Attribute:domain/Value:Application+' => 'Application', + 'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop', + 'Class:KnownError/Attribute:domain/Value:Desktop+' => 'Desktop', + 'Class:KnownError/Attribute:domain/Value:Network' => 'Network', + 'Class:KnownError/Attribute:domain/Value:Network+' => 'Network', + 'Class:KnownError/Attribute:domain/Value:Server' => 'Server', + 'Class:KnownError/Attribute:domain/Value:Server+' => 'Server', + 'Class:KnownError/Attribute:vendor' => 'Vendor', + 'Class:KnownError/Attribute:vendor+' => '', + 'Class:KnownError/Attribute:model' => 'Model', + 'Class:KnownError/Attribute:model+' => '', + 'Class:KnownError/Attribute:version' => 'Version', + 'Class:KnownError/Attribute:version+' => '', + 'Class:KnownError/Attribute:ci_list' => 'CIs', + 'Class:KnownError/Attribute:ci_list+' => '', + 'Class:KnownError/Attribute:document_list' => 'Documents', + 'Class:KnownError/Attribute:document_list+' => '', +)); + + +// +// Class: lnkInfraError +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkInfraError' => 'InfraErrorLinks', + 'Class:lnkInfraError+' => 'Infra related to a known error', + 'Class:lnkInfraError/Attribute:infra_id' => 'CI', + 'Class:lnkInfraError/Attribute:infra_id+' => '', + 'Class:lnkInfraError/Attribute:infra_name' => 'CI Name', + 'Class:lnkInfraError/Attribute:infra_name+' => '', + 'Class:lnkInfraError/Attribute:infra_status' => 'CI Status', + 'Class:lnkInfraError/Attribute:infra_status+' => '', + 'Class:lnkInfraError/Attribute:error_id' => 'Error', + 'Class:lnkInfraError/Attribute:error_id+' => '', + 'Class:lnkInfraError/Attribute:error_name' => 'Error name', + 'Class:lnkInfraError/Attribute:error_name+' => '', + 'Class:lnkInfraError/Attribute:reason' => 'Reason', + 'Class:lnkInfraError/Attribute:reason+' => '', +)); + +// +// Class: lnkDocumentError +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkDocumentError' => 'DocumentsErrorLinks', + 'Class:lnkDocumentError+' => 'A link between a document and a known error', + 'Class:lnkDocumentError/Attribute:doc_id' => 'Document', + 'Class:lnkDocumentError/Attribute:doc_id+' => '', + 'Class:lnkDocumentError/Attribute:doc_name' => 'Document Name', + 'Class:lnkDocumentError/Attribute:doc_name+' => '', + 'Class:lnkDocumentError/Attribute:error_id' => 'Error', + 'Class:lnkDocumentError/Attribute:error_id+' => '', + 'Class:lnkDocumentError/Attribute:error_name' => 'Error Name', + 'Class:lnkDocumentError/Attribute:error_name+' => '', + 'Class:lnkDocumentError/Attribute:link_type' => 'Information', + 'Class:lnkDocumentError/Attribute:link_type+' => '', +)); + + ?> diff --git a/modules/itop-knownerror-mgmt-1.0.0/model.itop-knownerror-mgmt.php b/modules/itop-knownerror-mgmt-1.0.0/model.itop-knownerror-mgmt.php index 8b2dd15d0..96965b936 100644 --- a/modules/itop-knownerror-mgmt-1.0.0/model.itop-knownerror-mgmt.php +++ b/modules/itop-knownerror-mgmt-1.0.0/model.itop-knownerror-mgmt.php @@ -23,4 +23,148 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ +//////////////////////////////////////////////////////////////////////////////////// +/** +* Description of known error +*/ +//////////////////////////////////////////////////////////////////////////////////// +class KnownError extends cmdbAbstractObject +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable", + "name" => "Known Error", + "description" => "Error documented for a known issue", + "key_type" => "autoincrement", + "key_label" => "id", + "name_attcode" => "name", + "state_attcode" => "", + "reconc_keys" => array("org_id", "name"), // inherited attributes + "db_table" => "known_error", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array()))); + + MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "allowed_values"=>null, "sql"=>"cust_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("cust_name", array("allowed_values"=>null, "extkey_attcode"=> 'org_id', "target_attcode"=>"name"))); + + MetaModel::Init_AddAttribute(new AttributeExternalKey("problem_id", array("targetclass"=>"Problem", "allowed_values"=>null, "sql"=>"problem_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("problem_ref", array("allowed_values"=>null, "extkey_attcode"=> 'problem_id', "target_attcode"=>"ref"))); + MetaModel::Init_AddAttribute(new AttributeText("symptom", array("allowed_values"=>null, "sql"=>"symptom", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeText("root_cause", array("allowed_values"=>null, "sql"=>"rootcause", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeText("workaround", array("allowed_values"=>null, "sql"=>"workaround", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeText("solution", array("allowed_values"=>null, "sql"=>"solution", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + + MetaModel::Init_AddAttribute(new AttributeString("error_code", array("allowed_values"=>null, "sql"=>"error_code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeEnum("domain", array("allowed_values"=>new ValueSetEnum("Network, Server, Application, Desktop"), "sql"=>"domain", "default_value"=>"Application", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("vendor", array("allowed_values"=>null, "sql"=>"vendor", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("model", array("allowed_values"=>null, "sql"=>"model", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkInfraError", "ext_key_to_me"=>"error_id", "ext_key_to_remote"=>"infra_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkDocumentError", "ext_key_to_me"=>"error_id", "ext_key_to_remote"=>"doc_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); + + + + + MetaModel::Init_SetZListItems('details', array('name', 'org_id','problem_id','error_code','domain','vendor','model','version', 'symptom','root_cause','workaround','solution','ci_list','document_list')); // Attributes to be displayed for the complete details + MetaModel::Init_SetZListItems('list', array('org_id','problem_id','error_code', 'symptom')); // Attributes to be displayed for a list + // Search criteria + MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id','problem_id','error_code','domain','symptom')); // Criteria of the std search form + MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id','problem_id', 'error_code','domain','symptom')); // Criteria of the advanced search form + + } +} + +//////////////////////////////////////////////////////////////////////////////////// +/** +* n-n link between any Infra and a Known Error +*/ +//////////////////////////////////////////////////////////////////////////////////// +class lnkInfraError extends cmdbAbstractObject +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable", + "name" => "InfraErrorLinks", + "description" => "Infra related to a known error", + "key_type" => "autoincrement", + "key_label" => "link_id", + "name_attcode" => "", // ???? + "state_attcode" => "", + "reconc_keys" => array("infra_id","error_id"), // ???? + "db_table" => "infra_error_links", + "db_key_field" => "link_id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_AddAttribute(new AttributeExternalKey("infra_id", array("targetclass"=>"FunctionalCI", "jointype"=> '',"allowed_values"=>null, "sql"=>"infra_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("infra_name", array("allowed_values"=>null, "extkey_attcode"=> 'infra_id', "target_attcode"=>"name"))); + MetaModel::Init_AddAttribute(new AttributeExternalField("infra_status", array("allowed_values"=>null, "extkey_attcode"=> 'infra_id', "target_attcode"=>"status"))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("error_id", array("targetclass"=>"KnownError", "jointype"=> '', "allowed_values"=>null, "sql"=>"error_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("error_name", array( "allowed_values"=>null, "extkey_attcode"=> 'error_id', "target_attcode"=>"name"))); + MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"dummy", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + + + // Display lists + MetaModel::Init_SetZListItems('details', array('infra_id', 'error_id','reason')); // Attributes to be displayed for a list + MetaModel::Init_SetZListItems('list', array('infra_id', 'infra_status','error_id','reason')); // Attributes to be displayed for a list + // Search criteria + MetaModel::Init_SetZListItems('standard_search', array('infra_id', 'error_id')); // Criteria of the std search form + MetaModel::Init_SetZListItems('advanced_search', array('infra_id', 'error_id')); // Criteria of the advanced search form + } + + +} + +//////////////////////////////////////////////////////////////////////////////////// +/** +* n-n link between any Contract and a Document +*/ +//////////////////////////////////////////////////////////////////////////////////// +class lnkDocumentError extends cmdbAbstractObject +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable", + "name" => "DocumentsErrorLinks", + "description" => "A link between a document and a known error", + "key_type" => "autoincrement", + "key_label" => "link_id", + "name_attcode" => "link_type", + "state_attcode" => "", + "reconc_keys" => array("doc_id", "error_id"), + "db_table" => "documents_error_link", + "db_key_field" => "link_id", + "db_finalclass_field" => "", + "display_template" => "../business/templates/default.html", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_AddAttribute(new AttributeExternalKey("doc_id", array("targetclass"=>"Document","allowed_values"=>null, "sql"=>"doc_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("doc_name", array("allowed_values"=>null, "extkey_attcode"=> 'doc_id', "target_attcode"=>"name"))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("error_id", array("targetclass"=>"KnownError","allowed_values"=>null, "sql"=>"error_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("error_name", array("allowed_values"=>null, "extkey_attcode"=> 'error_id', "target_attcode"=>"name"))); + MetaModel::Init_AddAttribute(new AttributeString("link_type", array("allowed_values"=>null, "sql"=>"link_type", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + + + // Display lists + MetaModel::Init_SetZListItems('details', array('doc_id', 'error_name', 'link_type')); // Attributes to be displayed for the complete details + MetaModel::Init_SetZListItems('list', array('doc_id', 'error_name', 'link_type')); // Attributes to be displayed for a list + } +} + + +$oMyMenuGroup = new MenuGroup('ProblemManagement', 42 /* fRank */); +new OQLMenuNode('Problem:KnownErrors', 'SELECT KnownError', $oMyMenuGroup->GetIndex(), 3 /* fRank */); + ?> diff --git a/modules/itop-knownerror-mgmt-1.0.0/module.itop-knownerror-mgmt.php b/modules/itop-knownerror-mgmt-1.0.0/module.itop-knownerror-mgmt.php index 50c43aeaa..3414805fa 100644 --- a/modules/itop-knownerror-mgmt-1.0.0/module.itop-knownerror-mgmt.php +++ b/modules/itop-knownerror-mgmt-1.0.0/module.itop-knownerror-mgmt.php @@ -27,7 +27,6 @@ SetupWebPage::AddModule( ), 'dictionary' => array( 'en.dict.itop-knownerror-mgmt.php', - 'es_cr.dict.itop-knownerror-mgmt.php', ), 'data.struct' => array( //'data.struct.itop-knownerror-mgmt.xml', diff --git a/modules/itop-problem-mgmt-1.0.0/en.dict.itop-problem-mgmt.php b/modules/itop-problem-mgmt-1.0.0/en.dict.itop-problem-mgmt.php index c24bd674b..b9fd7481d 100644 --- a/modules/itop-problem-mgmt-1.0.0/en.dict.itop-problem-mgmt.php +++ b/modules/itop-problem-mgmt-1.0.0/en.dict.itop-problem-mgmt.php @@ -48,4 +48,113 @@ // Class:/Stimulus: // Class:/Stimulus:+ + + + +Dict::Add('EN US', 'English', 'English', array( + 'Menu:ProblemManagement' => 'Problem Management', + 'Menu:ProblemManagement+' => 'Problem Management', + 'Menu:Problem:Overview' => 'Overview', + 'Menu:Problem:Overview+' => 'Overview', + 'Menu:NewProblem' => 'New Problem', + 'Menu:NewProblem+' => 'New Problem', + 'Menu:SearchProblems' => 'Search for Problems', + 'Menu:SearchProblems+' => 'Search for Problems', + 'Menu:Problem:KnownErrors' => 'All Known Errors', + 'Menu:Problem:KnownErrors+' => 'All Known Errors', + 'Menu:Problem:Shortcuts' => 'Shortcuts', + 'Menu:Problem:MyProblems' => 'My Problems', + 'Menu:Problem:MyProblems+' => 'My Problems', + 'Menu:Problem:OpenProblems' => 'All Open problems', + 'Menu:Problem:OpenProblems+' => 'All Open problems', +)); +// +// Class: Problem +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:Problem' => 'Problem', + 'Class:Problem+' => '', + 'Class:Problem/Attribute:status' => 'Status', + 'Class:Problem/Attribute:status+' => '', + 'Class:Problem/Attribute:status/Value:new' => 'New', + 'Class:Problem/Attribute:status/Value:new+' => '', + 'Class:Problem/Attribute:status/Value:assigned' => 'Assigned', + 'Class:Problem/Attribute:status/Value:assigned+' => '', + 'Class:Problem/Attribute:status/Value:resolved' => 'Resolved', + 'Class:Problem/Attribute:status/Value:resolved+' => '', + 'Class:Problem/Attribute:status/Value:closed' => 'Closed', + 'Class:Problem/Attribute:status/Value:closed+' => '', + 'Class:Problem/Attribute:org_id' => 'Customer', + 'Class:Problem/Attribute:org_id+' => '', + 'Class:Problem/Attribute:org_name' => 'Name', + 'Class:Problem/Attribute:org_name+' => 'Common name', + 'Class:Problem/Attribute:service_id' => 'Service', + 'Class:Problem/Attribute:service_id+' => '', + 'Class:Problem/Attribute:service_name' => 'Name', + 'Class:Problem/Attribute:service_name+' => '', + 'Class:Problem/Attribute:servicesubcategory_id' => 'Service Category', + 'Class:Problem/Attribute:servicesubcategory_id+' => '', + 'Class:Problem/Attribute:servicesubcategory_name' => 'Name', + 'Class:Problem/Attribute:servicesubcategory_name+' => '', + 'Class:Problem/Attribute:product' => 'Product', + 'Class:Problem/Attribute:product+' => '', + 'Class:Problem/Attribute:impact' => 'Impact', + 'Class:Problem/Attribute:impact+' => '', + 'Class:Problem/Attribute:impact/Value:1' => 'A Person', + 'Class:Problem/Attribute:impact/Value:1+' => '', + 'Class:Problem/Attribute:impact/Value:2' => 'A Service', + 'Class:Problem/Attribute:impact/Value:2+' => '', + 'Class:Problem/Attribute:impact/Value:3' => 'A Department', + 'Class:Problem/Attribute:impact/Value:3+' => '', + 'Class:Problem/Attribute:urgency' => 'urgency', + 'Class:Problem/Attribute:urgency+' => '', + 'Class:Problem/Attribute:urgency/Value:1' => 'Low', + 'Class:Problem/Attribute:urgency/Value:1+' => 'Low', + 'Class:Problem/Attribute:urgency/Value:2' => 'Medium', + 'Class:Problem/Attribute:urgency/Value:2+' => 'Medium', + 'Class:Problem/Attribute:urgency/Value:3' => 'High', + 'Class:Problem/Attribute:urgency/Value:3+' => 'High', + 'Class:Problem/Attribute:priority' => 'priority', + 'Class:Problem/Attribute:priority+' => '', + 'Class:Problem/Attribute:priority/Value:1' => 'Low', + 'Class:Problem/Attribute:priority/Value:1+' => '', + 'Class:Problem/Attribute:priority/Value:2' => 'Medium', + 'Class:Problem/Attribute:priority/Value:2+' => '', + 'Class:Problem/Attribute:priority/Value:3' => 'High', + 'Class:Problem/Attribute:priority/Value:3+' => '', + 'Class:Problem/Attribute:workgroup_id' => 'WorkGroup', + 'Class:Problem/Attribute:workgroup_id+' => '', + 'Class:Problem/Attribute:workgroup_name' => 'Name', + 'Class:Problem/Attribute:workgroup_name+' => '', + 'Class:Problem/Attribute:agent_id' => 'Agent', + 'Class:Problem/Attribute:agent_id+' => '', + 'Class:Problem/Attribute:agent_name' => 'Agent Name', + 'Class:Problem/Attribute:agent_name+' => '', + 'Class:Problem/Attribute:agent_email' => 'Agent Email', + 'Class:Problem/Attribute:agent_email+' => '', + 'Class:Problem/Attribute:related_change_id' => 'Related Change', + 'Class:Problem/Attribute:related_change_id+' => '', + 'Class:Problem/Attribute:related_change_ref' => 'Ref', + 'Class:Problem/Attribute:related_change_ref+' => '', + 'Class:Problem/Attribute:close_date' => 'Close Date', + 'Class:Problem/Attribute:close_date+' => '', + 'Class:Problem/Attribute:last_update' => 'Last Update', + 'Class:Problem/Attribute:last_update+' => '', + 'Class:Problem/Attribute:assignment_date' => 'Assignment Date', + 'Class:Problem/Attribute:assignment_date+' => '', + 'Class:Problem/Attribute:resolution_date' => 'Resolution Date', + 'Class:Problem/Attribute:resolution_date+' => '', + 'Class:Problem/Attribute:knownerrors_list' => 'Known Errors', + 'Class:Problem/Attribute:knownerrors_list+' => '', + 'Class:Problem/Stimulus:ev_assign' => 'Assign', + 'Class:Problem/Stimulus:ev_assign+' => '', + 'Class:Problem/Stimulus:ev_reassign' => 'Reaassign', + 'Class:Problem/Stimulus:ev_reassign+' => '', + 'Class:Problem/Stimulus:ev_resolve' => 'Resolve', + 'Class:Problem/Stimulus:ev_resolve+' => '', + 'Class:Problem/Stimulus:ev_close' => 'Close', + 'Class:Problem/Stimulus:ev_close+' => '', +)); + ?> diff --git a/modules/itop-problem-mgmt-1.0.0/model.itop-problem-mgmt.php b/modules/itop-problem-mgmt-1.0.0/model.itop-problem-mgmt.php index 8b2dd15d0..753e68718 100644 --- a/modules/itop-problem-mgmt-1.0.0/model.itop-problem-mgmt.php +++ b/modules/itop-problem-mgmt-1.0.0/model.itop-problem-mgmt.php @@ -23,4 +23,213 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ +class Problem extends Ticket +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,problemmgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "status", + "reconc_keys" => array("ref"), + "db_table" => "ticket_problem", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); +// MetaModel::Init_InheritLifecycle(); + + MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('new,assigned,resolved,closed'), "sql"=>"status", "default_value"=>"new", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("service_id", array("targetclass"=>"Service", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Service AS s JOIN SLA AS sla ON sla.service_id=s.id JOIN lnkContractToSLA AS ln ON ln.sla_id=sla.id JOIN CustomerContract AS cc ON ln.contract_id=cc.id WHERE cc.org_id =:this->org_id'), "sql"=>"service_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id")))); + MetaModel::Init_AddAttribute(new AttributeExternalField("service_name", array("allowed_values"=>null, "extkey_attcode"=>"service_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("servicesubcategory_id", array("targetclass"=>"ServiceSubcategory", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT ServiceSubcategory WHERE service_id = :this->service_id'), "sql"=>"servicesubcategory_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("service_id")))); + MetaModel::Init_AddAttribute(new AttributeExternalField("servicesubcategory_name", array("allowed_values"=>null, "extkey_attcode"=>"servicesubcategory_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("product", array("allowed_values"=>null, "sql"=>"product", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeEnum("impact", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"impact", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeEnum("urgency", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"urgency", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeEnum("priority", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"priority", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("workgroup_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Team AS t JOIN CustomerContract AS cc ON cc.support_team_id=t.id JOIN lnkContractToSLA AS ln ON ln.contract_id=cc.id JOIN SLA AS sla ON ln.sla_id=sla.id WHERE sla.service_id = :this->service_id AND cc.org_id = :this->org_id'), "sql"=>"workgroup_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id","service_id")))); + MetaModel::Init_AddAttribute(new AttributeExternalField("workgroup_name", array("allowed_values"=>null, "extkey_attcode"=>"workgroup_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("agent_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Person AS p JOIN lnkTeamToContact AS l ON l.contact_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->workgroup_id'), "sql"=>"agent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("workgroup_id")))); + MetaModel::Init_AddAttribute(new AttributeExternalField("agent_name", array("allowed_values"=>null, "extkey_attcode"=>"agent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("agent_email", array("allowed_values"=>null, "extkey_attcode"=>"agent_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("related_change_id", array("targetclass"=>"Change", "jointype"=>null, "allowed_values"=>null, "sql"=>"related_change_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("related_change_ref", array("allowed_values"=>null, "extkey_attcode"=>"related_change_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDateTime("close_date", array("allowed_values"=>null, "sql"=>"close_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDateTime("last_update", array("allowed_values"=>null, "sql"=>"last_update", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values"=>null, "sql"=>"assignment_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values"=>null, "sql"=>"resolution_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeLinkedSet("knownerrors_list", array("linked_class"=>"KnownError", "ext_key_to_me"=>"problem_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); + + + MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date','knownerrors_list', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'service_id', 'servicesubcategory_id','product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date', 'last_update', 'assignment_date')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date')); + MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority')); + + // Lifecycle + MetaModel::Init_DefineState( + "new", + array( + "attribute_inherit" => null, + "attribute_list" => array( + 'ref' => OPT_ATT_READONLY, + 'ticket_log' => OPT_ATT_HIDDEN, + 'related_change_id' => OPT_ATT_HIDDEN, + 'description' => OPT_ATT_MUSTCHANGE, + 'contact_list' => OPT_ATT_READONLY, + 'start_date' => OPT_ATT_READONLY, + 'last_update' => OPT_ATT_READONLY, + 'assignment_date' => OPT_ATT_HIDDEN, + 'resolution_date' => OPT_ATT_HIDDEN, + 'close_date' => OPT_ATT_HIDDEN, + 'org_id' => OPT_ATT_MUSTCHANGE, + 'service_id' => OPT_ATT_MUSTCHANGE, + 'servicesubcategory_id' => OPT_ATT_MUSTCHANGE, + 'product' => OPT_ATT_MUSTPROMPT, + 'impact' => OPT_ATT_MUSTCHANGE, + 'urgency' => OPT_ATT_MUSTCHANGE, + 'priority' => OPT_ATT_READONLY, + 'workgroup_id' => OPT_ATT_MUSTCHANGE, + 'agent_id' => OPT_ATT_HIDDEN, + 'agent_email' => OPT_ATT_HIDDEN, + ), + ) + ); + MetaModel::Init_DefineState( + "assigned", + array( + "attribute_inherit" => 'new', + "attribute_list" => array( + 'title' => OPT_ATT_READONLY, + 'org_id' => OPT_ATT_READONLY, + 'ticket_log' => OPT_ATT_NORMAL, + 'description' => OPT_ATT_READONLY, + 'agent_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY, + 'agent_email' => OPT_ATT_READONLY, + 'workgroup_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY, +// 'related_change_id' => OPT_ATT_NORMAL, + ), + ) + ); + MetaModel::Init_DefineState( + "resolved", + array( + "attribute_inherit" => 'assigned', + "attribute_list" => array( + 'service_id' => OPT_ATT_READONLY, + 'servicesubcategory_id' => OPT_ATT_READONLY, + 'product' => OPT_ATT_READONLY, + 'impact' => OPT_ATT_READONLY, + 'workgroup_id' => OPT_ATT_READONLY, + 'agent_id' => OPT_ATT_READONLY, + 'urgency' => OPT_ATT_READONLY, + ), + ) + ); + MetaModel::Init_DefineState( + "closed", + array( + "attribute_inherit" => 'resolved', + "attribute_list" => array( + 'ticket_log' => OPT_ATT_READONLY, + 'close_date' => OPT_ATT_READONLY, + ), + ) + ); + + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reassign", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array())); + + MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate'), "user_restriction"=>null)); + + MetaModel::Init_DefineTransition("resolved", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state"=>"closed", "actions"=>array('SetClosureDate'), "user_restriction"=>null)); + } + + // Lifecycle actions + // + public function SetAssignedDate($sStimulusCode) + { + $this->Set('assignment_date', time()); + return true; + } + public function SetResolveDate($sStimulusCode) + { + $this->Set('resolution_date', time()); + return true; + } + public function SetClosureDate($sStimulusCode) + { + $this->Set('close_date', time()); + return true; + } + + /** Compute the priority of the ticket based on its impact and urgency + * @return integer The priority of the ticket 1(high) .. 3(low) + */ + public function ComputePriority() + { + // priority[impact][urgency] + $aPriorities = array( + // single person + 1 => array( + 1 => 1, + 2 => 1, + 3 => 2, + ), + // a group + 2 => array( + 1 => 1, + 2 => 2, + 3 => 3, + ), + // a departement! + 3 => array( + 1 => 2, + 2 => 3, + 3 => 3, + ), + ); + $iPriority = $aPriorities[(int)$this->Get('impact')][(int)$this->Get('urgency')]; + return $iPriority; + } + + + public function ComputeValues() + { + // Compute the priority of the ticket + $this->Set('priority', $this->ComputePriority()); + + $iKey = $this->GetKey(); + if ($iKey < 0) + { + // Object not yet in the Database + $iKey = MetaModel::GetNextKey(get_class($this)); + } + $sName = sprintf('P-%06d', $iKey); + $this->Set('ref', $sName); + } + +} + + +$iIndex = ApplicationMenu::GetMenuIndexById('ProblemManagement'); +new TemplateMenuNode('Problem:Overview', '../modules/itop-problem-mgmt-1.0.0/overview.html', $iIndex /* oParent */, 0 /* fRank */); +new NewObjectMenuNode('NewProblem', 'Problem', $iIndex, 1 /* fRank */); +new SearchMenuNode('SearchProblems', 'Problem', $iIndex, 2 /* fRank */); +$oShortcutNode = new TemplateMenuNode('Problem:Shortcuts', '', $iIndex, 4 /* fRank */); +new OQLMenuNode('Problem:MyProblems', 'SELECT Problem WHERE agent_id = :current_contact_id', $oShortcutNode->GetIndex(), 1 /* fRank */); +new OQLMenuNode('Problem:OpenProblems', 'SELECT Problem WHERE status IN ("new", "assigned", "resolved")', $oShortcutNode->GetIndex(), 3 /* fRank */); + ?> diff --git a/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php b/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php index e62a91605..8ac76994c 100644 --- a/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php +++ b/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php @@ -56,23 +56,32 @@ Dict::Add('EN US', 'English', 'English', array( // Class: UserRequest // -Dict::Add('EN US', 'English', 'English', array( - 'Class:UserRequest' => 'User Request', - 'Class:UserRequest+' => '', - 'Class:UserRequest/Attribute:freeze_reason' => 'Pending reason', - 'Class:UserRequest/Attribute:freeze_reason+' => '', - 'Class:UserRequest/Stimulus:ev_assign' => 'Assign', - 'Class:UserRequest/Stimulus:ev_assign+' => '', - 'Class:UserRequest/Stimulus:ev_freeze' => 'Mark as pending', - 'Class:UserRequest/Stimulus:ev_freeze+' => '', - 'Class:UserRequest/Stimulus:ev_reassign' => 'Reassign', - 'Class:UserRequest/Stimulus:ev_reassign+' => '', - 'Class:UserRequest/Stimulus:ev_timeout' => 'ev_timeout', - 'Class:UserRequest/Stimulus:ev_timeout+' => '', - 'Class:UserRequest/Stimulus:ev_resolve' => 'Mark as resolved', - 'Class:UserRequest/Stimulus:ev_resolve+' => '', - 'Class:UserRequest/Stimulus:ev_close' => 'Close', - 'Class:UserRequest/Stimulus:ev_close+' => '', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:UserRequest' => 'User Request', + 'Class:UserRequest+' => '', + 'Class:UserRequest/Attribute:request_type' => 'Request Type', + 'Class:UserRequest/Attribute:request_type+' => '', + 'Class:UserRequest/Attribute:request_type/Value:information' => 'Information', + 'Class:UserRequest/Attribute:request_type/Value:information+' => 'Information', + 'Class:UserRequest/Attribute:request_type/Value:issue' => 'Issue', + 'Class:UserRequest/Attribute:request_type/Value:issue+' => 'Issue', + 'Class:UserRequest/Attribute:request_type/Value:service request' => 'Service Request', + 'Class:UserRequest/Attribute:request_type/Value:service request+' => 'Service Request', + 'Class:UserRequest/Attribute:freeze_reason' => 'Pending reason', + 'Class:UserRequest/Attribute:freeze_reason+' => '', + 'Class:UserRequest/Stimulus:ev_assign' => 'Assign', + 'Class:UserRequest/Stimulus:ev_assign+' => '', + 'Class:UserRequest/Stimulus:ev_reassign' => 'Reassign', + 'Class:UserRequest/Stimulus:ev_reassign+' => '', + 'Class:UserRequest/Stimulus:ev_timeout' => 'ev_timeout', + 'Class:UserRequest/Stimulus:ev_timeout+' => '', + 'Class:UserRequest/Stimulus:ev_resolve' => 'Mark as resolved', + 'Class:UserRequest/Stimulus:ev_resolve+' => '', + 'Class:UserRequest/Stimulus:ev_close' => 'Close', + 'Class:UserRequest/Stimulus:ev_close+' => '', + 'Class:UserRequest/Stimulus:ev_freeze' => 'Mark as pending', + 'Class:UserRequest/Stimulus:ev_freeze+' => '', +)); + ?> diff --git a/modules/itop-request-mgmt-1.0.0/model.itop-request-mgmt.php b/modules/itop-request-mgmt-1.0.0/model.itop-request-mgmt.php index 8f6602881..555d199e6 100644 --- a/modules/itop-request-mgmt-1.0.0/model.itop-request-mgmt.php +++ b/modules/itop-request-mgmt-1.0.0/model.itop-request-mgmt.php @@ -43,22 +43,25 @@ class UserRequest extends ResponseTicket MetaModel::Init_InheritAttributes(); MetaModel::Init_InheritLifecycle(); + MetaModel::Init_AddAttribute(new AttributeEnum("request_type", array("allowed_values"=>new ValueSetEnum('service request,issue,information'), "sql"=>"request_type", "default_value"=>"service request", "is_null_allowed"=>false, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeString("freeze_reason", array("allowed_values"=>null, "sql"=>"freeze_reason", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment', 'freeze_reason')); - MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); - MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'request_type','ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment', 'freeze_reason')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'request_type','start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority', 'workgroup_id', 'agent_id')); MetaModel::Init_OverloadStateAttribute('frozen', 'freeze_reason', OPT_ATT_MANDATORY); // The freeze reason remains hidden in all other states + MetaModel::Init_OverloadStateAttribute('new', 'request_type', OPT_ATT_MANDATORY); MetaModel::Init_OverloadStateAttribute('new', 'freeze_reason', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('assigned', 'freeze_reason', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('frozen', 'freeze_reason', OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT); MetaModel::Init_OverloadStateAttribute('escalated_tto', 'freeze_reason', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('escalated_ttr', 'freeze_reason', OPT_ATT_HIDDEN); MetaModel::Init_OverloadStateAttribute('resolved', 'freeze_reason', OPT_ATT_HIDDEN); + MetaModel::Init_OverloadStateAttribute('closed', 'request_type', OPT_ATT_READONLY); MetaModel::Init_OverloadStateAttribute('closed', 'freeze_reason', OPT_ATT_HIDDEN); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_freeze", array())); diff --git a/modules/itop-service-mgmt-1.0.0/en.dict.itop-service-mgmt.php b/modules/itop-service-mgmt-1.0.0/en.dict.itop-service-mgmt.php index 1328dfd18..9685e7ecf 100644 --- a/modules/itop-service-mgmt-1.0.0/en.dict.itop-service-mgmt.php +++ b/modules/itop-service-mgmt-1.0.0/en.dict.itop-service-mgmt.php @@ -121,7 +121,7 @@ Dict::Add('EN US', 'English', 'English', array( 'Class:ProviderContract/Attribute:provider_name+' => '', 'Class:ProviderContract/Attribute:sla' => 'SLA', 'Class:ProviderContract/Attribute:sla+' => 'Service Level Agreement', - 'Class:ProviderContract/Attribute:coverage' => 'Coverage', + 'Class:ProviderContract/Attribute:coverage' => 'Service hours', 'Class:ProviderContract/Attribute:coverage+' => '', )); @@ -148,7 +148,30 @@ Dict::Add('EN US', 'English', 'English', array( 'Class:CustomerContract/Attribute:provider_list+' => '', 'Class:CustomerContract/Attribute:sla_list' => 'SLAs', 'Class:CustomerContract/Attribute:sla_list+' => 'List of SLA related to the contract', + 'Class:CustomerContract/Attribute:provider_list' => 'Underpinning Contracts', + 'Class:CustomerContract/Attribute:sla_list+' => '', )); +// +// Class: lnkCustomerContractToProviderContract +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkCustomerContractToProviderContract' => 'lnkCustomerContractToProviderContract', + 'Class:lnkCustomerContractToProviderContract+' => '', + 'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'Customer Contract', + 'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '', + 'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => 'Name', + 'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'Provider Contract', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => 'Name', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'Provider SLA', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'Service Level Agreement', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'Service hours', + 'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '', +)); + // // Class: lnkContractToSLA @@ -165,7 +188,7 @@ Dict::Add('EN US', 'English', 'English', array( 'Class:lnkContractToSLA/Attribute:sla_id+' => '', 'Class:lnkContractToSLA/Attribute:sla_name' => 'SLA', 'Class:lnkContractToSLA/Attribute:sla_name+' => '', - 'Class:lnkContractToSLA/Attribute:coverage' => 'Coverage', + 'Class:lnkContractToSLA/Attribute:coverage' => 'Service Hours', 'Class:lnkContractToSLA/Attribute:coverage+' => '', )); @@ -267,6 +290,8 @@ Dict::Add('EN US', 'English', 'English', array( 'Class:Service/Attribute:document_list+' => 'Documents attached to the service', 'Class:Service/Attribute:contact_list' => 'Contacts', 'Class:Service/Attribute:contact_list+' => 'Contacts having a role for this service', + 'Class:Service/Tab:Related_Contracts' => 'Related Contracts', + 'Class:Service/Tab:Related_Contracts+' => 'Contracts signed for this service', )); // diff --git a/modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php b/modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php index 8e0595875..f0b7542ac 100644 --- a/modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php +++ b/modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php @@ -73,7 +73,7 @@ class ProviderContract extends Contract "key_type" => "autoincrement", "name_attcode" => "name", "state_attcode" => "", - "reconc_keys" => array("name"), + "reconc_keys" => array("name","provider_id"), "db_table" => "providercontract", "db_key_field" => "id", "db_finalclass_field" => "", @@ -104,7 +104,7 @@ class CustomerContract extends Contract "key_type" => "autoincrement", "name_attcode" => "name", "state_attcode" => "", - "reconc_keys" => array("name"), + "reconc_keys" => array("name","org_id","provider_id"), "db_table" => "customercontract", "db_key_field" => "id", "db_finalclass_field" => "", @@ -120,13 +120,47 @@ class CustomerContract extends Contract MetaModel::Init_AddAttribute(new AttributeExternalKey("support_team_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Team WHERE Team.org_id = :this->provider_id'), "sql"=>"support_team_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array('provider_id')))); MetaModel::Init_AddAttribute(new AttributeExternalField("support_team_name", array("allowed_values"=>null, "extkey_attcode"=>"support_team_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("sla_list", array("linked_class"=>"lnkContractToSLA", "ext_key_to_me"=>"contract_id", "ext_key_to_remote"=>"sla_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("provider_list", array("linked_class"=>"lnkCustomerContractToProviderContract", "ext_key_to_me"=>"customer_contract_id", "ext_key_to_remote"=>"provider_contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'provider_id', 'support_team_id', 'sla_list')); + MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'provider_list','provider_id', 'support_team_id', 'sla_list')); MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'org_id', 'support_team_id')); MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'org_id', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'provider_id', 'support_team_id')); MetaModel::Init_SetZListItems('list', array('name', 'org_id', 'start_date', 'end_date', 'provider_id', 'support_team_id')); } } +class lnkCustomerContractToProviderContract extends cmdbAbstractObject +{ + + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,servicemgmt", + "key_type" => "autoincrement", + "name_attcode" => "customer_contract_id", + "state_attcode" => "", + "reconc_keys" => array("customer_contract_id","provider_contract_id"), + "db_table" => "lnkcustomercontracttoprovider", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + + MetaModel::Init_AddAttribute(new AttributeExternalKey("customer_contract_id", array("targetclass"=>"CustomerContract", "jointype"=>null, "allowed_values"=>null, "sql"=>"customer_contract_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("customer_contract_name", array("allowed_values"=>null, "extkey_attcode"=>"customer_contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("provider_contract_id", array("targetclass"=>"ProviderContract", "jointype"=>null, "allowed_values"=>null, "sql"=>"provider_contract_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("provider_contract_name", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("provider_sla", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"sla", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("provider_coverage", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"coverage", "is_null_allowed"=>true, "depends_on"=>array()))); + + MetaModel::Init_SetZListItems('details', array('customer_contract_id', 'provider_contract_id','provider_sla','provider_coverage')); + MetaModel::Init_SetZListItems('advanced_search', array('customer_contract_id', 'provider_contract_id')); + MetaModel::Init_SetZListItems('standard_search', array('customer_contract_id', 'provider_contract_id')); + MetaModel::Init_SetZListItems('list', array('customer_contract_id', 'provider_contract_id','provider_sla','provider_coverage')); + } +} class lnkContractToSLA extends cmdbAbstractObject { @@ -138,7 +172,7 @@ class lnkContractToSLA extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "contract_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("contract_id","sla_id"), "db_table" => "lnkcontracttosla", "db_key_field" => "id", "db_finalclass_field" => "", @@ -151,12 +185,13 @@ class lnkContractToSLA extends cmdbAbstractObject MetaModel::Init_AddAttribute(new AttributeExternalField("contract_name", array("allowed_values"=>null, "extkey_attcode"=>"contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeExternalKey("sla_id", array("targetclass"=>"SLA", "jointype"=>null, "allowed_values"=>null, "sql"=>"sla_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeExternalField("sla_name", array("allowed_values"=>null, "extkey_attcode"=>"sla_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("sla_service_name", array("allowed_values"=>null, "extkey_attcode"=>"sla_id", "target_attcode"=>"service_name", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeString("coverage", array("allowed_values"=>null, "sql"=>"coverage", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('contract_id', 'sla_id', 'coverage')); + MetaModel::Init_SetZListItems('details', array('contract_id', 'sla_id','sla_service_name', 'coverage')); MetaModel::Init_SetZListItems('advanced_search', array('contract_id', 'sla_id', 'coverage')); MetaModel::Init_SetZListItems('standard_search', array('contract_id', 'sla_id', 'coverage')); - MetaModel::Init_SetZListItems('list', array('contract_id', 'sla_id', 'coverage')); + MetaModel::Init_SetZListItems('list', array('contract_id', 'sla_id', 'sla_service_name','coverage')); } } class lnkContractToDoc extends cmdbAbstractObject @@ -170,7 +205,7 @@ class lnkContractToDoc extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "contract_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("contract_id","document_id"), "db_table" => "lnkcontracttodoc", "db_key_field" => "id", "db_finalclass_field" => "", @@ -203,7 +238,7 @@ class lnkContractToContact extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "contract_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("contract_id","contact_id"), "db_table" => "lnkcontracttocontact", "db_key_field" => "id", "db_finalclass_field" => "", @@ -236,7 +271,7 @@ class lnkContractToCI extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "contract_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("contract_id","ci_id"), "db_table" => "lnkcontracttoci", "db_key_field" => "id", "db_finalclass_field" => "", @@ -268,7 +303,7 @@ class Service extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "name", "state_attcode" => "", - "reconc_keys" => array("name"), + "reconc_keys" => array("name","org_id"), "db_table" => "service", "db_key_field" => "id", "db_finalclass_field" => "", @@ -292,6 +327,22 @@ class Service extends cmdbAbstractObject MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'org_id', 'type', 'status')); MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'org_id', 'type', 'status')); MetaModel::Init_SetZListItems('list', array('name', 'description', 'org_id', 'type', 'status')); + + } + function DisplayBareRelations(WebPage $oPage, $bEditMode = false) + { + parent::DisplayBareRelations($oPage, $bEditMode); + $aExtraParam = array ('menu' => false); + $ServiceID=$this->GetKey(); + if (!$bEditMode) + { + $oPage->SetCurrentTab(Dict::S('Class:Service/Tab:Related_Contracts')); + $oCustomerContracts=new CMDBObjectSet(DBObjectSearch::FromOQL("SELECT CustomerContract AS cc JOIN lnkContractToSLA AS ln ON ln.contract_id=cc.id JOIN SLA AS sla ON ln.sla_id=sla.id WHERE sla.service_id=$ServiceID")); + self::DisplaySet($oPage,$oCustomerContracts,$aExtraParam); + + + } + } } class ServiceSubcategory extends cmdbAbstractObject @@ -305,7 +356,7 @@ class ServiceSubcategory extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "name", "state_attcode" => "", - "reconc_keys" => array("name"), + "reconc_keys" => array("name","service_id"), "db_table" => "servicesubcategory", "db_key_field" => "id", "db_finalclass_field" => "", @@ -336,7 +387,7 @@ class SLA extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "name", "state_attcode" => "", - "reconc_keys" => array("name"), + "reconc_keys" => array("name","service_id"), "db_table" => "sla", "db_key_field" => "id", "db_finalclass_field" => "", @@ -400,7 +451,7 @@ class lnkSLTToSLA extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "sla_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("sla_id","slt_id"), "db_table" => "lnkslttosla", "db_key_field" => "id", "db_finalclass_field" => "", @@ -435,7 +486,7 @@ class lnkServiceToDoc extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "service_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("service_id","document_id"), "db_table" => "lnkservicetodoc", "db_key_field" => "id", "db_finalclass_field" => "", @@ -468,7 +519,7 @@ class lnkServiceToContact extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "service_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("service_id","contact_id"), "db_table" => "lnkservicetocontact", "db_key_field" => "id", "db_finalclass_field" => "", @@ -501,7 +552,7 @@ class lnkServiceToCI extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "service_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("service_id","ci_id"), "db_table" => "lnkservicetoci", "db_key_field" => "id", "db_finalclass_field" => "", diff --git a/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php b/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php index 533b2e884..50d11e41d 100644 --- a/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php @@ -38,26 +38,35 @@ // Class: Ticket // -Dict::Add('EN US', 'English', 'English', array( - 'Class:Ticket' => 'Ticket', - 'Class:Ticket+' => '', - 'Class:Ticket/Attribute:ref' => 'Ref', - 'Class:Ticket/Attribute:ref+' => '', - 'Class:Ticket/Attribute:title' => 'Title', - 'Class:Ticket/Attribute:title+' => '', - 'Class:Ticket/Attribute:ticket_log' => 'Log', - 'Class:Ticket/Attribute:ticket_log+' => '', - 'Class:Ticket/Attribute:start_date' => 'Started', - 'Class:Ticket/Attribute:start_date+' => '', - 'Class:Ticket/Attribute:document_list' => 'Documents', - 'Class:Ticket/Attribute:document_list+' => 'Documents related to the ticket', - 'Class:Ticket/Attribute:ci_list' => 'CIs', - 'Class:Ticket/Attribute:ci_list+' => 'CIs concerned by the incident', - 'Class:Ticket/Attribute:contact_list' => 'Contacts', - 'Class:Ticket/Attribute:contact_list+' => 'Team and persons involved', - 'Class:Ticket/Attribute:finalclass' => 'Type', - 'Class:Ticket/Attribute:finalclass+' => '', -)); +// +// Class: Ticket +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:Ticket' => 'Ticket', + 'Class:Ticket+' => '', + 'Class:Ticket/Attribute:ref' => 'Ref', + 'Class:Ticket/Attribute:ref+' => '', + 'Class:Ticket/Attribute:title' => 'Title', + 'Class:Ticket/Attribute:title+' => '', + 'Class:Ticket/Attribute:description' => 'description', + 'Class:Ticket/Attribute:description+' => '', + 'Class:Ticket/Attribute:ticket_log' => 'Log', + 'Class:Ticket/Attribute:ticket_log+' => '', + 'Class:Ticket/Attribute:start_date' => 'Started', + 'Class:Ticket/Attribute:start_date+' => '', + 'Class:Ticket/Attribute:document_list' => 'Documents', + 'Class:Ticket/Attribute:document_list+' => 'Documents related to the ticket', + 'Class:Ticket/Attribute:ci_list' => 'CIs', + 'Class:Ticket/Attribute:ci_list+' => 'CIs concerned by the incident', + 'Class:Ticket/Attribute:contact_list' => 'Contacts', + 'Class:Ticket/Attribute:contact_list+' => 'Team and persons involved', + 'Class:Ticket/Attribute:incident_list' => 'Related Incidents', + 'Class:Ticket/Attribute:incident_list+' => '', + 'Class:Ticket/Attribute:finalclass' => 'Type', + 'Class:Ticket/Attribute:finalclass+' => '', +)); + // // Class: lnkTicketToDoc @@ -101,141 +110,158 @@ Dict::Add('EN US', 'English', 'English', array( // Class: lnkTicketToCI // -Dict::Add('EN US', 'English', 'English', array( - 'Class:lnkTicketToCI' => 'Ticket/CI', - 'Class:lnkTicketToCI+' => '', - 'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket', - 'Class:lnkTicketToCI/Attribute:ticket_id+' => '', - 'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #', - 'Class:lnkTicketToCI/Attribute:ticket_ref+' => '', - 'Class:lnkTicketToCI/Attribute:ci_id' => 'CI', - 'Class:lnkTicketToCI/Attribute:ci_id+' => '', - 'Class:lnkTicketToCI/Attribute:ci_name' => 'CI', - 'Class:lnkTicketToCI/Attribute:ci_name+' => '', - 'Class:lnkTicketToCI/Attribute:ci_status' => 'CI status', - 'Class:lnkTicketToCI/Attribute:ci_status+' => '', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkTicketToCI' => 'Ticket/CI', + 'Class:lnkTicketToCI+' => '', + 'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket', + 'Class:lnkTicketToCI/Attribute:ticket_id+' => '', + 'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #', + 'Class:lnkTicketToCI/Attribute:ticket_ref+' => '', + 'Class:lnkTicketToCI/Attribute:ci_id' => 'CI', + 'Class:lnkTicketToCI/Attribute:ci_id+' => '', + 'Class:lnkTicketToCI/Attribute:ci_name' => 'CI', + 'Class:lnkTicketToCI/Attribute:ci_name+' => '', + 'Class:lnkTicketToCI/Attribute:ci_status' => 'CI status', + 'Class:lnkTicketToCI/Attribute:ci_status+' => '', + 'Class:lnkTicketToCI/Attribute:impact' => 'Impact', + 'Class:lnkTicketToCI/Attribute:impact+' => '', +)); + // // Class: ResponseTicket // -Dict::Add('EN US', 'English', 'English', array( - 'Class:ResponseTicket' => 'ResponseTicket', - 'Class:ResponseTicket+' => '', - 'Class:ResponseTicket/Attribute:status' => 'Status', - 'Class:ResponseTicket/Attribute:status+' => '', - 'Class:ResponseTicket/Attribute:status/Value:new' => 'New', - 'Class:ResponseTicket/Attribute:status/Value:new+' => 'newly opened', - 'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Pending', - 'Class:ResponseTicket/Attribute:status/Value:frozen+' => '', - 'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'Escalation/TTO', - 'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '', - 'Class:ResponseTicket/Attribute:status/Value:assigned' => 'Assigned', - 'Class:ResponseTicket/Attribute:status/Value:assigned+' => '', - 'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Escalation/TTR', - 'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '', - 'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Resolved', - 'Class:ResponseTicket/Attribute:status/Value:resolved+' => '', - 'Class:ResponseTicket/Attribute:status/Value:closed' => 'Closed', - 'Class:ResponseTicket/Attribute:status/Value:closed+' => '', - 'Class:ResponseTicket/Attribute:caller_id' => 'Caller', - 'Class:ResponseTicket/Attribute:caller_id+' => '', - 'Class:ResponseTicket/Attribute:workgroup_name' => 'Workgroup', - 'Class:ResponseTicket/Attribute:workgroup_name+' => '', - 'Class:ResponseTicket/Attribute:org_id' => 'Customer', - 'Class:ResponseTicket/Attribute:org_id+' => '', - 'Class:ResponseTicket/Attribute:org_name' => 'Customer', - 'Class:ResponseTicket/Attribute:org_name+' => '', - 'Class:ResponseTicket/Attribute:service_id' => 'Service', - 'Class:ResponseTicket/Attribute:service_id+' => '', - 'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Service element', - 'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '', - 'Class:ResponseTicket/Attribute:product' => 'Product', - 'Class:ResponseTicket/Attribute:product+' => '', - 'Class:ResponseTicket/Attribute:impact' => 'Impact', - 'Class:ResponseTicket/Attribute:impact+' => '', - 'Class:ResponseTicket/Attribute:impact/Value:1' => 'A person', - 'Class:ResponseTicket/Attribute:impact/Value:1+' => '', - 'Class:ResponseTicket/Attribute:impact/Value:2' => 'A service', - 'Class:ResponseTicket/Attribute:impact/Value:2+' => '', - 'Class:ResponseTicket/Attribute:impact/Value:3' => 'A department', - 'Class:ResponseTicket/Attribute:impact/Value:3+' => '', - 'Class:ResponseTicket/Attribute:urgency' => 'Urgency', - 'Class:ResponseTicket/Attribute:urgency+' => '', - 'Class:ResponseTicket/Attribute:urgency/Value:1' => 'Low', - 'Class:ResponseTicket/Attribute:urgency/Value:1+' => '', - 'Class:ResponseTicket/Attribute:urgency/Value:2' => 'Medium', - 'Class:ResponseTicket/Attribute:urgency/Value:2+' => '', - 'Class:ResponseTicket/Attribute:urgency/Value:3' => 'High', - 'Class:ResponseTicket/Attribute:urgency/Value:3+' => '', - 'Class:ResponseTicket/Attribute:priority' => 'Priority', - 'Class:ResponseTicket/Attribute:priority+' => '', - 'Class:ResponseTicket/Attribute:priority/Value:1' => 'Low', - 'Class:ResponseTicket/Attribute:priority/Value:1+' => '', - 'Class:ResponseTicket/Attribute:priority/Value:2' => 'Medium', - 'Class:ResponseTicket/Attribute:priority/Value:2+' => '', - 'Class:ResponseTicket/Attribute:priority/Value:3' => 'High', - 'Class:ResponseTicket/Attribute:priority/Value:3+' => '', - 'Class:ResponseTicket/Attribute:workgroup_id' => 'Workgroup', - 'Class:ResponseTicket/Attribute:workgroup_id+' => '', - 'Class:ResponseTicket/Attribute:agent_id' => 'Agent', - 'Class:ResponseTicket/Attribute:agent_id+' => '', - 'Class:ResponseTicket/Attribute:agent_name' => 'Agent', - 'Class:ResponseTicket/Attribute:agent_name+' => '', - 'Class:ResponseTicket/Attribute:agent_email' => 'Agent email', - 'Class:ResponseTicket/Attribute:agent_email+' => '', - 'Class:ResponseTicket/Attribute:related_change_id' => 'Related change', - 'Class:ResponseTicket/Attribute:related_change_id+' => '', - 'Class:ResponseTicket/Attribute:related_change_ref' => 'Related change', - 'Class:ResponseTicket/Attribute:related_change_ref+' => '', - 'Class:ResponseTicket/Attribute:close_date' => 'Closed', - 'Class:ResponseTicket/Attribute:close_date+' => '', - 'Class:ResponseTicket/Attribute:last_update' => 'Last update', - 'Class:ResponseTicket/Attribute:last_update+' => '', - 'Class:ResponseTicket/Attribute:assignment_date' => 'Assigned', - 'Class:ResponseTicket/Attribute:assignment_date+' => '', - 'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTO Escalation deadline', - 'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '', - 'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTR Escalation deadline', - 'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '', - 'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline', - 'Class:ResponseTicket/Attribute:closure_deadline+' => '', - 'Class:ResponseTicket/Attribute:resolution_code' => 'Resolution code', - 'Class:ResponseTicket/Attribute:resolution_code+' => '', - 'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Could not be reproduced', - 'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '', - 'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'Duplicate ticket', - 'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '', - 'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => 'Fixed', - 'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '', - 'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => 'Irrelevant', - 'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '', - 'Class:ResponseTicket/Attribute:solution' => 'Solution', - 'Class:ResponseTicket/Attribute:solution+' => '', - 'Class:ResponseTicket/Attribute:user_satisfaction' => 'User satisfaction', - 'Class:ResponseTicket/Attribute:user_satisfaction+' => '', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => '1', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => '1', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => '2', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => '2', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => '3', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => '3', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => '4', - 'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => '4', - 'Class:ResponseTicket/Attribute:user_commment' => 'User comment', - 'Class:ResponseTicket/Attribute:user_commment+' => '', - 'Class:ResponseTicket/Stimulus:ev_assign' => 'Assign', - 'Class:ResponseTicket/Stimulus:ev_assign+' => '', - 'Class:ResponseTicket/Stimulus:ev_reassign' => 'Reassign', - 'Class:ResponseTicket/Stimulus:ev_reassign+' => '', - 'Class:ResponseTicket/Stimulus:ev_timeout' => 'ev_timeout', - 'Class:ResponseTicket/Stimulus:ev_timeout+' => '', - 'Class:ResponseTicket/Stimulus:ev_resolve' => 'Mark a resolved', - 'Class:ResponseTicket/Stimulus:ev_resolve+' => '', - 'Class:ResponseTicket/Stimulus:ev_close' => 'Close', - 'Class:ResponseTicket/Stimulus:ev_close+' => '', -)); +Dict::Add('EN US', 'English', 'English', array( + 'Class:ResponseTicket' => 'ResponseTicket', + 'Class:ResponseTicket+' => '', + 'Class:ResponseTicket/Attribute:status' => 'Status', + 'Class:ResponseTicket/Attribute:status+' => '', + 'Class:ResponseTicket/Attribute:status/Value:new' => 'New', + 'Class:ResponseTicket/Attribute:status/Value:new+' => 'newly opened', + 'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'Escalation/TTO', + 'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '', + 'Class:ResponseTicket/Attribute:status/Value:assigned' => 'Assigned', + 'Class:ResponseTicket/Attribute:status/Value:assigned+' => '', + 'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Escalation/TTR', + 'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '', + 'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Pending', + 'Class:ResponseTicket/Attribute:status/Value:frozen+' => '', + 'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Resolved', + 'Class:ResponseTicket/Attribute:status/Value:resolved+' => '', + 'Class:ResponseTicket/Attribute:status/Value:closed' => 'Closed', + 'Class:ResponseTicket/Attribute:status/Value:closed+' => '', + 'Class:ResponseTicket/Attribute:caller_id' => 'Caller', + 'Class:ResponseTicket/Attribute:caller_id+' => '', + 'Class:ResponseTicket/Attribute:caller_email' => 'Email', + 'Class:ResponseTicket/Attribute:caller_email+' => '', + 'Class:ResponseTicket/Attribute:org_id' => 'Customer', + 'Class:ResponseTicket/Attribute:org_id+' => '', + 'Class:ResponseTicket/Attribute:org_name' => 'Customer', + 'Class:ResponseTicket/Attribute:org_name+' => '', + 'Class:ResponseTicket/Attribute:service_id' => 'Service', + 'Class:ResponseTicket/Attribute:service_id+' => '', + 'Class:ResponseTicket/Attribute:service_name' => 'Name', + 'Class:ResponseTicket/Attribute:service_name+' => '', + 'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Service element', + 'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '', + 'Class:ResponseTicket/Attribute:servicesubcategory_name' => 'Name', + 'Class:ResponseTicket/Attribute:servicesubcategory_name+' => '', + 'Class:ResponseTicket/Attribute:product' => 'Product', + 'Class:ResponseTicket/Attribute:product+' => '', + 'Class:ResponseTicket/Attribute:impact' => 'Impact', + 'Class:ResponseTicket/Attribute:impact+' => '', + 'Class:ResponseTicket/Attribute:impact/Value:1' => 'A person', + 'Class:ResponseTicket/Attribute:impact/Value:1+' => '', + 'Class:ResponseTicket/Attribute:impact/Value:2' => 'A service', + 'Class:ResponseTicket/Attribute:impact/Value:2+' => '', + 'Class:ResponseTicket/Attribute:impact/Value:3' => 'A department', + 'Class:ResponseTicket/Attribute:impact/Value:3+' => '', + 'Class:ResponseTicket/Attribute:urgency' => 'Urgency', + 'Class:ResponseTicket/Attribute:urgency+' => '', + 'Class:ResponseTicket/Attribute:urgency/Value:1' => 'Low', + 'Class:ResponseTicket/Attribute:urgency/Value:1+' => '', + 'Class:ResponseTicket/Attribute:urgency/Value:2' => 'Medium', + 'Class:ResponseTicket/Attribute:urgency/Value:2+' => '', + 'Class:ResponseTicket/Attribute:urgency/Value:3' => 'High', + 'Class:ResponseTicket/Attribute:urgency/Value:3+' => '', + 'Class:ResponseTicket/Attribute:priority' => 'Priority', + 'Class:ResponseTicket/Attribute:priority+' => '', + 'Class:ResponseTicket/Attribute:priority/Value:1' => 'Low', + 'Class:ResponseTicket/Attribute:priority/Value:1+' => '', + 'Class:ResponseTicket/Attribute:priority/Value:2' => 'Medium', + 'Class:ResponseTicket/Attribute:priority/Value:2+' => '', + 'Class:ResponseTicket/Attribute:priority/Value:3' => 'High', + 'Class:ResponseTicket/Attribute:priority/Value:3+' => '', + 'Class:ResponseTicket/Attribute:workgroup_id' => 'Workgroup', + 'Class:ResponseTicket/Attribute:workgroup_id+' => '', + 'Class:ResponseTicket/Attribute:workgroup_name' => 'Workgroup', + 'Class:ResponseTicket/Attribute:workgroup_name+' => '', + 'Class:ResponseTicket/Attribute:agent_id' => 'Agent', + 'Class:ResponseTicket/Attribute:agent_id+' => '', + 'Class:ResponseTicket/Attribute:agent_name' => 'Agent', + 'Class:ResponseTicket/Attribute:agent_name+' => '', + 'Class:ResponseTicket/Attribute:agent_email' => 'Agent email', + 'Class:ResponseTicket/Attribute:agent_email+' => '', + 'Class:ResponseTicket/Attribute:related_problem_id' => 'Related Problem', + 'Class:ResponseTicket/Attribute:related_problem_id+' => '', + 'Class:ResponseTicket/Attribute:related_problem_ref' => 'Ref', + 'Class:ResponseTicket/Attribute:related_problem_ref+' => '', + 'Class:ResponseTicket/Attribute:related_change_id' => 'Related change', + 'Class:ResponseTicket/Attribute:related_change_id+' => '', + 'Class:ResponseTicket/Attribute:related_change_ref' => 'Related change', + 'Class:ResponseTicket/Attribute:related_change_ref+' => '', + 'Class:ResponseTicket/Attribute:close_date' => 'Closed', + 'Class:ResponseTicket/Attribute:close_date+' => '', + 'Class:ResponseTicket/Attribute:last_update' => 'Last update', + 'Class:ResponseTicket/Attribute:last_update+' => '', + 'Class:ResponseTicket/Attribute:assignment_date' => 'Assignment Date ', + 'Class:ResponseTicket/Attribute:assignment_date+' => '', + 'Class:ResponseTicket/Attribute:resolution_date' => 'Resolution Date', + 'Class:ResponseTicket/Attribute:resolution_date+' => '', + 'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTO Escalation deadline', + 'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '', + 'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTR Escalation deadline', + 'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '', + 'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline', + 'Class:ResponseTicket/Attribute:closure_deadline+' => '', + 'Class:ResponseTicket/Attribute:resolution_code' => 'Resolution code', + 'Class:ResponseTicket/Attribute:resolution_code+' => '', + 'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Could not be reproduced', + 'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '', + 'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'Duplicate ticket', + 'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '', + 'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => 'Fixed', + 'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '', + 'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => 'Irrelevant', + 'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '', + 'Class:ResponseTicket/Attribute:solution' => 'Solution', + 'Class:ResponseTicket/Attribute:solution+' => '', + 'Class:ResponseTicket/Attribute:user_satisfaction' => 'User satisfaction', + 'Class:ResponseTicket/Attribute:user_satisfaction+' => '', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => 'Bad', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => 'Bad', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => 'Average', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => 'Average', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => 'Good', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => 'Good', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => 'Very Good', + 'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => 'Very Good', + 'Class:ResponseTicket/Attribute:user_commment' => 'User comment', + 'Class:ResponseTicket/Attribute:user_commment+' => '', + 'Class:ResponseTicket/Stimulus:ev_assign' => 'Assign', + 'Class:ResponseTicket/Stimulus:ev_assign+' => '', + 'Class:ResponseTicket/Stimulus:ev_reassign' => 'Reassign', + 'Class:ResponseTicket/Stimulus:ev_reassign+' => '', + 'Class:ResponseTicket/Stimulus:ev_timeout' => 'Escalation', + 'Class:ResponseTicket/Stimulus:ev_timeout+' => '', + 'Class:ResponseTicket/Stimulus:ev_resolve' => 'Mark a resolved', + 'Class:ResponseTicket/Stimulus:ev_resolve+' => '', + 'Class:ResponseTicket/Stimulus:ev_close' => 'Close', + 'Class:ResponseTicket/Stimulus:ev_close+' => '', +)); + + ?> diff --git a/modules/itop-tickets-1.0.0/model.itop-tickets.php b/modules/itop-tickets-1.0.0/model.itop-tickets.php index be6b3e3ff..d85e38da7 100644 --- a/modules/itop-tickets-1.0.0/model.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/model.itop-tickets.php @@ -51,8 +51,9 @@ abstract class Ticket extends cmdbAbstractObject MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkTicketToDoc", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"document_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkTicketToCI", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contact_list", array("linked_class"=>"lnkTicketToContact", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("incident_list", array("linked_class"=>"lnkTicketToIncident", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"incident_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('ref', 'title', 'description', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list')); + MetaModel::Init_SetZListItems('details', array('ref', 'title', 'description', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list','incident_list')); MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date')); MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date')); MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date')); @@ -69,7 +70,7 @@ class lnkTicketToDoc extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "ticket_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("ticket_id","document_id"), "db_table" => "lnktickettodoc", "db_key_field" => "id", "db_finalclass_field" => "", @@ -100,7 +101,7 @@ class lnkTicketToContact extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "ticket_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("ticket_id","contact_id"), "db_table" => "lnktickettocontact", "db_key_field" => "id", "db_finalclass_field" => "", @@ -133,7 +134,7 @@ class lnkTicketToCI extends cmdbAbstractObject "key_type" => "autoincrement", "name_attcode" => "ticket_id", "state_attcode" => "", - "reconc_keys" => array(), + "reconc_keys" => array("ticket_id","ci_id"), "db_table" => "lnktickettoci", "db_key_field" => "id", "db_finalclass_field" => "", @@ -147,11 +148,12 @@ class lnkTicketToCI extends cmdbAbstractObject MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeString("impact", array("allowed_values"=>null, "sql"=>"impact", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('details', array('ticket_id', 'ci_id', 'ci_status')); + MetaModel::Init_SetZListItems('details', array('ticket_id', 'ci_id', 'impact','ci_status')); MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'ci_id', 'ci_status')); MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'ci_id', 'ci_status')); - MetaModel::Init_SetZListItems('list', array('ticket_id', 'ci_id', 'ci_status')); + MetaModel::Init_SetZListItems('list', array('ticket_id', 'ci_id', 'impact','ci_status')); } } @@ -201,6 +203,7 @@ abstract class ResponseTicket extends Ticket MetaModel::Init_AddAttribute(new AttributeDateTime("close_date", array("allowed_values"=>null, "sql"=>"close_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeDateTime("last_update", array("allowed_values"=>null, "sql"=>"last_update", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values"=>null, "sql"=>"assignment_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values"=>null, "sql"=>"resolution_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeDeadline("tto_escalation_deadline", array("allowed_values"=>null, "sql"=>"tto_escalation_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeDeadline("ttr_escalation_deadline", array("allowed_values"=>null, "sql"=>"ttr_escalation_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributeDeadline("closure_deadline", array("allowed_values"=>null, "sql"=>"closure_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); @@ -211,8 +214,8 @@ abstract class ResponseTicket extends Ticket MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); - MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); - MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment')); + MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'priority', 'workgroup_id', 'agent_id', 'last_update')); // Lifecycle MetaModel::Init_DefineState( @@ -229,6 +232,7 @@ abstract class ResponseTicket extends Ticket 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_HIDDEN, + 'resolution_date' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_READONLY, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'closure_deadline' => OPT_ATT_HIDDEN, @@ -273,6 +277,8 @@ abstract class ResponseTicket extends Ticket 'workgroup_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_READONLY, + 'related_problem_id' => OPT_ATT_MUSTPROMPT, +// 'related_change_id' => OPT_ATT_MUSTPROMPT, ), ) ); @@ -336,17 +342,17 @@ abstract class ResponseTicket extends Ticket MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array())); - MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null)); MetaModel::Init_DefineTransition("new", "ev_timeout", array("target_state"=>"escalated_tto", "actions"=>array(), "user_restriction"=>null)); - MetaModel::Init_DefineTransition("escalated_tto", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("escalated_tto", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null)); MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); MetaModel::Init_DefineTransition("assigned", "ev_timeout", array("target_state"=>"escalated_ttr", "actions"=>array(), "user_restriction"=>null)); - MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetClosureDeadline'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate','SetClosureDeadline'), "user_restriction"=>null)); MetaModel::Init_DefineTransition("escalated_ttr", "ev_reassign", array("target_state"=>"escalated_ttr", "actions"=>array(), "user_restriction"=>null)); - MetaModel::Init_DefineTransition("escalated_ttr", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetClosureDeadline'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("escalated_ttr", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate','SetClosureDeadline'), "user_restriction"=>null)); MetaModel::Init_DefineTransition("resolved", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null)); MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state"=>"closed", "actions"=>array('SetClosureDate'), "user_restriction"=>null)); @@ -360,6 +366,16 @@ abstract class ResponseTicket extends Ticket $this->Set('closure_deadline', time() + $iMaxWaitHours * 3600); return true; } + public function SetAssignedDate($sStimulusCode) + { + $this->Set('assignment_date', time()); + return true; + } + public function SetResolveDate($sStimulusCode) + { + $this->Set('resolution_date', time()); + return true; + } public function SetClosureDate($sStimulusCode) { $this->Set('close_date', time()); diff --git a/modules/itop-tickets-1.0.0/module.itop-tickets.php b/modules/itop-tickets-1.0.0/module.itop-tickets.php index 310cb5adc..47283913b 100644 --- a/modules/itop-tickets-1.0.0/module.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/module.itop-tickets.php @@ -26,7 +26,7 @@ SetupWebPage::AddModule( 'dictionary' => array( 'en.dict.itop-tickets.php', 'fr.dict.itop-tickets.php', - 'es_cr.dict.itop-tickets.php', +// 'es_cr.dict.itop-tickets.php', ), 'data.struct' => array( 'data.struct.ta-triggers.xml',