/**
  * @return array Array of strings
  */
 public static function getJavaScriptDescriptions($checkPermissions = false)
 {
     $result = array();
     $descriptions = self::getAllDescriptions();
     if (!$checkPermissions) {
         $isInvoicePermitted = true;
         $isDealPermitted = true;
     } else {
         $flags = array();
         \CCrmQuote::PrepareConversionPermissionFlags(0, $flags);
         $isDealPermitted = $flags['CAN_CONVERT_TO_DEAL'];
         $isInvoicePermitted = $flags['CAN_CONVERT_TO_INVOICE'];
     }
     if ($isDealPermitted && $isInvoicePermitted) {
         foreach ($descriptions as $schemeID => $description) {
             $result[self::resolveName($schemeID)] = $description;
         }
     } else {
         $schemes = array();
         if ($isDealPermitted) {
             $schemes[] = self::DEAL;
         }
         if ($isInvoicePermitted) {
             $schemes[] = self::INVOICE;
         }
         foreach ($schemes as $schemeID) {
             $result[self::resolveName($schemeID)] = $descriptions[$schemeID];
         }
     }
     return $result;
 }
Example #2
0
 protected function rebind($seedID, $targID)
 {
     \CCrmDeal::Rebind(\CCrmOwnerType::Contact, $seedID, $targID);
     \CCrmQuote::Rebind(\CCrmOwnerType::Contact, $seedID, $targID);
     \CCrmActivity::Rebind(\CCrmOwnerType::Contact, $seedID, $targID);
     \CCrmLiveFeed::Rebind(\CCrmOwnerType::Contact, $seedID, $targID);
     \CCrmSonetRelation::RebindRelations(\CCrmOwnerType::Contact, $seedID, $targID);
     \CCrmEvent::Rebind(\CCrmOwnerType::Contact, $seedID, $targID);
 }
Example #3
0
        echo CUtil::PhpToJSObject(array('ERROR' => 'FIELD_NAME IS NOT DEFINED!'));
        die;
    }
    $fieldValues = array();
    if (isset($_POST['FIELD_VALUE'])) {
        if (is_array($_POST['FIELD_VALUE'])) {
            $fieldValues = $_POST['FIELD_VALUE'];
        } else {
            $fieldValues[] = $_POST['FIELD_VALUE'];
        }
    }
    $dbResult = CCrmQuote::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*'));
    $arFields = is_object($dbResult) ? $dbResult->Fetch() : null;
    if (is_array($arFields)) {
        CCrmInstantEditorHelper::PrepareUpdate(CCrmOwnerType::Quote, $arFields, $fieldNames, $fieldValues);
        $CCrmQuote = new CCrmQuote();
        if ($CCrmQuote->Update($ID, $arFields, true, true, array('REGISTER_SONET_EVENT' => true))) {
            /*---bizproc---$arErrors = array();
            		CCrmBizProcHelper::AutoStartWorkflows(
            			CCrmOwnerType::Quote,
            			$ID,
            			CCrmBizProcEventType::Edit,
            			$arErrors
            		);*/
        }
    }
}
if ($mode === 'GET_USER_SELECTOR') {
    if (!CCrmQuote::CheckUpdatePermission(0, $currentUserPermissions)) {
        __CrmQuoteShowEndHtmlResonse();
    }
Example #4
0
        while ($arDeal = $dbRes->Fetch()) {
            if (isset($arDealList[$arDeal['ID']]) && is_array($arDealList[$arDeal['ID']]) && count($arDealList[$arDeal['ID']]) > 0) {
                foreach ($arDealList[$arDeal['ID']] as $invoiceId) {
                    $arResult['INVOICE'][$invoiceId]['DEAL_TITLE'] = $arDeal['TITLE'];
                    $arResult['INVOICE'][$invoiceId]['DEAL_LINK_HTML'] = CCrmViewHelper::PrepareEntityBaloonHtml(array('ENTITY_TYPE_ID' => CCrmOwnerType::Deal, 'ENTITY_ID' => $arDeal['ID'], 'PREFIX' => uniqid("crm_deal_link_"), 'TITLE' => $arDeal['TITLE'], 'CLASS_NAME' => ''));
                }
                unset($invoiceId);
            }
        }
        unset($arDeal);
    }
    unset($dbRes);
}
if (count($arQuoteList) > 0) {
    $quoteTitle = '';
    $dbRes = CCrmQuote::GetList(array(), array('ID' => array_keys($arQuoteList)), false, false, array('QUOTE_NUMBER', 'TITLE'));
    if ($dbRes) {
        $arQuote = array();
        while ($arQuote = $dbRes->Fetch()) {
            if (isset($arQuoteList[$arQuote['ID']]) && is_array($arQuoteList[$arQuote['ID']]) && count($arQuoteList[$arQuote['ID']]) > 0) {
                foreach ($arQuoteList[$arQuote['ID']] as $invoiceId) {
                    $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE'];
                    $quoteTitle = empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle);
                    $arResult['INVOICE'][$invoiceId]['QUOTE_TITLE'] = $quoteTitle;
                    $arResult['INVOICE'][$invoiceId]['QUOTE_LINK_HTML'] = CCrmViewHelper::PrepareEntityBaloonHtml(array('ENTITY_TYPE_ID' => CCrmOwnerType::Quote, 'ENTITY_ID' => $arQuote['ID'], 'PREFIX' => uniqid("crm_quote_link_"), 'TITLE' => $quoteTitle, 'CLASS_NAME' => ''));
                }
                unset($invoiceId);
            }
        }
        unset($arQuote);
    }
Example #5
0
}
/*---bizproc---if (IsModuleInstalled('bizproc'))
{
	if (!CModule::IncludeModule('bizproc'))
	{
		ShowError(GetMessage('BIZPROC_MODULE_NOT_INSTALLED'));
		return;
	}
}*/
global $USER_FIELD_MANAGER, $USER, $APPLICATION, $DB;
$CCrmPerms = CCrmPerms::GetCurrentUserPermissions();
if ($CCrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$CCrmQuote = new CCrmQuote(false);
/*---bizproc---$CCrmBizProc = new CCrmBizProc('QUOTE');*/
$userID = CCrmSecurityHelper::GetCurrentUserID();
$isAdmin = CCrmPerms::IsAdmin();
$arResult['CURRENT_USER_ID'] = CCrmSecurityHelper::GetCurrentUserID();
$arParams['PATH_TO_QUOTE_LIST'] = CrmCheckPath('PATH_TO_QUOTE_LIST', $arParams['PATH_TO_QUOTE_LIST'], $APPLICATION->GetCurPage());
$arParams['PATH_TO_QUOTE_SHOW'] = CrmCheckPath('PATH_TO_QUOTE_SHOW', $arParams['PATH_TO_QUOTE_SHOW'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&show');
$arParams['PATH_TO_QUOTE_EDIT'] = CrmCheckPath('PATH_TO_QUOTE_EDIT', $arParams['PATH_TO_QUOTE_EDIT'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&edit');
$arParams['PATH_TO_INVOICE_EDIT'] = CrmCheckPath('PATH_TO_INVOICE_EDIT', $arParams['PATH_TO_INVOICE_EDIT'], $APPLICATION->GetCurPage() . '?invoice_id=#invoice_id#&edit');
$arParams['PATH_TO_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show');
$arParams['PATH_TO_LEAD_SHOW'] = CrmCheckPath('PATH_TO_LEAD_SHOW', $arParams['PATH_TO_LEAD_SHOW'], $APPLICATION->GetCurPage() . '?lead_id=#lead_id#&show');
$arParams['PATH_TO_DEAL_SHOW'] = CrmCheckPath('PATH_TO_DEAL_SHOW', $arParams['PATH_TO_DEAL_SHOW'], $APPLICATION->GetCurPage() . '?deal_id=#deal_id#&show');
$arParams['PATH_TO_CONTACT_SHOW'] = CrmCheckPath('PATH_TO_CONTACT_SHOW', $arParams['PATH_TO_CONTACT_SHOW'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&show');
$arParams['PATH_TO_USER_PROFILE'] = CrmCheckPath('PATH_TO_USER_PROFILE', $arParams['PATH_TO_USER_PROFILE'], '/company/personal/user/#user_id#/');
/*---bizproc---$arParams['PATH_TO_USER_BP'] = CrmCheckPath('PATH_TO_USER_BP', $arParams['PATH_TO_USER_BP'], '/company/personal/bizproc/');*/
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
 public static function PreparePopupItems($entityTypeNames, $addPrefix = true, $nameFormat = '', $count = 50)
 {
     if (!is_array($entityTypeNames)) {
         $entityTypeNames = array(strval($entityTypeNames));
     }
     $addPrefix = (bool) $addPrefix;
     $count = intval($count);
     if ($count <= 0) {
         $count = 50;
     }
     $arItems = array();
     $i = 0;
     foreach ($entityTypeNames as $typeName) {
         $typeName = strtoupper(strval($typeName));
         if ($typeName === 'CONTACT') {
             $contactTypes = CCrmStatus::GetStatusList('CONTACT_TYPE');
             $contactIndex = array();
             $obRes = CCrmContact::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO', 'TYPE_ID'));
             while ($arRes = $obRes->Fetch()) {
                 $arImg = array();
                 if (!empty($arRes['PHOTO']) && !isset($arFiles[$arRes['PHOTO']])) {
                     if (intval($arRes['PHOTO']) > 0) {
                         $arImg = CFile::ResizeImageGet($arRes['PHOTO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
                     }
                 }
                 $arRes['SID'] = $addPrefix ? 'C_' . $arRes['ID'] : $arRes['ID'];
                 // advanced info
                 $advancedInfo = array();
                 if (isset($arRes['TYPE_ID']) && $arRes['TYPE_ID'] != '' && isset($contactTypes[$arRes['TYPE_ID']])) {
                     $advancedInfo['contactType'] = array('id' => $arRes['TYPE_ID'], 'name' => $contactTypes[$arRes['TYPE_ID']]);
                 }
                 $arItems[$i] = array('title' => CCrmContact::PrepareFormattedName(array('HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), $nameFormat), 'desc' => empty($arRes['COMPANY_TITLE']) ? "" : $arRes['COMPANY_TITLE'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID'])), 'image' => $arImg['src'], 'type' => 'contact', 'selected' => 'N');
                 if (!empty($advancedInfo)) {
                     $arItems[$i]['advancedInfo'] = $advancedInfo;
                 }
                 unset($advancedInfo);
                 $contactIndex[$arRes['ID']] =& $arItems[$i];
                 $i++;
             }
             // advanced info - phone number, e-mail
             $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => array_keys($contactIndex)));
             while ($arRes = $obRes->Fetch()) {
                 if (isset($contactIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) {
                     $item =& $contactIndex[$arRes['ELEMENT_ID']];
                     if (!is_array($item['advancedInfo'])) {
                         $item['advancedInfo'] = array();
                     }
                     if (!is_array($item['advancedInfo']['multiFields'])) {
                         $item['advancedInfo']['multiFields'] = array();
                     }
                     $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']);
                     unset($item);
                 }
             }
             unset($contactIndex);
         } elseif ($typeName === 'COMPANY') {
             $companyIndex = array();
             $arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE');
             $arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY');
             $obRes = CCrmCompany::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO'));
             $arFiles = array();
             while ($arRes = $obRes->Fetch()) {
                 $arImg = array();
                 if (!empty($arRes['LOGO']) && !isset($arFiles[$arRes['LOGO']])) {
                     if (intval($arRes['LOGO']) > 0) {
                         $arImg = CFile::ResizeImageGet($arRes['LOGO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
                     }
                     $arFiles[$arRes['LOGO']] = $arImg['src'];
                 }
                 $arRes['SID'] = $addPrefix ? 'CO_' . $arRes['ID'] : $arRes['ID'];
                 $arDesc = array();
                 if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']])) {
                     $arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']];
                 }
                 if (isset($arCompanyIndustryList[$arRes['INDUSTRY']])) {
                     $arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']];
                 }
                 $arItems[$i] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => implode(', ', $arDesc), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $arRes['ID'])), 'image' => $arImg['src'], 'type' => 'company', 'selected' => 'N');
                 $companyIndex[$arRes['ID']] =& $arItems[$i];
                 $i++;
             }
             // advanced info - phone number, e-mail
             $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => array_keys($companyIndex)));
             while ($arRes = $obRes->Fetch()) {
                 if (isset($companyIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) {
                     $item =& $companyIndex[$arRes['ELEMENT_ID']];
                     if (!is_array($item['advancedInfo'])) {
                         $item['advancedInfo'] = array();
                     }
                     if (!is_array($item['advancedInfo']['multiFields'])) {
                         $item['advancedInfo']['multiFields'] = array();
                     }
                     $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']);
                     unset($item);
                 }
             }
             unset($companyIndex);
         } elseif ($typeName === 'LEAD') {
             $leadIndex = array();
             $obRes = CCrmLead::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'STATUS_ID'));
             while ($arRes = $obRes->Fetch()) {
                 $arRes['SID'] = $addPrefix ? 'L_' . $arRes['ID'] : $arRes['ID'];
                 $arItems[$i] = array('title' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'desc' => CCrmLead::PrepareFormattedName(array('HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), $nameFormat), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'type' => 'lead', 'selected' => 'N');
                 $leadIndex[$arRes['ID']] =& $arItems[$i];
                 $i++;
             }
             // advanced info - phone number, e-mail
             $obRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => array_keys($leadIndex)));
             while ($arRes = $obRes->Fetch()) {
                 if (isset($leadIndex[$arRes['ELEMENT_ID']]) && ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')) {
                     $item =& $leadIndex[$arRes['ELEMENT_ID']];
                     if (!is_array($item['advancedInfo'])) {
                         $item['advancedInfo'] = array();
                     }
                     if (!is_array($item['advancedInfo']['multiFields'])) {
                         $item['advancedInfo']['multiFields'] = array();
                     }
                     $item['advancedInfo']['multiFields'][] = array('ID' => $arRes['ID'], 'TYPE_ID' => $arRes['TYPE_ID'], 'VALUE_TYPE' => $arRes['VALUE_TYPE'], 'VALUE' => $arRes['VALUE']);
                     unset($item);
                 }
             }
             unset($leadIndex);
         } elseif ($typeName === 'DEAL') {
             $obRes = CCrmDeal::GetListEx(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'));
             while ($arRes = $obRes->Fetch()) {
                 $arRes['SID'] = $addPrefix ? 'D_' . $arRes['ID'] : $arRes['ID'];
                 $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
                 $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
                 $arItems[] = array('title' => isset($arRes['TITLE']) ? str_replace(array(';', ','), ' ', $arRes['TITLE']) : '', 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => 'N');
             }
         } elseif ($typeName === 'QUOTE') {
             $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array(), false, array('nTopCount' => $count), array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'));
             while ($arRes = $obRes->Fetch()) {
                 $arRes['SID'] = $addPrefix ? CCrmQuote::OWNER_TYPE . '_' . $arRes['ID'] : $arRes['ID'];
                 $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
                 $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
                 $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE'];
                 $arItems[] = array('title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => 'N');
             }
         }
     }
     unset($typeName);
     return $arItems;
 }
Example #7
0
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
    return;
}
if (!CAllCrmInvoice::installExternalEntities()) {
    return;
}
if (!CCrmQuote::LocalComponentCausedUpdater()) {
    return;
}
if (!CModule::IncludeModule('currency')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_CURRENCY'));
    return;
}
if (!CModule::IncludeModule('catalog')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_CATALOG'));
    return;
}
if (!CModule::IncludeModule('sale')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_SALE'));
    return;
}
global $APPLICATION;
$arDefaultUrlTemplates404 = array('index' => 'index.php', 'list' => 'list/', 'service' => 'service/', 'import' => 'import/', 'importvcard' => 'importvcard/', 'edit' => 'edit/#contact_id#/', 'show' => 'show/#contact_id#/', 'dedupe' => 'dedupe/');
$arDefaultVariableAliases404 = array();
$arDefaultVariableAliases = array();
Example #8
0
//<-- QUOTE SECTION
// CONTACT INFO SECTION -->
$arResult['FIELDS']['tab_1'][] = array('id' => 'section_contact_info', 'name' => GetMessage('CRM_SECTION_CLIENT_INFO'), 'type' => 'section', 'isTactile' => true);
// CONTACT_ID -->
$arResult['FIELDS']['tab_1'][] = array('id' => 'CONTACT_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_CONTACT_TITLE'), 'value' => isset($arResult['ELEMENT']['CONTACT_FULL_NAME']) ? $CCrmQuote->cPerms->HavePerm('CONTACT', BX_CRM_PERM_NONE, 'READ') ? $arResult['ELEMENT']['CONTACT_FULL_NAME'] : '<a href="' . $arResult['PATH_TO_CONTACT_SHOW'] . '" id="balloon_' . $arResult['GRID_ID'] . '_C_' . $arResult['ELEMENT']['CONTACT_ID'] . '">' . $arResult['ELEMENT']['CONTACT_FULL_NAME'] . '</a>' . '<script type="text/javascript">BX.tooltip("CONTACT_' . $arResult['ELEMENT']['~CONTACT_ID'] . '", "balloon_' . $arResult['GRID_ID'] . '_C_' . $arResult['ELEMENT']['CONTACT_ID'] . '", "/bitrix/components/bitrix/crm.contact.show/card.ajax.php", "crm_balloon_contact", true);</script>' : '', 'type' => 'custom', 'isTactile' => true);
//<-- CONTACT_ID
// COMAPANY_ID -->
$arResult['FIELDS']['tab_1'][] = array('id' => 'COMPANY_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_COMPANY_TITLE'), 'value' => isset($arResult['ELEMENT']['COMPANY_TITLE']) ? $CCrmQuote->cPerms->HavePerm('COMPANY', BX_CRM_PERM_NONE, 'READ') ? $arResult['ELEMENT']['COMPANY_TITLE'] : '<a href="' . $arResult['PATH_TO_COMPANY_SHOW'] . '" id="balloon_' . $arResult['GRID_ID'] . '_CO_' . $arResult['ELEMENT']['COMPANY_ID'] . '">' . $arResult['ELEMENT']['COMPANY_TITLE'] . '</a>' . '<script type="text/javascript">BX.tooltip("COMPANY_' . $arResult['ELEMENT']['~COMPANY_ID'] . '", "balloon_' . $arResult['GRID_ID'] . '_CO_' . $arResult['ELEMENT']['COMPANY_ID'] . '", "/bitrix/components/bitrix/crm.company.show/card.ajax.php", "crm_balloon_company", true);</script>' : '', 'type' => 'custom', 'isTactile' => true);
//<-- COMAPANY_ID
// LOCATION_ID -->
if ($bTaxMode) {
    $arResult['FIELDS']['tab_1'][] = array('id' => 'LOCATION_ID', 'name' => GetMessage('CRM_QUOTE_FIELD_LOCATION_ID'), 'params' => array('size' => 50), 'type' => 'label', 'value' => isset($arResult['ELEMENT']['LOCATION_ID']) ? CCrmLocations::getLocationString($arResult['ELEMENT']['LOCATION_ID']) : '', 'isTactile' => true);
}
//<-- LOCATION_ID
// Client fields
foreach (CCrmQuote::GetClientFields() as $fieldName) {
    if ($fieldName === 'CLIENT_TPA_ID' && LANGUAGE_ID !== 'ru') {
        continue;
    }
    $clientField = array('id' => $fieldName, 'name' => GetMessage('CRM_QUOTE_FIELD_' . $fieldName), 'params' => array('size' => 255), 'value' => isset($arResult['ELEMENT']['~' . $fieldName]) ? $arResult['ELEMENT']['~' . $fieldName] : '', 'type' => 'label', 'isTactile' => true);
    if ($fieldName === 'CLIENT_CONTACT') {
        $clientField['visible'] = isset($arPersonTypes['COMPANY']) && $arResult['ELEMENT']['PERSON_TYPE_ID'] == $arPersonTypes['COMPANY'];
    }
    $arResult['FIELDS']['tab_1'][] = $clientField;
}
unset($bHideClientContact, $clientField, $fieldName);
// FILES -->
$arResult['FILES_FIELD_CONTAINER_ID'] = $arResult['FORM_ID'] . '_FILES_CONTAINER';
$sVal = '<div id="' . $arResult['FILES_FIELD_CONTAINER_ID'] . '"></div>';
if ($arResult['ENABLE_WEBDAV'] || $arResult['ENABLE_DISK']) {
    $sVal = '<div id="' . $arResult['FILES_FIELD_CONTAINER_ID'] . '" class="bx-crm-dialog-activity-webdav-container"></div>';
Example #9
0
        } elseif ($k === 'ASSIGNED_BY_ID') {
            $entityData['ASSIGNED_BY_ID'] = __CrmQuickPanelViewPrepareResponsible($entityFields, $userProfilePath, $nameTemplate, $enableInstantEdit, $arResult['INSTANT_EDITOR_ID'], $arResult['SERVICE_URL']);
        } elseif ($k === 'CLIENT_PHONE') {
            $params = array('VALUE' => $v, 'VALUE_TYPE_ID' => 'WORK');
            $entityData['CLIENT_PHONE'] = array('type' => 'text', 'data' => array('html' => CCrmViewHelper::PrepareMultiFieldHtml('PHONE', $params, array('ENABLE_SIP' => true, 'SIP_PARAMS' => array('ENTITY_TYPE' => 'CRM_' . $entityTypeName, 'ENTITY_ID' => $entityID)))));
        } elseif ($k === 'CLIENT_EMAIL') {
            $params = array('VALUE' => $v, 'VALUE_TYPE_ID' => 'WORK');
            $entityData['CLIENT_EMAIL'] = array('type' => 'text', 'data' => array('html' => CCrmViewHelper::PrepareMultiFieldHtml('EMAIL', $params)));
        } elseif ($k === 'COMMENTS') {
            $entityData[$k] = array('type' => 'html', 'editable' => $enableInstantEdit, 'data' => array('html' => $entityFields["~{$k}"], 'serviceUrl' => $arResult['SERVICE_URL']));
        } else {
            $entityData[$k] = array('type' => 'text', 'editable' => $enableInstantEdit, 'data' => array('text' => $entityFields["~{$k}"]));
        }
        $caption = isset($formFieldNames[$k]) ? $formFieldNames[$k] : '';
        if ($caption === '') {
            $caption = CCrmQuote::GetFieldCaption($k);
        }
        $entityData[$k]['caption'] = $caption;
    }
    $arResult['HEAD_TITLE'] = isset($entityFields['TITLE']) ? $entityFields['TITLE'] : '';
    $arResult['HEAD_TITLE_FIELD_ID'] = 'TITLE';
} elseif ($entityTypeID === CCrmOwnerType::Invoice) {
    if ($enableDefaultConfig) {
        $config['left'] = 'DATE_BILL,DATE_PAY_BEFORE,PAY_VOUCHER_DATE,UF_DEAL_ID,UF_QUOTE_ID';
        $config['center'] = 'CLIENT_ID';
        $config['right'] = 'RESPONSIBLE_ID';
        $config['bottom'] = 'COMMENTS';
    }
    $ufEntityID = CCrmInvoice::$sUFEntityID;
    $fieldKeys = array('ACCOUNT_NUMBER' => true, 'ORDER_TOPIC' => true, 'STATUS_ID' => true, 'PAY_VOUCHER_DATE' => true, 'PAY_VOUCHER_NUM' => true, 'DATE_BILL' => true, 'DATE_PAY_BEFORE' => true, 'REASON_MARKED_SUCCESS' => true, 'DATE_MARKED' => true, 'REASON_MARKED' => true, 'RESPONSIBLE_ID' => true, 'CURRENCY' => true, 'PRICE' => true, 'UF_CONTACT_ID' => true, 'UF_COMPANY_ID' => true, 'UF_DEAL_ID' => true, 'UF_QUOTE_ID' => true, 'PR_LOCATION' => true, 'PAYER_INFO' => true, 'PAY_SYSTEM_ID' => true, 'COMMENTS' => true);
    $arResult['HEAD_PROGRESS_LEGEND'] = isset($entityFields['STATUS_TEXT']) ? $entityFields['STATUS_TEXT'] : '';
Example #10
0
 public function executePhase()
 {
     if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION || $this->currentPhase === DealConversionPhase::QUOTE_CREATION) {
         if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION) {
             $entityTypeID = \CCrmOwnerType::Invoice;
         } else {
             $entityTypeID = \CCrmOwnerType::Quote;
         }
         $entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID);
         $config = $this->config->getItem($entityTypeID);
         if (!$config->isActive()) {
             return false;
         }
         /** @var \CCrmPerms $permissions */
         $permissions = $this->getUserPermissions();
         $entityID = isset($this->contextData[$entityTypeName]) ? $this->contextData[$entityTypeName] : 0;
         if ($entityID > 0) {
             if ($entityTypeID === \CCrmOwnerType::Invoice) {
                 if (!\CCrmInvoice::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 if (!\CCrmInvoice::CheckUpdatePermission($entityID, $permissions)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED);
                 }
                 $entity = new \CCrmInvoice(false);
                 $fields = array('UF_DEAL_ID' => $this->entityID);
                 try {
                     $entity->Update($entityID, $fields);
                 } catch (Main\DB\SqlQueryException $e) {
                 }
                 $this->resultData[$entityTypeName] = $entityID;
             } else {
                 if (!\CCrmQuote::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 if (!\CCrmQuote::CheckUpdatePermission($entityID, $permissions)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED);
                 }
                 $entity = new \CCrmQuote(false);
                 $fields = array('DEAL_ID' => $this->entityID);
                 $entity->Update($entityID, $fields);
                 $this->resultData[$entityTypeName] = $entityID;
             }
             return true;
         }
         if (!\CCrmAuthorizationHelper::CheckCreatePermission($entityTypeName, $permissions)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::CREATE_DENIED);
         }
         if (UserFieldSynchronizer::needForSynchronization(\CCrmOwnerType::Deal, $entityTypeID)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::NOT_SYNCHRONIZED);
         }
         if (!ConversionSettings::getCurrent()->isAutocreationEnabled()) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::AUTOCREATION_DISABLED);
         }
         /** @var DealConversionMapper $mapper */
         $mapper = $this->getMapper();
         $map = self::prepareMap($entityTypeID);
         $fields = $mapper->map($map);
         if (empty($fields)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::EMPTY_FIELDS);
         }
         if ($entityTypeID === \CCrmOwnerType::Invoice) {
             $entity = new \CCrmInvoice(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             $this->resultData[\CCrmOwnerType::InvoiceName] = $entityID;
         } else {
             $entity = new \CCrmQuote(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $productRows = isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) ? $fields['PRODUCT_ROWS'] : array();
             if (!empty($productRows)) {
                 $currencyID = isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : '';
                 $personTypes = \CCrmPaySystem::getPersonTypeIDs();
                 $personTypeID = 0;
                 if (isset($personTypes['COMPANY']) && isset($personTypes['CONTACT'])) {
                     if (isset($fields['COMPANY_ID']) && $fields['COMPANY_ID'] > 0) {
                         $personTypeID = $personTypes['COMPANY'];
                     } elseif (isset($fields['CONTACT_ID']) && $fields['CONTACT_ID'] > 0) {
                         $personTypeID = $personTypes['CONTACT'];
                     }
                 }
                 if ($currencyID !== '' && $personTypeID > 0) {
                     $calculationOptions = array();
                     if (\CCrmTax::isTaxMode() && isset($fields['LOCATION_ID'])) {
                         $calculationOptions['LOCATION_ID'] = $fields['LOCATION_ID'];
                     }
                     $result = \CCrmSaleHelper::Calculate($productRows, $currencyID, $personTypeID, false, SITE_ID, $calculationOptions);
                     $arFields['OPPORTUNITY'] = isset($result['PRICE']) ? round(doubleval($result['PRICE']), 2) : 1.0;
                     $arFields['TAX_VALUE'] = isset($result['TAX_VALUE']) ? round(doubleval($result['TAX_VALUE']), 2) : 0.0;
                 }
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             $this->resultData[\CCrmOwnerType::QuoteName] = $entityID;
         }
         return true;
     } elseif ($this->currentPhase === DealConversionPhase::FINALIZATION) {
         return true;
     }
     return false;
 }
Example #11
0
                        $CCrmDeal = new CCrmDeal();
                        $arField = array('STAGE_ID' => $stageID);
                        if ($CCrmDeal->Update($entityID, $arField)) {
                            $arErrors = array();
                            CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Deal, $entityID, CCrmBizProcEventType::Edit, $arErrors);
                        }
                    }
                }
                break;
            case 'QUOTE':
                if (isset($_POST['STATUS_ID'])) {
                    $statusID = $_POST['STATUS_ID'];
                    $dbResult = CCrmQuote::GetList(array(), array('=ID' => $entityID), false, false, array('STATUS_ID'));
                    $arPrevious = $dbResult ? $dbResult->Fetch() : null;
                    if (is_array($arPrevious) && isset($arPrevious['STATUS_ID']) && $arPrevious['STATUS_ID'] !== $statusID) {
                        $CCrmDeal = new CCrmQuote();
                        $arField = array('STATUS_ID' => $statusID);
                        if ($CCrmDeal->Update($entityID, $arField)) {
                            $arErrors = array();
                            CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Quote, $entityID, CCrmBizProcEventType::Edit, $arErrors);
                        }
                    }
                }
                break;
        }
    }
} else {
    $arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? $arParams['FORM_ID'] : '';
    $arResult['FORM_TYPE'] = $arParams['FORM_TYPE'];
    $arResult['ENTITY_TYPE'] = $arParams['ENTITY_TYPE'];
    $arResult['ENTITY_ID'] = intval($arParams['ENTITY_ID']);
Example #12
0
 public static function BuildPermSql($aliasPrefix = 'CE', $permType = 'READ')
 {
     if (empty($arFilter['ENTITY_TYPE'])) {
         $arEntity = array(CCrmOwnerType::LeadName, CCrmOwnerType::DealName, CCrmOwnerType::QuoteName, CCrmOwnerType::ContactName, CCrmOwnerType::CompanyName);
     } elseif (isset($arFilter['ENTITY_TYPE']) && is_array($arFilter['ENTITY_TYPE'])) {
         $arEntity = $arFilter['ENTITY_TYPE'];
     } else {
         $arEntity = array($arFilter['ENTITY_TYPE']);
     }
     $entitiesSql = array();
     $permOptions = array('IDENTITY_COLUMN' => 'ENTITY_ID');
     foreach ($arEntity as $entityType) {
         if ($entityType === CCrmOwnerType::LeadName) {
             $entitiesSql[CCrmOwnerType::LeadName] = CCrmLead::BuildPermSql('CER', $permType, $permOptions);
         } elseif ($entityType === CCrmOwnerType::DealName) {
             $entitiesSql[CCrmOwnerType::DealName] = CCrmDeal::BuildPermSql('CER', $permType, $permOptions);
         } elseif ($entityType === CCrmOwnerType::QuoteName) {
             $entitiesSql[CCrmOwnerType::QuoteName] = CCrmQuote::BuildPermSql('CER', $permType, $permOptions);
         } elseif ($entityType === CCrmOwnerType::ContactName) {
             $entitiesSql[CCrmOwnerType::ContactName] = CCrmContact::BuildPermSql('CER', $permType, $permOptions);
         } elseif ($entityType === CCrmOwnerType::CompanyName) {
             $entitiesSql[CCrmOwnerType::CompanyName] = CCrmCompany::BuildPermSql('CER', $permType, $permOptions);
         }
     }
     foreach ($entitiesSql as $entityType => $entitySql) {
         if (!is_string($entitySql)) {
             //If $entityPermSql is not string - acces denied. Clear permission SQL and related records will be ignored.
             unset($entitiesSql[$entityType]);
             continue;
         }
         if ($entitySql !== '') {
             $entitiesSql[$entityType] = "(CER.ENTITY_TYPE = '{$entityType}' AND ({$entitySql}))";
         } else {
             // No permissions check - fetch all related records
             $entitiesSql[$entityType] = "(CER.ENTITY_TYPE = '{$entityType}')";
         }
     }
     //If $entitiesSql is empty - user does not have permissions at all.
     if (empty($entitiesSql)) {
         return false;
     }
     return implode(' OR ', $entitiesSql);
 }
Example #13
0
 public function executePhase()
 {
     if ($this->currentPhase === QuoteConversionPhase::DEAL_CREATION || $this->currentPhase === QuoteConversionPhase::INVOICE_CREATION) {
         if ($this->currentPhase === QuoteConversionPhase::DEAL_CREATION) {
             $entityTypeID = \CCrmOwnerType::Deal;
         } else {
             $entityTypeID = \CCrmOwnerType::Invoice;
         }
         $entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID);
         $config = $this->config->getItem($entityTypeID);
         if (!$config->isActive()) {
             return false;
         }
         /** @var \CCrmPerms $permissions */
         $permissions = $this->getUserPermissions();
         $entityID = isset($this->contextData[$entityTypeName]) ? $this->contextData[$entityTypeName] : 0;
         if ($entityID > 0) {
             if ($entityTypeID === \CCrmOwnerType::Deal) {
                 if (!\CCrmDeal::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Deal, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 $this->resultData[$entityTypeName] = $entityID;
             } else {
                 if (!\CCrmInvoice::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 if (!\CCrmInvoice::CheckUpdatePermission($entityID, $permissions)) {
                     throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED);
                 }
                 $entity = new \CCrmInvoice(false);
                 $fields = array('UF_QUOTE_ID' => $this->entityID);
                 try {
                     $entity->Update($entityID, $fields);
                 } catch (Main\DB\SqlQueryException $e) {
                 }
                 $this->resultData[$entityTypeName] = $entityID;
             }
             return true;
         }
         if (!\CCrmAuthorizationHelper::CheckCreatePermission($entityTypeName, $permissions)) {
             throw new EntityConversionException(\CCrmOwnerType::Quote, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::CREATE_DENIED);
         }
         if (UserFieldSynchronizer::needForSynchronization(\CCrmOwnerType::Quote, $entityTypeID)) {
             throw new EntityConversionException(\CCrmOwnerType::Quote, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::NOT_SYNCHRONIZED);
         }
         if (!ConversionSettings::getCurrent()->isAutocreationEnabled()) {
             throw new EntityConversionException(\CCrmOwnerType::Quote, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::AUTOCREATION_DISABLED);
         }
         if ($entityTypeID === \CCrmOwnerType::Deal && \CCrmBizProcHelper::HasAutoWorkflows($entityTypeID, \CCrmBizProcEventType::Create)) {
             throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::HAS_WORKFLOWS);
         }
         /** @var QuoteConversionMapper $mapper */
         $mapper = $this->getMapper();
         $map = self::prepareMap($entityTypeID);
         $fields = $mapper->map($map);
         if (empty($fields)) {
             throw new EntityConversionException(\CCrmOwnerType::Quote, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::EMPTY_FIELDS);
         }
         if ($entityTypeID === \CCrmOwnerType::Deal) {
             $entity = new \CCrmDeal(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Deal, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $productRows = isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) ? $fields['PRODUCT_ROWS'] : array();
             if (!empty($productRows)) {
                 $result = \CCrmProductRow::CalculateTotalInfo('D', 0, false, $fields, $productRows);
                 $fields['OPPORTUNITY'] = isset($result['OPPORTUNITY']) ? $result['OPPORTUNITY'] : 1.0;
                 $fields['TAX_VALUE'] = isset($result['TAX_VALUE']) ? $result['TAX_VALUE'] : 0.0;
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Deal, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             if (!empty($productRows)) {
                 \CCrmDeal::SaveProductRows($entityID, $productRows, false, false, false);
             }
             $this->resultData[\CCrmOwnerType::DealName] = $entityID;
         } else {
             $entity = new \CCrmInvoice(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Quote, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             $this->resultData[\CCrmOwnerType::InvoiceName] = $entityID;
         }
         return true;
     } elseif ($this->currentPhase === DealConversionPhase::FINALIZATION) {
         $fields = array();
         if (isset($this->resultData[\CCrmOwnerType::DealName])) {
             $fields['DEAL_ID'] = $this->resultData[\CCrmOwnerType::DealName];
         }
         if (!empty($fields)) {
             $entity = new \CCrmQuote(false);
             $entity->Update($this->entityID, $fields);
         }
         return true;
     }
     return false;
 }
Example #14
0
 public static function CalculateTotalInfo($ownerType, $ownerID, $checkPerms = true, $params = null, $rows = null, $totalInfo = array())
 {
     if (!is_array($totalInfo)) {
         $totalInfo = array();
     }
     $result = false;
     if (isset($totalInfo['OPPORTUNITY']) && isset($totalInfo['TAX_VALUE'])) {
         $result = array('OPPORTUNITY' => round(doubleval($totalInfo['OPPORTUNITY']), 2), 'TAX_VALUE' => round(doubleval($totalInfo['TAX_VALUE']), 2));
     } else {
         $arParams = null;
         if ($ownerID <= 0) {
             $arParams = $params;
         } else {
             if ($ownerType === 'L') {
                 $arParams = CCrmLead::GetByID($ownerID, $checkPerms);
             } elseif ($ownerType === 'D') {
                 $arParams = CCrmDeal::GetByID($ownerID, $checkPerms);
             } elseif ($ownerType === CCrmQuote::OWNER_TYPE) {
                 $arParams = CCrmQuote::GetByID($ownerID, $checkPerms);
             }
         }
         if (!is_array($arParams)) {
             return $result;
         }
         $arRows = null;
         if (is_array($rows)) {
             $arRows = $rows;
         } elseif ($ownerID > 0) {
             $arRows = CCrmProductRow::LoadRows($ownerType, $ownerID);
         }
         if (!is_array($arRows)) {
             return $result;
         }
         $currencyID = isset($params['CURRENCY_ID']) ? $params['CURRENCY_ID'] : '';
         if ($currencyID === '') {
             $currencyID = CCrmCurrency::GetBaseCurrencyID();
         }
         $companyID = isset($params['COMPANY_ID']) ? intval($params['COMPANY_ID']) : 0;
         $contactID = isset($params['CONTACT_ID']) ? intval($params['CONTACT_ID']) : 0;
         // Determine person type
         $personTypeId = 0;
         $arPersonTypes = CCrmPaySystem::getPersonTypeIDs();
         if ($companyID > 0 && isset($arPersonTypes['COMPANY'])) {
             $personTypeId = $arPersonTypes['COMPANY'];
         } elseif ($contactID > 0 && isset($arPersonTypes['CONTACT'])) {
             $personTypeId = $arPersonTypes['CONTACT'];
         }
         $enableSaleDiscount = false;
         $siteID = '';
         if (defined('SITE_ID')) {
             $siteID = SITE_ID;
         } else {
             $obSite = CSite::GetList($by = 'def', $order = 'desc', array('ACTIVE' => 'Y'));
             if ($obSite && ($arSite = $obSite->Fetch())) {
                 $siteID = $arSite["LID"];
             }
             unset($obSite, $arSite);
         }
         $calculateOptions = array();
         if (CCrmTax::isTaxMode()) {
             $calculateOptions['LOCATION_ID'] = isset($arParams['LOCATION_ID']) ? $arParams['LOCATION_ID'] : '';
         }
         $calculated = CCrmSaleHelper::Calculate($arRows, $currencyID, $personTypeId, $enableSaleDiscount, $siteID, $calculateOptions);
         $result = array('OPPORTUNITY' => isset($calculated['PRICE']) ? round(doubleval($calculated['PRICE']), 2) : 1.0, 'TAX_VALUE' => isset($calculated['TAX_VALUE']) ? round(doubleval($calculated['TAX_VALUE']), 2) : 0.0);
     }
     return $result;
 }
Example #15
0
 protected function prepareCrmSelectorItem($ufInfo)
 {
     /** @global CUser $USER */
     global $USER;
     $result = false;
     $selectorItem = array();
     if (!CModule::IncludeModule('crm')) {
         return $result;
     }
     $CCrmPerms = new CCrmPerms($USER->GetID());
     $nPermittedEntityTypes = 0;
     if ($ufInfo['SETTINGS']['LEAD'] == 'Y' && !$CCrmPerms->HavePerm('LEAD', BX_CRM_PERM_NONE, 'READ')) {
         $nPermittedEntityTypes++;
     }
     if ($ufInfo['SETTINGS']['CONTACT'] == 'Y' && !$CCrmPerms->HavePerm('CONTACT', BX_CRM_PERM_NONE, 'READ')) {
         $nPermittedEntityTypes++;
     }
     if ($ufInfo['SETTINGS']['COMPANY'] == 'Y' && !$CCrmPerms->HavePerm('COMPANY', BX_CRM_PERM_NONE, 'READ')) {
         $nPermittedEntityTypes++;
     }
     if ($ufInfo['SETTINGS']['DEAL'] == 'Y' && !$CCrmPerms->HavePerm('DEAL', BX_CRM_PERM_NONE, 'READ')) {
         $nPermittedEntityTypes++;
     }
     if ($ufInfo['SETTINGS']['QUOTE'] == 'Y' && !$CCrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) {
         $nPermittedEntityTypes++;
     }
     if ($ufInfo['SETTINGS']['PRODUCT'] == 'Y' && $CCrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ')) {
         $nPermittedEntityTypes++;
     }
     $usePrefix = true;
     /*$nPermittedEntityTypes > 1;*/
     // last 50 entity
     $entityTypes = array();
     $elements = array();
     $arSettings = $ufInfo['SETTINGS'];
     if (isset($arSettings['LEAD']) && $arSettings['LEAD'] == 'Y') {
         $entityTypes[] = 'lead';
         $arSelect = array('ID', 'TITLE', 'FULL_NAME', 'STATUS_ID');
         $obRes = CCrmLead::GetList(array('ID' => 'DESC'), array(), $arSelect, 50);
         $arFiles = array();
         while ($arRes = $obRes->Fetch()) {
             $arRes['SID'] = $usePrefix ? 'L_' . $arRes['ID'] : $arRes['ID'];
             $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $arRes['FULL_NAME'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $arRes['ID'])), 'type' => 'lead', 'selected' => 'N');
         }
     }
     if (isset($arSettings['CONTACT']) && $arSettings['CONTACT'] == 'Y') {
         $entityTypes[] = 'contact';
         $arSelect = array('ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO');
         $obRes = CCrmContact::GetList(array('ID' => 'DESC'), array(), $arSelect, 50);
         while ($arRes = $obRes->Fetch()) {
             $strImg = '';
             if (!empty($arRes['PHOTO']) && !isset($arFiles[$arRes['PHOTO']])) {
                 if ($arFile = CFile::GetFileArray($arRes['PHOTO'])) {
                     $arImg = CFile::ResizeImageGet($arFile, array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
                     if (is_array($arImg) && isset($arImg['src'])) {
                         $strImg = CHTTP::URN2URI($arImg['src'], '', true);
                     }
                 }
             }
             $arRes['SID'] = $usePrefix ? 'C_' . $arRes['ID'] : $arRes['ID'];
             $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['FULL_NAME']), 'desc' => empty($arRes['COMPANY_TITLE']) ? '' : $arRes['COMPANY_TITLE'], 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $arRes['ID'])), 'image' => $strImg, 'type' => 'contact', 'selected' => 'N');
         }
     }
     if (isset($arSettings['COMPANY']) && $arSettings['COMPANY'] == 'Y') {
         $entityTypes[] = 'company';
         $arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE');
         $arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY');
         $arSelect = array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO');
         $obRes = CCrmCompany::GetList(array('ID' => 'DESC'), array(), $arSelect, 50);
         $arFiles = array();
         while ($arRes = $obRes->Fetch()) {
             $strImg = '';
             if (!empty($arRes['LOGO']) && !isset($arFiles[$arRes['LOGO']])) {
                 if ($arFile = CFile::GetFileArray($arRes['LOGO'])) {
                     $arImg = CFile::ResizeImageGet($arFile, array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
                     if (is_array($arImg) && isset($arImg['src'])) {
                         $strImg = CHTTP::URN2URI($arImg['src'], '', true);
                     }
                 }
                 $arFiles[$arRes['LOGO']] = $strImg;
             }
             $arRes['SID'] = $usePrefix ? 'CO_' . $arRes['ID'] : $arRes['ID'];
             $arDesc = array();
             if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']])) {
                 $arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']];
             }
             if (isset($arCompanyIndustryList[$arRes['INDUSTRY']])) {
                 $arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']];
             }
             $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => implode(', ', $arDesc), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $arRes['ID'])), 'image' => $strImg, 'type' => 'company', 'selected' => 'N');
         }
     }
     if (isset($arSettings['DEAL']) && $arSettings['DEAL'] == 'Y') {
         $entityTypes[] = 'deal';
         $arDealStageList = CCrmStatus::GetStatusListEx('DEAL_STAGE');
         $arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME');
         $obRes = CCrmDeal::GetList(array('ID' => 'DESC'), array(), $arSelect, 50);
         while ($arRes = $obRes->Fetch()) {
             $arRes['SID'] = $usePrefix ? 'D_' . $arRes['ID'] : $arRes['ID'];
             $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
             $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
             $elements[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => 'N');
         }
     }
     if (isset($arSettings['QUOTE']) && $arSettings['QUOTE'] == 'Y') {
         $entityTypes[] = 'quote';
         $arSelect = array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME');
         $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array(), false, array('nTopCount' => 50), array('ID', 'QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME'));
         while ($arRes = $obRes->Fetch()) {
             $arRes['SID'] = $usePrefix ? 'Q_' . $arRes['ID'] : $arRes['ID'];
             $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
             $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
             $quoteTitle = empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE'];
             $elements[] = array('title' => empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => 'N');
         }
     }
     if (isset($arSettings['PRODUCT']) && $arSettings['PRODUCT'] == 'Y') {
         $entityTypes[] = 'product';
         $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID');
         $arPricesSelect = $arVatsSelect = array();
         $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect);
         $obRes = CCrmProduct::GetList(array('ID' => 'DESC'), array('ACTIVE' => 'Y'), $arSelect, 50);
         $arProducts = $arProductId = array();
         while ($arRes = $obRes->Fetch()) {
             foreach ($arPricesSelect as $fieldName) {
                 $arRes[$fieldName] = null;
             }
             foreach ($arVatsSelect as $fieldName) {
                 $arRes[$fieldName] = null;
             }
             $arProductId[] = $arRes['ID'];
             $arProducts[$arRes['ID']] = $arRes;
         }
         CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect);
         unset($arProductId, $arPricesSelect, $arVatsSelect);
         foreach ($arProducts as $arRes) {
             $arRes['SID'] = $usePrefix ? 'PROD_' . $arRes['ID'] : $arRes['ID'];
             $elements[] = array('title' => $arRes['NAME'], 'desc' => CCrmProduct::FormatPrice($arRes), 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_product_show'), array('product_id' => $arRes['ID'])), 'type' => 'product', 'selected' => 'N');
         }
         unset($arProducts);
     }
     $selectorItem['USER_TYPE_ID'] = $ufInfo['USER_TYPE_ID'];
     $selectorItem['ENTITY_ID'] = $ufInfo['ENTITY_ID'];
     $selectorItem['FIELD_NAME'] = $ufInfo['FIELD_NAME'];
     $selectorItem['PREFIX'] = $usePrefix ? 'Y' : 'N';
     $selectorItem['MULTIPLE'] = 'Y';
     //$ufInfo['MULTIPLE'];
     $selectorItem['ENTITY_TYPE'] = $entityTypes;
     $selectorItem['ELEMENT'] = $elements;
     $result = $selectorItem;
     return $result;
 }
Example #16
0
    if (isset($arEntityList['CONTACT']) && !empty($arEntityList['CONTACT'])) {
        $dbRes = CCrmContact::GetList(array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arEntityList['CONTACT']));
        while ($arRes = $dbRes->Fetch()) {
            $arEntityList['CONTACT'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['LAST_NAME'] . ' ' . $arRes['NAME'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arRes['ID'])));
        }
    }
    if (isset($arEntityList['COMPANY']) && !empty($arEntityList['COMPANY'])) {
        $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['COMPANY']));
        while ($arRes = $dbRes->Fetch()) {
            $arEntityList['COMPANY'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arRes['ID'])));
        }
    }
    if (isset($arEntityList['DEAL']) && !empty($arEntityList['DEAL'])) {
        $dbRes = CCrmDeal::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['DEAL']));
        while ($arRes = $dbRes->Fetch()) {
            $arEntityList['DEAL'][$arRes['ID']] = array('ENTITY_TITLE' => $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $arRes['ID'])));
        }
    }
    if (isset($arEntityList['QUOTE']) && !empty($arEntityList['QUOTE'])) {
        $dbRes = CCrmQuote::GetList(array('TITLE' => 'ASC'), array('ID' => $arEntityList['QUOTE']));
        while ($arRes = $dbRes->Fetch()) {
            $arEntityList['QUOTE'][$arRes['ID']] = array('ENTITY_TITLE' => empty($arRes['TITLE']) ? $arRes['QUOTE_NUMBER'] : $arRes['QUOTE_NUMBER'] . ' - ' . $arRes['TITLE'], 'ENTITY_LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_SHOW'], array('quote_id' => $arRes['ID'])));
        }
    }
    foreach ($arResult['EVENT'] as $key => $ar) {
        $arResult['EVENT'][$key]['ENTITY_TITLE'] = htmlspecialcharsbx($arEntityList[$ar['ENTITY_TYPE']][$ar['ENTITY_ID']]['ENTITY_TITLE']);
        $arResult['EVENT'][$key]['ENTITY_LINK'] = $arEntityList[$ar['ENTITY_TYPE']][$ar['ENTITY_ID']]['ENTITY_LINK'];
    }
}
$this->IncludeComponentTemplate();
return $obRes->SelectedRowsCount();
Example #17
0
     }
     $filter = array('CHECK_PERMISSIONS' => 'N');
     if ($lastItemID > 0) {
         $filter['>ID'] = $lastItemID;
     }
     $dbResult = CCrmQuote::GetList(array('ID' => 'ASC'), $filter, false, array('nTopCount' => 10), array('ID'));
     $itemIDs = array();
     $itemQty = 0;
     if (is_object($dbResult)) {
         while ($fields = $dbResult->Fetch()) {
             $itemIDs[] = intval($fields['ID']);
             $itemQty++;
         }
     }
     if ($itemQty > 0) {
         CCrmQuote::RebuildEntityAccessAttrs($itemIDs);
         $progressData['TOTAL_ITEMS'] = $totalItemQty;
         $processedItemQty += $itemQty;
         $progressData['PROCESSED_ITEMS'] = $processedItemQty;
         $progressData['LAST_ITEM_ID'] = $itemIDs[$itemQty - 1];
         COption::SetOptionString('crm', '~CRM_REBUILD_QUOTE_ATTR_PROGRESS', serialize($progressData));
         __CrmConfigPermsEndResonse(array('STATUS' => 'PROGRESS', 'PROCESSED_ITEMS' => $processedItemQty, 'TOTAL_ITEMS' => $totalItemQty, 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_PROGRESS_SUMMARY', array('#PROCESSED_ITEMS#' => $processedItemQty, '#TOTAL_ITEMS#' => $totalItemQty))));
     } else {
         COption::RemoveOption('crm', '~CRM_REBUILD_QUOTE_ATTR');
         COption::RemoveOption('crm', '~CRM_REBUILD_QUOTE_ATTR_PROGRESS');
         __CrmConfigPermsEndResonse(array('STATUS' => 'COMPLETED', 'PROCESSED_ITEMS' => $processedItemQty, 'TOTAL_ITEMS' => $totalItemQty, 'SUMMARY' => GetMessage('CRM_CONFIG_PERMS_REBUILD_ATTR_COMPLETED_SUMMARY', array('#PROCESSED_ITEMS#' => $processedItemQty))));
     }
 } elseif ($entityTypeID === CCrmOwnerType::Invoice) {
     if (!CCrmInvoice::CheckUpdatePermission(0)) {
         __CrmConfigPermsEndResonse(array('ERROR' => 'Access denied.'));
     }
Example #18
0
 public static function HandleStorageElementDeletion($storageTypeID, $elementID)
 {
     global $DB;
     $storageTypeID = (int) $storageTypeID;
     $elementID = (int) $elementID;
     $dbResult = $DB->Query('SELECT QUOTE_ID FROM ' . CCrmQuote::ELEMENT_TABLE_NAME . ' WHERE STORAGE_TYPE_ID = ' . $storageTypeID . ' AND ELEMENT_ID = ' . $elementID, false, 'File: ' . __FILE__ . '<br/>Line: ' . __LINE__);
     while ($arResult = $dbResult->Fetch()) {
         $entityID = isset($arResult['QUOTE_ID']) ? (int) $arResult['QUOTE_ID'] : 0;
         if ($entityID <= 0) {
             continue;
         }
         $dbEntity = self::GetList(array(), array('ID' => $entityID), false, array('nTopCount' => 1), array('STORAGE_TYPE_ID', 'STORAGE_ELEMENT_IDS'));
         $arEntity = $dbEntity->Fetch();
         if (!is_array($arEntity)) {
             continue;
         }
         $arEntity['STORAGE_TYPE_ID'] = isset($arEntity['STORAGE_TYPE_ID']) ? (int) $arEntity['STORAGE_TYPE_ID'] : $storageTypeID;
         self::PrepareStorageElementIDs($arEntity);
         if (!empty($arEntity['STORAGE_ELEMENT_IDS'])) {
             $arEntity['STORAGE_ELEMENT_IDS'] = array_diff($arEntity['STORAGE_ELEMENT_IDS'], array($elementID));
         }
         $quote = new CCrmQuote(false);
         $quote->Update($entityID, $arEntity, true, false);
     }
 }
Example #19
0
 public static function UpdateSearch($arFilter, $ENTITY_TYPE, $bOverWrite = false)
 {
     if (!CModule::IncludeModule('search')) {
         return false;
     }
     $limit = 1000;
     switch ($ENTITY_TYPE) {
         case 'CONTACT':
             $obRes = CCrmContact::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit);
             $sTitleID = 'FULL_NAME';
             break;
         case 'DEAL':
             $obRes = CCrmDeal::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit);
             $sTitleID = 'TITLE';
             break;
         case 'INVOICE':
             $obRes = CCrmInvoice::GetList(array('ID' => 'DESC'), $arFilter, false, array('nTopCount' => $limit), array('*'));
             $sTitleID = 'ORDER_TOPIC';
             break;
         case 'QUOTE':
             $obRes = CCrmQuote::GetList(array('ID' => 'ASC'), $arFilter, false, array('nTopCount' => intval($limit)), array());
             $sTitleID = 'TITLE';
             break;
         case 'COMPANY':
             $obRes = CCrmCompany::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit);
             $sTitleID = 'TITLE';
             break;
         default:
         case 'LEAD':
             $obRes = CCrmLead::GetList(array('ID' => 'ASC'), $arFilter, array(), $limit);
             $sTitleID = 'TITLE';
             $ENTITY_TYPE = 'LEAD';
             break;
     }
     if (!isset(self::$arMess[$ENTITY_TYPE])) {
         self::$arMess[$ENTITY_TYPE] = __IncludeLang($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/components/bitrix/crm.' . strtolower($ENTITY_TYPE) . '.show/lang/' . LANGUAGE_ID . '/component.php', true);
     }
     $arAllResult = array();
     $qty = 0;
     $lastItemID = '';
     if (is_object($obRes)) {
         while (($arRow = $obRes->Fetch()) !== false) {
             $elementID = $arRow['ID'];
             $lastItemID = $ENTITY_TYPE . '.' . $elementID;
             if ($ENTITY_TYPE === 'INVOICE') {
                 $arResult = CCrmInvoice::BuildSearchCard($arRow, self::$bReIndex);
             } elseif ($ENTITY_TYPE === 'QUOTE') {
                 $arResult = CCrmQuote::BuildSearchCard($arRow, self::$bReIndex);
             } else {
                 $multiFields = array();
                 if ($ENTITY_TYPE === 'CONTACT' || $ENTITY_TYPE === 'COMPANY' || $ENTITY_TYPE === 'LEAD') {
                     $obMultiFieldRes = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $ENTITY_TYPE, 'ELEMENT_ID' => $elementID));
                     while ($multiField = $obMultiFieldRes->Fetch()) {
                         $fieldValue = $multiField['VALUE'];
                         $fieldTypeID = $multiField['TYPE_ID'];
                         if ($fieldValue === '' || $fieldTypeID !== 'PHONE' && $fieldTypeID !== 'EMAIL') {
                             continue;
                         }
                         if (!isset($multiFields[$fieldTypeID])) {
                             $multiFields[$fieldTypeID] = array();
                         }
                         $multiFields[$fieldTypeID][] = $fieldValue;
                     }
                 }
                 $arResult = self::_buildEntityCard($arRow, $sTitleID, $ENTITY_TYPE, array('FM' => $multiFields));
             }
             if (self::$bReIndex) {
                 if (self::$oCallback) {
                     $res = call_user_func(array(self::$oCallback, self::$callback_method), $arResult);
                     if (!$res) {
                         return $lastItemID;
                     }
                 }
             } else {
                 CSearch::Index('crm', $ENTITY_TYPE . '.' . $arRow['ID'], $arResult, $bOverWrite);
             }
             $arAllResult[] = $arResult;
             $qty++;
         }
     }
     if (!self::$bReIndex && !empty($arFilter['ID']) && $qty === 0) {
         CSearch::DeleteIndex('crm', (int) $arFilter['ID']);
     }
     if (self::$bReIndex && $qty === $limit && $lastItemID !== '') {
         return $lastItemID;
     }
     return $arAllResult;
 }
Example #20
0
 if ($action === 'RECALCULATE') {
     try {
         $resultOptions = array();
         $options = isset($_POST['OPTIONS']) ? $_POST['OPTIONS'] : array();
         if (!is_array($options)) {
             throw new Exception('MISSING OPTIONS!');
         }
         if (isset($options['CLIENT_FIELDS']) && is_array($options['CLIENT_FIELDS'])) {
             $options = $options['CLIENT_FIELDS'];
             if (isset($options['CONTACT_ID']) && isset($options['COMPANY_ID'])) {
                 $fields = array('CONTACT_ID' => intval($options['CONTACT_ID']), 'COMPANY_ID' => intval($options['COMPANY_ID']));
                 foreach (CCrmQuote::GetClientFields() as $k) {
                     $fields[$k] = '';
                 }
                 unset($k);
                 CCrmQuote::RewriteClientFields($fields, false);
                 $resultOptions['CLIENT_FIELDS'] = $fields;
             } else {
                 throw new Exception('INVALID CLIENT_FIELDS OPTIONS!');
             }
         } else {
             throw new Exception('INVALID OPTIONS!');
         }
         echo CUtil::PhpToJSObject($resultOptions);
     } catch (Exception $e) {
         echo CUtil::PhpToJSObject(array('ERROR' => $e->getMessage()));
     }
 } elseif ($action == 'GET_WEBDAV_ELEMENT_INFO') {
     $elementID = isset($_POST['ELEMENT_ID']) ? intval($_POST['ELEMENT_ID']) : 0;
     if ($elementID <= 0) {
         echo CUtil::PhpToJSObject(array('ERROR' => 'Invalid data'));
Example #21
0
 public static function TryGetInfo($typeID, $ID, &$info, $bCheckPermissions = false)
 {
     $typeID = intval($typeID);
     $ID = intval($ID);
     if ($ID <= 0) {
         return array();
     }
     $result = null;
     switch ($typeID) {
         case self::Lead:
             $dbRes = CCrmLead::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0);
                 return true;
             }
             break;
         case self::Contact:
             $dbRes = CCrmContact::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('NAME', 'SECOND_NAME', 'LAST_NAME', 'PHOTO'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('LOGIN' => '', 'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '', 'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '', 'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''), false, false), 'IMAGE_ID' => isset($arRes['PHOTO']) ? intval($arRes['PHOTO']) : 0);
                 return true;
             }
             break;
         case self::Company:
             $dbRes = CCrmCompany::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE', 'LOGO'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => isset($arRes['LOGO']) ? intval($arRes['LOGO']) : 0);
                 return true;
             }
             break;
         case self::Deal:
             $dbRes = CCrmDeal::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0);
                 return true;
             }
             break;
         case self::Invoice:
             $dbRes = CCrmInvoice::GetList(array(), array('ID' => $ID), false, false, array('ORDER_TOPIC'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => isset($arRes['ORDER_TOPIC']) ? $arRes['ORDER_TOPIC'] : '', 'IMAGE_ID' => 0);
                 return true;
             }
             break;
         case self::Quote:
             $dbRes = CCrmQuote::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => $bCheckPermissions ? 'Y' : 'N'), false, false, array('TITLE'));
             $arRes = $dbRes ? $dbRes->Fetch() : null;
             if (is_array($arRes)) {
                 $info = array('CAPTION' => isset($arRes['TITLE']) ? $arRes['TITLE'] : '', 'IMAGE_ID' => 0);
                 return true;
             }
             break;
     }
     return false;
 }
Example #22
0
//Security check
$userPermissions = CCrmPerms::GetCurrentUserPermissions();
$filter = isset($componentParams['INTERNAL_FILTER']) && is_array($componentParams['INTERNAL_FILTER']) ? $componentParams['INTERNAL_FILTER'] : array();
$contactID = isset($filter['UF_CONTACT_ID']) ? $filter['UF_CONTACT_ID'] : 0;
$companyID = isset($filter['UF_COMPANY_ID']) ? $filter['UF_COMPANY_ID'] : 0;
$dealID = isset($filter['UF_DEAL_ID']) ? $filter['UF_DEAL_ID'] : 0;
$quoteID = isset($filter['UF_QUOTE_ID']) ? $filter['UF_QUOTE_ID'] : 0;
$isPermitted = false;
if ($contactID > 0) {
    $isPermitted = CCrmContact::CheckReadPermission($contactID, $userPermissions);
} elseif ($companyID > 0) {
    $isPermitted = CCrmCompany::CheckReadPermission($companyID, $userPermissions);
} elseif ($dealID > 0) {
    $isPermitted = CCrmDeal::CheckReadPermission($dealID, $userPermissions);
} elseif ($quoteID > 0) {
    $isPermitted = CCrmQuote::CheckReadPermission($quoteID, $userPermissions);
}
if (!$isPermitted) {
    die;
}
//For custom reload with params
$ajaxLoaderParams = array('url' => '', 'method' => 'POST', 'dataType' => 'ajax', 'data' => array('PARAMS' => $componentData));
global $APPLICATION;
Header('Content-Type: text/html; charset=' . LANG_CHARSET);
$APPLICATION->ShowAjaxHead();
//Force AJAX mode
$componentParams['AJAX_MODE'] = 'Y';
$componentParams['AJAX_OPTION_JUMP'] = 'N';
$componentParams['AJAX_OPTION_HISTORY'] = 'N';
$componentParams['AJAX_LOADER'] = $ajaxLoaderParams;
$APPLICATION->IncludeComponent('bitrix:crm.invoice.list', isset($componentData['template']) ? $componentData['template'] : '', $componentParams, false, array('HIDE_ICONS' => 'Y', 'ACTIVE_COMPONENT' => 'Y'));
Example #23
0
    if ($field['id'] === 'PRODUCT_ROWS') {
        $productFieldset['HTML'] = $field['value'];
        unset($arTabs[0]['fields'][$k]);
        break;
    }
}
unset($field);
$formCustomHtml = '<input type="hidden" name="quote_id" value="' . $elementID . '"/>' . $arResult['FORM_CUSTOM_HTML'];
$APPLICATION->IncludeComponent('bitrix:crm.interface.form', 'edit', array('FORM_ID' => $arResult['FORM_ID'], 'GRID_ID' => $arResult['GRID_ID'], 'TABS' => $arTabs, 'FIELD_SETS' => array($productFieldset), 'USER_FIELD_ENTITY_ID' => CCrmQuote::$sUFEntityID, 'BUTTONS' => array('standard_buttons' => true, 'back_url' => $arResult['BACK_URL'], 'custom_html' => $formCustomHtml), 'IS_NEW' => $elementID <= 0, 'TITLE' => $arResult['CRM_CUSTOM_PAGE_TITLE'], 'ENABLE_TACTILE_INTERFACE' => 'Y', 'DATA' => $arResult['ELEMENT'], 'SHOW_SETTINGS' => 'Y'));
$prefixLower = strtolower($arResult['PREFIX']);
$companySpecifiedClientFields = array('CLIENT_CONTACT', 'CLIENT_TP_ID');
if (LANGUAGE_ID === 'ru') {
    $companySpecifiedClientFields[] = 'CLIENT_TPA_ID';
}
$editorSettings = array('formId' => $arResult['FORM_ID'], 'productRowEditorId' => $arResult['PRODUCT_ROW_EDITOR_ID'], 'url' => '/bitrix/components/bitrix/crm.quote.edit/ajax.php?' . bitrix_sessid_get(), 'personType' => $arResult['PERSON_TYPE'], 'contactId' => intval($arResult['ELEMENT']['CONTACT_ID']), 'companyId' => intval($arResult['ELEMENT']['COMPANY_ID']), 'personTypeIds' => $arResult['PERSON_TYPE_IDS'], 'companySpecifiedClientFields' => $companySpecifiedClientFields, 'languageId' => LANGUAGE_ID, 'filesFieldSettings' => array('containerId' => $arResult['FILES_FIELD_CONTAINER_ID'], 'controlMode' => 'edit', 'webDavSelectUrl' => $arResult['WEBDAV_SELECT_URL'], 'webDavUploadUrl' => $arResult['WEBDAV_UPLOAD_URL'], 'webDavShowUrl' => $arResult['WEBDAV_SHOW_URL'], 'files' => $arResult['ELEMENT']['STORAGE_ELEMENT_IDS'], 'uploadContainerID' => $prefixLower . '_upload_container', 'uploadControlID' => $prefixLower . '_uploader', 'uploadInputID' => $prefixLower . '_saved_file', 'storageTypeId' => $arResult['ELEMENT']['STORAGE_TYPE_ID'], 'defaultStorageTypeId' => CCrmQuote::GetDefaultStorageTypeID(), 'serviceUrl' => '/bitrix/components/bitrix/crm.quote.edit/ajax.php?siteID=' . SITE_ID . '&' . bitrix_sessid_get(), 'messages' => array('webdavFileLoading' => GetMessage('CRM_QUOTE_WEBDAV_FILE_LOADING'), 'webdavFileAlreadyExists' => GetMessage('CRM_QUOTE_WEBDAV_FILE_ALREADY_EXISTS'), 'webdavFileAccessDenied' => GetMessage('CRM_QUOTE_WEBDAV_FILE_ACCESS_DENIED'), 'webdavAttachFile' => GetMessage('CRM_QUOTE_WEBDAV_ATTACH_FILE'), 'webdavTitle' => GetMessage('CRM_QUOTE_WEBDAV_TITLE'), 'webdavDragFile' => GetMessage('CRM_QUOTE_WEBDAV_DRAG_FILE'), 'webdavSelectFile' => GetMessage('CRM_QUOTE_WEBDAV_SELECT_FILE'), 'webdavSelectFromLib' => GetMessage('CRM_QUOTE_WEBDAV_SELECT_FROM_LIB'), 'webdavLoadFiles' => GetMessage('CRM_QUOTE_WEBDAV_LOAD_FILES'), 'diskAttachFiles' => GetMessage('CRM_QUOTE_DISK_ATTACH_FILE'), 'diskAttachedFiles' => GetMessage('CRM_QUOTE_DISK_ATTACHED_FILES'), 'diskSelectFile' => GetMessage('CRM_QUOTE_DISK_SELECT_FILE'), 'diskSelectFileLegend' => GetMessage('CRM_QUOTE_DISK_SELECT_FILE_LEGEND'), 'diskUploadFile' => GetMessage('CRM_QUOTE_DISK_UPLOAD_FILE'), 'diskUploadFileLegend' => GetMessage('CRM_QUOTE_DISK_UPLOAD_FILE_LEGEND'))));
CCrmQuote::PrepareStorageElementInfo($arResult['ELEMENT']);
if (isset($arResult['ELEMENT']['WEBDAV_ELEMENTS'])) {
    $editorSettings['filesFieldSettings']['webdavelements'] = $arResult['ELEMENT']['WEBDAV_ELEMENTS'];
} elseif (isset($arResult['ELEMENT']['DISK_FILES'])) {
    $editorSettings['filesFieldSettings']['diskfiles'] = $arResult['ELEMENT']['DISK_FILES'];
}
?>
<script type="text/javascript">

	window.CrmProductRowSetLocation = function(){
		BX.onCustomEvent('CrmProductRowSetLocation', ['LOC_CITY']);
	}

	BX.ready(function(){
		BX.CrmQuoteEditor.create(
			"<?php 
Example #24
0
 public static function OnDiskFileDelete($objectID, $deletedByUserID)
 {
     $objectID = (int) $objectID;
     if ($objectID <= 0) {
         return;
     }
     \CCrmActivity::HandleStorageElementDeletion(StorageType::Disk, $objectID);
     \CCrmQuote::HandleStorageElementDeletion(StorageType::Disk, $objectID);
 }
Example #25
0
        echo CUtil::PhpToJSObject(array('ERROR' => 'Not found!'));
        die;
    }
    if (isset($arFields['CREATED_BY_ID'])) {
        unset($arFields['CREATED_BY_ID']);
    }
    if (isset($arFields['DATE_CREATE'])) {
        unset($arFields['DATE_CREATE']);
    }
    if (isset($arFields['MODIFY_BY_ID'])) {
        unset($arFields['MODIFY_BY_ID']);
    }
    if (isset($arFields['DATE_MODIFY'])) {
        unset($arFields['DATE_MODIFY']);
    }
    $arFields['STATUS_ID'] = $statusID;
    $CCrmQuote = new CCrmQuote(false);
    if ($CCrmQuote->Update($ID, $arFields, true, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true))) {
        /*---bizproc---$arErrors = array();
        		CCrmBizProcHelper::AutoStartWorkflows(
        			CCrmOwnerType::Quote,
        			$ID,
        			CCrmBizProcEventType::Edit,
        			$arErrors
        		);*/
    }
    $APPLICATION->RestartBuffer();
    Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
    echo CUtil::PhpToJsObject(array('TYPE' => $targetTypeName, 'ID' => $ID, 'VALUE' => $statusID));
    die;
}
Example #26
0
    $arQuote['PATH_TO_QUOTE_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => $iQuoteId));
    $arQuote['PATH_TO_CONTACT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arQuote['CONTACT_ID']));
    $arQuote['PATH_TO_COMPANY_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arQuote['COMPANY_ID']));
    $arQuote['CONTACT_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('NAME' => $arQuote['NAME'], 'LAST_NAME' => $arQuote['LAST_NAME'], 'SECOND_NAME' => $arQuote['SECOND_NAME']), true, false);
    $strCard = '
<div class="bx-user-info-data-cont-video bx-user-info-fields" id="bx_user_info_data_cont_1">
	<div class="bx-user-info-data-name">
		<a href="' . $arQuote['PATH_TO_QUOTE_SHOW'] . '">' . htmlspecialcharsbx(empty($arQuote['TITLE']) ? $arQuote['QUOTE_NUMBER'] : $arQuote['QUOTE_NUMBER'] . ' - ' . $arQuote['TITLE']) . '</a>
	</div>
	<div class="bx-user-info-data-info">';
    if (!empty($arQuote['STATUS_ID'])) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_STATUS_ID') . '</span>:
		<span class="fields enumeration">' . $arResult['STATUS_LIST'][$arQuote['STATUS_ID']] . '</span>
		<br />';
    }
    $arProductRows = CCrmQuote::LoadProductRows($arQuote['ID']);
    if (count($arProductRows) > 0) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_PRODUCTS') . '</span>:<span class="fields enumeration">' . htmlspecialcharsbx(CCrmProductRow::RowsToString($arProductRows)) . '</span><br />';
    }
    if (!empty($arQuote['OPPORTUNITY'])) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_OPPORTUNITY') . '</span>:
		<span class="fields enumeration"><nobr>' . number_format($arQuote['OPPORTUNITY'], 2, ',', ' ') . ' ' . htmlspecialcharsbx(CCrmCurrency::GetCurrencyName($arQuote['CURRENCY_ID'])) . '</nobr></span>
		<br />';
    }
    /*if (!empty($arQuote['PROBABILITY']))
    	{
    		$strCard .= '<span class="field-name">'.GetMessage('CRM_COLUMN_PROBABILITY').'</span>:
    		<span class="fields enumeration">'.intval($arQuote['PROBABILITY']).'%</span>
    		<br />';
    	}*/
    $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_DATE_MODIFY') . '</span>:
Example #27
0
             unset($arResult['SELECTED'][$arRes['SID']]);
             $sSelected = 'Y';
         } else {
             $sSelected = 'N';
         }
         $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
         $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
         $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $arRes['ID'])), 'type' => 'deal', 'selected' => $sSelected);
     }
     $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
 }
 if ($arSettings['QUOTE'] == 'Y' && isset($arSelected['QUOTE']) && !empty($arSelected['QUOTE'])) {
     $arQuoteStageList = CCrmStatus::GetStatusListEx('QUOTE_STAGE');
     $arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME');
     $ar = array();
     $obRes = CCrmQuote::GetList(array('ID' => 'DESC'), array('ID' => $arSelected['QUOTE']), false, false, $arSelect);
     while ($arRes = $obRes->Fetch()) {
         $arRes['SID'] = $arResult['PREFIX'] == 'Y' ? 'D_' . $arRes['ID'] : $arRes['ID'];
         if (isset($arResult['SELECTED'][$arRes['SID']])) {
             unset($arResult['SELECTED'][$arRes['SID']]);
             $sSelected = 'Y';
         } else {
             $sSelected = 'N';
         }
         $clientTitle = !empty($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '';
         $clientTitle .= ($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME']) ? ', ' : '') . $arRes['CONTACT_FULL_NAME'];
         $ar[] = array('title' => str_replace(array(';', ','), ' ', $arRes['TITLE']), 'desc' => $clientTitle, 'id' => $arRes['SID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'), array('quote_id' => $arRes['ID'])), 'type' => 'quote', 'selected' => $sSelected);
     }
     $arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
 }
 if (isset($arSettings['PRODUCT']) && $arSettings['PRODUCT'] == 'Y' && isset($arSelected['PRODUCT']) && !empty($arSelected['PRODUCT'])) {
Example #28
0
$arResult['TOOLBAR_ID'] = $toolbarID;
$arResult['BUTTONS'] = array();
if ($arParams['TYPE'] == 'list') {
    $bRead = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ');
    $bExport = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'EXPORT');
    //$bImport = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'IMPORT');
    $bAdd = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'ADD');
    $bWrite = !$CrmPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'WRITE');
    $bDelete = false;
} else {
    $bExport = false;
    //$bImport = false;
    $bRead = CCrmQuote::CheckReadPermission($arParams['ELEMENT_ID'], $CrmPerms);
    $bAdd = CCrmQuote::CheckCreatePermission($CrmPerms);
    $bWrite = CCrmQuote::CheckUpdatePermission($arParams['ELEMENT_ID'], $CrmPerms);
    $bDelete = CCrmQuote::CheckDeletePermission($arParams['ELEMENT_ID'], $CrmPerms);
}
if (!$bRead && !$bAdd && !$bWrite) {
    return false;
}
if ($arParams['TYPE'] === 'list') {
    if ($bAdd) {
        $arResult['BUTTONS'][] = array('TEXT' => GetMessage('QUOTE_ADD'), 'TITLE' => GetMessage('QUOTE_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_EDIT'], array('quote_id' => 0)), 'HIGHLIGHT' => true);
    }
    /*if ($bImport)
    	{
    		$arResult['BUTTONS'][] = array(
    			'TEXT' => GetMessage('QUOTE_IMPORT'),
    			'TITLE' => GetMessage('QUOTE_IMPORT_TITLE'),
    			'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_IMPORT'], array()),
    			'ICON' => 'btn-import'
Example #29
0
<?php

use Bitrix\Crm\Integration\StorageManager;
use Bitrix\Crm\Integration\StorageType;
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
    return;
}
CModule::IncludeModule('fileman');
$CCrmQuote = new CCrmQuote();
if ($CCrmQuote->cPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'WRITE') && $CCrmQuote->cPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'ADD')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$arParams['PATH_TO_QUOTE_LIST'] = CrmCheckPath('PATH_TO_QUOTE_LIST', $arParams['PATH_TO_QUOTE_LIST'], $APPLICATION->GetCurPage());
$arParams['PATH_TO_QUOTE_SHOW'] = CrmCheckPath('PATH_TO_QUOTE_SHOW', $arParams['PATH_TO_QUOTE_SHOW'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&show');
$arParams['PATH_TO_QUOTE_EDIT'] = CrmCheckPath('PATH_TO_QUOTE_EDIT', $arParams['PATH_TO_QUOTE_EDIT'], $APPLICATION->GetCurPage() . '?quote_id=#quote_id#&edit');
$arParams['PATH_TO_USER_PROFILE'] = CrmCheckPath('PATH_TO_USER_PROFILE', $arParams['PATH_TO_USER_PROFILE'], '/company/personal/user/#user_id#/');
$arParams['PATH_TO_CONTACT_SHOW'] = CrmCheckPath('PATH_TO_CONTACT_SHOW', $arParams['PATH_TO_CONTACT_SHOW'], $APPLICATION->GetCurPage() . '?contact_id=#contact_id#&show');
$arParams['PATH_TO_COMPANY_SHOW'] = CrmCheckPath('PATH_TO_COMPANY_SHOW', $arParams['PATH_TO_COMPANY_SHOW'], $APPLICATION->GetCurPage() . '?company_id=#company_id#&show');
$arParams['PATH_TO_PRODUCT_EDIT'] = CrmCheckPath('PATH_TO_PRODUCT_EDIT', $arParams['PATH_TO_PRODUCT_EDIT'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&edit');
$arParams['PATH_TO_PRODUCT_SHOW'] = CrmCheckPath('PATH_TO_PRODUCT_SHOW', $arParams['PATH_TO_PRODUCT_SHOW'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&show');
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
$arResult['PREFIX'] = isset($arParams['~PREFIX']) ? $arParams['~PREFIX'] : 'crm_quote_edit';
$bInternal = false;
if (isset($arParams['INTERNAL_FILTER']) && !empty($arParams['INTERNAL_FILTER'])) {
    $bInternal = true;
}
Example #30
0
}
if (!CModule::IncludeModule('sale')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED_SALE'));
    return;
}
$CCrmQuote = new CCrmQuote();
if ($CCrmQuote->cPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
global $APPLICATION;
$APPLICATION->RestartBuffer();
$quoteID = intval($arParams["QUOTE_ID"]);
$dbResult = CCrmQuote::GetList(array(), array('ID' => $quoteID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*'));
$arQuote = is_object($dbResult) ? $dbResult->Fetch() : null;
$paymentData = is_array($arQuote) ? CCrmQuote::PrepareSalePaymentData($arQuote) : null;
$paySystemID = isset($_REQUEST['PAY_SYSTEM_ID']) ? intval($_REQUEST['PAY_SYSTEM_ID']) : 0;
if (is_array($paymentData) && $paySystemID > 0) {
    $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $paySystemID, "PERSON_TYPE_ID" => $arQuote["PERSON_TYPE_ID"]), false, false, array("ACTION_FILE", "PARAMS", "ENCODING"));
    if ($arPaySysAction = $dbPaySysAction->Fetch()) {
        if (strlen($arPaySysAction["ACTION_FILE"]) > 0) {
            CSalePaySystemAction::InitParamArrays($paymentData["ORDER"], 0, $arPaySysAction["PARAMS"], array("PROPERTIES" => $paymentData["PROPERTIES"], "BASKET_ITEMS" => $paymentData["CART_ITEMS"], "TAX_LIST" => $paymentData["TAX_LIST"]));
            $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
            $pathToAction = str_replace("\\", "/", $pathToAction);
            while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") {
                $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
            }
            if (file_exists($pathToAction)) {
                if (is_dir($pathToAction)) {
                    if (file_exists($pathToAction . "/payment.php")) {
                        include $pathToAction . "/payment.php";