'crmid','vtiger_account'=>'accountid','vtiger_accountbillads'=>'accountaddressid','vtiger_accountshipads'=>'accountaddressid','vtiger_accountscf'=>'accountid'); /** * Mandatory table for supporting custom fields. */ var $customFieldTable = Array('vtiger_accountscf', 'accountid'); var $entity_table = "vtiger_crmentity"; var $column_fields = Array(); var $sortby_fields = Array('accountname','bill_city','website','phone','smownerid'); //var $groupTable = Array('vtiger_accountgrouprelation','accountid'); // This is the list of vtiger_fields that are in the lists. var $list_fields = Array( 'Account Name'=>Array('vtiger_account'=>'accountname'), 'Billing City'=>Array('vtiger_accountbillads'=>'bill_city'), 'Website'=>Array('vtiger_account'=>'website'), 'Phone'=>Array('vtiger_account'=> 'phone'), 'Assigned To'=>Array('vtiger_crmentity'=>'smownerid') ); var $list_fields_name = Array( 'Account Name'=>'accountname', 'Billing City'=>'bill_city', 'Website'=>'website', 'Phone'=>'phone', 'Assigned To'=>'assigned_user_id' ); var $list_link_field= 'accountname'; var $search_fields = Array( 'Account Name'=>Array('vtiger_account'=>'accountname'), 'Billing City'=>Array('vtiger_accountbillads'=>'bill_city'), 'Assigned To'=>Array('vtiger_crmentity'=>'smownerid'), ); var $search_fields_name = Array( 'Account Name'=>'accountname', 'Billing City'=>'bill_city', 'Assigned To'=>'assigned_user_id', ); // This is the list of vtiger_fields that are required var $required_fields = array(); // Used when enabling/disabling the mandatory fields for the module. // Refers to vtiger_field.fieldname values. var $mandatory_fields = Array('assigned_user_id', 'createdtime', 'modifiedtime', 'accountname'); //Default Fields for Email Templates -- Pavani var $emailTemplate_defaultFields = array('accountname','account_type','industry','annualrevenue','phone','email1','rating','website','fax'); //Added these variables which are used as default order by and sortorder in ListView var $default_order_by = 'accountname'; var $default_sort_order = 'ASC'; // For Alphabetical search var $def_basicsearch_col = 'accountname'; function Accounts() { $this->log =LoggerManager::getLogger('account'); $this->db = PearDatabase::getInstance(); $this->column_fields = getColumnFields('Accounts'); } /** Function to handle module specific operations when saving a entity */ function save_module($module) { } // Mike Crowe Mod --------------------------------------------------------Default ordering for us /** Returns a list of the associated Campaigns * @param $id -- campaign id :: Type Integer * @returns list of campaigns in array format */ function get_campaigns($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_campaigns(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; $button .= ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_campaign.campaignid, vtiger_campaign.campaignname, vtiger_campaign.campaigntype, vtiger_campaign.campaignstatus, vtiger_campaign.expectedrevenue, vtiger_campaign.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime from vtiger_campaign inner join vtiger_campaignaccountrel on vtiger_campaignaccountrel.campaignid=vtiger_campaign.campaignid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid left join vtiger_groups on vtiger_groups.groupid=vtiger_crmentity.smownerid left join vtiger_users on vtiger_users.id = vtiger_crmentity.smownerid where vtiger_campaignaccountrel.accountid=".$id." and vtiger_crmentity.deleted=0"; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_campaigns method ..."); return $return_value; } /** Returns a list of the associated contacts * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. * All Rights Reserved.. * Contributor(s): ______________________________________.. */ function get_contacts($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_contacts(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions && getFieldVisibilityPermission($related_module, $current_user->id, 'account_id','readwrite') == '0') { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_contactdetails.*, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_account.accountname, case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name FROM vtiger_contactdetails INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_contactdetails.accountid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id WHERE vtiger_crmentity.deleted = 0 AND vtiger_contactdetails.accountid = ".$id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_contacts method ..."); return $return_value; } /** Returns a list of the associated opportunities * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. * All Rights Reserved.. * Contributor(s): ______________________________________.. */ function get_opportunities($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_opportunities(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_potential.potentialid, vtiger_potential.related_to, vtiger_potential.potentialname, vtiger_potential.sales_stage, vtiger_potential.potentialtype, vtiger_potential.amount, vtiger_potential.closingdate, vtiger_potential.potentialtype, vtiger_account.accountname, case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,vtiger_crmentity.crmid, vtiger_crmentity.smownerid FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_potential.potentialid LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_potential.related_to LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_crmentity.deleted = 0 AND vtiger_potential.related_to = ".$id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_opportunities method ..."); return $return_value; } /** Returns a list of the associated tasks * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. * All Rights Reserved.. * Contributor(s): ______________________________________.. */ function get_activities($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_activities(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/Activity.php"); $other = new Activity(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; $button .= ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { if(getFieldVisibilityPermission('Calendar',$current_user->id,'parent_id', 'readwrite') == '0') { $button .= " "; } if(getFieldVisibilityPermission('Events',$current_user->id,'parent_id', 'readwrite') == '0') { $button .= ""; } } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_activity.*, vtiger_cntactivityrel.*, vtiger_seactivityrel.*, vtiger_contactdetails.lastname, vtiger_contactdetails.firstname, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime, case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_recurringevents.recurringtype FROM vtiger_activity INNER JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid LEFT JOIN vtiger_cntactivityrel ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid LEFT JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid LEFT OUTER JOIN vtiger_recurringevents ON vtiger_recurringevents.activityid = vtiger_activity.activityid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_seactivityrel.crmid = ".$id." AND vtiger_crmentity.deleted = 0 AND ((vtiger_activity.activitytype='Task' and vtiger_activity.status not in ('Completed','Deferred')) OR (vtiger_activity.activitytype not in ('Emails','Task') and vtiger_activity.eventstatus not in ('','Held'))) "; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_activities method ..."); return $return_value; } /** * Function to get Account related Task & Event which have activity type Held, Completed or Deferred. * @param integer $id - accountid * returns related Task or Event record in array format */ function get_history($id) { global $log; $log->debug("Entering get_history(".$id.") method ..."); $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.status, vtiger_activity.eventstatus, vtiger_activity.activitytype, vtiger_activity.date_start, vtiger_activity.due_date, vtiger_activity.time_start, vtiger_activity.time_end, vtiger_crmentity.modifiedtime, vtiger_crmentity.createdtime, vtiger_crmentity.description,case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name FROM vtiger_activity INNER JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid WHERE (vtiger_activity.activitytype != 'Emails') AND (vtiger_activity.status = 'Completed' OR vtiger_activity.status = 'Deferred' OR (vtiger_activity.eventstatus = 'Held' AND vtiger_activity.eventstatus != '')) AND vtiger_seactivityrel.crmid = ".$id." AND vtiger_crmentity.deleted = 0"; //Don't add order by, because, for security, one more condition will be added with this query in include/RelatedListView.php $log->debug("Exiting get_history method ..."); return getHistory('Accounts',$query,$id); } /** Returns a list of the associated emails * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.. * All Rights Reserved.. * Contributor(s): ______________________________________.. */ function get_emails($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user, $adb; $log->debug("Entering get_emails(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; $button .= ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= ""; } } $entityIds = array($id); $accountContacts = $adb->pquery('SELECT contactid FROM vtiger_contactdetails INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid WHERE vtiger_contactdetails.accountid = ? AND vtiger_crmentity.deleted = 0', array($id)); $numOfContacts = $adb->num_rows($accountContacts); if($accountContacts && $numOfContacts > 0) { for($i=0; $i < $numOfContacts; ++ $i) { array_push($entityIds, $adb->query_result($accountContacts, $i, 'contactid')); } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.activitytype, vtiger_crmentity.modifiedtime, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_activity.date_start, vtiger_seactivityrel.crmid as parent_id FROM vtiger_activity, vtiger_seactivityrel, vtiger_account, vtiger_users, vtiger_crmentity LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid WHERE vtiger_seactivityrel.activityid = vtiger_activity.activityid AND vtiger_seactivityrel.crmid IN (". implode(',', $entityIds) .") AND vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_crmentity.crmid = vtiger_activity.activityid AND vtiger_account.accountid = ".$id." AND vtiger_activity.activitytype='Emails' AND vtiger_crmentity.deleted = 0"; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_emails method ..."); return $return_value; } /** * Function to get Account related Quotes * @param integer $id - accountid * returns related Quotes record in array format */ function get_quotes($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_quotes(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions && getFieldVisibilityPermission($related_module, $current_user->id, 'account_id','readwrite') == '0') { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_crmentity.*, vtiger_quotes.*, vtiger_potential.potentialname, vtiger_account.accountname FROM vtiger_quotes INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_quotes.quoteid LEFT OUTER JOIN vtiger_account ON vtiger_account.accountid = vtiger_quotes.accountid LEFT OUTER JOIN vtiger_potential ON vtiger_potential.potentialid = vtiger_quotes.potentialid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id WHERE vtiger_crmentity.deleted = 0 AND vtiger_account.accountid = ".$id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_quotes method ..."); return $return_value; } /** * Function to get Account related Invoices * @param integer $id - accountid * returns related Invoices record in array format */ function get_invoices($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_invoices(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions && getFieldVisibilityPermission($related_module, $current_user->id, 'account_id','readwrite') == '0') { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_crmentity.*, vtiger_invoice.*, vtiger_account.accountname, vtiger_salesorder.subject AS salessubject FROM vtiger_invoice INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_invoice.invoiceid LEFT OUTER JOIN vtiger_account ON vtiger_account.accountid = vtiger_invoice.accountid LEFT OUTER JOIN vtiger_salesorder ON vtiger_salesorder.salesorderid = vtiger_invoice.salesorderid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id WHERE vtiger_crmentity.deleted = 0 AND vtiger_account.accountid = ".$id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_invoices method ..."); return $return_value; } /** * Function to get Account related SalesOrder * @param integer $id - accountid * returns related SalesOrder record in array format */ function get_salesorder($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_salesorder(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions && getFieldVisibilityPermission($related_module, $current_user->id, 'account_id','readwrite') == '0') { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_crmentity.*, vtiger_salesorder.*, vtiger_quotes.subject AS quotename, vtiger_account.accountname, case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name FROM vtiger_salesorder INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_salesorder.salesorderid LEFT OUTER JOIN vtiger_quotes ON vtiger_quotes.quoteid = vtiger_salesorder.quoteid LEFT OUTER JOIN vtiger_account ON vtiger_account.accountid = vtiger_salesorder.accountid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id WHERE vtiger_crmentity.deleted = 0 AND vtiger_salesorder.accountid = ".$id; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_salesorder method ..."); return $return_value; } /** * Function to get Account related Tickets * @param integer $id - accountid * returns related Ticket record in array format */ function get_tickets($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_tickets(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions && getFieldVisibilityPermission($related_module, $current_user->id, 'parent_id','readwrite') == '0') { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name, vtiger_users.id, vtiger_troubletickets.title, vtiger_troubletickets.ticketid AS crmid, vtiger_troubletickets.status, vtiger_troubletickets.priority, vtiger_troubletickets.parent_id, vtiger_troubletickets.ticket_no, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime FROM vtiger_troubletickets INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id LEFT JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid=vtiger_troubletickets.parent_id LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_crmentity.deleted = 0 and vtiger_troubletickets.parent_id=$id" ; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_tickets method ..."); return $return_value; } /** * Function to get Account related Products * @param integer $id - accountid * returns related Products record in array format */ function get_products($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $singlepane_view,$currentModule,$current_user; $log->debug("Entering get_products(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); require_once("modules/$related_module/$related_module.php"); $other = new $related_module(); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == 'true') $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; $button = ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { $button .= " "; } if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } $query = "SELECT vtiger_products.productid, vtiger_products.productname, vtiger_products.productcode, vtiger_products.commissionrate, vtiger_products.qty_per_unit, vtiger_products.unit_price, vtiger_crmentity.crmid, vtiger_crmentity.smownerid FROM vtiger_products INNER JOIN vtiger_seproductsrel ON vtiger_products.productid = vtiger_seproductsrel.productid and vtiger_seproductsrel.setype='Accounts' INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_products.productid INNER JOIN vtiger_account ON vtiger_account.accountid = vtiger_seproductsrel.crmid LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_crmentity.deleted = 0 AND vtiger_account.accountid = $id"; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); if($return_value == null) $return_value = Array(); $return_value['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_products method ..."); return $return_value; } /** Function to export the account records in CSV Format * @param reference variable - where condition is passed when the query is executed * Returns Export Accounts Query. */ function create_export_query($where) { global $log; global $current_user; $log->debug("Entering create_export_query(".$where.") method ..."); include("include/utils/ExportUtils.php"); //To get the Permitted fields query and the permitted fields list $sql = getPermittedFieldsQuery("Accounts", "detail_view"); $fields_list = getFieldsListFromQuery($sql); $query = "SELECT $fields_list,case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name FROM ".$this->entity_table." INNER JOIN vtiger_account ON vtiger_account.accountid = vtiger_crmentity.crmid LEFT JOIN vtiger_accountbillads ON vtiger_accountbillads.accountaddressid = vtiger_account.accountid LEFT JOIN vtiger_accountshipads ON vtiger_accountshipads.accountaddressid = vtiger_account.accountid LEFT JOIN vtiger_accountscf ON vtiger_accountscf.accountid = vtiger_account.accountid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid and vtiger_users.status = 'Active' LEFT JOIN vtiger_account vtiger_account2 ON vtiger_account2.accountid = vtiger_account.parentid ";//vtiger_account2 is added to get the Member of account $query .= $this->getNonAdminAccessControlQuery('Accounts',$current_user); $where_auto = " vtiger_crmentity.deleted = 0 "; if($where != "") $query .= " WHERE ($where) AND ".$where_auto; else $query .= " WHERE ".$where_auto; $log->debug("Exiting create_export_query method ..."); return $query; } /** Function to get the Columnnames of the Account Record * Used By vtigerCRM Word Plugin * Returns the Merge Fields for Word Plugin */ function getColumnNames_Acnt() { global $log,$current_user; $log->debug("Entering getColumnNames_Acnt() method ..."); require('user_privileges/user_privileges_'.$current_user->id.'.php'); if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) { $sql1 = "SELECT fieldlabel FROM vtiger_field WHERE tabid = 6 and vtiger_field.presence in (0,2)"; $params1 = array(); }else { $profileList = getCurrentUserProfileList(); $sql1 = "select vtiger_field.fieldid,fieldlabel from vtiger_field INNER JOIN vtiger_profile2field on vtiger_profile2field.fieldid=vtiger_field.fieldid inner join vtiger_def_org_field on vtiger_def_org_field.fieldid=vtiger_field.fieldid where vtiger_field.tabid=6 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)"; $params1 = array(); if (count($profileList) > 0) { $sql1 .= " and vtiger_profile2field.profileid in (". generateQuestionMarks($profileList) .") group by fieldid"; array_push($params1, $profileList); } } $result = $this->db->pquery($sql1, $params1); $numRows = $this->db->num_rows($result); for($i=0; $i < $numRows;$i++) { $custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel"); $custom_fields[$i] = preg_replace("/\s+/","",$custom_fields[$i]); $custom_fields[$i] = strtoupper($custom_fields[$i]); } $mergeflds = $custom_fields; $log->debug("Exiting getColumnNames_Acnt method ..."); return $mergeflds; } /** * Move the related records of the specified list of id's to the given record. * @param String This module name * @param Array List of Entity Id's from which related records need to be transfered * @param Integer Id of the the Record to which the related records are to be moved */ function transferRelatedRecords($module, $transferEntityIds, $entityId) { global $adb,$log; $log->debug("Entering function transferRelatedRecords ($module, $transferEntityIds, $entityId)"); $rel_table_arr = Array("Contacts"=>"vtiger_contactdetails","Potentials"=>"vtiger_potential","Quotes"=>"vtiger_quotes", "SalesOrder"=>"vtiger_salesorder","Invoice"=>"vtiger_invoice","Activities"=>"vtiger_seactivityrel", "Documents"=>"vtiger_senotesrel","Attachments"=>"vtiger_seattachmentsrel","HelpDesk"=>"vtiger_troubletickets", "Products"=>"vtiger_seproductsrel"); $tbl_field_arr = Array("vtiger_contactdetails"=>"contactid","vtiger_potential"=>"potentialid","vtiger_quotes"=>"quoteid", "vtiger_salesorder"=>"salesorderid","vtiger_invoice"=>"invoiceid","vtiger_seactivityrel"=>"activityid", "vtiger_senotesrel"=>"notesid","vtiger_seattachmentsrel"=>"attachmentsid","vtiger_troubletickets"=>"ticketid", "vtiger_seproductsrel"=>"productid"); $entity_tbl_field_arr = Array("vtiger_contactdetails"=>"accountid","vtiger_potential"=>"related_to","vtiger_quotes"=>"accountid", "vtiger_salesorder"=>"accountid","vtiger_invoice"=>"accountid","vtiger_seactivityrel"=>"crmid", "vtiger_senotesrel"=>"crmid","vtiger_seattachmentsrel"=>"crmid","vtiger_troubletickets"=>"parent_id", "vtiger_seproductsrel"=>"crmid"); foreach($transferEntityIds as $transferId) { foreach($rel_table_arr as $rel_module=>$rel_table) { $id_field = $tbl_field_arr[$rel_table]; $entity_id_field = $entity_tbl_field_arr[$rel_table]; // IN clause to avoid duplicate entries $sel_result = $adb->pquery("select $id_field from $rel_table where $entity_id_field=? " . " and $id_field not in (select $id_field from $rel_table where $entity_id_field=?)", array($transferId,$entityId)); $res_cnt = $adb->num_rows($sel_result); if($res_cnt > 0) { for($i=0;$i<$res_cnt;$i++) { $id_field_value = $adb->query_result($sel_result,$i,$id_field); $adb->pquery("update $rel_table set $entity_id_field=? where $entity_id_field=? and $id_field=?", array($entityId,$transferId,$id_field_value)); } } } } $log->debug("Exiting transferRelatedRecords..."); } /* * Function to get the relation tables for related modules * @param - $secmodule secondary module name * returns the array with table names and fieldnames storing relations between module and this module */ function setRelationTables($secmodule){ $rel_tables = array ( "Contacts" => array("vtiger_contactdetails"=>array("accountid","contactid"),"vtiger_account"=>"accountid"), "Potentials" => array("vtiger_potential"=>array("related_to","potentialid"),"vtiger_account"=>"accountid"), "Quotes" => array("vtiger_quotes"=>array("accountid","quoteid"),"vtiger_account"=>"accountid"), "SalesOrder" => array("vtiger_salesorder"=>array("accountid","salesorderid"),"vtiger_account"=>"accountid"), "Invoice" => array("vtiger_invoice"=>array("accountid","invoiceid"),"vtiger_account"=>"accountid"), "Calendar" => array("vtiger_seactivityrel"=>array("crmid","activityid"),"vtiger_account"=>"accountid"), "HelpDesk" => array("vtiger_troubletickets"=>array("parent_id","ticketid"),"vtiger_account"=>"accountid"), "Products" => array("vtiger_seproductsrel"=>array("crmid","productid"),"vtiger_account"=>"accountid"), "Documents" => array("vtiger_senotesrel"=>array("crmid","notesid"),"vtiger_account"=>"accountid"), "Campaigns" => array("vtiger_campaignaccountrel"=>array("accountid","campaignid"),"vtiger_account"=>"accountid"), ); return $rel_tables[$secmodule]; } /* * Function to get the secondary query part of a report * @param - $module primary module name * @param - $secmodule secondary module name * returns the query string formed on fetching the related data for report for secondary module */ function generateReportsSecQuery($module,$secmodule){ $query = $this->getRelationQuery($module,$secmodule,"vtiger_account","accountid"); $query .= " left join vtiger_crmentity as vtiger_crmentityAccounts on vtiger_crmentityAccounts.crmid=vtiger_account.accountid and vtiger_crmentityAccounts.deleted=0 left join vtiger_accountbillads on vtiger_account.accountid=vtiger_accountbillads.accountaddressid left join vtiger_accountshipads on vtiger_account.accountid=vtiger_accountshipads.accountaddressid left join vtiger_accountscf on vtiger_account.accountid = vtiger_accountscf.accountid left join vtiger_account as vtiger_accountAccounts on vtiger_accountAccounts.accountid = vtiger_account.parentid left join vtiger_groups as vtiger_groupsAccounts on vtiger_groupsAccounts.groupid = vtiger_crmentityAccounts.smownerid left join vtiger_users as vtiger_usersAccounts on vtiger_usersAccounts.id = vtiger_crmentityAccounts.smownerid left join vtiger_users as vtiger_lastModifiedByAccounts on vtiger_lastModifiedByAccounts.id = vtiger_crmentityAccounts.modifiedby "; return $query; } /** * Function to get Account hierarchy of the given Account * @param integer $id - accountid * returns Account hierarchy in array format */ function getAccountHierarchy($id) { global $log, $adb, $current_user; $log->debug("Entering getAccountHierarchy(".$id.") method ..."); require('user_privileges/user_privileges_'.$current_user->id.'.php'); $tabname = getParentTab(); $listview_header = Array(); $listview_entries = array(); foreach ($this->list_fields_name as $fieldname=>$colname) { if(getFieldVisibilityPermission('Accounts', $current_user->id, $colname) == '0') { $listview_header[] = getTranslatedString($fieldname); } } $accounts_list = Array(); // Get the accounts hierarchy from the top most account in the hierarch of the current account, including the current account $encountered_accounts = array($id); $accounts_list = $this->__getParentAccounts($id, $accounts_list, $encountered_accounts); // Get the accounts hierarchy (list of child accounts) based on the current account $accounts_list = $this->__getChildAccounts($id, $accounts_list, $accounts_list[$id]['depth']); // Create array of all the accounts in the hierarchy foreach($accounts_list as $account_id => $account_info) { $account_info_data = array(); $hasRecordViewAccess = (is_admin($current_user)) || (isPermitted('Accounts', 'DetailView', $account_id) == 'yes'); foreach ($this->list_fields_name as $fieldname=>$colname) { // Permission to view account is restricted, avoid showing field values (except account name) if(!$hasRecordViewAccess && $colname != 'accountname') { $account_info_data[] = ''; } else if(getFieldVisibilityPermission('Accounts', $current_user->id, $colname) == '0') { $data = $account_info[$colname]; if ($colname == 'accountname') { if ($account_id != $id) { if($hasRecordViewAccess) { $data = ''.$data.''; } else { $data = ''.$data.''; } } else { $data = ''.$data.''; } // - to show the hierarchy of the Accounts $account_depth = str_repeat(" .. ", $account_info['depth'] * 2); $data = $account_depth . $data; } else if ($colname == 'website') { $data = ''.$data.''; } $account_info_data[] = $data; } } $listview_entries[$account_id] = $account_info_data; } $account_hierarchy = array('header'=>$listview_header,'entries'=>$listview_entries); $log->debug("Exiting getAccountHierarchy method ..."); return $account_hierarchy; } /** * Function to Recursively get all the upper accounts of a given Account * @param integer $id - accountid * @param array $parent_accounts - Array of all the parent accounts * returns All the parent accounts of the given accountid in array format */ function __getParentAccounts($id, &$parent_accounts, &$encountered_accounts) { global $log, $adb; $log->debug("Entering __getParentAccounts(".$id.",".$parent_accounts.") method ..."); $query = "SELECT parentid FROM vtiger_account " . " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_account.accountid" . " WHERE vtiger_crmentity.deleted = 0 and vtiger_account.accountid = ?"; $params = array($id); $res = $adb->pquery($query, $params); if ($adb->num_rows($res) > 0 && $adb->query_result($res, 0, 'parentid') != '' && $adb->query_result($res, 0, 'parentid') != 0 && !in_array($adb->query_result($res, 0, 'parentid'),$encountered_accounts)) { $parentid = $adb->query_result($res, 0, 'parentid'); $encountered_accounts[] = $parentid; $this->__getParentAccounts($parentid,$parent_accounts,$encountered_accounts); } $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_account.*, vtiger_accountbillads.*," . " CASE when (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END as user_name " . " FROM vtiger_account" . " INNER JOIN vtiger_crmentity " . " ON vtiger_crmentity.crmid = vtiger_account.accountid" . " INNER JOIN vtiger_accountbillads" . " ON vtiger_account.accountid = vtiger_accountbillads.accountaddressid " . " LEFT JOIN vtiger_groups" . " ON vtiger_groups.groupid = vtiger_crmentity.smownerid" . " LEFT JOIN vtiger_users" . " ON vtiger_users.id = vtiger_crmentity.smownerid" . " WHERE vtiger_crmentity.deleted = 0 and vtiger_account.accountid = ?"; $params = array($id); $res = $adb->pquery($query, $params); $parent_account_info = array(); $depth = 0; $immediate_parentid = $adb->query_result($res, 0, 'parentid'); if (isset($parent_accounts[$immediate_parentid])) { $depth = $parent_accounts[$immediate_parentid]['depth'] + 1; } $parent_account_info['depth'] = $depth; foreach($this->list_fields_name as $fieldname=>$columnname) { if ($columnname == 'assigned_user_id') { $parent_account_info[$columnname] = $adb->query_result($res, 0, 'user_name'); } else { $parent_account_info[$columnname] = $adb->query_result($res, 0, $columnname); } } $parent_accounts[$id] = $parent_account_info; $log->debug("Exiting __getParentAccounts method ..."); return $parent_accounts; } /** * Function to Recursively get all the child accounts of a given Account * @param integer $id - accountid * @param array $child_accounts - Array of all the child accounts * @param integer $depth - Depth at which the particular account has to be placed in the hierarchy * returns All the child accounts of the given accountid in array format */ function __getChildAccounts($id, &$child_accounts, $depth) { global $log, $adb; $log->debug("Entering __getChildAccounts(".$id.",".$child_accounts.",".$depth.") method ..."); $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT vtiger_account.*, vtiger_accountbillads.*," . " CASE when (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END as user_name " . " FROM vtiger_account" . " INNER JOIN vtiger_crmentity " . " ON vtiger_crmentity.crmid = vtiger_account.accountid" . " INNER JOIN vtiger_accountbillads" . " ON vtiger_account.accountid = vtiger_accountbillads.accountaddressid " . " LEFT JOIN vtiger_groups" . " ON vtiger_groups.groupid = vtiger_crmentity.smownerid" . " LEFT JOIN vtiger_users" . " ON vtiger_users.id = vtiger_crmentity.smownerid" . " WHERE vtiger_crmentity.deleted = 0 and parentid = ?"; $params = array($id); $res = $adb->pquery($query, $params); $num_rows = $adb->num_rows($res); if ($num_rows > 0) { $depth = $depth + 1; for($i=0;$i<$num_rows;$i++) { $child_acc_id = $adb->query_result($res, $i, 'accountid'); if(array_key_exists($child_acc_id,$child_accounts)) { continue; } $child_account_info = array(); $child_account_info['depth'] = $depth; foreach($this->list_fields_name as $fieldname=>$columnname) { if ($columnname == 'assigned_user_id') { $child_account_info[$columnname] = $adb->query_result($res, $i, 'user_name'); } else { $child_account_info[$columnname] = $adb->query_result($res, $i, $columnname); } } $child_accounts[$child_acc_id] = $child_account_info; $this->__getChildAccounts($child_acc_id, $child_accounts, $depth); } } $log->debug("Exiting __getChildAccounts method ..."); return $child_accounts; } // Function to unlink the dependent records of the given record by id function unlinkDependencies($module, $id) { global $log; //Deleting Account related Potentials. $pot_q = 'SELECT vtiger_crmentity.crmid FROM vtiger_crmentity INNER JOIN vtiger_potential ON vtiger_crmentity.crmid=vtiger_potential.potentialid LEFT JOIN vtiger_account ON vtiger_account.accountid=vtiger_potential.related_to WHERE vtiger_crmentity.deleted=0 AND vtiger_potential.related_to=?'; $pot_res = $this->db->pquery($pot_q, array($id)); $pot_ids_list = array(); for($k=0;$k < $this->db->num_rows($pot_res);$k++) { $pot_id = $this->db->query_result($pot_res,$k,"crmid"); $pot_ids_list[] = $pot_id; $sql = 'UPDATE vtiger_crmentity SET deleted = 1 WHERE crmid = ?'; $this->db->pquery($sql, array($pot_id)); } //Backup deleted Account related Potentials. $params = array($id, RB_RECORD_UPDATED, 'vtiger_crmentity', 'deleted', 'crmid', implode(",", $pot_ids_list)); $this->db->pquery('INSERT INTO vtiger_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); //Deleting Account related Quotes. $quo_q = 'SELECT vtiger_crmentity.crmid FROM vtiger_crmentity INNER JOIN vtiger_quotes ON vtiger_crmentity.crmid=vtiger_quotes.quoteid INNER JOIN vtiger_account ON vtiger_account.accountid=vtiger_quotes.accountid WHERE vtiger_crmentity.deleted=0 AND vtiger_quotes.accountid=?'; $quo_res = $this->db->pquery($quo_q, array($id)); $quo_ids_list = array(); for($k=0;$k < $this->db->num_rows($quo_res);$k++) { $quo_id = $this->db->query_result($quo_res,$k,"crmid"); $quo_ids_list[] = $quo_id; $sql = 'UPDATE vtiger_crmentity SET deleted = 1 WHERE crmid = ?'; $this->db->pquery($sql, array($quo_id)); } //Backup deleted Account related Quotes. $params = array($id, RB_RECORD_UPDATED, 'vtiger_crmentity', 'deleted', 'crmid', implode(",", $quo_ids_list)); $this->db->pquery('INSERT INTO vtiger_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); //Backup Contact-Account Relation $con_q = 'SELECT contactid FROM vtiger_contactdetails WHERE accountid = ?'; $con_res = $this->db->pquery($con_q, array($id)); if ($this->db->num_rows($con_res) > 0) { $con_ids_list = array(); for($k=0;$k < $this->db->num_rows($con_res);$k++) { $con_ids_list[] = $this->db->query_result($con_res,$k,"contactid"); } $params = array($id, RB_RECORD_UPDATED, 'vtiger_contactdetails', 'accountid', 'contactid', implode(",", $con_ids_list)); $this->db->pquery('INSERT INTO vtiger_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); } //Deleting Contact-Account Relation. $con_q = 'UPDATE vtiger_contactdetails SET accountid = 0 WHERE accountid = ?'; $this->db->pquery($con_q, array($id)); //Backup Trouble Tickets-Account Relation $tkt_q = 'SELECT ticketid FROM vtiger_troubletickets WHERE parent_id = ?'; $tkt_res = $this->db->pquery($tkt_q, array($id)); if ($this->db->num_rows($tkt_res) > 0) { $tkt_ids_list = array(); for($k=0;$k < $this->db->num_rows($tkt_res);$k++) { $tkt_ids_list[] = $this->db->query_result($tkt_res,$k,"ticketid"); } $params = array($id, RB_RECORD_UPDATED, 'vtiger_troubletickets', 'parent_id', 'ticketid', implode(",", $tkt_ids_list)); $this->db->pquery('INSERT INTO vtiger_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); } //Deleting Trouble Tickets-Account Relation. $tt_q = 'UPDATE vtiger_troubletickets SET parent_id = 0 WHERE parent_id = ?'; $this->db->pquery($tt_q, array($id)); parent::unlinkDependencies($module, $id); } // Function to unlink an entity with given Id from another entity function unlinkRelationship($id, $return_module, $return_id) { global $log; if(empty($return_module) || empty($return_id)) return; if($return_module == 'Campaigns') { $sql = 'DELETE FROM vtiger_campaignaccountrel WHERE accountid=? AND campaignid=?'; $this->db->pquery($sql, array($id, $return_id)); } else if($return_module == 'Products') { $sql = 'DELETE FROM vtiger_seproductsrel WHERE crmid=? AND productid=?'; $this->db->pquery($sql, array($id, $return_id)); } else { $sql = 'DELETE FROM vtiger_crmentityrel WHERE (crmid=? AND relmodule=? AND relcrmid=?) OR (relcrmid=? AND module=? AND crmid=?)'; $params = array($id, $return_module, $return_id, $id, $return_module, $return_id); $this->db->pquery($sql, $params); } } function save_related_module($module, $crmid, $with_module, $with_crmids) { $adb = $this->db; if(!is_array($with_crmids)) $with_crmids = Array($with_crmids); foreach($with_crmids as $with_crmid) { if($with_module == 'Products') $adb->pquery("insert into vtiger_seproductsrel values(?,?,?)", array($crmid, $with_crmid, $module)); elseif($with_module == 'Campaigns') { $checkResult = $adb->pquery('SELECT 1 FROM vtiger_campaignaccountrel WHERE campaignid = ? AND accountid = ?', array($with_crmid, $crmid)); if($checkResult && $adb->num_rows($checkResult) > 0) { continue; } $adb->pquery("insert into vtiger_campaignaccountrel values(?,?,1)", array($with_crmid, $crmid)); } else { parent::save_related_module($module, $crmid, $with_module, $with_crmid); } } } function getListButtons($app_strings,$mod_strings) { $list_buttons = Array(); if(isPermitted('Accounts','Delete','') == 'yes') { $list_buttons['del'] = $app_strings[LBL_MASS_DELETE]; } if(isPermitted('Accounts','EditView','') == 'yes') { $list_buttons['mass_edit'] = $app_strings[LBL_MASS_EDIT]; $list_buttons['c_owner'] = $app_strings[LBL_CHANGE_OWNER]; } if(isPermitted('Emails','EditView','') == 'yes') { $list_buttons['s_mail'] = $app_strings[LBL_SEND_MAIL_BUTTON]; } // mailer export if(isPermitted('Accounts','Export','') == 'yes') { $list_buttons['mailer_exp'] = $mod_strings[LBL_MAILER_EXPORT]; } // end of mailer export return $list_buttons; } } ?>