[ Index ] |
|
Code source de vtiger CRM 5.0.2 |
1 <?php 2 /********************************************************************************* 3 * The contents of this file are subject to the SugarCRM Public License Version 1.1.2 4 * ("License"); You may not use this file except in compliance with the 5 * License. You may obtain a copy of txhe License at http://www.sugarcrm.com/SPL 6 * Software distributed under the License is distributed on an "AS IS" basis, 7 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 8 * the specific language governing rights and limitations under the License. 9 * The Original Code is: SugarCRM Open Source 10 * The Initial Developer of the Original Code is SugarCRM, Inc. 11 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.; 12 * All Rights Reserved. 13 * Contributor(s): ______________________________________. 14 ********************************************************************************/ 15 16 include_once ('config.php'); 17 require_once ('include/logging.php'); 18 require_once ('include/database/PearDatabase.php'); 19 require_once ('data/SugarBean.php'); 20 require_once ('data/CRMEntity.php'); 21 require_once ('modules/Calendar/Activity.php'); 22 require_once ('modules/Campaigns/Campaigns.php'); 23 require_once ('modules/Notes/Notes.php'); 24 require_once ('modules/Emails/Emails.php'); 25 require_once ('include/ComboUtil.php'); 26 require_once ('include/utils/utils.php'); 27 require_once ('user_privileges/default_module_view.php'); 28 29 class Leads extends CRMEntity { 30 var $log; 31 var $db; 32 33 var $module_id = "leadid"; 34 35 var $tab_name = Array('vtiger_crmentity','vtiger_leaddetails','vtiger_leadsubdetails','vtiger_leadaddress','vtiger_leadscf'); 36 var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_leaddetails'=>'leadid','vtiger_leadsubdetails'=>'leadsubscriptionid','vtiger_leadaddress'=>'leadaddressid','vtiger_leadscf'=>'leadid'); 37 38 39 40 //construct this from database; 41 var $column_fields = Array(); 42 var $sortby_fields = Array('lastname','firstname','email','phone','company','smownerid','website'); 43 44 // This is used to retrieve related vtiger_fields from form posts. 45 var $additional_column_fields = Array('smcreatorid', 'smownerid', 'contactid','potentialid' ,'crmid'); 46 47 // This is the list of vtiger_fields that are in the lists. 48 var $list_fields = Array( 49 'Last Name'=>Array('leaddetails'=>'lastname'), 50 'First Name'=>Array('leaddetails'=>'firstname'), 51 'Company'=>Array('leaddetails'=>'company'), 52 'Phone'=>Array('leadaddress'=>'phone'), 53 'Website'=>Array('leadsubdetails'=>'website'), 54 'Email'=>Array('leaddetails'=>'email'), 55 'Assigned To'=>Array('crmentity'=>'smownerid') 56 ); 57 var $list_fields_name = Array( 58 'Last Name'=>'lastname', 59 'First Name'=>'firstname', 60 'Company'=>'company', 61 'Phone'=>'phone', 62 'Website'=>'website', 63 'Email'=>'email', 64 'Assigned To'=>'assigned_user_id' 65 ); 66 var $list_link_field= 'lastname'; 67 68 var $search_fields = Array( 69 'Name'=>Array('leaddetails'=>'lastname'), 70 'Company'=>Array('leaddetails'=>'company') 71 ); 72 var $search_fields_name = Array( 73 'Name'=>'lastname', 74 'Company'=>'company' 75 ); 76 77 var $required_fields = array("lastname"=>1, 'company'=>1); 78 79 //Added these variables which are used as default order by and sortorder in ListView 80 var $default_order_by = 'lastname'; 81 var $default_sort_order = 'ASC'; 82 83 function Leads() { 84 $this->log = LoggerManager::getLogger('lead'); 85 $this->log->debug("Entering Leads() method ..."); 86 $this->db = new PearDatabase(); 87 $this->column_fields = getColumnFields('Leads'); 88 $this->log->debug("Exiting Lead method ..."); 89 } 90 91 /** Function to handle module specific operations when saving a entity 92 */ 93 function save_module($module) 94 { 95 } 96 97 // Mike Crowe Mod --------------------------------------------------------Default ordering for us 98 /** 99 * Function to get sort order 100 * return string $sorder - sortorder string either 'ASC' or 'DESC' 101 */ 102 function getSortOrder() 103 { 104 global $log; 105 $log->debug("Entering getSortOrder() method ..."); 106 if(isset($_REQUEST['sorder'])) 107 $sorder = $_REQUEST['sorder']; 108 else 109 $sorder = (($_SESSION['LEADS_SORT_ORDER'] != '')?($_SESSION['LEADS_SORT_ORDER']):($this->default_sort_order)); 110 111 $log->debug("Exiting getSortOrder method ..."); 112 return $sorder; 113 } 114 115 /** 116 * Function to get order by 117 * return string $order_by - fieldname(eg: 'leadname') 118 */ 119 function getOrderBy() 120 { 121 global $log; 122 $log->debug("Entering getOrderBy() method ..."); 123 if (isset($_REQUEST['order_by'])) 124 $order_by = $_REQUEST['order_by']; 125 else 126 $order_by = (($_SESSION['LEADS_ORDER_BY'] != '')?($_SESSION['LEADS_ORDER_BY']):($this->default_order_by)); 127 128 $log->debug("Exiting getOrderBy method ..."); 129 return $order_by; 130 } 131 // Mike Crowe Mod -------------------------------------------------------- 132 133 134 135 /** Function to export the lead records in CSV Format 136 * @param reference variable - order by is passed when the query is executed 137 * @param reference variable - where condition is passed when the query is executed 138 * Returns Export Leads Query. 139 */ 140 function create_export_query(&$order_by, &$where) 141 { 142 global $log; 143 global $current_user; 144 $log->debug("Entering create_export_query(".$order_by.",".$where.") method ..."); 145 146 include ("include/utils/ExportUtils.php"); 147 148 //To get the Permitted fields query and the permitted fields list 149 $sql = getPermittedFieldsQuery("Leads", "detail_view"); 150 $fields_list = getFieldsListFromQuery($sql); 151 152 $query = "SELECT $fields_list FROM ".$this->entity_table." 153 INNER JOIN vtiger_leaddetails 154 ON vtiger_crmentity.crmid=vtiger_leaddetails.leadid 155 LEFT JOIN vtiger_leadsubdetails 156 ON vtiger_leaddetails.leadid = vtiger_leadsubdetails.leadsubscriptionid 157 LEFT JOIN vtiger_leadaddress 158 ON vtiger_leaddetails.leadid=vtiger_leadaddress.leadaddressid 159 LEFT JOIN vtiger_leadscf 160 ON vtiger_leadscf.leadid=vtiger_leaddetails.leadid 161 LEFT JOIN vtiger_leadgrouprelation 162 ON vtiger_leadscf.leadid = vtiger_leadgrouprelation.leadid 163 LEFT JOIN vtiger_groups 164 ON vtiger_groups.groupname = vtiger_leadgrouprelation.groupname 165 LEFT JOIN vtiger_users 166 ON vtiger_crmentity.smownerid = vtiger_users.id 167 "; 168 169 170 $where_auto = " vtiger_users.status='Active' 171 AND vtiger_crmentity.deleted=0 AND vtiger_leaddetails.converted =0"; 172 173 if($where != "") 174 $query .= "where ($where) AND ".$where_auto; 175 else 176 $query .= "where ".$where_auto; 177 178 require('user_privileges/user_privileges_'.$current_user->id.'.php'); 179 require('user_privileges/sharing_privileges_'.$current_user->id.'.php'); 180 //we should add security check when the user has Private Access 181 if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1 && $defaultOrgSharingPermission[7] == 3) 182 { 183 //Added security check to get the permitted records only 184 $query = $query." ".getListViewSecurityParameter("Leads"); 185 } 186 187 if(!empty($order_by)) 188 $query .= " ORDER BY $order_by"; 189 190 $log->debug("Exiting create_export_query method ..."); 191 return $query; 192 } 193 194 195 196 /** Returns a list of the associated tasks 197 * @param integer $id - leadid 198 * returns related Task or Event record in array format 199 */ 200 function get_activities($id) 201 { 202 global $log, $singlepane_view; 203 $log->debug("Entering get_activities(".$id.") method ..."); 204 global $app_strings; 205 206 $focus = new Activity(); 207 $button = ''; 208 209 if(isPermitted("Calendar",1,"") == 'yes') 210 { 211 $button .= '<input title="New Task" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';i;this.form.return_module.value=\'Leads\';this.form.activity_mode.value=\'Task\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_TASK'].'"> '; 212 $button .= '<input title="New Event" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';this.form.return_module.value=\'Leads\';this.form.activity_mode.value=\'Events\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_EVENT'].'"> </td>'; 213 } 214 if($singlepane_view == 'true') 215 $returnset = '&return_module=Leads&return_action=DetailView&return_id='.$id; 216 else 217 $returnset = '&return_module=Leads&return_action=CallRelatedList&return_id='.$id; 218 219 220 // First, get the list of IDs. 221 $query = "SELECT vtiger_activity.*,vtiger_seactivityrel.*,vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime, vtiger_users.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_users on vtiger_users.id=vtiger_crmentity.smownerid left outer join vtiger_recurringevents on vtiger_recurringevents.activityid=vtiger_activity.activityid left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_crmentity.crmid left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname where vtiger_seactivityrel.crmid=".$id." and (activitytype='Task' or activitytype='Call' or activitytype='Meeting') and ((vtiger_activity.status is not NULL && vtiger_activity.status != 'Completed') and (vtiger_activity.status is not NULL && vtiger_activity.status != 'Deferred') or (vtiger_activity.eventstatus !='' && vtiger_activity.eventstatus != 'Held'))"; 222 $log->debug("Exiting get_activities method ..."); 223 return GetRelatedList('Leads','Calendar',$focus,$query,$button,$returnset); 224 } 225 226 /** Returns a list of the associated Campaigns 227 * @param $id -- campaign id :: Type Integer 228 * @returns list of campaigns in array format 229 */ 230 function get_campaigns($id) 231 { 232 global $log, $singlepane_view; 233 $log->debug("Entering get_campaigns(".$id.") method ..."); 234 global $mod_strings; 235 $focus = new Campaigns(); 236 $button = ''; 237 238 if($singlepane_view == 'true') 239 $returnset = '&return_module=Leads&return_action=DetailView&return_id='.$id; 240 else 241 $returnset = '&return_module=Leads&return_action=CallRelatedList&return_id='.$id; 242 243 $log->info("Campaign Related List for Lead Displayed"); 244 $query = "SELECT vtiger_users.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_campaignleadrel on vtiger_campaignleadrel.campaignid=vtiger_campaign.campaignid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid left join vtiger_campaigngrouprelation on vtiger_campaign.campaignid=vtiger_campaigngrouprelation.campaignid left join vtiger_groups on vtiger_groups.groupname=vtiger_campaigngrouprelation.groupname left join vtiger_users on vtiger_users.id = vtiger_crmentity.smownerid where vtiger_campaignleadrel.leadid=".$id." and vtiger_crmentity.deleted=0"; 245 246 $log->debug("Exiting get_campaigns method ..."); 247 return GetRelatedList('Leads','Campaigns',$focus,$query,$button,$returnset); 248 249 } 250 251 252 /** Returns a list of the associated emails 253 * @param integer $id - leadid 254 * returns related emails record in array format 255 */ 256 function get_emails($id) 257 { 258 global $log, $singlepane_view; 259 $log->debug("Entering get_emails(".$id.") method ..."); 260 global $mod_strings; 261 require_once ('include/RelatedListView.php'); 262 263 $focus = new Emails(); 264 265 $button = ''; 266 267 if(isPermitted("Emails",1,"") == 'yes') 268 { 269 270 $button .= '<input title="New Email" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Emails\';this.form.email_directing_module.value=\'leads\';this.form.record.value='.$id.';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_EMAIL'].'"> '; 271 } 272 if($singlepane_view == 'true') 273 $returnset = '&return_module=Leads&return_action=DetailView&return_id='.$id; 274 else 275 $returnset = '&return_module=Leads&return_action=CallRelatedList&return_id='.$id; 276 277 $query ="select vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.semodule, vtiger_activity.activitytype, vtiger_activity.date_start, vtiger_activity.status, vtiger_activity.priority, vtiger_crmentity.crmid,vtiger_crmentity.smownerid,vtiger_crmentity.modifiedtime, vtiger_users.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 inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid where vtiger_activity.activitytype='Emails' and vtiger_crmentity.deleted=0 and vtiger_seactivityrel.crmid=".$id; 278 $log->debug("Exiting get_emails method ..."); 279 return GetRelatedList('Leads','Emails',$focus,$query,$button,$returnset); 280 } 281 282 /** 283 * Function to get Lead related Task & Event which have activity type Held, Completed or Deferred. 284 * @param integer $id - leadid 285 * returns related Task or Event record in array format 286 */ 287 function get_history($id) 288 { 289 global $log; 290 $log->debug("Entering get_history(".$id.") method ..."); 291 $query = "SELECT vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.status, 292 vtiger_activity.eventstatus, vtiger_activity.activitytype, vtiger_crmentity.modifiedtime, 293 vtiger_crmentity.createdtime, vtiger_crmentity.description, vtiger_users.user_name,vtiger_activitygrouprelation.groupname 294 from vtiger_activity 295 inner join vtiger_seactivityrel on vtiger_seactivityrel.activityid=vtiger_activity.activityid 296 inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid 297 left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_activity.activityid 298 left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname 299 left join vtiger_users on vtiger_crmentity.smownerid= vtiger_users.id 300 where (vtiger_activity.activitytype = 'Meeting' or vtiger_activity.activitytype='Call' or vtiger_activity.activitytype='Task') 301 and (vtiger_activity.status = 'Completed' or vtiger_activity.status = 'Deferred' or (vtiger_activity.eventstatus = 'Held' and vtiger_activity.eventstatus != '')) 302 and vtiger_seactivityrel.crmid=".$id; 303 //Don't add order by, because, for security, one more condition will be added with this query in include/RelatedListView.php 304 305 $log->debug("Exiting get_history method ..."); 306 return getHistory('Leads',$query,$id); 307 } 308 309 /** 310 * Function to get Lead related Attachments 311 * @param integer $id - leadid 312 * returns related Attachment record in array format 313 */ 314 function get_attachments($id) 315 { 316 global $log; 317 $log->debug("Entering get_attachments(".$id.") method ..."); 318 // Armando Lüscher 18.10.2005 -> §visibleDescription 319 // Desc: Inserted crm2.createdtime, vtiger_notes.notecontent description, vtiger_users.user_name 320 // Inserted inner join vtiger_users on crm2.smcreatorid= vtiger_users.id 321 $query = "select vtiger_notes.title,'Notes ' ActivityType, vtiger_notes.filename, 322 vtiger_attachments.type FileType,crm2.modifiedtime lastmodified, 323 vtiger_seattachmentsrel.attachmentsid attachmentsid, vtiger_notes.notesid crmid, 324 crm2.createdtime, vtiger_notes.notecontent description, vtiger_users.user_name 325 from vtiger_notes 326 inner join vtiger_senotesrel on vtiger_senotesrel.notesid= vtiger_notes.notesid 327 inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_senotesrel.crmid 328 inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_notes.notesid and crm2.deleted=0 329 left join vtiger_seattachmentsrel on vtiger_seattachmentsrel.crmid =vtiger_notes.notesid 330 left join vtiger_attachments on vtiger_seattachmentsrel.attachmentsid = vtiger_attachments.attachmentsid 331 inner join vtiger_users on crm2.smcreatorid= vtiger_users.id 332 where vtiger_crmentity.crmid=".$id; 333 $query .= ' union all '; 334 // Armando Lüscher 18.10.2005 -> §visibleDescription 335 // Desc: Inserted crm2.createdtime, vtiger_attachments.description, vtiger_users.user_name 336 // Inserted inner join vtiger_users on crm2.smcreatorid= vtiger_users.id 337 // Inserted order by createdtime desc 338 $query .= "select vtiger_attachments.description title ,'Attachments' ActivityType, 339 vtiger_attachments.name filename, vtiger_attachments.type FileType,crm2.modifiedtime lastmodified, 340 vtiger_attachments.attachmentsid attachmentsid, vtiger_seattachmentsrel.attachmentsid crmid, 341 crm2.createdtime, vtiger_attachments.description, vtiger_users.user_name 342 from vtiger_attachments 343 inner join vtiger_seattachmentsrel on vtiger_seattachmentsrel.attachmentsid= vtiger_attachments.attachmentsid 344 inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_seattachmentsrel.crmid 345 inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_attachments.attachmentsid 346 inner join vtiger_users on crm2.smcreatorid= vtiger_users.id 347 where vtiger_crmentity.crmid=".$id." 348 order by createdtime desc"; 349 350 $log->debug("Exiting get_attachments method ..."); 351 return getAttachmentsAndNotes('Leads',$query,$id); 352 } 353 354 /** 355 * Function to get lead related Products 356 * @param integer $id - leadid 357 * returns related Products record in array format 358 */ 359 function get_products($id) 360 { 361 global $log, $singlepane_view; 362 $log->debug("Entering get_products(".$id.") method ..."); 363 require_once ('modules/Products/Products.php'); 364 global $mod_strings; 365 global $app_strings; 366 367 $focus = new Products(); 368 369 $button = ''; 370 371 if(isPermitted("Products",1,"") == 'yes') 372 { 373 $button .= '<input title="New Product" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Products\';this.form.return_module.value=\'Leads\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_PRODUCT'].'"> '; 374 } 375 if($singlepane_view == 'true') 376 $returnset = '&return_module=Leads&return_action=DetailView&return_id='.$id; 377 else 378 $returnset = '&return_module=Leads&return_action=CallRelatedList&return_id='.$id; 379 380 $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 inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_products.productid inner join vtiger_leaddetails on vtiger_leaddetails.leadid = vtiger_seproductsrel.crmid where vtiger_leaddetails.leadid = '.$id.' and vtiger_crmentity.deleted = 0'; 381 $log->debug("Exiting get_products method ..."); 382 return GetRelatedList('Leads','Products',$focus,$query,$button,$returnset); 383 } 384 385 /** Function to get the Combo List Values of Leads Field 386 * @param string $list_option 387 * Returns Combo List Options 388 */ 389 function get_lead_field_options($list_option) 390 { 391 global $log; 392 $log->debug("Entering get_lead_field_options(".$list_option.") method ..."); 393 $comboFieldArray = getComboArray($this->combofieldNames); 394 $log->debug("Exiting get_lead_field_options method ..."); 395 return $comboFieldArray[$list_option]; 396 } 397 398 /** Function to get the Columnnames of the Leads Record 399 * Used By vtigerCRM Word Plugin 400 * Returns the Merge Fields for Word Plugin 401 */ 402 function getColumnNames_Lead() 403 { 404 global $log,$current_user; 405 $log->debug("Entering getColumnNames_Lead() method ..."); 406 require('user_privileges/user_privileges_'.$current_user->id.'.php'); 407 if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) 408 { 409 $sql1 = "select fieldlabel from vtiger_field where tabid=7"; 410 }else 411 { 412 $profileList = getCurrentUserProfileList(); 413 $sql1 = "select 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=7 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList; 414 } 415 $result = $this->db->query($sql1); 416 $numRows = $this->db->num_rows($result); 417 for($i=0; $i < $numRows;$i++) 418 { 419 $custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel"); 420 $custom_fields[$i] = ereg_replace(" ","",$custom_fields[$i]); 421 $custom_fields[$i] = strtoupper($custom_fields[$i]); 422 } 423 $mergeflds = $custom_fields; 424 $log->debug("Exiting getColumnNames_Lead method ..."); 425 return $mergeflds; 426 } 427 //End 428 429 } 430 431 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 10:22:19 2007 | par Balluche grâce à PHPXref 0.7 |