示例#1
1
 public function populateTo($request)
 {
     $viewer = $this->getViewer($request);
     $inventoryRecordId = $request->get('record');
     $recordModel = Vtiger_Record_Model::getInstanceById($inventoryRecordId, $request->getModule());
     $inventoryModule = $recordModel->getModule();
     $inventotyfields = $inventoryModule->getFields();
     $toEmailConsiderableFields = array('contact_id', 'account_id', 'vendor_id');
     $db = PearDatabase::getInstance();
     $to = array();
     $to_info = array();
     $toMailNamesList = array();
     foreach ($toEmailConsiderableFields as $fieldName) {
         if (!array_key_exists($fieldName, $inventotyfields)) {
             continue;
         }
         $fieldModel = $inventotyfields[$fieldName];
         if (!$fieldModel->isViewable()) {
             continue;
         }
         $fieldValue = $recordModel->get($fieldName);
         if (empty($fieldValue)) {
             continue;
         }
         $referenceList = $fieldModel->getReferenceList();
         $referenceModule = $referenceList[0];
         $fieldLabel = Vtiger_Util_Helper::getLabel($fieldValue);
         $referenceModuleModel = Vtiger_Module_Model::getInstance($referenceModule);
         $emailFields = $referenceModuleModel->getFieldsByType('email');
         if (count($emailFields) <= 0) {
             continue;
         }
         $current_user = Users_Record_Model::getCurrentUserModel();
         $queryGenerator = new QueryGenerator($referenceModule, $current_user);
         $queryGenerator->setFields(array_keys($emailFields));
         $query = $queryGenerator->getQuery();
         $query .= ' AND crmid = ' . $fieldValue;
         $result = $db->pquery($query, array());
         $num_rows = $db->num_rows($result);
         if ($num_rows <= 0) {
             continue;
         }
         foreach ($emailFields as $fieldName => $emailFieldModel) {
             $emailValue = $db->query_result($result, 0, $fieldName);
             if (!empty($emailValue)) {
                 $to[] = $emailValue;
                 $to_info[$fieldValue][] = $emailValue;
                 $toMailNamesList[$fieldValue][] = array('label' => $fieldLabel, 'value' => $emailValue);
                 break;
             }
         }
         if (!empty($to)) {
             break;
         }
     }
     $viewer->assign('TO', $to);
     $viewer->assign('TOMAIL_NAMES_LIST', $toMailNamesList);
     $viewer->assign('TOMAIL_INFO', $to_info);
 }
示例#2
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $recordModel = $this->record;
     if (!$recordModel) {
         if (!empty($recordId)) {
             $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         } else {
             $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         }
         $this->record = $recordModel;
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('IMAGE_DETAILS', $recordModel->getImageDetails());
     $salutationFieldModel = Vtiger_Field_Model::getInstance('salutationtype', $recordModel->getModule());
     // Fix for http://trac.vtiger.com/cgi-bin/trac.cgi/ticket/7851
     $salutationType = $request->get('salutationtype');
     if (!empty($salutationType)) {
         $salutationFieldModel->set('fieldvalue', $request->get('salutationtype'));
     } else {
         $salutationFieldModel->set('fieldvalue', $recordModel->get('salutationtype'));
     }
     $viewer->assign('SALUTATION_FIELD_MODEL', $salutationFieldModel);
     parent::process($request);
 }
 function postpone(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $module = $request->getModule();
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module);
     $recordModel->updateReminderStatus(0);
 }
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $currencyName = $request->get('currency');
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $priceDetails = $recordModel->getPriceDetails();
     } else {
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $priceDetails = $recordModel->getPriceDetails();
         foreach ($priceDetails as $key => $currencyDetails) {
             if ($currencyDetails['curname'] === $currencyName) {
                 $baseCurrencyConversionRate = $currencyDetails['conversionrate'];
                 break;
             }
         }
         foreach ($priceDetails as $key => $currencyDetails) {
             if ($currencyDetails['curname'] === $currencyName) {
                 $currencyDetails['conversionrate'] = 1;
                 $currencyDetails['is_basecurrency'] = 1;
             } else {
                 $currencyDetails['conversionrate'] = $currencyDetails['conversionrate'] / $baseCurrencyConversionRate;
                 $currencyDetails['is_basecurrency'] = 0;
             }
             $priceDetails[$key] = $currencyDetails;
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('PRICE_DETAILS', $priceDetails);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->view('MoreCurrenciesList.tpl', 'Products');
 }
示例#5
0
 /**
  * Function that saves SMS records
  * @param Vtiger_Request $request
  */
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $recordIds = $this->getRecordsListFromRequest($request);
     $phoneFieldList = $request->get('fields');
     $message = $request->get('message');
     foreach ($recordIds as $recordId) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId);
         $numberSelected = false;
         foreach ($phoneFieldList as $fieldname) {
             $fieldValue = $recordModel->get($fieldname);
             if (!empty($fieldValue)) {
                 $toNumbers[] = $fieldValue;
                 $numberSelected = true;
             }
         }
         if ($numberSelected) {
             $recordIds[] = $recordId;
         }
     }
     $response = new Vtiger_Response();
     if (!empty($toNumbers)) {
         SMSNotifier_Record_Model::SendSMS($message, $toNumbers, $currentUserModel->getId(), $recordIds, $moduleName);
         $response->setResult(true);
     } else {
         $response->setResult(false);
     }
     return $response;
 }
 function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $records = $request->get('records');
     $primaryRecord = $request->get('primaryRecord');
     $primaryRecordModel = Vtiger_Record_Model::getInstanceById($primaryRecord, $moduleName);
     $fields = $moduleModel->getFields();
     foreach ($fields as $field) {
         $fieldValue = $request->get($field->getName());
         if ($field->isEditable()) {
             $primaryRecordModel->set($field->getName(), $fieldValue);
         }
     }
     $primaryRecordModel->set('mode', 'edit');
     $primaryRecordModel->save();
     $deleteRecords = array_diff($records, array($primaryRecord));
     foreach ($deleteRecords as $deleteRecord) {
         $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'Delete', $deleteRecord);
         if ($recordPermission) {
             $primaryRecordModel->transferRelationInfoOfRecords(array($deleteRecord));
             $record = Vtiger_Record_Model::getInstanceById($deleteRecord);
             $record->delete();
         }
     }
     $response = new Vtiger_Response();
     $response->setResult(true);
     $response->emit();
 }
示例#7
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 public function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $recordModel->set('id', $recordId);
         $recordModel->set('mode', 'edit');
         $fieldModelList = $recordModel->getModule()->getFields();
         foreach ($fieldModelList as $fieldName => $fieldModel) {
             //For not converting craetedtime and modified time to user format
             $uiType = $fieldModel->get('uitype');
             if ($uiType == 70) {
                 $fieldValue = $recordModel->get($fieldName);
             } elseif (in_array($uiType, [71, 72])) {
                 // currency ui types
                 $fieldValue = $recordModel->get($fieldName);
             } else {
                 $fieldValue = $fieldModel->getUITypeModel()->getUserRequestValue($recordModel->get($fieldName), $recordId);
             }
             if ($fieldName === $request->get('field')) {
                 $fieldValue = $request->get('value');
             }
             $fieldDataType = $fieldModel->getFieldDataType();
             if ($fieldDataType == 'time') {
                 $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
             }
             if ($fieldValue !== null) {
                 if (!is_array($fieldValue)) {
                     $fieldValue = trim($fieldValue);
                 }
                 $recordModel->set($fieldName, $fieldValue);
             }
             $recordModel->set($fieldName, $fieldValue);
         }
     } else {
         $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $recordModel->set('mode', '');
         $fieldModelList = $moduleModel->getFields();
         foreach ($fieldModelList as $fieldName => $fieldModel) {
             if ($request->has($fieldName)) {
                 $fieldValue = $request->get($fieldName, null);
             } else {
                 $fieldValue = $fieldModel->getDefaultFieldValue();
             }
             $fieldDataType = $fieldModel->getFieldDataType();
             if ($fieldDataType == 'time') {
                 $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
             }
             if ($fieldValue !== null) {
                 if (!is_array($fieldValue)) {
                     $fieldValue = trim($fieldValue);
                 }
                 $recordModel->set($fieldName, $fieldValue);
             }
         }
     }
     return $recordModel;
 }
 function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $records = $request->get('records');
     $template = $request->get('template');
     $targetModuleName = $request->get('target');
     $method = $request->get('method');
     $success = [];
     if (!empty($template)) {
         $templateRecord = Vtiger_MappedFields_Model::getInstanceById($template);
         foreach ($records as $recordId) {
             if ($templateRecord->checkFiltersForRecord(intval($recordId))) {
                 if ($method == 0) {
                     $recordModel = Vtiger_Record_Model::getCleanInstance($targetModuleName);
                     $parentRecordModel = Vtiger_Record_Model::getInstanceById($recordId);
                     $recordModel->setRecordFieldValues($parentRecordModel);
                     if ($this->checkMandatoryFields($recordModel)) {
                         continue;
                     }
                     // TODO Add saving fields that exist in  advanced module
                     $recordModel->save();
                     if (isRecordExists($recordModel->getId())) {
                         $success[] = $recordId;
                     }
                 } else {
                     $success[] = $recordId;
                 }
             }
         }
     }
     $output = ['all' => count($records), 'ok' => $success, 'fail' => array_diff($records, $success)];
     $response = new Vtiger_Response();
     $response->setResult($output);
     $response->emit();
 }
示例#9
0
 function process(Vtiger_Request $request)
 {
     $currentUserPriviligeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     $viewer = $this->getViewer($request);
     $recordId = $request->get('record');
     $moduleName = $request->getModule();
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId);
     $moduleModel = $recordModel->getModule();
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('CURRENT_USER_PRIVILEGE', $currentUserPriviligeModel);
     $viewer->assign('RECORD', $recordModel);
     $viewer->assign('CONVERT_LEAD_FIELDS', $recordModel->getConvertLeadFields());
     $assignedToFieldModel = $moduleModel->getField('assigned_user_id');
     $assignedToFieldModel->set('fieldvalue', $recordModel->get('assigned_user_id'));
     $viewer->assign('ASSIGN_TO', $assignedToFieldModel);
     $potentialModuleModel = Vtiger_Module_Model::getInstance('Potentials');
     $accountField = Vtiger_Field_Model::getInstance('related_to', $potentialModuleModel);
     $contactField = Vtiger_Field_Model::getInstance('contact_id', $potentialModuleModel);
     $viewer->assign('ACCOUNT_FIELD_MODEL', $accountField);
     $viewer->assign('CONTACT_FIELD_MODEL', $contactField);
     $contactsModuleModel = Vtiger_Module_Model::getInstance('Contacts');
     $accountField = Vtiger_Field_Model::getInstance('parent_id', $contactsModuleModel);
     $viewer->assign('CONTACT_ACCOUNT_FIELD_MODEL', $accountField);
     $state = Settings_Leads_ConvertToAccount_Model::getState();
     $viewer->assign('STATE', $state);
     $viewer->view('ConvertLead.tpl', $moduleName);
 }
示例#10
0
 public function updateEvent(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('id');
     $date_start = date('Y-m-d', strtotime($request->get('start')));
     $time_start = date('H:i:s', strtotime($request->get('start')));
     $succes = false;
     if (isPermitted($moduleName, 'EditView', $recordId) === 'no') {
         $succes = false;
     } else {
         if (!empty($recordId)) {
             try {
                 $delta = $request->get('delta');
                 $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
                 $recordData = $recordModel->entity->column_fields;
                 $end = self::changeDateTime($recordData['due_date'] . ' ' . $recordData['time_end'], $delta);
                 $due_date = $end['date'];
                 $time_end = $end['time'];
                 $recordModel->set('id', $recordId);
                 $recordModel->set('mode', 'edit');
                 $recordModel->set('date_start', $date_start);
                 $recordModel->set('time_start', $time_start);
                 $recordModel->set('due_date', $due_date);
                 $recordModel->set('time_end', $time_end);
                 $recordModel->save();
                 $succes = true;
             } catch (Exception $e) {
                 $succes = false;
             }
         }
     }
     $response = new Vtiger_Response();
     $response->setResult($succes);
     $response->emit();
 }
示例#11
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $relatedLoad = $request->get('relatedLoad');
     $data = '';
     if ($relatedLoad) {
         $postData = $request->get('postData');
         $relatedModuleName = $request->get('relatedModuleName');
         $selected_ids = json_decode($postData['selected_ids'], true);
         $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
         $data = $OSSMailModel->getEmailsFromModule($selected_ids, $relatedModuleName);
     } else {
         $selectedFields = $request->get('selectedFields');
         $selected_ids = $request->get('selected_ids');
         foreach ($selected_ids as $key => $value) {
             $recordModel = Vtiger_Record_Model::getInstanceById($value);
             if ($data == '') {
                 $data = $recordModel->get($selectedFields[$key]);
             } else {
                 $data .= ',' . $recordModel->get($selectedFields[$key]);
             }
         }
     }
     $result = array('success' => true, 'data' => $data);
     $response = new Vtiger_Response();
     $response->setResult($result);
     $response->emit();
 }
示例#12
0
 /**
  * Creates a new file in the directory
  *
  * Data will either be supplied as a stream resource, or in certain cases
  * as a string. Keep in mind that you may have to support either.
  *
  * After successful creation of the file, you may choose to return the ETag
  * of the new file here.
  *
  * The returned ETag must be surrounded by double-quotes (The quotes should
  * be part of the actual string).
  *
  * If you cannot accurately determine the ETag, you should not return it.
  * If you don't store the file exactly as-is (you're transforming it
  * somehow) you should also not return an ETag.
  *
  * This means that if a subsequent GET to this new file does not exactly
  * return the same contents of what was submitted here, you are strongly
  * recommended to omit the ETag.
  *
  * @param string $name Name of the file
  * @param resource|string $data Initial payload
  * @return null|string
  */
 function createFile($name, $data = null)
 {
     include_once 'include/main/WebUI.php';
     global $log, $adb, $current_user;
     $adb = \PearDatabase::getInstance();
     $log = \LoggerManager::getLogger('DavToCRM');
     $user = new \Users();
     $current_user = $user->retrieveCurrentUserInfoFromFile($this->exData->crmUserId);
     $path = trim($this->path, 'files') . '/' . $name;
     $hash = sha1($path);
     $pathParts = pathinfo($path);
     $localPath = $this->localPath . $name;
     $stmt = $this->exData->pdo->prepare('SELECT crmid, smownerid, deleted FROM vtiger_files INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_files.filesid WHERE vtiger_files.hash = ?;');
     $stmt->execute([$hash]);
     $rows = $stmt->fetch(\PDO::FETCH_ASSOC);
     if ($rows != false && ($rows['smownerid'] != $this->exData->crmUserId || $rows['deleted'] == 1)) {
         throw new DAV\Exception\Conflict('File with name ' . $file . ' could not be located');
     }
     file_put_contents($this->exData->localStorageDir . $localPath, $data);
     if ($rows) {
         $rekord = \Vtiger_Record_Model::getInstanceById($rows['crmid'], 'Files');
         $rekord->set('mode', 'edit');
     } else {
         $rekord = \Vtiger_Record_Model::getCleanInstance('Files');
         $rekord->set('assigned_user_id', $this->exData->crmUserId);
     }
     $rekord->set('title', $pathParts['filename']);
     $rekord->set('name', $pathParts['filename']);
     $rekord->set('path', $localPath);
     $rekord->save();
     $id = $rekord->getId();
     $stmt = $this->exData->pdo->prepare('UPDATE vtiger_files SET dirid=?,extension=?,size=?,hash=?,ctime=? WHERE filesid=?;');
     $stmt->execute([$this->dirid, $pathParts['extension'], filesize($this->exData->localStorageDir . $localPath), $hash, date('Y-m-d H:i:s'), $id]);
 }
示例#13
0
 public function process(Vtiger_Request $request)
 {
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $record = $request->get('record');
     if (!empty($record) && $request->get('isDuplicate') == true) {
         $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
         $viewer->assign('MODE', '');
     } else {
         if (!empty($record)) {
             $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
             $viewer->assign('RECORD_ID', $record);
             $viewer->assign('MODE', 'edit');
         } else {
             $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
             $viewer->assign('MODE', '');
             $parentId = $request->get('parentId');
             $parentModule = $request->get('parentModule');
             if ($parentId && $parentModule === 'HelpDesk') {
                 $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $parentModule);
                 $recordModel = Faq_Record_Model::getInstanceFromHelpDesk($parentRecordModel);
             }
         }
     }
     $moduleModel = $recordModel->getModule();
     $fieldList = $moduleModel->getFields();
     $requestFieldList = array_intersect_key($request->getAll(), $fieldList);
     foreach ($requestFieldList as $fieldName => $fieldValue) {
         $fieldModel = $fieldList[$fieldName];
         if ($fieldModel->isEditable()) {
             $recordModel->set($fieldName, $fieldModel->getDBInsertValue($fieldValue));
         }
     }
     $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT);
     $viewMode = $request->get('view_mode');
     if (!empty($viewMode)) {
         $viewer->assign('VIEW_MODE', $viewMode);
     }
     $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_STRUCTURE_MODEL', $recordStructureInstance);
     $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('RECORD', $recordModel);
     $viewer->assign('BLOCK_LIST', $moduleModel->getBlocks());
     $viewer->assign('CURRENTDATE', date('Y-n-j'));
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $isRelationOperation = $request->get('relationOperation');
     //if it is relation edit
     $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation);
     if ($isRelationOperation) {
         $viewer->assign('SOURCE_MODULE', $request->get('sourceModule'));
         $viewer->assign('SOURCE_RECORD', $request->get('sourceRecord'));
     }
     $viewer->assign('MAX_UPLOAD_LIMIT_MB', Vtiger_Util_Helper::getMaxUploadSize());
     $viewer->assign('MAX_UPLOAD_LIMIT', vglobal('upload_maxsize'));
     $viewer->view('EditView.tpl', $moduleName);
 }
示例#14
0
 /**
  * Function to get the record model based on the request parameters
  * @param Vtiger_Request $request
  * @return Vtiger_Record_Model or Module specific Record Model instance
  */
 public function getRecordModelsFromRequest(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $recordIds = $this->getRecordsListFromRequest($request);
     $recordModels = array();
     $fieldModelList = $moduleModel->getFields();
     foreach ($recordIds as $recordId) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleModel);
         $recordModel->set('id', $recordId);
         $recordModel->set('mode', 'edit');
         foreach ($fieldModelList as $fieldName => $fieldModel) {
             $fieldValue = $request->get($fieldName, null);
             $fieldDataType = $fieldModel->getFieldDataType();
             if ($fieldDataType == 'time') {
                 $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
             } else {
                 if ($fieldDataType === 'date') {
                     $fieldValue = $fieldModel->getUITypeModel()->getDBInsertValue($fieldValue);
                 }
             }
             if (isset($fieldValue) && $fieldValue != null && !is_array($fieldValue)) {
                 $fieldValue = trim($fieldValue);
                 $recordModel->set($fieldName, $fieldValue);
             }
         }
         $recordModels[$recordId] = $recordModel;
     }
     return $recordModels;
 }
示例#15
0
 public function markAsHeldCompleted(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
     $recordModel->set('mode', 'edit');
     $activityType = $recordModel->get('activitytype');
     $response = new Vtiger_Response();
     if ($activityType == 'Task') {
         $status = 'Completed';
         $recordModel->set('taskstatus', $status);
         $result = array("valid" => TRUE, "markedascompleted" => TRUE, "activitytype" => "Task");
     } else {
         //checking if the event can be marked as Held (status validation)
         $startDateTime[] = $recordModel->get('date_start');
         $startDateTime[] = $recordModel->get('time_start');
         $startDateTime = implode(' ', $startDateTime);
         $startDateTime = new DateTime($startDateTime);
         $currentDateTime = date("Y-m-d H:i:s");
         $currentDateTime = new DateTime($currentDateTime);
         if ($startDateTime > $currentDateTime) {
             $result = array("valid" => FALSE, "markedascompleted" => FALSE);
             $response->setResult($result);
             $response->emit();
             return;
         }
         $status = 'Held';
         $recordModel->set('eventstatus', $status);
         $result = array("valid" => TRUE, "markedascompleted" => TRUE, "activitytype" => "Event");
     }
     $recordModel->save();
     $response->setResult($result);
     $response->emit();
 }
示例#16
0
function UpdateInvoice($salesId)
{
    $adb = PearDatabase::getInstance();
    $moduleBalance = 'Invoice';
    $StatusBalance = 'Paid';
    if ($salesId == 0 || $salesId == '' || Vtiger_Functions::getCRMRecordType($salesId) != $moduleBalance) {
        return false;
    }
    $sql = 'SELECT SUM(`paymentsvalue`) as suma FROM `vtiger_paymentsin` WHERE `salesid` = ? AND `paymentsin_status` = ?;';
    $result = $adb->pquery($sql, array($salesId, $StatusBalance), false);
    $paymentsIn = $adb->query_result($result, 0, 'suma');
    $sql = 'SELECT SUM(`paymentsvalue`) as suma FROM `vtiger_paymentsout` WHERE `salesid` = ? AND `paymentsout_status` = ?;';
    $result = $adb->pquery($sql, array($salesId, $StatusBalance), false);
    $paymentsOut = $adb->query_result($result, 0, 'suma');
    $sum = $paymentsIn - $paymentsOut;
    $model = Vtiger_Record_Model::getInstanceById($salesId, $moduleBalance);
    $hdnGrandTotal = $model->get('hdnGrandTotal');
    $balance = $hdnGrandTotal - $sum;
    $sql = 'UPDATE `vtiger_invoice` SET `payment_balance` = ? WHERE `invoiceid` = ? LIMIT 1;';
    $params = array($balance, $salesId);
    $adb->pquery($sql, $params, true);
    $accountId = $model->get('account_id');
    $potentialId = $model->get('potentialid');
    UpdateAccounts($accountId);
    UpdatePotential($potentialId);
}
示例#17
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $modules = $request->get('modules');
     $assignId = $request->get('assigned_user_id');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $entityValues = array();
     $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule');
     //■権限なぜか、エラーになるので権限を固定するinouchi
     //$entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId);
     $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType(1), 1);
     $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId);
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule());
     $convertLeadFields = $recordModel->getConvertLeadFields();
     $availableModules = array('Accounts', 'Contacts', 'Potentials');
     foreach ($availableModules as $module) {
         if (vtlib_isModuleActive($module) && in_array($module, $modules)) {
             $entityValues['entities'][$module]['create'] = true;
             $entityValues['entities'][$module]['name'] = $module;
             foreach ($convertLeadFields[$module] as $fieldModel) {
                 $fieldName = $fieldModel->getName();
                 $fieldValue = $request->get($fieldName);
                 //Potential Amount Field value converting into DB format
                 if ($fieldModel->getFieldDataType() === 'currency') {
                     $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'date') {
                     $fieldValue = DateTimeField::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) {
                     $ids = vtws_getIdComponents($fieldValue);
                     if (count($ids) === 1) {
                         $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue);
                     }
                 }
                 $entityValues['entities'][$module][$fieldName] = $fieldValue;
             }
         }
     }
     try {
         $result = vtws_convertlead($entityValues, $currentUser);
     } catch (Exception $e) {
         $this->showError($request, $e);
         exit;
     }
     if (!empty($result['Accounts'])) {
         $accountIdComponents = vtws_getIdComponents($result['Accounts']);
         $accountId = $accountIdComponents[1];
     }
     if (!empty($result['Contacts'])) {
         $contactIdComponents = vtws_getIdComponents($result['Contacts']);
         $contactId = $contactIdComponents[1];
     }
     if (!empty($accountId)) {
         header("Location: index.php?view=Detail&module=Accounts&record={$accountId}");
     } elseif (!empty($contactId)) {
         header("Location: index.php?view=Detail&module=Contacts&record={$contactId}");
     } else {
         $this->showError($request);
         exit;
     }
 }
 public function loadRecord($id)
 {
     $recordModel = Vtiger_Record_Model::getInstanceById($id);
     $this->moduleName = $recordModel->getModuleName();
     $this->focus = $recordModel->getEntity();
     $this->buildRecordTemplateModel();
 }
示例#19
0
 public function Footer()
 {
     if ($_SESSION['footer_enable'] == 'Yes') {
         $recordModel = Vtiger_Record_Model::getInstanceById($_SESSION['template_to_perfom']);
         $height_footer = $recordModel->get('height_footer');
         $y = -(int) $height_footer;
         $bMargin = $this->getBreakMargin();
         $auto_page_break = $this->AutoPageBreak;
         $height_header = (int) $recordModel->get('height_header');
         if ($_SESSION['enable_numbering'] == 'NumberFormat' || $_SESSION['enable_numbering'] == 'PageXofY') {
             $y -= 10;
             $bMargin += 10;
         }
         $this->SetFont($this->font, '', 8);
         $this->SetY($y);
         $this->SetAutoPageBreak(false, 0);
         //$this->writeHTML($this->bMargin.' - '.$this->PageBreakTrigger);
         $this->writeHTML($_REQUEST['footer_content']);
         $this->SetFont('helvetica', 'I', 8);
         if ($_SESSION['enable_numbering'] == 'NumberFormat') {
             $this->writeHTML('<span align="center">' . $this->getAliasNumPage() . '</span>');
         } elseif ($_SESSION['enable_numbering'] == 'PageXofY') {
             $this->writeHTML('<span align="center">' . vtranslate('Page', 'OSSPdf') . ' ' . $this->getAliasNumPage() . ' ' . vtranslate('of', 'OSSPdf') . ' ' . $this->getAliasNbPages() . '</span>');
         }
         $this->SetFont($this->font, '', 12);
         $this->SetAutoPageBreak($auto_page_break, $bMargin);
         $this->setPageMark();
         //echo '<pre>';print_r($bMargin);echo '</pre>';exit;
     }
 }
示例#20
0
 function getComposeUrlParam($moduleName = false, $record = false, $view = false)
 {
     $url = '';
     if (!empty($record) && isRecordExists($record)) {
         $recordModel_OSSMailView = Vtiger_Record_Model::getCleanInstance('OSSMailView');
         $email = $recordModel_OSSMailView->findEmail($record, $moduleName);
         if ($email) {
             $url = '&to=' . $email;
         }
         $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
         if ($moduleName == 'HelpDesk') {
             $urldata = '&subject=' . $recordModel->get('ticket_no') . ' - ' . $recordModel->get('ticket_title');
         } elseif ($moduleName == 'SSalesProcesses') {
             $urldata = '&subject=' . $recordModel->get('ssalesprocesses_no') . ' - ' . $recordModel->get('subject');
         } elseif ($moduleName == 'Project') {
             $urldata = '&subject=' . $recordModel->get('project_no') . ' - ' . $recordModel->get('projectname');
         }
         $url .= $urldata;
     }
     if (!empty($moduleName)) {
         $url .= '&crmmodule=' . $moduleName;
     }
     if (!empty($record)) {
         $url .= '&crmrecord=' . $record;
     }
     if (!empty($view)) {
         $url .= '&crmview=' . $view;
     }
     return $url;
 }
示例#21
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     if ($request->get('selected_ids') == 'all' && $request->get('mode') == 'FindDuplicates') {
         $recordIds = Vtiger_FindDuplicate_Model::getMassDeleteRecords($request);
     } else {
         $recordIds = $this->getRecordsListFromRequest($request);
     }
     foreach ($recordIds as $recordId) {
         if (Users_Privileges_Model::isPermitted($moduleName, 'Delete', $recordId)) {
             $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleModel);
             $recordModel->delete();
         } else {
             $permission = 'No';
         }
     }
     if ($permission === 'No') {
         throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
     }
     $cvId = $request->get('viewname');
     $response = new Vtiger_Response();
     $response->setResult(array('viewname' => $cvId, 'module' => $moduleName));
     $response->emit();
 }
示例#22
0
 public function updateEvent(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('id');
     $date_start = date('Y-m-d', strtotime($request->get('start')));
     $time_start = date('H:i:s', strtotime($request->get('start')));
     $due_date = date('Y-m-d', strtotime($request->get('end')));
     $time_end = date('H:i:s', strtotime($request->get('end')));
     $succes = false;
     if (!empty($recordId)) {
         try {
             $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
             $recordModel->set('id', $recordId);
             $recordModel->set('mode', 'edit');
             $recordModel->set('date_start', $date_start);
             $recordModel->set('time_start', $time_start);
             $recordModel->set('due_date', $due_date);
             $recordModel->set('time_end', $time_end);
             $recordModel->save();
             $succes = true;
         } catch (Exception $e) {
             $succes = false;
         }
     }
     $response = new Vtiger_Response();
     $response->setResult($succes);
     $response->emit();
 }
示例#23
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $documentIdsList = $this->getRecordsListFromRequest($request);
     $folderId = $request->get('folderid');
     if (!empty($documentIdsList)) {
         foreach ($documentIdsList as $documentId) {
             $documentModel = Vtiger_Record_Model::getInstanceById($documentId, $moduleName);
             if (Users_Privileges_Model::isPermitted($moduleName, 'EditView', $documentId)) {
                 $documentModel->set('folderid', $folderId);
                 $documentModel->set('mode', 'edit');
                 $documentModel->save();
             } else {
                 $documentsMoveDenied[] = $documentModel->getName();
             }
         }
     }
     if (empty($documentsMoveDenied)) {
         $result = array('success' => true, 'message' => vtranslate('LBL_DOCUMENTS_MOVED_SUCCESSFULLY', $moduleName));
     } else {
         $result = array('success' => false, 'message' => vtranslate('LBL_DENIED_DOCUMENTS', $moduleName), 'LBL_RECORDS_LIST' => $documentsMoveDenied);
     }
     $response = new Vtiger_Response();
     $response->setResult($result);
     $response->emit();
 }
示例#24
0
 public function updateDefaultPicklistValues($pickListFieldName, $oldValue, $newValue)
 {
     $db = PearDatabase::getInstance();
     if ($pickListFieldName == 'activitytype') {
         $defaultFieldName = 'defaultactivitytype';
     } else {
         $defaultFieldName = 'defaulteventstatus';
     }
     $queryToGetId = 'SELECT id FROM vtiger_users WHERE ' . $defaultFieldName . ' IN (';
     if (is_array($oldValue)) {
         for ($i = 0; $i < count($oldValue); $i++) {
             $queryToGetId .= '"' . $oldValue[$i] . '"';
             if ($i < count($oldValue) - 1) {
                 $queryToGetId .= ',';
             }
         }
         $queryToGetId .= ')';
     } else {
         $queryToGetId .= '"' . $oldValue . '")';
     }
     $result = $db->pquery($queryToGetId, array());
     $rowCount = $db->num_rows($result);
     for ($i = 0; $i < $rowCount; $i++) {
         $recordId = $db->query_result_rowdata($result, $i);
         $recordId = $recordId['id'];
         $record = Vtiger_Record_Model::getInstanceById($recordId, 'Users');
         $record->set('mode', 'edit');
         $record->set($defaultFieldName, $newValue);
         $record->save();
     }
 }
示例#25
0
function _5_bind_HelpDesk($user_id, $mail_detail, $folder, $return)
{
    $ModuleName = 'HelpDesk';
    $table_name = 'vtiger_troubletickets';
    $table_col = 'ticket_no';
    $ossmailviewTab = 'vtiger_ossmailview_tickets';
    $answered_status = 'Answered';
    require_once "modules/OSSMailScanner/template_actions/prefix.php";
    $ids = bind_prefix($user_id, $mail_detail, $folder, $ModuleName, $table_name, $table_col, $ossmailviewTab);
    if ($ids) {
        $conf = OSSMailScanner_Record_Model::getConfig('emailsearch');
        $type = OSSMailScanner_Record_Model::getTypeEmail($mail_detail);
        if ($conf['change_ticket_status'] == 'true' && $type == 1) {
            foreach ($ids as $id) {
                $ModelInstance = Vtiger_Record_Model::getInstanceById($id, $ModuleName);
                $ticketstatus = $ModelInstance->get('ticketstatus');
                if ($ticketstatus == 'Wait For Response') {
                    $record = new $ModuleName();
                    $record->retrieve_entity_info($id, $ModuleName);
                    $record->mode = 'edit';
                    $record->column_fields['ticketstatus'] = $answered_status;
                    $record->save($ModuleName, $id);
                }
            }
        }
    }
    return array('bind_HelpDesk' => $ids);
}
示例#26
0
 public function addRelation($sourcerecordId, $destinationRecordId)
 {
     $adb = PearDatabase::getInstance();
     $recordModel = Vtiger_Record_Model::getInstanceById($sourcerecordId, 'OSSMailView');
     $date = $recordModel->get('date');
     $adb->pquery("INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?;", [$sourcerecordId, $destinationRecordId, $date]);
 }
示例#27
0
 public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer)
 {
     $moduleName = $this->getModule($request);
     $sourceModule = $request->get('src_module');
     $sourceRecord = $request->get('src_record');
     //list of records is narrowed to contacts related to help desks account, only in Help Desk Contacts relation view
     if ($moduleName == 'Contacts' && $sourceModule == 'HelpDesk' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=HelpDesk') === 0) {
         $request->set('related_parent_module', 'Accounts');
         $helpDeskRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'HelpDesk');
         $request->set('related_parent_id', $helpDeskRecord->get('parent_id'));
         $viewer->assign('SWITCH', true);
     }
     if ($moduleName == 'Contacts' && $sourceModule == 'SSalesProcesses' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=SSalesProcesses') === 0) {
         $request->set('related_parent_module', 'Accounts');
         $moduleRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'SSalesProcesses');
         $request->set('related_parent_id', $moduleRecord->get('related_to'));
         $viewer->assign('SWITCH', true);
     }
     if ($moduleName == 'Contacts' && $sourceModule == 'Project' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=Project') === 0) {
         $request->set('related_parent_module', 'Accounts');
         $moduleRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'Project');
         $request->set('related_parent_id', $moduleRecord->get('linktoaccountscontacts'));
         $viewer->assign('SWITCH', true);
     }
     parent::initializeListViewContents($request, $viewer);
 }
示例#28
0
 protected function getRecordModelFromRequest(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     if (!empty($recordId)) {
         $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('id', $recordId);
         $recordModel->set('mode', 'edit');
     } else {
         $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
         $modelData = $recordModel->getData();
         $recordModel->set('mode', '');
     }
     $fieldModelList = $moduleModel->getFields();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         if (in_array($fieldName, array('header_content', 'content', 'footer_content'))) {
             $fieldValue = $request->getRaw($fieldName, null);
         } else {
             $fieldValue = $request->get($fieldName, null);
         }
         $fieldDataType = $fieldModel->getFieldDataType();
         if ($fieldDataType == 'time') {
             $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
         }
         if ($fieldValue !== null) {
             if (!is_array($fieldValue)) {
                 $fieldValue = trim($fieldValue);
             }
             $recordModel->set($fieldName, $fieldValue);
         }
     }
     return $recordModel;
 }
示例#29
0
 function addRelation($request)
 {
     $sourceModule = $request->getModule();
     $sourceRecordId = $request->get('src_record');
     $relatedModule = $request->get('related_module');
     if (is_numeric($relatedModule)) {
         $relatedModule = Vtiger_Functions::getModuleName($relatedModule);
     }
     $relatedRecordIdList = $request->get('related_record_list');
     $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
     $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedModule);
     $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel);
     foreach ($relatedRecordIdList as $relatedRecordId) {
         $relationModel->addRelation($sourceRecordId, $relatedRecordId, $listPrice);
         if ($relatedModule == 'PriceBooks') {
             $recordModel = Vtiger_Record_Model::getInstanceById($relatedRecordId);
             if ($sourceRecordId && ($sourceModule === 'Products' || $sourceModule === 'Services')) {
                 $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecordId, $sourceModule);
                 $recordModel->updateListPrice($sourceRecordId, $parentRecordModel->get('unit_price'));
             }
         }
     }
     $response = new Vtiger_Response();
     $response->setResult(true);
     $response->emit();
 }
示例#30
0
文件: Save.php 项目: Wasage/werpa
 /**
  * Save Act vith relation to Invoice if it created from it
  * @param \Vtiger_Request $request
  */
 public function process(Vtiger_Request $request)
 {
     /* Parent code - thin may be better will be workflow */
     $recordModel = $this->saveRecord($request);
     if ($request->get('relationOperation')) {
         $parentModuleName = $request->get('sourceModule');
         $parentRecordId = $request->get('sourceRecord');
         $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName);
         $loadUrl = $parentRecordModel->getDetailViewUrl();
     } else {
         if ($request->get('returnToList')) {
             $loadUrl = $recordModel->getModule()->getListViewUrl();
         } else {
             $loadUrl = $recordModel->getDetailViewUrl();
         }
     }
     /* If created from Invoice - add reference */
     if ($request->get('sourceModule') == 'Invoice' && $request->get('sourceRecord') != NULL) {
         $invoiceRecord = Invoice_Record_Model::getInstanceById($request->get('sourceRecord'), 'Invoice');
         if ($invoiceRecord != null) {
             $invoiceRecord->set('sp_act_id', $recordModel->getId());
             $invoiceRecord->set('mode', 'edit');
             $invoiceRecord->save();
             $loadUrl = $invoiceRecord->getDetailViewUrl();
         }
     }
     header("Location: {$loadUrl}");
 }