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