Beispiel #1
0
$arResult['TYPE'] = $arParams['TYPE'];
$arResult['BUTTONS'] = array();
$arFields = array();
$arParams['ELEMENT_ID'] = intval($arParams['ELEMENT_ID']);
if ($arParams['TYPE'] == 'list') {
    $bRead = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'READ');
    $bExport = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'EXPORT');
    $bImport = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'IMPORT');
    $bAdd = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'ADD');
    $bWrite = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'WRITE');
    $bDelete = false;
} else {
    $arFields = CCrmInvoice::GetByID($arParams['ELEMENT_ID']);
    $arEntityAttr[$arParams['ELEMENT_ID']] = array();
    if ($arFields !== false) {
        $arEntityAttr = $CrmPerms->GetEntityAttr('INVOICE', array($arParams['ELEMENT_ID']));
    }
    $bRead = $arFields !== false;
    $bExport = false;
    $bImport = false;
    $bAdd = !$CrmPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'ADD');
    $bWrite = $CrmPerms->CheckEnityAccess('INVOICE', 'WRITE', $arEntityAttr[$arParams['ELEMENT_ID']]);
    $bDelete = $CrmPerms->CheckEnityAccess('INVOICE', 'DELETE', $arEntityAttr[$arParams['ELEMENT_ID']]);
}
if (!$bRead && !$bAdd && !$bWrite) {
    return false;
}
if ($arParams['TYPE'] === 'list') {
    if ($bAdd) {
        $arResult['BUTTONS'][] = array('TEXT' => GetMessage('INVOICE_ADD'), 'TITLE' => GetMessage('INVOICE_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_INVOICE_EDIT'], array('invoice_id' => 0)), 'HIGHLIGHT' => true);
    }
Beispiel #2
0
    $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $arResult['CONTACT_ID']));
    while ($ar = $res->Fetch()) {
        if (!$isInExportMode) {
            $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
        } else {
            $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE'];
        }
        $arResult['CONTACT'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE'];
    }
    foreach ($arFmList as $elementId => $arFM) {
        foreach ($arFM as $complexId => $arComplexName) {
            $arResult['CONTACT'][$elementId][$complexId] = implode(', ', $arComplexName);
        }
    }
    // checkig access for operation
    $arContactAttr = CCrmPerms::GetEntityAttr('CONTACT', $arResult['CONTACT_ID']);
    foreach ($arResult['CONTACT_ID'] as $iContactId) {
        $arResult['CONTACT'][$iContactId]['EDIT'] = $CCrmPerms->CheckEnityAccess('CONTACT', 'WRITE', $arContactAttr[$iContactId]);
        $arResult['CONTACT'][$iContactId]['DELETE'] = $CCrmPerms->CheckEnityAccess('CONTACT', 'DELETE', $arContactAttr[$iContactId]);
        $arResult['CONTACT'][$iContactId]['BIZPROC_LIST'] = array();
        foreach ($arBPData as $arBP) {
            if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentContact', 'CONTACT_' . $arResult['CONTACT'][$iContactId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['CONTACT'][$iContactId]['ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arContactAttr[$iContactId]))) {
                continue;
            }
            $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arResult['CONTACT'][$iContactId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_CONTACT_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_CONTACT_LIST']));
            $arResult['CONTACT'][$iContactId]['BIZPROC_LIST'][] = $arBP;
        }
    }
}
if (!$isInExportMode) {
    $arResult['NEED_FOR_REBUILD_DUP_INDEX'] = false;
Beispiel #3
0
 $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $arResult['LEAD_ID']));
 while ($ar = $res->Fetch()) {
     if ($sExportType == '') {
         $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
     } else {
         $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE'];
     }
     $arResult['LEAD'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE'];
 }
 foreach ($arFmList as $elementId => $arFM) {
     foreach ($arFM as $complexId => $arComplexName) {
         $arResult['LEAD'][$elementId][$complexId] = implode(', ', $arComplexName);
     }
 }
 // checkig access for operation
 $arLeadAttr = CCrmPerms::GetEntityAttr('LEAD', $arResult['LEAD_ID']);
 foreach ($arResult['LEAD_ID'] as $iLeadId) {
     if ($arResult['LEAD'][$iLeadId]['EDIT']) {
         $arResult['LEAD'][$iLeadId]['EDIT'] = $CCrmPerms->CheckEnityAccess('LEAD', 'WRITE', $arLeadAttr[$iLeadId]);
     }
     if ($arResult['LEAD'][$iLeadId]['DELETE']) {
         $arResult['LEAD'][$iLeadId]['DELETE'] = $CCrmPerms->CheckEnityAccess('LEAD', 'DELETE', $arLeadAttr[$iLeadId]);
     }
     $arResult['LEAD'][$iLeadId]['BIZPROC_LIST'] = array();
     foreach ($arBPData as $arBP) {
         if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentLead', 'LEAD_' . $arResult['LEAD'][$iLeadId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['LEAD'][$iLeadId]['~ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arLeadAttr[$iLeadId]))) {
             continue;
         }
         $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_SHOW'], array('lead_id' => $arResult['LEAD'][$iLeadId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_LEAD_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_LEAD_LIST']));
         $arResult['LEAD'][$iLeadId]['BIZPROC_LIST'][] = $arBP;
     }
Beispiel #4
0
 public static function BuildSearchCard($arQuote, $bReindex = false)
 {
     $arStatuses = array();
     $arSite = array();
     $sEntityType = 'QUOTE';
     $sTitle = 'TITLE';
     $sNumber = 'QUOTE_NUMBER';
     $arSearchableFields = array('DATE_CREATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_DATE_CREATE'), 'STATUS_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_STATUS_ID'), 'BEGINDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_BEGINDATE'), 'CLOSEDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLOSEDATE'), 'OPPORTUNITY' => GetMessage('CRM_QUOTE_SEARCH_FIELD_OPPORTUNITY'), 'COMMENTS' => GetMessage('CRM_QUOTE_SEARCH_FIELD_COMMENTS'), 'CLIENT_TITLE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_TITLE'), 'CLIENT_ADDR' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_ADDR'), 'CLIENT_CONTACT' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_CONTACT'), 'CLIENT_EMAIL' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_EMAIL'), 'CLIENT_PHONE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_PHONE'), 'CLIENT_TP_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TP_ID'), 'CLIENT_TPA_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TPA_ID'));
     $sBody = $arQuote[$sNumber] . ', ' . $arQuote[$sTitle] . "\n";
     $arField2status = array('STATUS_ID' => 'QUOTE_STATUS');
     $site = new CSite();
     foreach (array_keys($arSearchableFields) as $k) {
         if (!isset($arQuote[$k])) {
             continue;
         }
         $v = $arQuote[$k];
         if ($k === 'COMMENTS') {
             $v = CSearch::KillTags($v);
         }
         $v = trim($v);
         if ($k === 'DATE_CREATE' || $k === 'BEGINDATE' || $k === 'CLOSEDATE') {
             $dateFormatShort = $site->GetDateFormat('SHORT');
             if (!CheckDateTime($v, $dateFormatShort)) {
                 $v = ConvertTimeStamp(strtotime($v), 'SHORT');
             }
             if (CheckDateTime($v, $dateFormatShort)) {
                 $v = FormatDate('SHORT', MakeTimeStamp($v, $dateFormatShort));
             } else {
                 $v = null;
             }
         }
         if (isset($arField2status[$k])) {
             if (!isset($arStatuses[$k])) {
                 $arStatuses[$k] = CCrmStatus::GetStatusList($arField2status[$k]);
             }
             $v = $arStatuses[$k][$v];
         }
         if ($k === 'OPPORTUNITY') {
             $v = number_format(doubleval($v), 2, '.', '');
         }
         if (!empty($v) && (!is_numeric($v) || $k === 'OPPORTUNITY') && $v != 'N' && $v != 'Y') {
             $sBody .= $arSearchableFields[$k] . ": {$v}\n";
         }
     }
     if (isset($arQuote['ASSIGNED_BY_NAME']) && !empty($arQuote['ASSIGNED_BY_NAME']) || isset($arQuote['ASSIGNED_BY_LAST_NAME']) && !empty($arQuote['ASSIGNED_BY_LAST_NAME']) || isset($arQuote['ASSIGNED_BY_SECOND_NAME']) && !empty($arQuote['ASSIGNED_BY_SECOND_NAME'])) {
         $responsibleInfo = CUser::FormatName($site->GetNameFormat(null, $arQuote['LID']), array('LOGIN' => '', 'NAME' => isset($arQuote['ASSIGNED_BY_NAME']) ? $arQuote['ASSIGNED_BY_NAME'] : '', 'LAST_NAME' => isset($arQuote['ASSIGNED_BY_LAST_NAME']) ? $arQuote['ASSIGNED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($arQuote['ASSIGNED_BY_SECOND_NAME']) ? $arQuote['ASSIGNED_BY_SECOND_NAME'] : ''), false, false);
         if (isset($arQuote['ASSIGNED_BY_EMAIL']) && !empty($arQuote['ASSIGNED_BY_EMAIL'])) {
             $responsibleInfo .= ', ' . $arQuote['ASSIGNED_BY_EMAIL'];
         }
         if (isset($arQuote['ASSIGNED_BY_WORK_POSITION']) && !empty($arQuote['ASSIGNED_BY_WORK_POSITION'])) {
             $responsibleInfo .= ', ' . $arQuote['ASSIGNED_BY_WORK_POSITION'];
         }
         if (!empty($responsibleInfo) && !is_numeric($responsibleInfo) && $responsibleInfo != 'N' && $responsibleInfo != 'Y') {
             $sBody .= GetMessage('CRM_QUOTE_SEARCH_FIELD_ASSIGNED_BY_INFO') . ": {$responsibleInfo}\n";
         }
     }
     $sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_' . strtolower($sEntityType) . '_show'), array(strtolower($sEntityType) . '_id' => $arQuote['ID']));
     $_arAttr = CCrmPerms::GetEntityAttr($sEntityType, $arQuote['ID']);
     if (empty($arSite)) {
         $by = "sort";
         $order = "asc";
         $rsSite = $site->GetList($by, $order);
         while ($_arSite = $rsSite->Fetch()) {
             $arSite[] = $_arSite['ID'];
         }
     }
     unset($site);
     $sattr_d = '';
     $sattr_s = '';
     $sattr_u = '';
     $sattr_o = '';
     $sattr2 = '';
     $arAttr = array();
     if (!isset($_arAttr[$arQuote['ID']])) {
         $_arAttr[$arQuote['ID']] = array();
     }
     $arAttr[] = $sEntityType;
     // for perm X
     foreach ($_arAttr[$arQuote['ID']] as $_s) {
         if ($_s[0] == 'U') {
             $sattr_u = $_s;
         } else {
             if ($_s[0] == 'D') {
                 $sattr_d = $_s;
             } else {
                 if ($_s[0] == 'S') {
                     $sattr_s = $_s;
                 } else {
                     if ($_s[0] == 'O') {
                         $sattr_o = $_s;
                     }
                 }
             }
         }
         $arAttr[] = $sEntityType . '_' . $_s;
     }
     $sattr = $sEntityType . '_' . $sattr_u;
     if (!empty($sattr_d)) {
         $sattr .= '_' . $sattr_d;
         $arAttr[] = $sattr;
     }
     if (!empty($sattr_s)) {
         $sattr2 = $sattr . '_' . $sattr_s;
         $arAttr[] = $sattr2;
         $arAttr[] = $sEntityType . '_' . $sattr_s;
         // for perm X in status
     }
     if (!empty($sattr_o)) {
         $sattr .= '_' . $sattr_o;
         $sattr3 = $sattr2 . '_' . $sattr_o;
         $arAttr[] = $sattr3;
         $arAttr[] = $sattr;
     }
     $arSitePath = array();
     foreach ($arSite as $sSite) {
         $arSitePath[$sSite] = $sDetailURL;
     }
     $arResult = array('LAST_MODIFIED' => $arQuote['DATE_MODIFY'], 'DATE_FROM' => $arQuote['DATE_CREATE'], 'TITLE' => GetMessage('CRM_' . $sEntityType) . ': ' . $arQuote[$sNumber] . ', ' . $arQuote[$sTitle], 'PARAM1' => $sEntityType, 'PARAM2' => $arQuote['ID'], 'SITE_ID' => $arSitePath, 'PERMISSIONS' => $arAttr, 'BODY' => $sBody, 'TAGS' => 'crm,' . strtolower($sEntityType) . ',' . GetMessage('CRM_' . $sEntityType));
     if ($bReindex) {
         $arResult['ID'] = $sEntityType . '.' . $arQuote['ID'];
     }
     return $arResult;
 }
Beispiel #5
0
if (isset($arResult['QUOTE_ID']) && !empty($arResult['QUOTE_ID'])) {
    // try to load product rows
    $arProductRows = CCrmQuote::LoadProductRows(array_keys($arResult['QUOTE_ID']));
    foreach ($arProductRows as $arProductRow) {
        $ownerID = $arProductRow['OWNER_ID'];
        if (!isset($arResult['QUOTE'][$ownerID])) {
            continue;
        }
        $arEntity =& $arResult['QUOTE'][$ownerID];
        if (!isset($arEntity['PRODUCT_ROWS'])) {
            $arEntity['PRODUCT_ROWS'] = array();
        }
        $arEntity['PRODUCT_ROWS'][] = $arProductRow;
    }
    // checkig access for operation
    $arQuoteAttr = CCrmPerms::GetEntityAttr('QUOTE', $arResult['QUOTE_ID']);
    foreach ($arResult['QUOTE_ID'] as $iQuoteId) {
        $arResult['QUOTE'][$iQuoteId]['EDIT'] = $CCrmPerms->CheckEnityAccess('QUOTE', 'WRITE', $arQuoteAttr[$iQuoteId]);
        $arResult['QUOTE'][$iQuoteId]['DELETE'] = $CCrmPerms->CheckEnityAccess('QUOTE', 'DELETE', $arQuoteAttr[$iQuoteId]);
        /*---bizproc---$arResult['QUOTE'][$iQuoteId]['BIZPROC_LIST'] = array();
        		foreach ($arBPData as $arBP)
        		{
        			if (!CBPDocument::CanUserOperateDocument(
        				CBPCanUserOperateOperation::StartWorkflow,
        				$userID,
        				array('crm', 'CCrmDocumentQuote', 'QUOTE_'.$arResult['QUOTE'][$iQuoteId]['ID']),
        				array(
        					'UserGroups' => $CCrmBizProc->arCurrentUserGroups,
        					'DocumentStates' => $arDocumentStates,
        					'WorkflowTemplateId' => $arBP['ID'],
        					'CreatedBy' => $arResult['QUOTE'][$iQuoteId]['ASSIGNED_BY'],
Beispiel #6
0
 $arResult['ENTITY_ID'] = intval($arParams['ENTITY_ID']);
 $arResult['ENTITY_TITLE'] = GetMessage('CRM_EVENT_DEFAULT_TITLE');
 $arResult['EVENT_TYPE'] = $arParams['EVENT_TYPE'];
 $arResult['FREEZE_EVENT_ID'] = isset($arParams['FREEZE_EVENT_ID']) ? strtoupper($arParams['FREEZE_EVENT_ID']) : '';
 if ($arParams['EVENT_TYPE'] === 'PHONE') {
     $arResult['PHONE_GROUPS'] = array();
 }
 switch ($arParams['ENTITY_TYPE']) {
     case 'LEAD':
         $dbRes = CCrmLead::GetList(array('TITLE' => 'ASC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $arResult['ENTITY_ID']));
         if ($arRes = $dbRes->Fetch()) {
             $arResult['ENTITY_TITLE'] = $arRes['TITLE'];
             $arResult['STATUS_ID'] = $arRes['STATUS_ID'];
             $arResult['ENTITY_CONVERTED'] = $arRes['STATUS_ID'] == 'CONVERTED' ? 'Y' : 'N';
         }
         $arEntityAttr = $CCrmPerms->GetEntityAttr('LEAD', $arResult['ENTITY_ID']);
         if ($CCrmPerms->CheckEnityAccess('LEAD', 'WRITE', $arEntityAttr[$arResult['ENTITY_ID']])) {
             $arResult['STATUS_LIST'] = array();
             $arResult['STATUS_LIST_EX'] = CCrmStatus::GetStatusList('STATUS');
             foreach ($arResult['STATUS_LIST_EX'] as $key => $value) {
                 if ($key == 'CONVERTED') {
                     continue;
                 }
                 if ($CCrmPerms->GetPermType('LEAD', 'WRITE', array('STATUS_ID' . $key)) > BX_CRM_PERM_NONE) {
                     $arResult['STATUS_LIST']['REFERENCE'][] = $value;
                     $arResult['STATUS_LIST']['REFERENCE_ID'][] = $key;
                 }
             }
             $arResult['PHONE_GROUPS'][] = array('PHONES' => __CrmEventGetPhones('LEAD', $arResult['ENTITY_ID']));
         }
         break;
Beispiel #7
0
 protected static function _buildEntityCard($arEntity, $sTitle, $ENTITY_TYPE, $arOptions = null)
 {
     static $arEntityGroup = array();
     static $arStatuses = array();
     static $arSite = array();
     $sBody = $arEntity[$sTitle] . "\n";
     $arField2status = array('STATUS_ID' => 'STATUS', 'SOURCE_ID' => 'SOURCE', 'CURRENCY_ID' => 'CURRENCY', 'PRODUCT_ID' => 'PRODUCT', 'TYPE_ID' => 'CONTACT_TYPE', 'STAGE_ID' => 'DEAL_STAGE', 'EVENT_ID' => 'EVENT_TYPE', 'COMPANY_TYPE' => 'COMPANY_TYPE', 'EMPLOYEES' => 'EMPLOYEES', 'INDUSTRY' => 'INDUSTRY');
     foreach ($arEntity as $_k => $_v) {
         if ($_k == $sTitle || strpos($_k, '_BY_') !== false || strpos($_k, 'DATE_') === 0 || strpos($_k, 'UF_') === 0) {
             continue;
         }
         if ($ENTITY_TYPE === 'CONTACT' && ($_k === 'NAME' || $_k === 'SECOND_NAME' || $_k === 'LAST_NAME')) {
             //Already added as title
             continue;
         }
         if (is_array($_v)) {
             continue;
         }
         if ($_k === 'COMMENTS') {
             $_v = CSearch::KillTags($_v);
         }
         $_v = trim($_v);
         if (isset($arField2status[$_k])) {
             if (!isset($arStatuses[$_k])) {
                 $arStatuses[$_k] = CCrmStatus::GetStatusList($arField2status[$_k]);
             }
             $_v = $arStatuses[$_k][$_v];
         }
         if (!empty($_v) && !is_numeric($_v) && $_v != 'N' && $_v != 'Y') {
             $sBody .= self::$arMess[$ENTITY_TYPE]['CRM_FIELD_' . $_k] . ": {$_v}\n";
         }
     }
     if ($ENTITY_TYPE === 'CONTACT' || $ENTITY_TYPE === 'COMPANY' || $ENTITY_TYPE === 'LEAD') {
         $multiFields = is_array($arOptions) && isset($arOptions['FM']) ? $arOptions['FM'] : null;
         if (is_array($multiFields)) {
             foreach ($multiFields as $typeID => $multiFieldItems) {
                 if ($typeID === 'PHONE') {
                     $sBody .= GetMessage('CRM_PHONES') . ': ' . implode(', ', $multiFieldItems) . "\n";
                 } elseif ($typeID === 'EMAIL') {
                     $sBody .= GetMessage('CRM_EMAILS') . ': ' . implode(', ', $multiFieldItems) . "\n";
                 }
             }
         }
     }
     $sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_' . strtolower($ENTITY_TYPE) . '_show'), array(strtolower($ENTITY_TYPE) . '_id' => $arEntity['ID']));
     $_arAttr = CCrmPerms::GetEntityAttr($ENTITY_TYPE, $arEntity['ID']);
     if (empty($arSite)) {
         $by = "sort";
         $order = "asc";
         $rsSite = CSite::GetList($by, $order);
         while ($_arSite = $rsSite->Fetch()) {
             $arSite[] = $_arSite['ID'];
         }
     }
     $sattr_d = '';
     $sattr_s = '';
     $sattr_u = '';
     $sattr_o = '';
     $arAttr = array();
     if (!isset($_arAttr[$arEntity['ID']])) {
         $_arAttr[$arEntity['ID']] = array();
     }
     $arAttr[] = $ENTITY_TYPE;
     // for perm X
     foreach ($_arAttr[$arEntity['ID']] as $_s) {
         if (preg_match('/^U/', $_s)) {
             $sattr_u = $_s;
         } elseif (preg_match('/^D/', $_s)) {
             $sattr_d = $_s;
         } elseif (preg_match('/^S/', $_s)) {
             $sattr_s = $_s;
         } elseif (preg_match('/^O/', $_s)) {
             $sattr_o = $_s;
         }
         $arAttr[] = "{$ENTITY_TYPE}_{$_s}";
     }
     if (!empty($sattr_s)) {
         $arAttr[] = "{$ENTITY_TYPE}_{$sattr_s}";
         // for perm X in status
         if (!empty($sattr_u)) {
             $arAttr[] = "{$ENTITY_TYPE}_{$sattr_u}_{$sattr_s}";
         }
         if (!empty($sattr_d)) {
             $arAttr[] = "{$ENTITY_TYPE}_{$sattr_d}_{$sattr_s}";
         }
         if (!empty($sattr_o)) {
             $arAttr[] = "{$ENTITY_TYPE}_{$sattr_o}_{$sattr_s}";
         }
     }
     $arSitePath = array();
     foreach ($arSite as $sSite) {
         $arSitePath[$sSite] = $sDetailURL;
     }
     $arResult = array('LAST_MODIFIED' => $arEntity['DATE_MODIFY'], 'DATE_FROM' => $arEntity['DATE_CREATE'], 'TITLE' => GetMessage('CRM_' . $ENTITY_TYPE) . ': ' . $arEntity[$sTitle], 'PARAM1' => $ENTITY_TYPE, 'PARAM2' => $arEntity['ID'], 'SITE_ID' => $arSitePath, 'PERMISSIONS' => $arAttr, 'BODY' => $sBody, 'TAGS' => 'crm,' . strtolower($ENTITY_TYPE) . ',' . GetMessage('CRM_' . $ENTITY_TYPE));
     if (self::$bReIndex) {
         $arResult['ID'] = $ENTITY_TYPE . '.' . $arEntity['ID'];
     }
     return $arResult;
 }
Beispiel #8
0
if (isset($arResult['DEAL_ID']) && !empty($arResult['DEAL_ID'])) {
    // try to load product rows
    $arProductRows = CCrmDeal::LoadProductRows(array_keys($arResult['DEAL_ID']));
    foreach ($arProductRows as $arProductRow) {
        $ownerID = $arProductRow['OWNER_ID'];
        if (!isset($arResult['DEAL'][$ownerID])) {
            continue;
        }
        $arEntity =& $arResult['DEAL'][$ownerID];
        if (!isset($arEntity['PRODUCT_ROWS'])) {
            $arEntity['PRODUCT_ROWS'] = array();
        }
        $arEntity['PRODUCT_ROWS'][] = $arProductRow;
    }
    // checkig access for operation
    $arDealAttr = CCrmPerms::GetEntityAttr('DEAL', $arResult['DEAL_ID']);
    foreach ($arResult['DEAL_ID'] as $iDealId) {
        $arResult['DEAL'][$iDealId]['EDIT'] = $CCrmPerms->CheckEnityAccess('DEAL', 'WRITE', $arDealAttr[$iDealId]);
        $arResult['DEAL'][$iDealId]['DELETE'] = $CCrmPerms->CheckEnityAccess('DEAL', 'DELETE', $arDealAttr[$iDealId]);
        $arResult['DEAL'][$iDealId]['BIZPROC_LIST'] = array();
        foreach ($arBPData as $arBP) {
            if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentDeal', 'DEAL_' . $arResult['DEAL'][$iDealId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['DEAL'][$iDealId]['ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arDealAttr[$iDealId]))) {
                continue;
            }
            $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $arResult['DEAL'][$iDealId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_DEAL_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_DEAL_LIST']));
            $arResult['DEAL'][$iDealId]['BIZPROC_LIST'][] = $arBP;
        }
    }
}
if (!$isInExportMode) {
    $arResult['NEED_FOR_REBUILD_DEAL_ATTRS'] = $arResult['NEED_FOR_REBUILD_DEAL_STATISTICS'] = false;
Beispiel #9
0
 public static function BuildSearchCard($arInvoice, $bReindex = false)
 {
     $arStatuses = array();
     $arSite = array();
     $sEntityType = 'INVOICE';
     $sTitle = 'ORDER_TOPIC';
     $sNumber = 'ACCOUNT_NUMBER';
     $arSearchableFields = array('STATUS_ID' => GetMessage('CRM_INVOICE_SEARCH_FIELD_STATUS_ID'), 'DATE_BILL' => GetMessage('CRM_INVOICE_SEARCH_FIELD_DATE_BILL'), 'DATE_PAY_BEFORE' => GetMessage('CRM_INVOICE_SEARCH_FIELD_DATE_PAY_BEFORE'), 'PRICE' => GetMessage('CRM_INVOICE_SEARCH_FIELD_PRICE'), 'PAY_VOUCHER_NUM' => GetMessage('CRM_INVOICE_SEARCH_FIELD_PAY_VOUCHER_NUM'), 'USER_DESCRIPTION' => GetMessage('CRM_INVOICE_SEARCH_FIELD_USER_DESCRIPTION'), 'COMMENTS' => GetMessage('CRM_INVOICE_SEARCH_FIELD_COMMENTS'), 'REASON_MARKED' => GetMessage('CRM_INVOICE_SEARCH_FIELD_REASON_MARKED'));
     $sBody = $arInvoice[$sNumber] . ', ' . $arInvoice[$sTitle] . "\n";
     $arField2status = array('STATUS_ID' => 'INVOICE_STATUS');
     $site = new CSite();
     foreach (array_keys($arSearchableFields) as $k) {
         if (!isset($arInvoice[$k])) {
             continue;
         }
         $v = $arInvoice[$k];
         if ($k === 'COMMENTS' || $k === 'USER_DESCRIPTION') {
             $v = CSearch::KillTags($v);
         }
         $v = trim($v);
         if ($k === 'DATE_BILL' || $k === 'DATE_PAY_BEFORE') {
             $dateFormatShort = $site->GetDateFormat('SHORT');
             if (!CheckDateTime($v, $dateFormatShort)) {
                 $v = ConvertTimeStamp(strtotime($v), 'SHORT');
             }
             if (CheckDateTime($v, $dateFormatShort)) {
                 $v = FormatDate('SHORT', MakeTimeStamp($v, $dateFormatShort));
             } else {
                 $v = null;
             }
         }
         if (isset($arField2status[$k])) {
             if (!isset($arStatuses[$k])) {
                 $arStatuses[$k] = CCrmStatus::GetStatusList($arField2status[$k]);
             }
             $v = $arStatuses[$k][$v];
         }
         if (!empty($v) && (!is_numeric($v) || $k === 'PRICE') && $v != 'N' && $v != 'Y') {
             $sBody .= $arSearchableFields[$k] . ": {$v}\n";
         }
     }
     if (isset($arInvoice['RESPONSIBLE_NAME']) && !empty($arInvoice['RESPONSIBLE_NAME']) || isset($arInvoice['RESPONSIBLE_LAST_NAME']) && !empty($arInvoice['RESPONSIBLE_LAST_NAME']) || isset($arInvoice['RESPONSIBLE_SECOND_NAME']) && !empty($arInvoice['RESPONSIBLE_SECOND_NAME'])) {
         $responsibleInfo = CUser::FormatName($site->GetNameFormat(null, $arInvoice['LID']), array('LOGIN' => '', 'NAME' => isset($arInvoice['RESPONSIBLE_NAME']) ? $arInvoice['RESPONSIBLE_NAME'] : '', 'LAST_NAME' => isset($arInvoice['RESPONSIBLE_LAST_NAME']) ? $arInvoice['RESPONSIBLE_LAST_NAME'] : '', 'SECOND_NAME' => isset($arInvoice['RESPONSIBLE_SECOND_NAME']) ? $arInvoice['RESPONSIBLE_SECOND_NAME'] : ''), false, false);
         if (isset($arInvoice['RESPONSIBLE_EMAIL']) && !empty($arInvoice['RESPONSIBLE_EMAIL'])) {
             $responsibleInfo .= ', ' . $arInvoice['RESPONSIBLE_EMAIL'];
         }
         if (isset($arInvoice['RESPONSIBLE_WORK_POSITION']) && !empty($arInvoice['RESPONSIBLE_WORK_POSITION'])) {
             $responsibleInfo .= ', ' . $arInvoice['RESPONSIBLE_WORK_POSITION'];
         }
         if (!empty($responsibleInfo) && !is_numeric($responsibleInfo) && $responsibleInfo != 'N' && $responsibleInfo != 'Y') {
             $sBody .= GetMessage('CRM_INVOICE_SEARCH_FIELD_RESPONSIBLE_INFO') . ": {$responsibleInfo}\n";
         }
     }
     if (intval($arInvoice['PERSON_TYPE_ID']) > 0) {
         $arSearchableProperties = self::_getAllowedPropertiesInfo();
         $arSearchableProperties = $arSearchableProperties[$arInvoice['PERSON_TYPE_ID']];
         $arInvoiceProps = self::GetProperties($arInvoice['ID'], $arInvoice['PERSON_TYPE_ID']);
         foreach ($arInvoiceProps as $prop) {
             $propCode = $prop['FIELDS']['CODE'];
             if (array_key_exists($propCode, $arSearchableProperties)) {
                 $v = $prop['VALUE'];
                 if (!empty($v) && !is_numeric($v) && $v != 'N' && $v != 'Y') {
                     $sBody .= $arSearchableProperties[$propCode] . ": {$v}\n";
                 }
             }
         }
     }
     $sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_' . strtolower($sEntityType) . '_show'), array(strtolower($sEntityType) . '_id' => $arInvoice['ID']));
     $_arAttr = CCrmPerms::GetEntityAttr($sEntityType, $arInvoice['ID']);
     if (empty($arSite)) {
         $by = "sort";
         $order = "asc";
         $rsSite = $site->GetList($by, $order);
         while ($_arSite = $rsSite->Fetch()) {
             $arSite[] = $_arSite['ID'];
         }
     }
     unset($site);
     $sattr_d = '';
     $sattr_s = '';
     $sattr_u = '';
     $sattr_o = '';
     $sattr2 = '';
     $arAttr = array();
     if (!isset($_arAttr[$arInvoice['ID']])) {
         $_arAttr[$arInvoice['ID']] = array();
     }
     $arAttr[] = $sEntityType;
     // for perm X
     foreach ($_arAttr[$arInvoice['ID']] as $_s) {
         if ($_s[0] == 'U') {
             $sattr_u = $_s;
         } else {
             if ($_s[0] == 'D') {
                 $sattr_d = $_s;
             } else {
                 if ($_s[0] == 'S') {
                     $sattr_s = $_s;
                 } else {
                     if ($_s[0] == 'O') {
                         $sattr_o = $_s;
                     }
                 }
             }
         }
         $arAttr[] = $sEntityType . '_' . $_s;
     }
     $sattr = $sEntityType . '_' . $sattr_u;
     if (!empty($sattr_d)) {
         $sattr .= '_' . $sattr_d;
         $arAttr[] = $sattr;
     }
     if (!empty($sattr_s)) {
         $sattr2 = $sattr . '_' . $sattr_s;
         $arAttr[] = $sattr2;
         $arAttr[] = $sEntityType . '_' . $sattr_s;
         // for perm X in status
     }
     if (!empty($sattr_o)) {
         $sattr .= '_' . $sattr_o;
         $sattr3 = $sattr2 . '_' . $sattr_o;
         $arAttr[] = $sattr3;
         $arAttr[] = $sattr;
     }
     $arSitePath = array();
     foreach ($arSite as $sSite) {
         $arSitePath[$sSite] = $sDetailURL;
     }
     $arResult = array('LAST_MODIFIED' => $arInvoice['DATE_UPDATE'], 'DATE_FROM' => $arInvoice['DATE_INSERT'], 'TITLE' => GetMessage('CRM_' . $sEntityType) . ': ' . $arInvoice[$sNumber] . ', ' . $arInvoice[$sTitle], 'PARAM1' => $sEntityType, 'PARAM2' => $arInvoice['ID'], 'SITE_ID' => $arSitePath, 'PERMISSIONS' => $arAttr, 'BODY' => $sBody, 'TAGS' => 'crm,' . strtolower($sEntityType) . ',' . GetMessage('CRM_' . $sEntityType));
     if ($bReindex) {
         $arResult['ID'] = $sEntityType . '.' . $arInvoice['ID'];
     }
     return $arResult;
 }
Beispiel #10
0
    }
    if (array_key_exists('QUOTE_LINK_HTML', $arInvoice)) {
        unset($arInvoice['QUOTE_LINK_HTML']);
    }
}
unset($arInvoice);
$CCrmUserType->ListAddEnumFieldsValue($arResult, $arResult['INVOICE'], $arResult['INVOICE_UF'], $sExportType != '' ? ', ' : '<br />', $sExportType != '', array('FILE_URL_TEMPLATE' => '/bitrix/components/bitrix/crm.invoice.show/show_file.php?ownerId=#owner_id#&fieldName=#field_name#&fileId=#file_id#'));
$arResult['TOOLBAR_LABEL_TEXT'] = GetMessage('CRM_INVOICE_LIST_TB_LABEL_TEXT', array('#num#' => $totalPaidNumber, '#sum#' => CCrmCurrency::MoneyToString(round($totalPaidSum, 2), $totalPaidCurrencyId)));
$arResult['ROWS_COUNT'] = $obRes->SelectedRowsCount();
$arResult['DB_LIST'] = $obRes;
$arResult['DB_FILTER'] = $arFilter;
if (isset($arResult['INVOICE_ID']) && !empty($arResult['INVOICE_ID'])) {
    // try to load product rows
    $arProductRows = array();
    // checkig access for operation
    $arInvoiceAttr = CCrmPerms::GetEntityAttr('INVOICE', $arResult['INVOICE_ID']);
    foreach ($arResult['INVOICE_ID'] as $iInvoiceId) {
        $arResult['INVOICE'][$iInvoiceId]['EDIT'] = $CCrmPerms->CheckEnityAccess('INVOICE', 'WRITE', $arInvoiceAttr[$iInvoiceId]);
        $arResult['INVOICE'][$iInvoiceId]['DELETE'] = $CCrmPerms->CheckEnityAccess('INVOICE', 'DELETE', $arInvoiceAttr[$iInvoiceId]);
    }
}
if ($sExportType == '') {
    $arResult['NEED_FOR_REBUILD_INVOICE_ATTRS'] = false;
    if (!$bInternal && CCrmPerms::IsAdmin() && COption::GetOptionString('crm', '~CRM_REBUILD_INVOICE_ATTR', 'N') === 'Y') {
        $arResult['PATH_TO_PRM_LIST'] = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_perm_list'));
        $arResult['NEED_FOR_REBUILD_INVOICE_ATTRS'] = true;
    }
    $this->IncludeComponentTemplate();
    include_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/bitrix/crm.invoice/include/nav.php';
    return $arResult['ROWS_COUNT'];
} else {
Beispiel #11
0
    $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $arResult['COMPANY_ID']));
    while ($ar = $res->Fetch()) {
        if (!$isInExportMode) {
            $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = CCrmFieldMulti::GetTemplateByComplex($ar['COMPLEX_ID'], $ar['VALUE']);
        } else {
            $arFmList[$ar['ELEMENT_ID']][$ar['COMPLEX_ID']][] = $ar['VALUE'];
        }
        $arResult['COMPANY'][$ar['ELEMENT_ID']]['~' . $ar['COMPLEX_ID']][] = $ar['VALUE'];
    }
    foreach ($arFmList as $elementId => $arFM) {
        foreach ($arFM as $complexId => $arComplexName) {
            $arResult['COMPANY'][$elementId][$complexId] = implode(', ', $arComplexName);
        }
    }
    // checkig access for operation
    $arCompanyAttr = CCrmPerms::GetEntityAttr('COMPANY', $arResult['COMPANY_ID']);
    foreach ($arResult['COMPANY_ID'] as $iCompanyId) {
        $arResult['COMPANY'][$iCompanyId]['EDIT'] = $CCrmCompany->cPerms->CheckEnityAccess('COMPANY', 'WRITE', $arCompanyAttr[$iCompanyId]);
        $arResult['COMPANY'][$iCompanyId]['DELETE'] = $CCrmCompany->cPerms->CheckEnityAccess('COMPANY', 'DELETE', $arCompanyAttr[$iCompanyId]);
        $arResult['COMPANY'][$iCompanyId]['BIZPROC_LIST'] = array();
        foreach ($arBPData as $arBP) {
            if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $userID, array('crm', 'CCrmDocumentCompany', 'COMPANY_' . $arResult['COMPANY'][$iCompanyId]['ID']), array('UserGroups' => $CCrmBizProc->arCurrentUserGroups, 'DocumentStates' => $arDocumentStates, 'WorkflowTemplateId' => $arBP['ID'], 'CreatedBy' => $arResult['COMPANY'][$iCompanyId]['~ASSIGNED_BY'], 'UserIsAdmin' => $isAdmin, 'CRMEntityAttr' => $arCompanyAttr[$iCompanyId]))) {
                continue;
            }
            $arBP['PATH_TO_BIZPROC_START'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arResult['COMPANY'][$iCompanyId]['ID'])), array('workflow_template_id' => $arBP['ID'], 'bizproc_start' => 1, 'sessid' => $arResult['SESSION_ID'], 'CRM_COMPANY_SHOW_V12_active_tab' => 'tab_bizproc', 'back_url' => $arParams['PATH_TO_COMPANY_LIST']));
            $arResult['COMPANY'][$iCompanyId]['BIZPROC_LIST'][] = $arBP;
        }
    }
}
if (!$isInExportMode) {
    $arResult['NEED_FOR_REBUILD_DUP_INDEX'] = false;