* SPDX-License-Identifier: AGPL-3.0-only ************************************/ // Account is used to store vte_account information. class Accounts extends CRMEntity { var $log; var $db; var $table_name; var $table_index= 'accountid'; var $tab_name = Array(); var $tab_name_index = Array(); var $entity_table; var $column_fields = Array(); var $sortby_fields = Array('accountname','bill_city','website','phone','smownerid'); // This is the list of vte_fields that are in the lists. var $list_fields = Array(); var $list_fields_name = Array( 'Account Name'=>'accountname', 'City'=>'bill_city', 'Website'=>'website', 'Phone'=>'phone', 'Assigned To'=>'assigned_user_id' ); var $list_link_field= 'accountname'; var $search_fields = Array(); var $search_fields_name = Array( 'Account Name'=>'accountname', 'City'=>'bill_city', ); // This is the list of vte_fields that are required var $required_fields = array("accountname"=>1); //Added these variables which are used as default order by and sortorder in ListView var $default_order_by = 'accountname'; var $default_sort_order = 'ASC'; var $customFieldTable = Array(); //vtc // Used when enabling/disabling the mandatory fields for the module. // Refers to vte_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'); //crmv@10759 var $search_base_field = 'accountname'; //crmv@10759 e function __construct() { global $log; global $table_prefix; parent::__construct(); // crmv@37004 $this->table_name = $table_prefix."_account"; $this->tab_name = Array($table_prefix.'_crmentity',$table_prefix.'_account',$table_prefix.'_accountbillads',$table_prefix.'_accountshipads',$table_prefix.'_accountscf'); $this->tab_name_index = Array($table_prefix.'_crmentity'=>'crmid',$table_prefix.'_account'=>'accountid',$table_prefix.'_accountbillads'=>'accountaddressid',$table_prefix.'_accountshipads'=>'accountaddressid',$table_prefix.'_accountscf'=>'accountid'); $this->list_fields = Array( 'Account Name'=>Array($table_prefix.'_account'=>'accountname'), 'City'=>Array($table_prefix.'_accountbillads'=>'bill_city'), 'Website'=>Array($table_prefix.'_account'=>'website'), 'Phone'=>Array($table_prefix.'_account'=> 'phone'), 'Assigned To'=>Array($table_prefix.'_crmentity'=>'smownerid') ); $this->entity_table = $table_prefix."_crmentity"; $this->search_fields = Array( 'Account Name'=>Array($table_prefix.'_account'=>'accountname'), 'City'=>Array($table_prefix.'_accountbillads'=>'bill_city'), ); $this->customFieldTable = Array($table_prefix.'_accountscf', 'accountid'); $this->column_fields = getColumnFields('Accounts'); $this->db = PearDatabase::getInstance(); $this->log = $log; } /** Function to handle module specific operations when saving a entity */ function save_module($module) { } /** * 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,$currentModule,$current_user,$table_prefix;//crmv@203484 removed global singlepane //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e $log->debug("Entering get_tickets(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); $other = CRMEntity::getInstance($related_module); vtlib_setup_modulevars($related_module, $other); $parenttab = getParentTab(); if($singlepane_view == true)//crmv@203484 changed to normal bool true, not string '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') == '0') { $button .= $this->get_related_buttons($this_module, $id, $related_module, $actions); // crmv@43864 } // crmv@103106 $query = "SELECT case when (".$table_prefix."_users.user_name is not null) then ".$table_prefix."_users.user_name else ".$table_prefix."_groups.groupname end as user_name, ".$table_prefix."_users.id, ".$table_prefix."_troubletickets.title, ".$table_prefix."_troubletickets.ticketid AS crmid, ".$table_prefix."_troubletickets.status, ".$table_prefix."_troubletickets.priority, ".$table_prefix."_troubletickets.parent_id, ".$table_prefix."_troubletickets.ticket_no, ".$table_prefix."_crmentity.smownerid, ".$table_prefix."_crmentity.modifiedtime FROM ".$table_prefix."_troubletickets INNER JOIN ".$table_prefix."_crmentity ON ".$table_prefix."_crmentity.crmid = ".$table_prefix."_troubletickets.ticketid INNER JOIN ".$table_prefix."_ticketcf ON ".$table_prefix."_ticketcf.ticketid = ".$table_prefix."_troubletickets.ticketid LEFT JOIN ".$table_prefix."_account ON ".$table_prefix."_account.accountid = ".$table_prefix."_troubletickets.parent_id LEFT JOIN ".$table_prefix."_contactdetails ON ".$table_prefix."_contactdetails.contactid=".$table_prefix."_troubletickets.parent_id LEFT JOIN ".$table_prefix."_users ON ".$table_prefix."_users.id=".$table_prefix."_crmentity.smownerid LEFT JOIN ".$table_prefix."_groups ON ".$table_prefix."_groups.groupid = ".$table_prefix."_crmentity.smownerid WHERE ".$table_prefix."_crmentity.deleted = 0 "; //crmv@16643 $parentIds = array((int)$id); // use a separate query and a IN () clause, since it's much faster! $query_contacts = " SELECT ".$table_prefix."_contactdetails.contactid FROM ".$table_prefix."_contactdetails INNER JOIN ".$table_prefix."_crmentity ".$table_prefix."_crmentityCont ON ".$table_prefix."_crmentityCont.crmid = ".$table_prefix."_contactdetails.contactid LEFT JOIN ".$table_prefix."_groups ON ".$table_prefix."_groups.groupid = ".$table_prefix."_crmentityCont.smownerid LEFT JOIN ".$table_prefix."_users ON ".$table_prefix."_crmentityCont.smownerid = ".$table_prefix."_users.id WHERE ".$table_prefix."_crmentityCont.deleted = 0 AND ".$table_prefix."_contactdetails.accountid = ".$id; $secQuery = getNonAdminAccessControlQuery('Contacts', $current_user, 'Cont'); if(strlen($secQuery) > 1) { $query_contacts = appendFromClauseToQuery($query_contacts, $secQuery); } $res = $this->db->query($query_contacts); if ($res && $this->db->num_rows($res) > 0) { while ($row = $this->db->fetchByAssoc($res, -1, false)) { $parentIds[] = (int)$row['contactid']; } } $query .= " AND ".$table_prefix."_troubletickets.parent_id IN (".implode(',', $parentIds).")" ; //crmv@16643e crmv@103106e $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 */ // crmv@43864 function get_products($id, $cur_tab_id, $rel_tab_id, $actions=false) { $related_module = vtlib_getModuleNameById($rel_tab_id); $return_value = $this->get_related_list($id, $cur_tab_id, $rel_tab_id, $actions); if($return_value == null) $return_value = Array(); else $return_value = $this->add_ordered_quantity($return_value,$id,$related_module); //crmv@16644 return $return_value; } // crmv@43864e /** 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,$oCustomView,$viewId) //crmv@31775 { global $log; global $current_user; global $table_prefix; $log->debug("Entering create_export_query(".$where.") method ..."); //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 (".$table_prefix."_users.user_name is not null) then ".$table_prefix."_users.user_name else ".$table_prefix."_groups.groupname end as user_name FROM ".$this->entity_table." INNER JOIN ".$table_prefix."_account ON ".$table_prefix."_account.accountid = ".$table_prefix."_crmentity.crmid LEFT JOIN ".$table_prefix."_accountbillads ON ".$table_prefix."_accountbillads.accountaddressid = ".$table_prefix."_account.accountid LEFT JOIN ".$table_prefix."_accountshipads ON ".$table_prefix."_accountshipads.accountaddressid = ".$table_prefix."_account.accountid LEFT JOIN ".$table_prefix."_accountscf ON ".$table_prefix."_accountscf.accountid = ".$table_prefix."_account.accountid LEFT JOIN ".$table_prefix."_groups ON ".$table_prefix."_groups.groupid = ".$table_prefix."_crmentity.smownerid LEFT JOIN ".$table_prefix."_users ON ".$table_prefix."_users.id = ".$table_prefix."_crmentity.smownerid and ".$table_prefix."_users.status = 'Active' LEFT JOIN ".$table_prefix."_account ".$table_prefix."_account2 ON ".$table_prefix."_account2.accountid = ".$table_prefix."_account.parentid ";//vte_account2 is added to get the Member of account //crmv@94838 $focus = CRMEntity::getInstance('Newsletter'); $unsubscribe_table = $focus->email_fields['Accounts']['tablename']; $unsubscribe_field = $focus->email_fields['Accounts']['columnname']; $query .= " LEFT JOIN tbl_s_newsletter_g_unsub ON tbl_s_newsletter_g_unsub.email = {$unsubscribe_table}.{$unsubscribe_field} "; //crmv@94838e //crmv@31775 $reportFilter = $oCustomView->getReportFilter($viewId); if ($reportFilter) { $tableNameTmp = $oCustomView->getReportFilterTableName($reportFilter,$current_user->id); $query .= " INNER JOIN $tableNameTmp ON $tableNameTmp.id = {$table_prefix}_crmentity.crmid"; } //crmv@31775e $query .= $this->getNonAdminAccessControlQuery('Accounts',$current_user); $where_auto = " ".$table_prefix."_crmentity.deleted = 0 "; if($where != "") $query .= " WHERE ($where) AND ".$where_auto; else $query .= " WHERE ".$where_auto; $query = $this->listQueryNonAdminChange($query, 'Accounts'); $log->debug("Exiting create_export_query method ..."); return $query; } // crmv@186735 - removed code // crmv@152701 /** Returns a list of the associated faxes */ function get_faxes($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log, $currentModule; $log->debug("Entering get_faxes(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); $singular_modname = vtlib_toSingular($related_module); $button = ''; if($actions) { if(is_string($actions)) $actions = explode(',', strtoupper($actions)); if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { $button .= " "; } } // call standard function $ret = $this->get_related_list($id, $cur_tab_id, $rel_tab_id, $actions); // override button $ret['CUSTOM_BUTTON'] = $button; $log->debug("Exiting get_faxes method ..."); return $ret; } // crmv@152701e //crmv@43864 function get_services($id, $cur_tab_id, $rel_tab_id, $actions=false) { return $this->get_products($id, $cur_tab_id, $rel_tab_id, $actions); } //crmv@43864e function add_ordered_quantity($related_list,$id,$module) { global $adb,$mod_strings,$table_prefix; $fieldPos = count($related_list['header'])-1; $related_list['header'][] = $related_list['header'][$fieldPos]; $related_list['header'][$fieldPos] = $mod_strings['LBL_SOLD_QUANTITY']; $result = $adb->query("SELECT ".$table_prefix."_inventoryproductrel.productid,SUM(".$table_prefix."_inventoryproductrel.quantity) AS quantity FROM crmv_inventorytoacc INNER JOIN ".$table_prefix."_crmentity crmentityServices ON crmentityServices.crmid = crmv_inventorytoacc.id INNER JOIN ".$table_prefix."_crmentity crmentityOrders ON crmentityOrders.crmid = crmv_inventorytoacc.sorderid INNER JOIN ".$table_prefix."_inventoryproductrel ON ".$table_prefix."_inventoryproductrel.id = crmv_inventorytoacc.sorderid AND ".$table_prefix."_inventoryproductrel.productid = crmv_inventorytoacc.id WHERE crmv_inventorytoacc.type = '$module' AND crmentityOrders.deleted = 0 AND crmentityServices.deleted = 0 AND crmv_inventorytoacc.accountid = $id GROUP BY productid"); $ordered_quantity = array(); while($row=$adb->fetchByAssoc($result)) { $ordered_quantity[$row['productid']] = $row['quantity']; } if (!empty($related_list['entries'])) { //crmv@26896 foreach($related_list['entries'] as $key => &$entry) { $entry[] = $entry[$fieldPos]; $entry[$fieldPos] = $ordered_quantity[$key]; } } //crmv@26896 return $related_list; } //crmv@16644e // Function to unlink the dependent records of the given record by id function unlinkDependencies($module, $id) { global $log,$table_prefix; //Deleting Account related Potentials. $pot_q = 'SELECT '.$table_prefix.'_crmentity.crmid FROM '.$table_prefix.'_crmentity INNER JOIN '.$table_prefix.'_potential ON '.$table_prefix.'_crmentity.crmid='.$table_prefix.'_potential.potentialid LEFT JOIN '.$table_prefix.'_account ON '.$table_prefix.'_account.accountid='.$table_prefix.'_potential.related_to WHERE '.$table_prefix.'_crmentity.deleted=0 AND '.$table_prefix.'_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 '.$table_prefix.'_crmentity SET deleted = 1 WHERE crmid = ?'; $this->db->pquery($sql, array($pot_id)); } //Backup deleted Account related Potentials. $params = array($id, RB_RECORD_UPDATED, $table_prefix.'_crmentity', 'deleted', 'crmid', implode(",", $pot_ids_list)); $this->db->pquery('INSERT INTO '.$table_prefix.'_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); //Deleting Account related Quotes. $quo_q = 'SELECT '.$table_prefix.'_crmentity.crmid FROM '.$table_prefix.'_crmentity INNER JOIN '.$table_prefix.'_quotes ON '.$table_prefix.'_crmentity.crmid='.$table_prefix.'_quotes.quoteid INNER JOIN '.$table_prefix.'_account ON '.$table_prefix.'_account.accountid='.$table_prefix.'_quotes.accountid WHERE '.$table_prefix.'_crmentity.deleted=0 AND '.$table_prefix.'_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 '.$table_prefix.'_crmentity SET deleted = 1 WHERE crmid = ?'; $this->db->pquery($sql, array($quo_id)); } //Backup deleted Account related Quotes. $params = array($id, RB_RECORD_UPDATED, $table_prefix.'_crmentity', 'deleted', 'crmid', implode(",", $quo_ids_list)); $this->db->pquery('INSERT INTO '.$table_prefix.'_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); //Backup Contact-Account Relation $con_q = 'SELECT contactid FROM '.$table_prefix.'_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, $table_prefix.'_contactdetails', 'accountid', 'contactid', implode(",", $con_ids_list)); $this->db->pquery('INSERT INTO '.$table_prefix.'_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); } //Deleting Contact-Account Relation. $con_q = 'UPDATE '.$table_prefix.'_contactdetails SET accountid = 0 WHERE accountid = ?'; $this->db->pquery($con_q, array($id)); //Backup Trouble Tickets-Account Relation $tkt_q = 'SELECT ticketid FROM '.$table_prefix.'_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, $table_prefix.'_troubletickets', 'parent_id', 'ticketid', implode(",", $tkt_ids_list)); $this->db->pquery('INSERT INTO '.$table_prefix.'_relatedlists_rb VALUES(?,?,?,?,?,?)', $params); } //Deleting Trouble Tickets-Account Relation. $tt_q = 'UPDATE '.$table_prefix.'_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, $table_prefix; if(empty($return_module) || empty($return_id)) return; //crmv@15157 if($return_module == 'Campaigns') { $sql = 'DELETE FROM '.$table_prefix.'_campaignaccountrel WHERE accountid=? AND campaignid=?'; $this->db->pquery($sql, array($id, $return_id)); } //crmv@15157 end elseif($return_module == 'Products') { $sql = 'DELETE FROM '.$table_prefix.'_seproductsrel WHERE crmid=? AND productid=?'; $this->db->pquery($sql, array($id, $return_id)); } else { $sql = 'DELETE FROM '.$table_prefix.'_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); } $this->db->pquery("UPDATE {$table_prefix}_crmentity SET modifiedtime = ? WHERE crmid IN (?,?)", array($this->db->formatDate(date('Y-m-d H:i:s'), true), $id, $return_id)); // crmv@49398 crmv@69690 } /** * 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,$table_prefix; $log->debug("Entering function transferRelatedRecords ($module, $transferEntityIds, $entityId)"); $rel_table_arr = Array("Contacts"=>$table_prefix."_contactdetails","Potentials"=>$table_prefix."_potential","Quotes"=>$table_prefix."_quotes", "SalesOrder"=>$table_prefix."_salesorder","Invoice"=>$table_prefix."_invoice","Activities"=>$table_prefix."_seactivityrel", "Documents"=>$table_prefix."_senotesrel","Attachments"=>$table_prefix."_seattachmentsrel","HelpDesk"=>$table_prefix."_troubletickets", "Products"=>$table_prefix."_seproductsrel"); $tbl_field_arr = Array($table_prefix."_contactdetails"=>"contactid",$table_prefix."_potential"=>"potentialid",$table_prefix."_quotes"=>"quoteid", $table_prefix."_salesorder"=>"salesorderid",$table_prefix."_invoice"=>"invoiceid",$table_prefix."_seactivityrel"=>"activityid", $table_prefix."_senotesrel"=>"notesid",$table_prefix."_seattachmentsrel"=>"attachmentsid",$table_prefix."_troubletickets"=>"ticketid", $table_prefix."_seproductsrel"=>"productid"); $entity_tbl_field_arr = Array($table_prefix."_contactdetails"=>"accountid",$table_prefix."_potential"=>"related_to",$table_prefix."_quotes"=>"accountid", $table_prefix."_salesorder"=>"accountid",$table_prefix."_invoice"=>"accountid",$table_prefix."_seactivityrel"=>"crmid", $table_prefix."_senotesrel"=>"crmid",$table_prefix."_seattachmentsrel"=>"crmid",$table_prefix."_troubletickets"=>"parent_id", $table_prefix."_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)); } } } } //crmv@15526 parent::transferRelatedRecords($module, $transferEntityIds, $entityId); //crmv@15526 end $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){ global $table_prefix; $rel_tables = array ( "Contacts" => array($table_prefix."_contactdetails"=>array("accountid","contactid"),$table_prefix."_account"=>"accountid"), "Potentials" => array($table_prefix."_potential"=>array("related_to","potentialid"),$table_prefix."_account"=>"accountid"), "Quotes" => array($table_prefix."_quotes"=>array("accountid","quoteid"),$table_prefix."_account"=>"accountid"), "SalesOrder" => array($table_prefix."_salesorder"=>array("accountid","salesorderid"),$table_prefix."_account"=>"accountid"), "Invoice" => array($table_prefix."_invoice"=>array("accountid","invoiceid"),$table_prefix."_account"=>"accountid"), "Calendar" => array($table_prefix."_seactivityrel"=>array("crmid","activityid"),$table_prefix."_account"=>"accountid"), "HelpDesk" => array($table_prefix."_troubletickets"=>array("parent_id","ticketid"),$table_prefix."_account"=>"accountid"), "Products" => array($table_prefix."_seproductsrel"=>array("crmid","productid"),$table_prefix."_account"=>"accountid"), "Documents" => array($table_prefix."_senotesrel"=>array("crmid","notesid"),$table_prefix."_account"=>"accountid"), "Campaigns" => array($table_prefix."_campaignaccountrel"=>array("accountid","campaignid"),$table_prefix."_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 */ //crmv@38798 function generateReportsSecQuery($module,$secmodule,$reporttype='',$useProductJoin=true,$joinUitype10=true){ // crmv@146653 global $table_prefix; $query = $this->getRelationQuery($module,$secmodule,$table_prefix."_account","accountid"); $query .= " left join ".$table_prefix."_accountbillads on ".$table_prefix."_account.accountid=".$table_prefix."_accountbillads.accountaddressid left join ".$table_prefix."_accountshipads on ".$table_prefix."_account.accountid=".$table_prefix."_accountshipads.accountaddressid left join ".$table_prefix."_accountscf on ".$table_prefix."_account.accountid = ".$table_prefix."_accountscf.accountid left join ".$table_prefix."_account ".$table_prefix."_accountAccounts on ".$table_prefix."_accountAccounts.accountid = ".$table_prefix."_account.parentid left join ".$table_prefix."_groups ".$table_prefix."_groupsAccounts on ".$table_prefix."_groupsAccounts.groupid = ".$table_prefix."_crmentityAccounts.smownerid left join ".$table_prefix."_users ".$table_prefix."_usersAccounts on ".$table_prefix."_usersAccounts.id = ".$table_prefix."_crmentityAccounts.smownerid "; return $query; } //crmv@38798e //crmv@22700 function get_campaigns_newsletter($id, $cur_tab_id, $rel_tab_id, $actions=false) { global $log,$currentModule,$current_user,$table_prefix;//crmv@203484 removed global singlepane //crmv@203484 $VTEP = VTEProperties::getInstance(); $singlepane_view = $VTEP->getProperty('layout.singlepane_view'); //crmv@203484e $log->debug("Entering get_visitreport(".$id.") method ..."); $this_module = $currentModule; $related_module = vtlib_getModuleNameById($rel_tab_id); $other = CRMEntity::getInstance($related_module); vtlib_setup_modulevars($related_module, $other); $singular_modname = vtlib_toSingular($related_module); $parenttab = getParentTab(); if($singlepane_view == true)//crmv@203484 changed to normal bool true, not string 'true' $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; else $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; // crmv@120052 // remove the sortering from the request, since I'm, loading another related $oldReq = $_REQUEST; unset($_REQUEST['order_by'], $_REQUEST['sorder']); // crmv@120052e global $adb, $onlybutton; $onlyquery_bck = $onlyquery; $onlyquery = true; $onlybutton_bck = $onlybutton; $onlybutton = false; $targetsModule = Vtecrm_Module::getInstance('Targets'); CRMEntity::get_related_list($id, $cur_tab_id, $targetsModule->id); $result = $adb->query(VteSession::get('targets_listquery')); $onlyquery = $onlyquery_bck; $onlybutton = $onlybutton_bck; //TODO: trovare anche i Target inclusi in questi Target $campaigns = array(); if ($result && $adb->num_rows($result)>0) { // crmv@120052 $currentModuleBackup = $currentModule; $currentModule = $targetsModule->name; //crmv@46974 // crmv@120052e while($row=$adb->fetchByAssoc($result)) { $onlyquery_bck = $onlyquery; $onlyquery = true; $onlybutton_bck = $onlybutton; $onlybutton = false; CRMEntity::get_related_list($row['crmid'], $targetsModule->id, 26); $result1 = $adb->query(VteSession::get('campaigns_listquery')); $onlyquery = $onlyquery_bck; $onlybutton = $onlybutton_bck; if ($result1 && $adb->num_rows($result1)>0) { while($row1=$adb->fetchByAssoc($result1)) { $campaigns[$row1['crmid']] = ''; } } } $currentModule = $currentModuleBackup; //crmv@46974 crmv@120052 } // restore the request $_REQUEST = $oldReq; // crmv@120052 $campaigns = array_keys($campaigns); if (!empty($campaigns)) { $query = " SELECT CASE WHEN (".$table_prefix."_users.user_name is not null) THEN ".$table_prefix."_users.user_name ELSE ".$table_prefix."_groups.groupname END AS user_name, ".$table_prefix."_campaign.campaignid, ".$table_prefix."_campaign.campaignname, ".$table_prefix."_campaign.campaigntype, ".$table_prefix."_campaign.campaignstatus, ".$table_prefix."_campaign.expectedrevenue, ".$table_prefix."_campaign.closingdate, ".$table_prefix."_crmentity.crmid, ".$table_prefix."_crmentity.smownerid, ".$table_prefix."_crmentity.modifiedtime FROM ".$table_prefix."_campaign INNER JOIN ".$table_prefix."_campaignscf ON ".$table_prefix."_campaignscf.campaignid = ".$table_prefix."_campaign.campaignid INNER JOIN ".$table_prefix."_crmentity ON ".$table_prefix."_crmentity.crmid = ".$table_prefix."_campaign.campaignid LEFT JOIN ".$table_prefix."_groups ON ".$table_prefix."_groups.groupid = ".$table_prefix."_crmentity.smownerid LEFT JOIN ".$table_prefix."_users ON ".$table_prefix."_users.id = ".$table_prefix."_crmentity.smownerid WHERE ".$table_prefix."_campaign.campaignid in (".implode(',',$campaigns).") AND ".$table_prefix."_crmentity.deleted = 0"; $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); } if($return_value == null) $return_value = Array(); else { unset($return_value['header'][0]); if(is_array($return_value['entries'])){ foreach ($return_value['entries'] as $id => $info) { unset($return_value['entries'][$id][0]); } } } $log->debug("Exiting get_faxes method ..."); return $return_value; } //crmv@22700e // crmv@193226 public function updateContactsAddress() { global $adb, $table_prefix; $query = "UPDATE {$table_prefix}_contactaddress SET mailingcity=?,mailingstreet=?,mailingcountry=?,mailingzip=?,mailingpobox=?,mailingstate=?, othercountry=?,othercity=?,otherstate=?,otherzip=?,otherstreet=?,otherpobox=? WHERE contactaddressid IN ( SELECT contactid FROM {$table_prefix}_contactdetails WHERE accountid=? )" ; $params = array( $this->column_fields['bill_city'], $this->column_fields['bill_street'], $this->column_fields['bill_country'], $this->column_fields['bill_code'], $this->column_fields['bill_pobox'], $this->column_fields['bill_state'], $this->column_fields['ship_country'], $this->column_fields['ship_city'], $this->column_fields['ship_state'], $this->column_fields['ship_code'], $this->column_fields['ship_street'], $this->column_fields['ship_pobox'], $this->id); $adb->pquery($query, $params); } // crmv@193226e /* crmv@181281 moved code in CRMEntity and ExportUtils */ }