public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $page = $request->get('page'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', Reports_Detail_View::REPORT_LIMIT); if ($mode === 'save') { $reportModel->saveAdvancedFilters(); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; } else { if ($mode === 'generate') { $reportData = $reportModel->generateData($pagingModel); $data = $reportData['data']; } } $calculation = $reportModel->generateCalculationData(); $viewer->assign('PRIMARY_MODULE', $reportModel->getPrimaryModule()); $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); $viewer->assign('NEW_COUNT', $reportData['count']); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); $viewer->view('ReportContents.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $secondaryModules = $reportModel->getSecondaryModules(); if (empty($secondaryModules)) { $viewer->assign('CLICK_THROUGH', true); } $dataFields = $request->get('datafields', 'count(*)'); if (is_string($dataFields)) { $dataFields = array($dataFields); } $reportModel->set('reporttypedata', Zend_Json::encode(array('type' => $request->get('charttype', 'pieChart'), 'groupbyfield' => $request->get('groupbyfield'), 'datafields' => $dataFields))); $reportModel->set('reporttype', 'chart'); $reportModel->save(); $reportChartModel = Reports_Chart_Model::getInstanceById($reportModel); $data = $reportChartModel->getData(); $viewer->assign('CHART_TYPE', $reportChartModel->getChartType()); $viewer->assign('DATA', json_encode($data, JSON_HEX_APOS)); $viewer->assign('MODULE', $moduleName); $viewer->view('ChartReportContents.tpl', $moduleName); }
/** * Function to get related Records count from this relation * @param <Vtiger_Request> $request * @return <Number> Number of record from this relation */ public function getRecordsCount(Vtiger_Request $request) { $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $count = $reportModel->getReportsCount($countQuery); $response = new Vtiger_Response(); $response->setResult($count); $response->emit(); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $response = new Vtiger_Response(); $recordModel = Reports_Record_Model::getInstanceById($recordId, $moduleName); if (!$recordModel->isDefault() && $recordModel->isEditable()) { $recordModel->delete(); $response->setResult(array(vtranslate('LBL_REPORTS_DELETED_SUCCESSFULLY', $parentModule))); } else { $response->setError(vtranslate('LBL_REPORT_DELETE_DENIED', $moduleName)); } $response->emit(); }
/** * Function displays the report in printable format * @param Vtiger_Request $request */ function GetPrintReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $recordId = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($recordId); $printData = $reportModel->getReportPrint(); $viewer->assign('REPORT_NAME', $reportModel->getName()); $viewer->assign('PRINT_DATA', $printData['data'][0]); $viewer->assign('TOTAL', $printData['total']); $viewer->assign('MODULE', $moduleName); $viewer->assign('ROW', $printData['data'][1]); $viewer->view('PrintReport.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $page = $request->get('page'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', Reports_Detail_View::REPORT_LIMIT); if ($mode === 'save') { $reportModel->saveAdvancedFilters(); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; } else { if ($mode === 'generate') { $reportData = $reportModel->generateData($pagingModel); $data = $reportData['data']; } } $calculation = $reportModel->generateCalculationData(); /*убираем ненужные столбцы*/ $columns = array('SUM' => false, 'AVG' => false, 'MIN' => false, 'MAX' => false); foreach ($calculation as $metriks) { foreach ($metriks as $index => $metrik) { $postfix = substr($index, -3, 3); if ($columns[$postfix]) { continue; } if (!empty($metrik)) { $columns[$postfix] = true; } } } $viewer->assign('COLUMNS', $columns); /*end*/ $viewer->assign('PRIMARY_MODULE', $reportModel->getPrimaryModule()); $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); $viewer->assign('NEW_COUNT', $reportData['count']); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); $viewer->view('ReportContents.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $parentModule = 'Reports'; $reportIdsList = Reports_Record_Model::getRecordsListFromRequest($request); $folderId = $request->get('folderid'); if (!empty($reportIdsList)) { foreach ($reportIdsList as $reportId) { $reportModel = Reports_Record_Model::getInstanceById($reportId); if (!$reportModel->isDefault() && $reportModel->isEditable()) { $reportModel->move($folderId); } else { $reportsMoveDenied[] = vtranslate($reportModel->getName(), $parentModule); } } } $response = new Vtiger_Response(); if (empty($reportsMoveDenied)) { $response->setResult(array(vtranslate('LBL_REPORTS_MOVED_SUCCESSFULLY', $parentModule))); } else { $response->setError($reportsMoveDenied, vtranslate('LBL_DENIED_REPORTS', $parentModule)); } $response->emit(); }
public function process(Vtiger_Request $request) { $parentModule = 'Reports'; $recordIds = Reports_Record_Model::getRecordsListFromRequest($request); $reportsDeleteDenied = array(); foreach ($recordIds as $recordId) { $recordModel = Reports_Record_Model::getInstanceById($recordId); if (!$recordModel->isDefault() && $recordModel->isEditable()) { $success = $recordModel->delete(); if (!$success) { $reportsDeleteDenied[] = vtranslate($recordModel->getName(), $parentModule); } } else { $reportsDeleteDenied[] = vtranslate($recordModel->getName(), $parentModule); } } $response = new Vtiger_Response(); if (empty($reportsDeleteDenied)) { $response->setResult(array(vtranslate('LBL_REPORTS_DELETED_SUCCESSFULLY', $parentModule))); } else { $response->setError($reportsDeleteDenied, vtranslate('LBL_DENIED_REPORTS', $parentModule)); } $response->emit(); }
public function sendEmail() { require_once 'vtlib/Vtiger/Mailer.php'; $vtigerMailer = new Vtiger_Mailer(); $recipientEmails = $this->getRecipientEmails(); Vtiger_Utils::ModuleLog('ScheduleReprots', $recipientEmails); foreach ($recipientEmails as $name => $email) { $vtigerMailer->AddAddress($email, $name); } vimport('~modules/Report/models/Record.php'); $reportRecordModel = Reports_Record_Model::getInstanceById($this->get('reportid')); $currentTime = date('Y-m-d.H.i.s'); Vtiger_Utils::ModuleLog('ScheduleReprots Send Mail Start ::', $currentTime); $reportname = decode_html($reportRecordModel->getName()); $subject = $reportname; Vtiger_Utils::ModuleLog('ScheduleReprot Name ::', $reportname); $vtigerMailer->Subject = $subject; $vtigerMailer->Body = $this->getEmailContent($reportRecordModel); $vtigerMailer->IsHTML(); $baseFileName = $reportname . '__' . $currentTime; $oReportRun = ReportRun::getInstance($this->get('reportid')); $reportFormat = $this->scheduledFormat; $attachments = array(); if ($reportFormat == 'CSV') { $fileName = $baseFileName . '.csv'; $filePath = 'storage/' . $fileName; $attachments[$fileName] = $filePath; $oReportRun->writeReportToCSVFile($filePath); } foreach ($attachments as $attachmentName => $path) { $vtigerMailer->AddAttachment($path, decode_html($attachmentName)); } //Added cc to account owner $accountOwnerId = Users::getActiveAdminId(); $vtigerMailer->AddCC(getUserEmail($accountOwnerId), getUserFullName($accountOwnerId)); $status = $vtigerMailer->Send(true); foreach ($attachments as $attachmentName => $path) { unlink($path); } return $status; }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportChartModel = Reports_Chart_Model::getInstanceById($reportModel); $secondaryModules = $reportModel->getSecondaryModules(); if (empty($secondaryModules)) { $viewer->assign('CLICK_THROUGH', true); } $viewer->assign('ADVANCED_FILTERS', $request->get('advanced_filter')); $viewer->assign('PRIMARY_MODULE_FIELDS', $reportModel->getPrimaryModuleFields()); $viewer->assign('SECONDARY_MODULE_FIELDS', $reportModel->getSecondaryModuleFields()); $viewer->assign('CALCULATION_FIELDS', $reportModel->getModuleCalculationFieldsForReport()); $data = $reportChartModel->getData(); $viewer->assign('CHART_TYPE', $reportChartModel->getChartType()); $viewer->assign('DATA', json_encode($data, JSON_HEX_APOS)); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('RECORD_ID', $record); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('SECONDARY_MODULES', $secondaryModules); $viewer->assign('MODULE', $moduleName); $viewer->view('ChartReportContents.tpl', $moduleName); }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); $data = $this->reportData; $calculation = $this->calculationFields; if (empty($data)) { $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportType = $reportModel->get('reporttype'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; $calculation = $reportModel->getReportCalulationData(); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $this->count = $reportModel->getReportsCount($countQuery); } $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('COUNT', $this->count); $viewer->assign('MODULE', $moduleName); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }
public function deleteRaports() { global $log, $adb; $log->debug("Entering VT620_to_YT::deleteRaports() method ..."); $restrictedRaports = array('Contacts by Accounts', 'Contacts without Accounts', 'Contacts by Potentials', 'Lead by Source', 'Lead Status Report', 'Potential Pipeline', 'Closed Potentials', 'Last Month Activities', 'This Month Activities', 'Tickets by Products', 'Tickets by Priority', 'Open Tickets', 'Product Details', 'Products by Contacts', 'Open Quotes', 'Quotes Detailed Report', 'PurchaseOrder by Contacts', 'PurchaseOrder Detailed Report', 'Invoice Detailed Report', 'SalesOrder Detailed Report', 'Campaign Expectations and Actuals', 'Contacts Email Report', 'Accounts Email Report', 'Leads Email Report', 'Vendors Email Report'); $sql = "SELECT * FROM `vtiger_report` WHERE reportname IN (" . generateQuestionMarks($restrictedRaports) . ")"; $result = $adb->pquery($sql, $restrictedRaports); $num = $adb->num_rows($result); $moduleModel = Vtiger_Module_Model::getInstance('Reports'); for ($i = 0; $i < $num; $i++) { $reportId = $adb->query_result($result, $i, "reportid"); $recordModel = Reports_Record_Model::getInstanceById($reportId, 'Reports'); $recordModel->delete(); } $log->debug("Exiting VT620_to_YT::deleteRaports() method ..."); }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); $data = $this->reportData; $calculation = $this->calculationFields; if (empty($data)) { $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $data = $reportModel->getReportData($pagingModel); $calculation = $reportModel->getReportCalulationData(); } $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); //$data = $this->reportData; //TODO $calculation = $this->calculationFields; //if(empty($data)){ $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportType = $reportModel->get('reporttype'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; $dataRaw = $reportData['data_raw']; $calculation = $reportModel->getReportCalulationData(); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $this->count = $reportModel->getReportsCount($countQuery); //} /*готовим данные в нужный нам формат для новой таблицы*/ /*получим поле для группировки*/ global $adb; $reportRun = ReportRun::getInstance($record); $fieldRawArr = $reportRun->getGroupingList(); foreach ($fieldRawArr as $value) { $fieldRaw = explode('_', $value, 2); break; } $groupModule = str_replace('`', '', $fieldRaw[0]); $groupLabel = explode(' ', $fieldRaw[1], 2); $groupLabel = str_replace('`', '', $groupLabel[0]); //это системное имя, нужен перевод $fieldInfo = getFieldByReportLabel($groupModule, $groupLabel); $fieldType = null; if (!empty($fieldInfo)) { $field = WebserviceField::fromArray($adb, $fieldInfo); $fieldType = $field->getFieldDataType(); } if (!empty($fieldInfo)) { $translatedLabel = getTranslatedString($field->getFieldLabelKey(), $groupModule); } else { $translatedLabel = getTranslatedString($groupLabel, $groupModule); $translatedLabel = str_replace("_", " ", $translatedLabel); } $groupLabel = $translatedLabel; /*STRING TRANSLATION starts TODO*/ /*$moduleLabel =''; if(in_array($module,$modules_selected)) $moduleLabel = getTranslatedString($module,$module); if(empty($translatedLabel)) { $translatedLabel = getTranslatedString(str_replace('_', " ", $fld->name), $module); }*/ /*if(!empty($this->secondarymodule)) { if($moduleLabel != '') { $headerLabel = $moduleLabel." ". $translatedLabel; } }*/ /*формируем нужный массив*/ $dataGrouped = array(); foreach ($data as $index => $row) { $groupIndex = $row[$groupLabel]; if (!isset($dataGrouped[$groupIndex])) { $dataGrouped[$groupIndex] = array('rows' => array(), 'summary' => array()); } $dataGrouped[$groupIndex]['rows'][] = $row; foreach ($row as $reportField => $value) { $dataRawVal = explode('::', $dataRaw[$index][$reportField]); $dataRawType = empty($dataRawVal[1]) ? 'undefined' : $dataRawVal[1]; $dataRawVal = $dataRawVal[0]; if (!isset($dataGrouped[$groupIndex]['summary'][$reportField])) { if ($dataRawType == 'currency') { $dataRawVal = $dataRawVal + 0; } if (empty($dataRawType)) { $dataRawVal = (string) $dataRawVal; } $dataGrouped[$groupIndex]['summary'][$reportField] = $dataRawVal; } elseif ($dataRawType == 'currency') { /*можно позже добавить другие типы данных*/ $summed = $dataGrouped[$groupIndex]['summary'][$reportField] + $dataRawVal; $dataGrouped[$groupIndex]['summary'][$reportField] = $summed; /*todo переделать в пользовательский формат*/ } } } /*end*/ /*убираем ненужные столбцы*/ $columns = array('SUM' => false, 'AVG' => false, 'MIN' => false, 'MAX' => false); foreach ($calculation as $metriks) { foreach ($metriks as $index => $metrik) { $postfix = substr($index, -3, 3); if ($columns[$postfix]) { continue; } if (!empty($metrik)) { $columns[$postfix] = true; } } } $viewer->assign('COLUMNS', $columns); /*end*/ $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('DATAGROUPED', $dataGrouped); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('COUNT', $this->count); $viewer->assign('MODULE', $moduleName); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }