Ejemplo n.º 1
0
 /**
  * Function returns related records
  * @param Vtiger_Request $request
  * @return <type>
  */
 function showRelatedList(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $relatedModuleName = $request->get('relatedModule');
     $parentId = $request->get('record');
     $label = $request->get('tab_label');
     if ($relatedModuleName == 'OSSPasswords') {
         return parent::showRelatedList($request);
     }
     $requestedPage = $request->get('page');
     if (empty($requestedPage)) {
         $requestedPage = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $requestedPage);
     $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $label);
     $orderBy = $request->get('orderby');
     $sortOrder = $request->get('sortorder');
     if (empty($orderBy) && empty($sortOrder) && $request->get('relatedModule')) {
         $moduleInstance = CRMEntity::getInstance($request->get('relatedModule'));
         $orderBy = $moduleInstance->default_order_by;
         $sortOrder = $moduleInstance->default_sort_order;
     }
     if ($sortOrder == "ASC") {
         $nextSortOrder = "DESC";
         $sortImage = "glyphicon glyphicon-chevron-down";
     } else {
         $nextSortOrder = "ASC";
         $sortImage = "glyphicon glyphicon-chevron-up";
     }
     if (!empty($orderBy)) {
         $relationListView->set('orderby', $orderBy);
         $relationListView->set('sortorder', $sortOrder);
     }
     $models = $relationListView->getEntries($pagingModel);
     $links = $relationListView->getLinks();
     $header = $relationListView->getHeaders();
     $noOfEntries = count($models);
     if ($relatedModuleName == 'PriceBooks') {
         foreach ($models as $recordId => $recorModel) {
             $productIdsList[$parentId] = $parentId;
             $relatedRecordCurrencyId = $recorModel->get('currency_id');
             $parentModuleModel = $parentRecordModel->getModule();
             $unitPricesList = $parentModuleModel->getPricesForProducts($relatedRecordCurrencyId, $productIdsList);
             $recorModel->set('unit_price', $unitPricesList[$parentId]);
         }
     }
     $relationModel = $relationListView->getRelationModel();
     $relationField = $relationModel->getRelationField();
     $viewer = $this->getViewer($request);
     $viewer->assign('RELATED_RECORDS', $models);
     $viewer->assign('PARENT_RECORD', $parentRecordModel);
     $viewer->assign('RELATED_LIST_LINKS', $links);
     $viewer->assign('RELATED_HEADERS', $header);
     $viewer->assign('RELATED_MODULE', $relationModel->getRelationModuleModel());
     $viewer->assign('RELATED_ENTIRES_COUNT', $noOfEntries);
     $viewer->assign('RELATION_FIELD', $relationField);
     if (AppConfig::performance('LISTVIEW_COMPUTE_PAGE_COUNT')) {
         $totalCount = $relationListView->getRelatedEntriesCount();
         $pageLimit = $pagingModel->getPageLimit();
         $pageCount = ceil((int) $totalCount / (int) $pageLimit);
         if ($pageCount == 0) {
             $pageCount = 1;
         }
         $viewer->assign('PAGE_COUNT', $pageCount);
         $viewer->assign('TOTAL_ENTRIES', $totalCount);
         $viewer->assign('PERFORMANCE', true);
     }
     $viewer->assign('IS_EDITABLE', $relationModel->isEditable());
     $viewer->assign('IS_DELETABLE', $relationModel->isDeletable());
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('PAGING', $pagingModel);
     $viewer->assign('ORDER_BY', $orderBy);
     $viewer->assign('SORT_ORDER', $sortOrder);
     $viewer->assign('NEXT_SORT_ORDER', $nextSortOrder);
     $viewer->assign('SORT_IMAGE', $sortImage);
     $viewer->assign('COLUMN_NAME', $orderBy);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     return $viewer->view('RelatedList.tpl', $moduleName, 'true');
 }