public function getRelatedModuleRecordIds(Vtiger_Request $request, $recordIds = []) { $db = PearDatabase::getInstance(); $basicModule = $request->getModule(); $relatedModules = $request->get('related_modules'); $parentModuleModel = Vtiger_Module_Model::getInstance($basicModule); $relatedIds = []; if (!empty($relatedModules)) { foreach ($relatedModules as $relModData) { $relModData = explode('::', $relModData); $relatedModule = $relModData[0]; $type = $relModData[1]; switch ($type) { case 0: $field = $relModData[2]; foreach ($recordIds as $recordId) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $basicModule); if ($recordModel->get($field) != 0 && Vtiger_Functions::getCRMRecordType($recordModel->get($field)) == $relatedModule) { $relatedIds[] = $recordModel->get($field); } } break; case 1: $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedModule); $instance = CRMEntity::getInstance($relatedModule); $relationModel = Vtiger_Relation_Model::getInstance($parentModuleModel, $relatedModuleModel); $fieldModel = $relationModel->getRelationField(); $tablename = $fieldModel->get('table'); $tabIndex = $instance->table_index; $relIndex = $this->getRelatedFieldName($relatedModule, $basicModule); if (!$relIndex) { break; } $sql = "SELECT vtiger_crmentity.crmid FROM vtiger_crmentity INNER JOIN {$tablename} ON {$tablename}.{$tabIndex} = vtiger_crmentity.crmid\n\t\t\t\t\t\tWHERE {$tablename}.{$relIndex} IN (" . $db->generateQuestionMarks($recordIds) . ")"; $result = $db->pquery($sql, $recordIds); while ($crmid = $db->getSingleValue($result)) { $relatedIds[] = $crmid; } break; case 2: foreach ($recordIds as $recordId) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $basicModule); $relationListView = Vtiger_RelationListView_Model::getInstance($recordModel, $relatedModule); $query = $relationListView->getRelationQuery(); $queryEx = explode('FROM', $query, 2); $query = 'SELECT DISTINCT vtiger_crmentity.crmid FROM' . $queryEx[1]; $result = $db->query($query); while ($crmid = $db->getSingleValue($result)) { $relatedIds[] = $crmid; } } break; } $relatedIds = array_unique($relatedIds); } } return $relatedIds; }
function bind_prefix($user_id, $mail_detail, $folder, $moduleName, $table_name, $table_col) { $adb = PearDatabase::getInstance(); if ($mail_detail['ossmailviewid'] == '') { $result_ossmailview = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ", [$mail_detail['message_id'], $user_id]); if ($adb->num_rows($result_ossmailview) == 0) { return FALSE; } $mailViewId = $adb->query_result($result_ossmailview, 0, 'ossmailviewid'); } else { $mailViewId = $mail_detail['ossmailviewid']; } $relationExist = false; $relationExistResult = $adb->pquery("SELECT crmid FROM vtiger_ossmailview_relation WHERE ossmailviewid = ?;", [$mailViewId]); for ($i = 0; $i < $adb->num_rows($relationExistResult); $i++) { $crmid = $adb->query_result_raw($relationExistResult, $i, 'crmid'); $type = Vtiger_Functions::getCRMRecordType($crmid); if ($type == $moduleName) { $relationExist = TRUE; } } if ($relationExist) { return false; } $emailNumPrefix = OSSMailScanner_Record_Model::findEmailNumPrefix($moduleName, $mail_detail['subject']); if (!$emailNumPrefix) { return false; } require_once "modules/{$moduleName}/{$moduleName}.php"; $moduleObject = new $moduleName(); $tableIndex = $moduleObject->table_index; $return_id = []; $result = $adb->pquery("SELECT {$tableIndex} FROM " . $table_name . " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = " . $table_name . "." . $tableIndex . " WHERE vtiger_crmentity.deleted = 0 AND " . $table_col . " = ? ", [$emailNumPrefix]); if ($adb->num_rows($result) > 0) { $crmid = $adb->getSingleValue($result); $resultRelation = $adb->pquery('SELECT * FROM vtiger_ossmailview_relation WHERE ossmailviewid=? AND crmid=?', [$mailViewId, $crmid]); if ($resultRelation->rowCount() == 0) { $adb->pquery('INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?', [$mailViewId, $crmid, $mail_detail['udate_formated']]); $return_id[] = $crmid; } } return $return_id; }
public function getActiveTemplatesForRecord($recordId, $view, $moduleName = false) { $log = vglobal('log'); $log->debug('Entering ' . __CLASS__ . '::' . __METHOD__ . '(' . $recordId . ',' . $view . ',' . $moduleName . ') method ...'); if (!isRecordExists($recordId)) { $log->debug('Exiting ' . __CLASS__ . '::' . __METHOD__ . ' method ...'); return []; } if (!$moduleName) { $moduleName = Vtiger_Functions::getCRMRecordType($recordId); } $templates = $this->getTemplatesByModule($moduleName); foreach ($templates as $id => &$template) { if (!$template->checkFiltersForRecord($recordId) || !$template->checkUserPermissions() || !Users_Privileges_Model::isPermitted($template->getRelatedName(), 'EditView')) { unset($templates[$id]); } } $log->debug('Exiting ' . __CLASS__ . '::' . __METHOD__ . ' method ...'); return $templates; }
function UpdatePotential($potentialId) { if (!isRecordExists($potentialId) || Vtiger_Functions::getCRMRecordType($potentialId) != 'Potentials') { return false; } $db = PearDatabase::getInstance(); $potentialTotal = 0; $paymentsIn = 0; $paymentsOut = 0; $sql = 'SELECT SUM(i.`total`) AS total FROM `vtiger_invoice` i INNER JOIN `vtiger_potential` p ON i.`potentialid` = p.`potentialid` WHERE p.`potentialid` = ?;'; $params = array($potentialId); $result = $db->pquery($sql, $params); $potentialTotal = $db->query_result($result, 0, 'total'); $sql = 'SELECT i.`invoiceid` FROM `vtiger_invoice` i INNER JOIN `vtiger_potential` p ON i.`potentialid` = p.`potentialid` WHERE p.`potentialid` = ?;'; $params = array($potentialId); $result = $db->pquery($sql, $params); $invNum = $db->num_rows($result); if ($invNum > 0) { for ($i = 0; $i < $invNum; $i++) { $invoiceId = $db->query_result($result, $i, 'invoiceid'); if (!isRecordExists($invoiceId)) { continue; } // get sum of payments in $sql = 'SELECT SUM(`paymentsvalue`) AS suma FROM `vtiger_paymentsin` WHERE `salesid` = ? AND `paymentsin_status` = ?;'; $params = array($invoiceId, 'Paid'); $inResult = $db->pquery($sql, $params); $paymentsIn += $db->query_result($inResult, 0, 'suma'); // get sum of payments out $sql = 'SELECT SUM(`paymentsvalue`) AS suma FROM `vtiger_paymentsout` WHERE `salesid` = ? AND `paymentsout_status` = ?;'; $inResult = $db->pquery($sql, $params); $paymentsOut += $db->query_result($inResult, 0, 'suma'); } } $paymentsSum = $paymentsIn - $paymentsOut; $balance = $potentialTotal - $paymentsSum; $sql = 'UPDATE `vtiger_potential` SET `payment_balance` = ? WHERE `potentialid` = ? LIMIT 1;'; $params = array($balance, $potentialId); $db->pquery($sql, $params); }
private function generateBaseRecord($templateId, $relId = NULL) { $moduleType = $this->templateModuleType($templateId); require_once "modules/{$moduleType}/{$moduleType}.php"; $baseModule = new $moduleType(); $moduleConfig = $this->moduleModel->getConfigurationForModule($moduleType); foreach ($moduleConfig as $key => $value) { require_once "modules/OSSProjectTemplates/fields_action/{$value}.php"; $fieldClass = Field_Model_ . $value; $field = new $fieldClass(); $baseModule->column_fields[$key] = $field->getValue($key, $relId, $templateId); } $baseModule->save($moduleType); $id = $baseModule->id; if (!!$relId) { $this->setRel($relId, Vtiger_Functions::getCRMRecordType($relId), $id, $moduleType); } $db = PearDatabase::getInstance(); $db->query("update {$baseModule->table_name} set {$baseModule->list_link_field} = replace({$baseModule->list_link_field}, 'ó', 'ó') WHERE {$baseModule->table_index} = {$id}", TRUE); $db->query("update vtiger_crmentity set label = replace(label, 'ó', 'ó') WHERE crmid = {$id}", TRUE); return $id; }
public function process(Vtiger_Request $request) { $adb = PearDatabase::getInstance(); $moduleName = $request->getModule(); $id = $request->get('id'); $sourceModule = $request->get('sourceModule'); $sourceData = array(); if (isRecordExists($id)) { $record = Vtiger_Record_Model::getInstanceById($id, $sourceModule); $entity = $record->getEntity(); $sourceData = $entity->column_fields; if ($sourceModule == 'HelpDesk') { $sourceData['contact_label'] = Vtiger_Functions::getCRMRecordLabel($sourceData['contact_id']); if (Vtiger_Functions::getCRMRecordType($sourceData['parent_id']) != 'Accounts') { unset($sourceData['parent_id']); } else { $sourceData['account_label'] = Vtiger_Functions::getCRMRecordLabel($sourceData['parent_id']); } } else { if ($sourceModule == 'Project') { $ifExist = $adb->query("select * from vtiger_account where accountid = " . $sourceData['linktoaccountscontacts'] . "", true, "Błąd podczas pobierania danych z vtiger_crmentityrel"); if ($adb->num_rows($ifExist) > 0) { $sourceData['account_label'] = Vtiger_Functions::getCRMRecordLabel($sourceData['linktoaccountscontacts']); } else { $sourceData['contact_label'] = Vtiger_Functions::getCRMRecordLabel($sourceData['linktoaccountscontacts']); } } } } if ($sourceData === false) { $result = array('success' => false, 'message' => vtranslate('LBL_FAILED_TO_IMPORT_INFO', $moduleName)); } else { $result = array('success' => true, 'sourceData' => $sourceData); } $response = new Vtiger_Response(); $response->setResult($result); $response->emit(); }
function HeldDeskNewCommentAccount($entityData) { $log = vglobal('log'); $db = PearDatabase::getInstance(); $log->debug('Entering HeldDeskNewCommentAccount'); $wsId = $entityData->getId(); $parts = explode('x', $wsId); $entityId = $parts[1]; $data = $entityData->getData(); $relatedToWSId = $data['related_to']; $relatedToId = explode('x', $relatedToWSId); $moduleName = Vtiger_Functions::getCRMRecordType($relatedToId[1]); $mail = false; if (!empty($relatedToWSId) && $moduleName == 'HelpDesk') { if ($moduleName == 'HelpDesk') { $sql = 'SELECT vtiger_account.email1 FROM vtiger_account INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_account.accountid INNER JOIN vtiger_troubletickets ON vtiger_troubletickets.parent_id = vtiger_account.accountid WHERE vtiger_crmentity.deleted = 0 AND vtiger_troubletickets.ticketid = ? AND vtiger_account.emailoptout = 1'; $result = $db->pquery($sql, [$relatedToId[1]]); if ($result->rowCount() > 0) { $mail = $db->getSingleValue($result); } } } if ($mail) { $data = ['sysname' => 'NewCommentAddedToTicketAccount', 'to_email' => $mail, 'module' => 'ModComments', 'record' => $entityId]; $recordModel = Vtiger_Record_Model::getCleanInstance('OSSMailTemplates'); if ($recordModel->sendMailFromTemplate($data)) { $log->debug('HeldDeskNewCommentAccount'); return true; } } $log->debug('HeldDeskNewCommentAccount'); return false; }
public function findEmail($id, $module) { if (!isRecordExists($id)) { return false; } $returnEmail = ''; if (strcmp($module, 'HelpDesk') != 0 && strcmp($module, 'Potentials') != 0 && strcmp($module, 'Project') != 0) { $polaEmail = OSSMailScanner_Record_Model::getEmailSearch($module); if (count($polaEmail) > 0) { $recordModel = Vtiger_Record_Model::getInstanceById($id, $module); foreach ($polaEmail as $em) { $email = $recordModel->get($em[2]); if (!empty($email)) { $returnEmail = $email; } } } } else { $kontrahentId = ''; $kontaktId = ''; if (strcmp($module, 'HelpDesk') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('parent_id'); $kontaktId = $helpdeskRecord->get('contact_id'); } else { if (strcmp($module, 'Potentials') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('related_to'); } else { if (strcmp($module, 'Project') == 0) { $helpdeskRecord = Vtiger_Record_Model::getInstanceById($id, $module); $kontrahentId = $helpdeskRecord->get('linktoaccountscontacts'); } } } // czy kontrahent istnieje if (isRecordExists($kontrahentId)) { $nazwaModulu = Vtiger_Functions::getCRMRecordType($kontrahentId); $returnEmail = $this->findEmail($kontrahentId, $nazwaModulu); } if (isRecordExists($kontaktId)) { $nazwaModulu = Vtiger_Functions::getCRMRecordType($kontaktId); $returnEmail = $this->findEmail($kontaktId, $nazwaModulu); } } return $returnEmail; }
public function getSourceRelatedFieldToQuickCreate($moduleName, $sourceModule = false, $sourceRecord = false) { $data = []; if ($sourceModule && $sourceRecord) { $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $recordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); $relationField = false; $fieldMap = []; $modelFields = $moduleModel->getFields(); foreach ($modelFields as $fieldName => $fieldModel) { if ($fieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) { $referenceList = $fieldModel->getReferenceList(); foreach ($referenceList as $referenceModule) { $fieldMap[$referenceModule] = $fieldName; } if (in_array($sourceModule, $referenceList)) { $relationField = $fieldName; } } } $sourceModelFields = $sourceModuleModel->getFields(); foreach ($sourceModelFields as $fieldName => $fieldModel) { if ($fieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) { $referenceList = $fieldModel->getReferenceList(); foreach ($referenceList as $referenceModule) { if (isset($fieldMap[$referenceModule])) { $fieldValue = $recordModel->get($fieldName); if ($fieldValue != 0 && Vtiger_Functions::getCRMRecordType($fieldValue) == $referenceModule) { $data[$fieldMap[$referenceModule]] = $fieldValue; } } } } } if ($relationField) { $data[$relationField] = $sourceRecord; } } return $data; }
/** Function to delete an entity with given Id */ function trash($module, $id) { global $log, $current_user, $adb; $recordType = Vtiger_Functions::getCRMRecordType($id); if ($recordType != $module) { throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); } if (!self::isBulkSaveMode()) { require_once "include/events/include.inc"; $em = new VTEventsManager($adb); // Initialize Event trigger cache $em->initTriggerCache(); $entityData = VTEntityData::fromEntityId($adb, $id); $em->triggerEvent("vtiger.entity.beforedelete", $entityData); } $this->mark_deleted($id); $this->unlinkDependencies($module, $id); require_once 'libraries/freetag/freetag.class.php'; $freetag = new freetag(); $freetag->delete_all_object_tags_for_user($current_user->id, $id); $sql_recentviewed = 'DELETE FROM vtiger_tracker WHERE user_id = ? AND item_id = ?'; $this->db->pquery($sql_recentviewed, array($current_user->id, $id)); if ($em) { $em->triggerEvent("vtiger.entity.afterdelete", $entityData); } }
function getSalesEntityType($crmid) { return Vtiger_Functions::getCRMRecordType($crmid); }
public function getActiveTemplatesForRecord($recordId, $view, $moduleName = false) { if (!isRecordExists($recordId)) { return []; } if (!$moduleName) { $moduleName = Vtiger_Functions::getCRMRecordType($recordId); } $templates = $this->getTemplatesByModule($moduleName); foreach ($templates as $id => &$template) { $active = true; if (!$template->isVisible($view) || !$template->checkFiltersForRecord($recordId) || !$template->checkUserPermissions()) { unset($templates[$id]); } } return $templates; }
public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $sourceRecord = $request->get('sourceRecord'); $sourceModule = $request->get('sourceModule'); if (!empty($record) && $request->get('isDuplicate') == true) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('MODE', ''); } elseif (!empty($record)) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); $relatedProducts = $recordModel->getProducts(); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODE', 'edit'); } elseif ($request->get('salesorder_id') || $request->get('quote_id') || $request->get('reference_id')) { if ($request->get('salesorder_id')) { $referenceId = $request->get('salesorder_id'); } else { if ($request->get('quote_id')) { $referenceId = $request->get('quote_id'); } else { $referenceId = $request->get('reference_id'); } } $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); if (Vtiger_Functions::getCRMRecordType($referenceId) == 'RequirementCards') { $parentRecordModel = Vtiger_Record_Model::getInstanceById($referenceId); $recordModel->setRecordFieldValues($parentRecordModel); $recordModel->set('requirementcardsid', $referenceId); } else { $parentRecordModel = Inventory_Record_Model::getInstanceById($referenceId); $currencyInfo = $parentRecordModel->getCurrencyInfo(); $taxes = $parentRecordModel->getProductTaxes(); $relatedProducts = $parentRecordModel->getProducts(); $recordModel->setRecordFieldValues($parentRecordModel); } } else { $taxes = Inventory_Module_Model::getAllProductTaxes(); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $viewer->assign('MODE', ''); //The creation of Inventory record from action and Related list of product/service detailview the product/service details will calculated by following code if ($request->get('product_id') || $sourceModule === 'Products') { if ($sourceRecord) { $productRecordModel = Products_Record_Model::getInstanceById($sourceRecord); } else { $productRecordModel = Products_Record_Model::getInstanceById($request->get('product_id')); } $relatedProducts = $productRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($request->get('service_id') || $sourceModule === 'Services') { if ($sourceRecord) { $serviceRecordModel = Services_Record_Model::getInstanceById($sourceRecord); } else { $serviceRecordModel = Services_Record_Model::getInstanceById($request->get('service_id')); } $relatedProducts = $serviceRecordModel->getDetailsForInventoryModule($recordModel); } elseif ($sourceRecord && ($sourceModule === 'Accounts' || $sourceModule === 'Contacts' || $sourceModule === 'Potentials' || $sourceModule === 'Vendors' && $moduleName === 'PurchaseOrder')) { $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); $recordModel->setParentRecordData($parentRecordModel); } } $moduleModel = $recordModel->getModule(); $fieldList = $moduleModel->getFields(); $requestFieldList = array_intersect_key($request->getAll(), $fieldList); //get the inventory terms and conditions $inventoryRecordModel = Inventory_Record_Model::getCleanInstance($moduleName); $termsAndConditions = $inventoryRecordModel->getInventoryTermsandConditions(); foreach ($requestFieldList as $fieldName => $fieldValue) { $fieldModel = $fieldList[$fieldName]; if ($fieldModel->isEditable()) { $recordModel->set($fieldName, $fieldModel->getDBInsertValue($fieldValue)); // Load data from related fields if ($fieldModel->isReferenceField() && $fieldValue != '') { $fieldValueModule = Vtiger_Functions::getCRMRecordType($fieldValue); $mapping = $moduleModel->getMappingRelatedField($moduleName, $fieldName); $mappingModule = $mapping[$sourceModule]; if (count($mappingModule) > 0) { $relatedRecordModel = Vtiger_Record_Model::getInstanceById($fieldValue, $fieldValueModule); foreach ($mappingModule as $fieldDest => $fieldSource) { $fieldDestModel = $fieldList[$fieldDest]; $fieldDestValue = $relatedRecordModel->get($fieldSource[0]); $recordModel->set($fieldDest, $fieldDestModel->getDBInsertValue($fieldDestValue)); } } } } } $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT); $viewer->assign('VIEW_MODE', "fullForm"); $isRelationOperation = $request->get('relationOperation'); //if it is relation edit $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation); if ($isRelationOperation) { $viewer->assign('SOURCE_MODULE', $sourceModule); $viewer->assign('SOURCE_RECORD', $sourceRecord); } if (!empty($record) && $request->get('isDuplicate') == true) { $viewer->assign('IS_DUPLICATE', true); } else { $viewer->assign('IS_DUPLICATE', false); } $currencies = Inventory_Module_Model::getAllCurrencies(); $picklistDependencyDatasource = Vtiger_DependencyPicklist::getPicklistDependencyDatasource($moduleName); $viewer->assign('PICKIST_DEPENDENCY_DATASOURCE', Zend_Json::encode($picklistDependencyDatasource)); $mappingRelatedField = $moduleModel->getMappingRelatedField($moduleName); $viewer->assign('MAPPING_RELATED_FIELD', Zend_Json::encode($mappingRelatedField)); $viewer->assign('RECORD', $recordModel); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure()); $viewer->assign('MODULE', $moduleName); $viewer->assign('BLOCK_LIST', $moduleModel->getBlocks()); $viewer->assign('CURRENTDATE', date('Y-n-j')); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('RELATED_PRODUCTS', $relatedProducts); $viewer->assign('TAXES', $taxes); $viewer->assign('CURRENCINFO', $currencyInfo); $viewer->assign('CURRENCIES', $currencies); $viewer->assign('TERMSANDCONDITIONS', $termsAndConditions); $productModuleModel = Vtiger_Module_Model::getInstance('Products'); $viewer->assign('PRODUCT_ACTIVE', $productModuleModel->isActive()); $serviceModuleModel = Vtiger_Module_Model::getInstance('Services'); $viewer->assign('SERVICE_ACTIVE', $serviceModuleModel->isActive()); $viewer->view('EditView.tpl', 'Calculations'); }
function sanitizeInventoryValues($inventoryRow, $inventoryFields) { $inventoryEntries = []; foreach ($inventoryFields as $field) { $value = $inventoryRow[$field->getColumnName()]; if (in_array($field->getName(), ['Name', 'Reference'])) { $value = trim($value); if (!empty($value)) { $recordModule = Vtiger_Functions::getCRMRecordType($value); $displayValueArray = Vtiger_Functions::computeCRMRecordLabels($recordModule, $value); if (!empty($displayValueArray)) { foreach ($displayValueArray as $k => $v) { $displayValue = $v; } } if (!empty($recordModule) && !empty($displayValue)) { $value = $recordModule . '::::' . $displayValue; } else { $value = ''; } } else { $value = ''; } } else { $value = $field->getDisplayValue($value); } $inventoryEntries['inv_' . $field->getColumnName()] = $value; } return $inventoryEntries; }
/** * Function to get Employees hierarchy of the given Employees * @param integer $id - employeeid * returns Employees hierarchy in array format */ function getEmployeeHierarchy($id) { global $log, $adb, $current_user; $log->debug("Entering getEmployeeHierarchy(" . $id . ") method ..."); require 'user_privileges/user_privileges_' . $current_user->id . '.php'; $listview_header = array(); $listview_entries = array(); foreach ($this->list_fields_name as $fieldname => $colname) { if (getFieldVisibilityPermission('OSSEmployees', $current_user->id, $colname) == '0') { $listview_header[] = getTranslatedString($fieldname); } } $rows_list = array(); $encountered_accounts = array($id); $rows_list = $this->__getParentEmployees($id, $rows_list, $encountered_accounts); $rows_list = $this->__getChildEmployees($id, $rows_list, $rows_list[$id]['depth']); foreach ($rows_list as $employees_id => $account_info) { $account_info_data = array(); $hasRecordViewAccess = is_admin($current_user) || isPermitted('OSSEmployees', 'DetailView', $employees_id) == 'yes'; foreach ($this->list_fields_name as $fieldname => $colname) { if (!$hasRecordViewAccess && $colname != 'name') { $account_info_data[] = ''; } else { if (getFieldVisibilityPermission('OSSEmployees', $current_user->id, $colname) == '0') { $data = $account_info[$colname]; if ($colname == 'ossemployees_no') { if ($employees_id != $id) { if ($hasRecordViewAccess) { $data = '<a href="index.php?module=OSSEmployees&view=Detail&record=' . $employees_id . '">' . $data . '</a>'; } else { $data = '<i>' . $data . '</i>'; } } else { $data = '<b>' . $data . '</b>'; } $account_depth = str_repeat(" .. ", $account_info['depth'] * 2); $data = $account_depth . $data; //} else if ($colname == 'last_name') { //$data = '<a href="http://'. $data .'" target="_blank">'.$data.'</a>'; } else { if ($colname == 'parentid' || $colname == 'projectid' || $colname == 'ticketid' || $colname == 'relategid') { $data = '<a href="index.php?module=' . Vtiger_Functions::getCRMRecordType($data) . '&action=DetailView&record=' . $data . '">' . Vtiger_Functions::getCRMRecordLabel($data) . '</a>'; } } $account_info_data[] = $data; } } } $listview_entries[$employees_id] = $account_info_data; } $hierarchy = array('header' => $listview_header, 'entries' => $listview_entries); $log->debug("Exiting getEmployeeHierarchy method ..."); return $hierarchy; }
function findCrmDetail($params, $metod) { $OSSMailViewModel = Vtiger_Record_Model::getCleanInstance('OSSMailView'); $Array = $OSSMailViewModel->findCrmRecordsByMessage_id($params, $metod); if (count($Array['Potentials'])) { $crmid = $Array['Potentials']['record']['crmid']; $module = $Array['Potentials']['record']['module']; $PotentialsRecord_Model = Vtiger_Record_Model::getInstanceById($crmid, $module); $related_to = $PotentialsRecord_Model->get('related_to'); $contact_id = $PotentialsRecord_Model->get('contact_id'); if ($related_to != 0 && $related_to != '') { $Array['Potentials']['Accounts'] = array('crmid' => $related_to, 'label' => Vtiger_Functions::getCRMRecordLabel($related_to)); } if ($contact_id != 0 && $contact_id != '') { $Array['Potentials']['Contacts'] = array('crmid' => $contact_id, 'label' => Vtiger_Functions::getCRMRecordLabel($contact_id)); } } if (count($Array['Project'])) { $crmid = $Array['Project']['record']['crmid']; $module = $Array['Project']['record']['module']; $ProjectRecord_Model = Vtiger_Record_Model::getInstanceById($crmid, $module); $acc_cont = $ProjectRecord_Model->get('linktoaccountscontacts'); if ($acc_cont != 0 && $acc_cont != '') { $Array['Project']['RelRecord'] = array('crmid' => $acc_cont, 'label' => Vtiger_Functions::getCRMRecordLabel($acc_cont), 'module' => Vtiger_Functions::getCRMRecordType($acc_cont)); } } if (count($Array['HelpDesk'])) { $crmid = $Array['HelpDesk']['record']['crmid']; $module = $Array['HelpDesk']['record']['module']; $HelpDeskRecord_Model = Vtiger_Record_Model::getInstanceById($crmid, $module); $parent_id = $HelpDeskRecord_Model->get('parent_id'); $contact_id = $HelpDeskRecord_Model->get('contact_id'); if ($parent_id != 0 && $parent_id != '') { $Array['HelpDesk']['Accounts'] = array('crmid' => $parent_id, 'label' => Vtiger_Functions::getCRMRecordLabel($parent_id)); } if ($contact_id != 0 && $contact_id != '') { $Array['HelpDesk']['Contacts'] = array('crmid' => $contact_id, 'label' => Vtiger_Functions::getCRMRecordLabel($contact_id)); } } return $Array; }
public function getSourceRelatedFieldToQuickCreate($moduleName, $sourceModule = false, $sourceRecord = false) { $data = array(); if ($sourceModule && $sourceRecord) { $mapping = array(); // [target module][Source module] = ( target field => (source module field, source field) ) $mapping['OSSTimeControl']['HelpDesk'] = array('contactid' => array('Contacts', 'contact_id'), 'accountid' => array('Accounts', 'parent_id')); if (!$mapping[$moduleName][$sourceModule]) { return $data; } $recordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); foreach ($mapping[$moduleName][$sourceModule] as $fieldName => $relatedField) { $fieldValue = $recordModel->get($relatedField[1]); if ($fieldValue && Vtiger_Functions::getCRMRecordType($fieldValue) == $relatedField[0]) { $data[$fieldName] = $fieldValue; } } } return $data; }
/** * Function returns Calendar Reminder record models * @return <Array of Calendar_Record_Model> */ public static function getCalendarReminder($allReminder = false) { $db = PearDatabase::getInstance(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); $activityReminder = $currentUserModel->getCurrentUserActivityReminderInSeconds(); $recordModels = array(); $permissionToSendEmail = vtlib_isModuleActive('OSSMail') && Users_Privileges_Model::isPermitted('OSSMail', 'compose'); if ($activityReminder != '') { $currentTime = time(); $date = date('Y-m-d', strtotime("+{$activityReminder} seconds", $currentTime)); $time = date('H:i', strtotime("+{$activityReminder} seconds", $currentTime)); $reminderActivitiesResult = "SELECT reminderid, recordid FROM vtiger_activity_reminder_popup \n\t\t\t\tINNER JOIN vtiger_activity on vtiger_activity.activityid = vtiger_activity_reminder_popup.recordid \n\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_activity_reminder_popup.recordid = vtiger_crmentity.crmid"; if ($allReminder) { $reminderActivitiesResult .= " WHERE (vtiger_activity_reminder_popup.status = 0 OR vtiger_activity_reminder_popup.status = 2) "; } else { $reminderActivitiesResult .= " WHERE vtiger_activity_reminder_popup.status = 0 "; } $reminderActivitiesResult .= " AND vtiger_crmentity.smownerid = ? AND vtiger_crmentity.deleted = 0 \n\t\t\t\tAND ((DATE_FORMAT(vtiger_activity_reminder_popup.date_start,'%Y-%m-%d') <= ?)\n\t\t\t\tAND (TIME_FORMAT(vtiger_activity_reminder_popup.time_start,'%H:%i') <= ?))\n\t\t\t\tAND vtiger_activity.eventstatus <> 'Held' LIMIT 20"; $result = $db->pquery($reminderActivitiesResult, array($currentUserModel->getId(), $date, $time)); $rows = $db->num_rows($result); for ($i = 0; $i < $rows; $i++) { $recordId = $db->query_result($result, $i, 'recordid'); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, 'Calendar'); $link = $recordModel->get('link'); if ($link != '' && $link != 0 && $permissionToSendEmail) { $url = "index.php?module=OSSMail&view=compose&mod=" . Vtiger_Functions::getCRMRecordType($link) . "&record={$link}"; } if ($url != '') { $recordModel->set('mailUrl', "<a href='{$url}' class='btn btn-info' target='_blank'><span class='glyphicon glyphicon-envelope icon-white'></span> " . vtranslate('LBL_SEND_MAIL') . "</a>"); } $recordModels[] = $recordModel; } } return $recordModels; }
/** * Function that converts the Number into Users Currency along with currency symbol * @param Users $user * @param Boolean $skipConversion * @return Formatted Currency */ public function getDetailViewDisplayValue($value, $recordId, $uiType) { $currencyModal = new CurrencyField($value); $currencyModal->initialize(); if ($uiType == '72' && $recordId) { $moduleName = $this->get('field')->getModuleName(); if (!$moduleName) { $moduleName = Vtiger_Functions::getCRMRecordType($recordId); } if ($this->get('field')->getName() == 'unit_price') { $currencyId = getProductBaseCurrency($recordId, $moduleName); $cursym_convrate = getCurrencySymbolandCRate($currencyId); $currencySymbol = $cursym_convrate['symbol']; } else { $currencyInfo = getInventoryCurrencyInfo($moduleName, $recordId); $currencySymbol = $currencyInfo['currency_symbol']; } } else { $currencySymbol = $currencyModal->currencySymbol; } return $currencyModal->appendCurrencySymbol($value, $currencySymbol); }
/** * Function returns the Calendar Events for the module * @param <String> $mode - upcoming/overdue mode * @param <Vtiger_Paging_Model> $pagingModel - $pagingModel * @param <String> $user - all/userid * @param <String> $recordId - record id * @return <Array> */ function getAssignedProjectsTasks($mode, $pagingModel, $user, $recordId = false) { $currentUser = Users_Record_Model::getCurrentUserModel(); $db = PearDatabase::getInstance(); if (!$user) { $user = $currentUser->getId(); } $nowInUserFormat = Vtiger_Datetime_UIType::getDisplayDateTimeValue(date('Y-m-d H:i:s')); $nowInDBFormat = Vtiger_Datetime_UIType::getDBDateTimeValue($nowInUserFormat); list($currentDate, $currentTime) = explode(' ', $nowInDBFormat); $instance = CRMEntity::getInstance('ProjectTask'); $UserAccessConditions = $instance->getUserAccessConditionsQuerySR('ProjectTask'); $params = array(); $query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype, vtiger_projecttask.*\n\t\t\tFROM vtiger_projecttask\n\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_projecttask.projecttaskid\n\t\t\tWHERE vtiger_crmentity.deleted=0 AND vtiger_crmentity.smcreatorid = ?"; $params[] = $currentUser->getId(); $query .= $UserAccessConditions; if ($mode === 'upcoming') { $query .= " AND targetenddate >= ?"; } elseif ($mode === 'overdue') { $query .= " AND targetenddate < ?"; } $params[] = $currentDate; $accessibleUsers = $currentUser->getAccessibleUsers(); $accessibleGroups = $currentUser->getAccessibleGroups(); if ($user != 'all' && $user != '' && (array_key_exists($user, $accessibleUsers) || array_key_exists($user, $accessibleGroups))) { $query .= " AND vtiger_crmentity.smownerid = ?"; $params[] = $user; } $query .= " ORDER BY targetenddate LIMIT ?, ?"; $params[] = $pagingModel->getStartIndex(); $params[] = $pagingModel->getPageLimit() + 1; $result = $db->pquery($query, $params); $numOfRows = $db->num_rows($result); $projecttasks = array(); for ($i = 0; $i < $numOfRows; $i++) { $row = $db->query_result_rowdata($result, $i); $model = Vtiger_Record_Model::getCleanInstance('ProjectTask'); $model->setData($row); $model->setId($row['crmid']); if ($row['projectid']) { if (isRecordExists($row['projectid'])) { $record = Vtiger_Record_Model::getInstanceById($row['projectid'], 'Project'); if (isRecordExists($record->get('linktoaccountscontacts'))) { $model->set('account', '<a href="index.php?module=' . Vtiger_Functions::getCRMRecordType($record->get('linktoaccountscontacts')) . '&view=Detail&record=' . $record->get('linktoaccountscontacts') . '">' . Vtiger_Functions::getCRMRecordLabel($record->get('linktoaccountscontacts')) . '</a>'); } } } $projecttasks[] = $model; } $pagingModel->calculatePageRange($projecttasks); if ($numOfRows > $pagingModel->getPageLimit()) { array_pop($projecttasks); $pagingModel->set('nextPageExists', true); } else { $pagingModel->set('nextPageExists', false); } return $projecttasks; }
public function process($ModuleName, $ID, $record_form, $config) { $db = PearDatabase::getInstance(); $ModuleNameID = Vtiger_Functions::getModuleId($ModuleName); $sql_ext = ''; $save_record1 = true; $save_record2 = true; $save_record = true; $type = 'info'; $info = false; if ($ID != 0 && $ID != '' && !array_key_exists($config['what1'], $record_form)) { $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName); $value1 = $Record_Model->get($config['what1']); } else { if (array_key_exists($config['what1'], $record_form)) { $value1 = $record_form[$config['what1']]; } } if ($ID != 0 && $ID != '' && !array_key_exists($config['what2'], $record_form)) { $Record_Model = Vtiger_Record_Model::getInstanceById($ID, $ModuleName); $value2 = $Record_Model->get($config['what2']); } else { if (array_key_exists($config['what2'], $record_form)) { $value2 = $record_form[$config['what2']]; } } if (!is_array($config['where1'])) { $wheres1[] = $config['where1']; } else { $wheres1 = $config['where1']; } if (!is_array($config['where2'])) { $wheres2[] = $config['where2']; } else { $wheres2 = $config['where2']; } if ($value1 != '') { foreach ($wheres1 as $where) { $where = explode('=', $where); $DestModuleName = Vtiger_Functions::getModuleName($where[2]); $ModuleInstance = CRMEntity::getInstance($DestModuleName); $tab_name_index = $ModuleInstance->tab_name_index; $index = $tab_name_index[$where[0]]; $sql_param = array($value1); $sql_ext = ''; $spacialCondition = ''; $sqlSpecial = ''; if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') { $sql_param[] = $ID; $sql_ext = 'AND ' . $index . ' <> ?'; } if ($DestModuleName == 'Leads') { $spacialCondition = ' AND `converted` = 0'; if ('vtiger_crmentity' == $where[0]) { $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid '; } } $result = $db->pquery("SELECT {$index} FROM {$where[0]} {$sqlSpecial} WHERE {$where[1]} = ? {$sql_ext} {$spacialCondition};", $sql_param, true); for ($i = 0; $i < $db->num_rows($result); $i++) { $id = $db->query_result_raw($result, $i, $index); if (Vtiger_Functions::getCRMRecordType($id) == $DestModuleName) { $save_record1 = false; $result = $db->pquery("SELECT smownerid FROM vtiger_crmentity WHERE crmid = ?", array($id), true); $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">• ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($db->query_result($result, 0, 'smownerid')) . '),'; } } } } if ($value2 != '') { foreach ($wheres2 as $where) { $where = explode('=', $where); $DestModuleName = Vtiger_Functions::getModuleName($where[2]); $ModuleInstance = CRMEntity::getInstance($DestModuleName); $tab_name_index = $ModuleInstance->tab_name_index; $index = $tab_name_index[$where[0]]; $sql_param = array($value1); $sql_ext = ''; $spacialCondition = ''; $sqlSpecial = ''; if ($ModuleNameID == $where[2] && $ID != 0 && $ID != '') { $sql_param[] = $ID; $sql_ext = 'AND ' . $index . ' <> ?'; } if ($DestModuleName == 'Leads') { $spacialCondition = ' AND `converted` = 0'; if ('vtiger_crmentity' == $where[0]) { $sqlSpecial = 'INNER JOIN vtiger_leaddetails ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid '; } } $result = $db->pquery("SELECT {$index} FROM {$where[0]} WHERE {$where[1]} = ? {$sql_ext};", $sql_param, true); for ($i = 0; $i < $db->num_rows($result); $i++) { $id = $db->query_result_raw($result, $i, $index); if (Vtiger_Functions::getCRMRecordType($id) == $DestModuleName) { $save_record2 = false; $result = $db->pquery("SELECT smownerid FROM vtiger_crmentity WHERE crmid = ?", array($id), true); $fieldlabel .= '<a target="_blank" href="index.php?module=' . $DestModuleName . '&view=Detail&record=' . $id . '">• ' . Vtiger_Functions::getCRMRecordLabel($id) . '</a> (' . Vtiger_Functions::getOwnerRecordLabel($db->query_result($result, 0, 'smownerid')) . '),'; } } } } if ($config['locksave'] == 0 && $ID == '') { $info = $config['info0']; } elseif (!$save_record1 && !$save_record2) { $type = 'error'; $save_record = false; $info = $config['info2']; } elseif (!$save_record1 || !$save_record2) { $type = 'error'; $save_record = false; $info = $config['info1']; } if (!$save_record || $info) { return array('save_record' => $save_record, 'type' => 0, 'info' => array('title' => vtranslate($info, 'DataAccess') . ' <br/ >' . trim($fieldlabel, ','), 'type' => $type, 'hide' => false)); } else { return array('save_record' => true); } }