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