Example #1
0
 /**
  * Function to get list view query for popup window
  * @param <String> $sourceModule Parent module
  * @param <String> $field parent fieldname
  * @param <Integer> $record parent id
  * @param <String> $listQuery
  * @return <String> Listview Query
  */
 public function getQueryByModuleField($sourceModule, $field, $record, $listQuery)
 {
     if ($sourceModule == 'Accounts' && $field == 'account_id' && $record || in_array($sourceModule, array('Campaigns', 'Products', 'Services', 'Emails', 'Potentials'))) {
         if ($sourceModule === 'Campaigns') {
             $condition = " vtiger_account.accountid NOT IN (SELECT accountid FROM vtiger_campaignaccountrel WHERE campaignid = '{$record}')";
         } elseif ($sourceModule === 'Products') {
             $condition = " vtiger_account.accountid NOT IN (SELECT crmid FROM vtiger_seproductsrel WHERE productid = '{$record}')";
         } elseif ($sourceModule === 'Services') {
             $condition = " vtiger_account.accountid NOT IN (SELECT relcrmid FROM vtiger_crmentityrel WHERE crmid = '{$record}' UNION SELECT crmid FROM vtiger_crmentityrel WHERE relcrmid = '{$record}') ";
         } elseif ($sourceModule === 'Emails') {
             $condition = ' vtiger_account.emailoptout = 0';
         } elseif ($sourceModule === 'Potentials') {
             $config = Settings_SalesProcesses_Module_Model::getConfig('potential');
             $currentUser = Users_Record_Model::getCurrentUserModel();
             $accessibleGroups = $currentUser->getAccessibleGroupForModule('Accounts');
             if ($config['add_potential'] && $accessibleGroups) {
                 $condition = " vtiger_crmentity.smownerid NOT IN (" . implode(',', array_keys($accessibleGroups)) . ")";
             } else {
                 return $listQuery;
             }
         } else {
             $condition = " vtiger_account.accountid != '{$record}'";
         }
         $position = stripos($listQuery, 'where');
         if ($position) {
             $overRideQuery = $listQuery . ' AND ' . $condition;
         } else {
             $overRideQuery = $listQuery . ' WHERE ' . $condition;
         }
         return $overRideQuery;
     }
 }
Example #2
0
 public function updateConfig(Vtiger_Request $request)
 {
     $param = $request->get('param');
     $moduleModel = Settings_SalesProcesses_Module_Model::getCleanInstance();
     $response = new Vtiger_Response();
     $response->setResult(array('success' => $moduleModel->setConfig($param), 'message' => vtranslate('LBL_SAVE_CONFIG', $request->getModule(false))));
     $response->emit();
 }
Example #3
0
 function getCalculations(Vtiger_Request $request)
 {
     $fromModule = $request->get('fromModule');
     $record = $request->get('record');
     $showtype = $request->get('showtype');
     $rqLimit = $request->get('limit');
     $db = PearDatabase::getInstance();
     $fields = ['id', 'name', 'calculationsstatus'];
     $limit = 10;
     $params = [];
     if (!empty($rqLimit)) {
         $limit = $rqLimit;
     }
     if ($fromModule == 'Accounts') {
         $fields[] = 'potentialid';
     } elseif ($fromModule == 'Potentials') {
         $fields[] = 'assigned_user_id';
     }
     $calculationConfig = Settings_SalesProcesses_Module_Model::getConfig('calculation');
     $calculationsStatus = $calculationConfig['calculationsstatus'];
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $module = 'Calculations';
     $instance = CRMEntity::getInstance($module);
     $securityParameter = $instance->getUserAccessConditionsQuerySR($module, $currentUser);
     $queryGenerator = new QueryGenerator($module, $currentUser);
     $queryGenerator->setFields($fields);
     $sql = $queryGenerator->getQuery();
     if ($securityParameter != '') {
         $sql .= $securityParameter;
     }
     $calculationsStatusSearch = implode("','", $calculationsStatus);
     $showtype = $request->get('showtype');
     if ($showtype == 'archive') {
         $sql .= " AND vtiger_calculations.calculationsstatus IN ('{$calculationsStatusSearch}')";
     } else {
         $sql .= " AND vtiger_calculations.calculationsstatus NOT IN ('{$calculationsStatusSearch}')";
     }
     if ($fromModule == 'Accounts') {
         $sql .= ' AND vtiger_calculations.relatedid = ?';
         $params[] = $record;
     } elseif ($fromModule == 'Potentials') {
         $sql .= ' AND vtiger_calculations.potentialid = ?';
         $params[] = $record;
     }
     $sql .= ' LIMIT ' . $limit;
     $result = $db->pquery($sql, $params);
     $returnData = array();
     for ($i = 0; $i < $db->num_rows($result); $i++) {
         $returnData[] = $db->query_result_rowdata($result, $i);
     }
     return $returnData;
 }
Example #4
0
 public function process(Vtiger_Request $request)
 {
     global $log;
     $log->debug("Entering Settings_SalesProcesses_Configuration_View::process() method ...");
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $config = Settings_SalesProcesses_Module_Model::getConfig();
     $viewer->assign('CONFIG', $config);
     $viewer->assign('CURRENTUSER', $currentUser);
     $viewer->assign('QUALIFIED_MODULE', $request->getModule(false));
     echo $viewer->view('Configuration.tpl', $request->getModule(false), true);
     $log->debug("Exiting Settings_SalesProcesses_Configuration_View::process() method ...");
 }
Example #5
0
 public function process(Vtiger_Request $request)
 {
     $log = vglobal('log');
     $log->debug('Start ' . __CLASS__ . ':' . __FUNCTION__);
     $qualifiedModule = $request->getModule(false);
     $moduleModel = Settings_SalesProcesses_Module_Model::getCleanInstance();
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $viewer = $this->getViewer($request);
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
     $viewer->assign('USER_MODEL', $currentUser);
     $viewer->assign('MODULE_MODEL', $moduleModel);
     $viewer->view('Index.tpl', $qualifiedModule);
     $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__);
 }
Example #6
0
 /**
  * Save date
  * @param <Int> $productsRelPotentials
  * @return true if saved, false otherwise
  */
 public function save(Vtiger_Request $request)
 {
     $response = new Vtiger_Response();
     //$request	= new Vtiger_Request($_REQUEST, $_REQUEST);
     $productsRelPotentials = $request->get('prods2pot');
     $moduleName = 'Settings:SalesProcesses';
     try {
         if (Settings_SalesProcesses_Module_Model::saveConfig($productsRelPotentials)) {
             $response->setResult(array('success' => true, 'message' => vtranslate('LBL_SAVE_CONFIG_OK', $moduleName)));
         } else {
             $response->setResult(array('success' => false, 'message' => vtranslate('LBL_SAVE_CONFIG_ERROR', $moduleName)));
         }
     } catch (Exception $e) {
         $response->setError($e->getCode(), $e->getMessage());
     }
     $response->emit();
 }
Example #7
0
 public function getData(Vtiger_Request $request, $widget)
 {
     $db = PearDatabase::getInstance();
     $fields = ['id', 'name', 'calculationsstatus', 'relatedid', 'hdnGrandTotal', 'assigned_user_id'];
     $limit = 10;
     $params = [];
     if (!empty($widget->get('limit'))) {
         $limit = $widget->get('limit');
     }
     $calculationConfig = Settings_SalesProcesses_Module_Model::getConfig('calculation');
     $calculationsStatus = $calculationConfig['calculationsstatus'];
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $module = 'Calculations';
     $instance = CRMEntity::getInstance($module);
     $securityParameter = $instance->getUserAccessConditionsQuerySR($module, $currentUser);
     $queryGenerator = new QueryGenerator($module, $currentUser);
     $queryGenerator->setFields($fields);
     $sql = $queryGenerator->getQuery();
     if ($securityParameter != '') {
         $sql .= $securityParameter;
     }
     if (!empty($calculationsStatus)) {
         $calculationsStatusSearch = implode("','", $calculationsStatus);
         $sql .= " AND vtiger_calculations.calculationsstatus NOT IN ('{$calculationsStatusSearch}')";
     }
     $showtype = $request->get('showtype');
     if ($showtype == 'common') {
         $shownersTable = Vtiger_SharedOwner_UIType::getShownerTable($module);
         $sql .= ' AND vtiger_crmentity.crmid IN (SELECT DISTINCT crmid FROM ' . $shownersTable . ' WHERE userid = ?';
     } else {
         $sql .= ' AND vtiger_crmentity.smownerid = ?';
     }
     $params[] = $currentUser->getId();
     $sql .= ' LIMIT ' . $limit;
     $result = $db->pquery($sql, $params);
     $returnData = array();
     for ($i = 0; $i < $db->num_rows($result); $i++) {
         $returnData[] = $db->query_result_rowdata($result, $i);
     }
     return $returnData;
 }
Example #8
0
 public function getData(Vtiger_Request $request, $widget)
 {
     $db = PearDatabase::getInstance();
     $fields = ['id', 'potentialname', 'sales_stage', 'related_to', 'assigned_user_id'];
     $limit = 10;
     $params = [];
     if (!empty($widget->get('limit'))) {
         $limit = $widget->get('limit');
     }
     $potentialConfig = Settings_SalesProcesses_Module_Model::getConfig('potential');
     $potentialSalesStage = $potentialConfig['salesstage'];
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $module = 'Potentials';
     $instance = CRMEntity::getInstance($module);
     $securityParameter = $instance->getUserAccessConditionsQuerySR($module, $currentUser);
     $queryGenerator = new QueryGenerator($module, $currentUser);
     $queryGenerator->setFields($fields);
     $sql = $queryGenerator->getQuery();
     if ($securityParameter != '') {
         $sql .= $securityParameter;
     }
     if (!empty($potentialSalesStage)) {
         $potentialSalesStageSearch = implode("','", $potentialSalesStage);
         $sql .= " AND vtiger_potential.sales_stage NOT IN ('{$potentialSalesStageSearch}')";
     }
     $showtype = $request->get('showtype');
     if ($showtype == 'common') {
         $sql .= ' AND FIND_IN_SET( ?, vtiger_crmentity.shownerid )';
     } else {
         $sql .= ' AND vtiger_crmentity.smownerid = ?';
     }
     $params[] = $currentUser->getId();
     $sql .= ' LIMIT ' . $limit;
     $result = $db->pquery($sql, $params);
     $returnData = array();
     for ($i = 0; $i < $db->num_rows($result); $i++) {
         $returnData[] = $db->query_result_rowdata($result, $i);
     }
     return $returnData;
 }
 public function getData(Vtiger_Request $request, $widget)
 {
     $db = PearDatabase::getInstance();
     $fields = ['id', 'assetname', 'dateinservice', 'parent_id'];
     $limit = 10;
     $params = [];
     if (!empty($widget->get('limit'))) {
         $limit = $widget->get('limit');
     }
     $assetConfig = Settings_SalesProcesses_Module_Model::getConfig('asset');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $module = 'Assets';
     $instance = CRMEntity::getInstance($module);
     $securityParameter = $instance->getUserAccessConditionsQuerySR($module, $currentUser);
     $queryGenerator = new QueryGenerator($module, $currentUser);
     $queryGenerator->setFields($fields);
     $sql = $queryGenerator->getQuery();
     if ($securityParameter != '') {
         $sql .= $securityParameter;
     }
     if (!empty($assetStatus)) {
         $assetStatus = implode("','", $assetConfig['assetstatus']);
         $sql .= " AND vtiger_assets.assetstatus NOT IN ('{$assetStatus}')";
     }
     $showtype = $request->get('showtype');
     if ($showtype == 'common') {
         $sql .= ' AND FIND_IN_SET( ?, vtiger_crmentity.shownerid )';
     } else {
         $sql .= ' AND vtiger_crmentity.smownerid = ?';
     }
     $sql .= ' AND vtiger_assets.pot_renewal = 0';
     $params[] = $currentUser->getId();
     $sql .= ' ORDER BY vtiger_assets.dateinservice ASC LIMIT ' . $limit;
     $result = $db->pquery($sql, $params);
     $returnData = array();
     for ($i = 0; $i < $db->num_rows($result); $i++) {
         $returnData[] = $db->query_result_rowdata($result, $i);
     }
     return $returnData;
 }
Example #10
0
 public function process(Vtiger_Request $request)
 {
     $searchValue = $request->get('search_value');
     $searchModule = $request->get('search_module');
     $potentialId = $request->get('potentialid');
     $parentRecordId = $request->get('parent_id');
     $parentModuleName = $request->get('parent_module');
     $relatedModule = $request->get('module');
     $searchModuleModel = Vtiger_Module_Model::getInstance($searchModule);
     if (($searchModule == 'Services' || $searchModule == 'Products') && Settings_SalesProcesses_Module_Model::checkRelatedToPotentialsLimit() && Settings_SalesProcesses_Module_Model::isLimitForModule('Quotes')) {
         $records = $this->searchRecord($searchValue, $searchModule, $potentialId);
     } else {
         $records = $searchModuleModel->searchRecord($searchValue, $parentRecordId, $parentModuleName, $relatedModule);
     }
     $result = array();
     foreach ($records as $moduleName => $recordModels) {
         foreach ($recordModels as $recordModel) {
             $result[] = array('label' => decode_html($recordModel->getName()), 'value' => decode_html($recordModel->getName()), 'id' => $recordModel->getId());
         }
     }
     $response = new Vtiger_Response();
     $response->setResult($result);
     $response->emit();
 }
Example #11
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     //src_module value is added to just to stop showing inactive products
     $request->set('src_module', $request->getModule());
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceModule = $request->get('src_module');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     $potentialId = $request->get('potentialid');
     $searchParams = $request->get('search_params');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     //Check whether the request is in multi select mode
     $multiSelectMode = $request->get('multi_select');
     if (empty($multiSelectMode)) {
         $multiSelectMode = false;
     }
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     $searchParmams = $request->get('search_params');
     if (empty($searchParmams)) {
         $searchParmams = array();
     }
     $transformedSearchParams = Vtiger_Util_Helper::transferListSearchParamsToFilterCondition($searchParmams, $moduleModel);
     $listViewModel->set('search_params', $transformedSearchParams);
     //To make smarty to get the details easily accesible
     foreach ($searchParmams as $fieldListGroup) {
         foreach ($fieldListGroup as $fieldSearchInfo) {
             $fieldSearchInfo['searchValue'] = $fieldSearchInfo[2];
             $fieldSearchInfo['fieldName'] = $fieldName = $fieldSearchInfo[0];
             $searchParmams[$fieldName] = $fieldSearchInfo;
         }
     }
     if (Settings_SalesProcesses_Module_Model::checkRelatedToPotentialsLimit() && Settings_SalesProcesses_Module_Model::isLimitForModule($sourceModule)) {
         if ($potentialId == '') {
             $potentialId = -1;
         }
         $listViewModel->set('potential_id', $potentialId);
         $viewer->assign('INVENTORY_LIMITED_FROM_POTENTIALS', true);
     }
     $productModel = Vtiger_Module_Model::getInstance('Products');
     if (!$this->listViewHeaders) {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
     }
     if (!$this->listViewEntries && $productModel->isActive()) {
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     if (!$productModel->isActive()) {
         $this->listViewEntries = array();
         $viewer->assign('LBL_MODULE_DISABLED', true);
     }
     foreach ($this->listViewEntries as $key => $listViewEntry) {
         $productId = $listViewEntry->getId();
         $subProducts = $listViewModel->getSubProducts($productId);
         if ($subProducts) {
             $listViewEntry->set('subProducts', $subProducts);
         }
     }
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('RELATED_MODULE', $moduleName);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     $viewer->assign('POPUPTYPE', vglobal('popupType'));
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('TARGET_MODULE', $moduleName);
     $viewer->assign('MODULE', $request->getModule());
     $viewer->assign('GETURL', 'getTaxesURL');
     $viewer->assign('VIEW', 'ProductsPopup');
     $viewer->assign('SEARCH_DETAILS', $searchParmams);
 }
Example #12
0
 /**
  * Function to get the list view entries
  * @param Vtiger_Paging_Model $pagingModel
  * @return <Array> - Associative array of record id mapped to Vtiger_Record_Model instance.
  */
 public function getListViewEntries($pagingModel)
 {
     $db = PearDatabase::getInstance();
     $moduleName = $this->getModule()->get('name');
     $moduleFocus = CRMEntity::getInstance($moduleName);
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $queryGenerator = $this->get('query_generator');
     $listViewContoller = $this->get('listview_controller');
     $searchParams = $this->get('search_params');
     if (empty($searchParams)) {
         $searchParams = array();
     }
     $glue = "";
     if (count($queryGenerator->getWhereFields()) > 0 && count($searchParams) > 0) {
         $glue = QueryGenerator::$AND;
     }
     $queryGenerator->parseAdvFilterList($searchParams, $glue);
     $searchKey = $this->get('search_key');
     $searchValue = $this->get('search_value');
     $operator = $this->get('operator');
     if (!empty($searchKey)) {
         $queryGenerator->addUserSearchConditions(array('search_field' => $searchKey, 'search_text' => $searchValue, 'operator' => $operator));
     }
     $orderBy = $this->getForSql('orderby');
     $sortOrder = $this->getForSql('sortorder');
     //List view will be displayed on recently created/modified records
     if (empty($orderBy) && empty($sortOrder) && $moduleName != "Users") {
         $orderBy = 'modifiedtime';
         $sortOrder = 'DESC';
     }
     if (!empty($orderBy)) {
         $columnFieldMapping = $moduleModel->getColumnFieldMapping();
         $orderByFieldName = $columnFieldMapping[$orderBy];
         $orderByFieldModel = $moduleModel->getField($orderByFieldName);
         if ($orderByFieldModel && $orderByFieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) {
             //IF it is reference add it in the where fields so that from clause will be having join of the table
             $queryGenerator = $this->get('query_generator');
             $queryGenerator->addWhereField($orderByFieldName);
         }
     }
     if (!empty($orderBy) && $orderBy === 'smownerid') {
         $fieldModel = Vtiger_Field_Model::getInstance('assigned_user_id', $moduleModel);
         if ($fieldModel->getFieldDataType() == 'owner') {
             $orderBy = 'COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname)';
         }
     }
     $listQuery = $this->getQuery();
     $request = new Vtiger_Request($_REQUEST, $_REQUEST);
     $potential_id = $this->get('potential_id');
     if (Settings_SalesProcesses_Module_Model::checkRelatedToPotentialsLimit() && Settings_SalesProcesses_Module_Model::isLimitForModule($request->get('module'))) {
         if (empty($potential_id)) {
             $potential_id = $this->get('potentialid');
             if ($potential_id == '') {
                 $potential_id = -1;
             }
         }
         $newListQuery = '';
         $explodedListQuery = explode('INNER JOIN', $listQuery);
         foreach ($explodedListQuery as $key => $value) {
             $newListQuery .= 'INNER JOIN' . $value;
             if ($key == 0 && $moduleName == 'Products') {
                 $newListQuery .= ' INNER JOIN vtiger_seproductsrel AS seproductsrel ON vtiger_products.productid = seproductsrel.productid ';
             } elseif ($key == 0 && $moduleName == 'Services') {
                 $newListQuery .= ' INNER JOIN vtiger_crmentityrel ON (vtiger_crmentityrel.relcrmid = vtiger_service.serviceid OR vtiger_crmentityrel.crmid = vtiger_service.serviceid) ';
             }
         }
         $newListQuery = trim($newListQuery, 'INNER JOIN');
         if ($moduleName == 'Products') {
             $newListQuery .= " AND seproductsrel.crmid = '{$potential_id}' ";
         } elseif ($moduleName == 'Services') {
             $newListQuery .= " AND ( (vtiger_crmentityrel.crmid = '{$potential_id}' AND module = 'Potentials') OR (vtiger_crmentityrel.relcrmid = '{$potential_id}' AND relmodule = 'Potentials')) ";
         }
         $listQuery = $newListQuery;
     }
     if ($this->get('subProductsPopup')) {
         $listQuery = $this->addSubProductsQuery($listQuery);
     }
     $sourceModule = $this->get('src_module');
     $sourceField = $this->get('src_field');
     if (!empty($sourceModule)) {
         if (method_exists($moduleModel, 'getQueryByModuleField')) {
             $overrideQuery = $moduleModel->getQueryByModuleField($sourceModule, $sourceField, $this->get('src_record'), $listQuery);
             if (!empty($overrideQuery)) {
                 $listQuery = $overrideQuery;
             }
         }
     }
     $startIndex = $pagingModel->getStartIndex();
     $pageLimit = $pagingModel->getPageLimit();
     if (!empty($orderBy)) {
         if ($orderByFieldModel && $orderByFieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) {
             $referenceModules = $orderByFieldModel->getReferenceList();
             $referenceNameFieldOrderBy = array();
             foreach ($referenceModules as $referenceModuleName) {
                 $referenceModuleModel = Vtiger_Module_Model::getInstance($referenceModuleName);
                 $referenceNameFields = $referenceModuleModel->getNameFields();
                 $columnList = array();
                 foreach ($referenceNameFields as $nameField) {
                     $fieldModel = $referenceModuleModel->getField($nameField);
                     $columnList[] = $fieldModel->get('table') . $orderByFieldModel->getName() . '.' . $fieldModel->get('column');
                 }
                 if (count($columnList) > 1) {
                     $referenceNameFieldOrderBy[] = getSqlForNameInDisplayFormat(array('first_name' => $columnList[0], 'last_name' => $columnList[1]), 'Users') . ' ' . $sortOrder;
                 } else {
                     $referenceNameFieldOrderBy[] = implode('', $columnList) . ' ' . $sortOrder;
                 }
             }
             $listQuery .= ' ORDER BY ' . implode(',', $referenceNameFieldOrderBy);
         } else {
             $listQuery .= ' ORDER BY ' . $orderBy . ' ' . $sortOrder;
         }
     }
     $viewid = ListViewSession::getCurrentView($moduleName);
     if (empty($viewid)) {
         $viewid = $pagingModel->get('viewid');
     }
     $_SESSION['lvs'][$moduleName][$viewid]['start'] = $pagingModel->get('page');
     ListViewSession::setSessionQuery($moduleName, $listQuery, $viewid);
     //For Products popup in Price Book Related list
     if ($sourceModule !== 'PriceBooks' && $sourceField !== 'priceBookRelatedList') {
         $listQuery .= " LIMIT {$startIndex}," . ($pageLimit + 1);
     }
     $listResult = $db->pquery($listQuery, array());
     $listViewRecordModels = array();
     $listViewEntries = $listViewContoller->getListViewRecords($moduleFocus, $moduleName, $listResult);
     $pagingModel->calculatePageRange($listViewEntries);
     if ($db->num_rows($listResult) > $pageLimit && $sourceModule !== 'PriceBooks' && $sourceField !== 'priceBookRelatedList') {
         array_pop($listViewEntries);
         $pagingModel->set('nextPageExists', true);
     } else {
         $pagingModel->set('nextPageExists', false);
     }
     $index = 0;
     foreach ($listViewEntries as $recordId => $record) {
         $rawData = $db->query_result_rowdata($listResult, $index++);
         $record['id'] = $recordId;
         $listViewRecordModels[$recordId] = $moduleModel->getRecordFromArray($record, $rawData);
         $listViewRecordModels[$recordId]->lockEditView = Users_Privileges_Model::checkLockEdit($moduleName, $recordId);
         $listViewRecordModels[$recordId]->isPermittedToEditView = Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId);
         $listViewRecordModels[$recordId]->colorList = Settings_DataAccess_Module_Model::executeColorListHandlers($moduleName, $recordId, $listViewRecordModels[$recordId]);
     }
     return $listViewRecordModels;
 }
Example #13
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     $moduleName = $this->getModule($request);
     $cvId = $request->get('cvid');
     $pageNumber = $request->get('page');
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     $sourceModule = $request->get('src_module');
     $sourceField = $request->get('src_field');
     $sourceRecord = $request->get('src_record');
     $searchKey = $request->get('search_key');
     $searchValue = $request->get('search_value');
     $currencyId = $request->get('currency_id');
     $relatedParentModule = $request->get('related_parent_module');
     $relatedParentId = $request->get('related_parent_id');
     //To handle special operation when selecting record from Popup
     $getUrl = $request->get('get_url');
     //Check whether the request is in multi select mode
     $multiSelectMode = $request->get('multi_select');
     if (empty($multiSelectMode)) {
         $multiSelectMode = false;
     }
     if (empty($cvId)) {
         $cvId = '0';
     }
     if (empty($pageNumber)) {
         $pageNumber = '1';
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (vglobal('popupAjax')) {
         $pagingModel->set('noLimit', true);
     }
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel);
     $isRecordExists = Vtiger_Util_Helper::checkRecordExistance($relatedParentId);
     if ($isRecordExists || $isRecordExists === NULL) {
         $relatedParentModule = '';
         $relatedParentId = '';
     }
     if (!empty($relatedParentModule) && !empty($relatedParentId)) {
         $parentRecordModel = Vtiger_Record_Model::getInstanceById($relatedParentId, $relatedParentModule);
         $listViewModel = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $moduleName, $label);
     } else {
         $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
     }
     if (empty($orderBy) && empty($sortOrder)) {
         $moduleInstance = CRMEntity::getInstance($moduleName);
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if (!empty($orderBy)) {
         $listViewModel->set('orderby', $orderBy);
         $listViewModel->set('sortorder', $sortOrder);
     }
     if (!empty($sourceModule)) {
         $listViewModel->set('src_module', $sourceModule);
         $listViewModel->set('src_field', $sourceField);
         $listViewModel->set('src_record', $sourceRecord);
     }
     if (!empty($searchKey) && !empty($searchValue)) {
         $listViewModel->set('search_key', $searchKey);
         $listViewModel->set('search_value', $searchValue);
     }
     $searchParmams = $request->get('search_params');
     if (empty($searchParmams)) {
         $searchParmams = array();
     }
     $transformedSearchParams = Vtiger_Util_Helper::transferListSearchParamsToFilterCondition($searchParmams, $moduleModel);
     $listViewModel->set('search_params', $transformedSearchParams);
     //To make smarty to get the details easily accesible
     foreach ($searchParmams as $fieldListGroup) {
         foreach ($fieldListGroup as $fieldSearchInfo) {
             $fieldSearchInfo['searchValue'] = $fieldSearchInfo[2];
             $fieldSearchInfo['fieldName'] = $fieldName = $fieldSearchInfo[0];
             $searchParmams[$fieldName] = $fieldSearchInfo;
         }
     }
     // Limit the choice of products/services only to the ones related to currently selected Opportunity - second step.
     if (Settings_SalesProcesses_Module_Model::checkRelatedToPotentialsLimit($sourceModule)) {
         $salesProcessId = $request->get('salesprocessid');
         if (empty($salesProcessId)) {
             $salesProcessId = -1;
         }
         $listViewModel->set('salesprocessid', $salesProcessId);
         $viewer->assign('INVENTORY_LIMITED_FROM_POTENTIALS', true);
     }
     if (!empty($relatedParentModule) && !empty($relatedParentId)) {
         $this->listViewHeaders = $listViewModel->getHeaders();
         $models = $listViewModel->getEntries($pagingModel);
         $noOfEntries = count($models);
         foreach ($models as $recordId => $recordModel) {
             foreach ($this->listViewHeaders as $fieldName => $fieldModel) {
                 $recordModel->set($fieldName, $recordModel->getDisplayValue($fieldName));
             }
             $models[$recordId] = $recordModel;
         }
         $this->listViewEntries = $models;
         if (count($this->listViewEntries) > 0) {
             $parent_related_records = true;
         }
     } else {
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     // If there are no related records with parent module then, we should show all the records
     if (!$parent_related_records && !empty($relatedParentModule) && !empty($relatedParentId)) {
         $relatedParentModule = null;
         $relatedParentId = null;
         $listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName, $sourceModule);
         $listViewModel->set('search_params', $transformedSearchParams);
         if (!empty($orderBy)) {
             $listViewModel->set('orderby', $orderBy);
             $listViewModel->set('sortorder', $sortOrder);
         }
         if (!empty($sourceModule)) {
             $listViewModel->set('src_module', $sourceModule);
             $listViewModel->set('src_field', $sourceField);
             $listViewModel->set('src_record', $sourceRecord);
         }
         if (!empty($searchKey) && !empty($searchValue)) {
             $listViewModel->set('search_key', $searchKey);
             $listViewModel->set('search_value', $searchValue);
         }
         $this->listViewHeaders = $listViewModel->getListViewHeaders();
         $this->listViewEntries = $listViewModel->getListViewEntries($pagingModel);
     }
     // End
     $noOfEntries = count($this->listViewEntries);
     if (empty($sortOrder)) {
         $sortOrder = "ASC";
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "downArrowSmall.png";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "upArrowSmall.png";
     }
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('RELATED_MODULE', $moduleName);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('SOURCE_MODULE', $sourceModule);
     $viewer->assign('SOURCE_FIELD', $sourceField);
     $viewer->assign('SOURCE_RECORD', $sourceRecord);
     $viewer->assign('RELATED_PARENT_MODULE', $relatedParentModule);
     $viewer->assign('RELATED_PARENT_ID', $relatedParentId);
     $viewer->assign('SEARCH_KEY', $searchKey);
     $viewer->assign('SEARCH_VALUE', $searchValue);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('GETURL', $getUrl);
     $viewer->assign('CURRENCY_ID', $currencyId);
     $viewer->assign('POPUPTYPE', vglobal('popupType'));
     $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('PAGING_MODEL', $pagingModel);
     $viewer->assign('PAGE_NUMBER', $pageNumber);
     $viewer->assign('LISTVIEW_ENTRIES_COUNT', $noOfEntries);
     $viewer->assign('LISTVIEW_HEADERS', $this->listViewHeaders);
     $viewer->assign('LISTVIEW_ENTRIES', $this->listViewEntries);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         if (!$this->listViewCount) {
             $this->listViewCount = $listViewModel->getListViewCount();
         }
         $totalCount = $this->listViewCount;
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('LISTVIEW_COUNT', $totalCount);
     }
     $viewer->assign('MULTI_SELECT', $multiSelectMode);
     $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('SEARCH_DETAILS', $searchParmams);
 }