if (isset($arLead['EXCH_RATE'])) { $arFields['~EXCH_RATE'] = $arFields['EXCH_RATE'] = doubleval($arLead['EXCH_RATE']); } if (isset($arLead['CURRENCY_ID'])) { $arFields['~CURRENCY_ID'] = $arLead['CURRENCY_ID']; $arFields['CURRENCY_ID'] = htmlspecialcharsbx($arFields['~CURRENCY_ID']); } if (isset($arLead['ACCOUNT_CURRENCY_ID'])) { $arFields['~ACCOUNT_CURRENCY_ID'] = $arLead['ACCOUNT_CURRENCY_ID']; $arFields['ACCOUNT_CURRENCY_ID'] = htmlspecialcharsbx($arFields['~ACCOUNT_CURRENCY_ID']); } if (isset($arLead['COMMENTS'])) { $arFields['~COMMENTS'] = $arLead['COMMENTS']; $arFields['COMMENTS'] = htmlspecialcharsbx($arFields['~COMMENTS']); } $arLeadProducts = CCrmLead::LoadProductRows($leadId); if (is_array($arLeadProducts) && count($arLeadProducts) > 0) { foreach ($arLeadProducts as $leadProduct) { $leadProduct['ID'] = 0; } unset($leadProduct); $arFields['PRODUCT_ROWS'] = $arResult['PRODUCT_ROWS'] = $arLeadProducts; } unset($arLeadProducts); // read product row settings $productRowSettings = array(); $arLeadProductRowSettings = CCrmProductRow::LoadSettings('D', $leadId); if (is_array($arLeadProductRowSettings)) { $productRowSettings['ENABLE_DISCOUNT'] = isset($arLeadProductRowSettings['ENABLE_DISCOUNT']) ? $arLeadProductRowSettings['ENABLE_DISCOUNT'] : false; $productRowSettings['ENABLE_TAX'] = isset($arLeadProductRowSettings['ENABLE_TAX']) ? $arLeadProductRowSettings['ENABLE_TAX'] : false; }
if ($productID <= 0) { continue; } $arProductRows = array(array('PRODUCT_ID' => $productID, 'PRICE' => isset($arDeal['OPPORTUNITY']) ? doubleval($arDeal['OPPORTUNITY']) : 0.0, 'QUANTITY' => 1)); CCrmDeal::SaveProductRows($ID, $arProductRows); } } $rsLeads = CCrmLead::GetListEx(array('ID' => 'ASC'), array("CHECK_PERMISSIONS" => "N"), false, false, array('ID', 'PRODUCT_ID', 'OPPORTUNITY', 'CURRENCY_ID')); while ($arLead = $rsLeads->Fetch()) { $ID = isset($arLead['ID']) ? intval($arLead['ID']) : 0; if ($ID <= 0) { continue; } $productID = isset($arLead['PRODUCT_ID']) ? $arLead['PRODUCT_ID'] : ''; if (isset($productID[0])) { $arProductRows = CCrmLead::LoadProductRows($ID); if (count($arProductRows) > 0) { // already converted continue; } $arProduct = CCrmProduct::GetByOriginID('CRM_PROD_' . $productID); if (!is_array($arProduct)) { continue; } $productID = isset($arProduct['ID']) ? $arProduct['ID'] : 0; if ($productID <= 0) { continue; } $arProductRows = array(array('PRODUCT_ID' => $productID, 'PRICE' => isset($arLead['OPPORTUNITY']) ? doubleval($arLead['OPPORTUNITY']) : 0.0, 'QUANTITY' => 1)); CCrmLead::SaveProductRows($ID, $arProductRows); }
if (!$isInExportMode) { $arLead['BIZPROC_STATUS_HINT'] = '<span class=\'bizproc-item-title\'>' . GetMessage('CRM_BP_R_P') . ': <a href=\'' . $arLead['PATH_TO_BIZPROC_LIST'] . '\' title=\'' . GetMessage('CRM_BP_R_P_TITLE') . '\'>' . $docStatesQty . '</a></span>' . ($totalTaskQty === 0 ? '' : '<br /><span class=\'bizproc-item-title\'>' . GetMessage('CRM_TASKS') . ': <a href=\'' . $arLead['PATH_TO_USER_BP'] . '\' title=\'' . GetMessage('CRM_TASKS_TITLE') . '\'>' . $totalTaskQty . ($totalTaskQty > 5 ? '+' : '') . '</a></span>'); } } } $arLead['ASSIGNED_BY_ID'] = $arLead['~ASSIGNED_BY_ID'] = intval($arLead['ASSIGNED_BY']); $arLead['ASSIGNED_BY'] = CUser::FormatName($arParams['NAME_TEMPLATE'], array('LOGIN' => $arLead['ASSIGNED_BY_LOGIN'], 'NAME' => $arLead['ASSIGNED_BY_NAME'], 'LAST_NAME' => $arLead['ASSIGNED_BY_LAST_NAME'], 'SECOND_NAME' => $arLead['ASSIGNED_BY_SECOND_NAME']), true, false); if (isset($arSelectMap['FULL_ADDRESS'])) { $arLead['FULL_ADDRESS'] = LeadAddressFormatter::format($arLead, array('SEPARATOR' => AddressSeparator::HtmlLineBreak, 'NL2BR' => true)); } } unset($arLead); $CCrmUserType->ListAddEnumFieldsValue($arResult, $arResult['LEAD'], $arResult['LEAD_UF'], $sExportType !== '' ? ', ' : '<br />', $sExportType !== '', array('FILE_URL_TEMPLATE' => '/bitrix/components/bitrix/crm.lead.show/show_file.php?ownerId=#owner_id#&fieldName=#field_name#&fileId=#file_id#')); if (isset($arResult['LEAD_ID']) && !empty($arResult['LEAD_ID'])) { // try to load product rows $arProductRows = CCrmLead::LoadProductRows(array_keys($arResult['LEAD_ID'])); foreach ($arProductRows as $arProductRow) { $ownerID = $arProductRow['OWNER_ID']; if (!isset($arResult['LEAD'][$ownerID])) { continue; } $arEntity =& $arResult['LEAD'][$ownerID]; if (!isset($arEntity['PRODUCT_ROWS'])) { $arEntity['PRODUCT_ROWS'] = array(); } $arEntity['PRODUCT_ROWS'][] = $arProductRow; } // adding crm multi field to result array $arFmList = array(); $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $arResult['LEAD_ID'])); while ($ar = $res->Fetch()) {
public function map(EntityConversionMap $map, array $options = null) { $srcFields = $this->getSourceFields(); if (empty($srcFields)) { return array(); } $multiFieldKeys = array('PHONE' => true, 'EMAIL' => true, 'WEB' => true, 'IM' => true); $dstFields = array(); $dstEntityTypeID = $map->getDestinationEntityTypeID(); foreach ($map->getItems() as $item) { $dstFieldID = $item->getDestinationField(); //Skip empty binding if ($dstFieldID === '-') { continue; } $srcFieldID = $item->getSourceField(); if ((!isset($srcFields[$srcFieldID]) || $srcFields[$srcFieldID] === '') && !isset($multiFieldKeys[$srcFieldID]) && $srcFieldID !== 'PRODUCT_ROWS') { $altSrcFieldID = ''; foreach ($item->getAlternativeSourceFields() as $fieldID) { if (isset($srcFields[$fieldID])) { $altSrcFieldID = $fieldID; break; } } if ($altSrcFieldID !== '') { $srcFieldID = $altSrcFieldID; } } if ($dstFieldID === '') { $dstFieldID = $srcFieldID; } if (strpos($srcFieldID, 'UF_') === 0 && strpos($dstFieldID, 'UF_') === 0) { self::mapUserField(\CCrmOwnerType::Lead, $srcFieldID, $srcFields, $dstEntityTypeID, $dstFieldID, $dstFields, $options); } elseif (isset($multiFieldKeys[$srcFieldID])) { $multifields = $this->getSourceMultiFields(); if (isset($multifields[$dstFieldID])) { if (!isset($dstFields['FM'])) { $dstFields['FM'] = array(); } $dstFields['FM'][$dstFieldID] = $multifields[$dstFieldID]; } } elseif ($srcFieldID === 'PRODUCT_ROWS') { $productRows = \CCrmLead::LoadProductRows($this->srcEntityID); if (count($productRows) > 0) { foreach ($productRows as &$productRow) { unset($productRow['ID']); } unset($productRow); $dstFields[$dstFieldID] = $productRows; } } elseif (isset($srcFields[$srcFieldID])) { $dstFields[$dstFieldID] = $srcFields[$srcFieldID]; } } if (!empty($dstFields)) { $dstFields['LEAD_ID'] = $this->srcEntityID; } return $dstFields; }
public function getProductRows($ID) { $ID = intval($ID); if ($ID <= 0) { throw new RestException('The parameter id is invalid or not defined.'); } if (!CCrmLead::CheckReadPermission($ID)) { throw new RestException('Access denied.'); } return CCrmLead::LoadProductRows($ID); }
} $arLead['PATH_TO_LEAD_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_SHOW'], array('lead_id' => $iLeadId)); $arLead['PATH_TO_LEAD_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_EDIT'], array('lead_id' => $iLeadId)); $arLead['CONTACT_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('NAME' => $arLead['NAME'], 'LAST_NAME' => $arLead['LAST_NAME'], 'SECOND_NAME' => $arLead['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="' . $arLead['PATH_TO_LEAD_SHOW'] . '">' . htmlspecialcharsbx($arLead['TITLE']) . '</a> </div> <div class="bx-user-info-data-info">'; if (!empty($arLead['STATUS_ID'])) { $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_STATUS') . '</span>: <span class="fields enumeration">' . $arResult['STATUS_LIST'][$arLead['STATUS_ID']] . '</span> <br />'; } $arProductRows = CCrmLead::LoadProductRows($arLead['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 />'; } $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_DATE_MODIFY') . '</span>: <span class="fields enumeration">' . FormatDate('x', MakeTimeStamp($arLead['DATE_MODIFY']), time() + CTimeZone::GetOffset()) . '</span> <br /> <br /> </div> <div class="bx-user-info-data-name bx-user-info-seporator"> <nobr>' . GetMessage('CRM_SECTION_CONTACT_INFO') . '</nobr> </div> <div class="bx-user-info-data-info">'; if (!empty($arLead['CONTACT_NAME'])) { $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_NAME') . '</span>: <span class="fields enumeration">' . htmlspecialcharsbx($arLead['CONTACT_NAME']) . '</span>
ob_start(); $APPLICATION->IncludeComponent('bitrix:crm.contact.edit', 'convert', array('ELEMENT_ID' => 0, 'FORM_ID' => $arResult['FORM_ID'], 'INTERNAL_FILTER' => true, 'CONVERT' => true, 'VALUES' => $arResult['ELEMENT']['CONTACT']), false); $sVal = ob_get_contents(); ob_end_clean(); $arResult['FIELDS']['tab_convert'][] = array('id' => 'LEAD_CONTACT_CONVERT', 'name' => GetMessage('CRM_FIELD_LEAD_CONTACT'), 'colspan' => true, 'type' => 'custom', 'value' => $sVal); if (!$CrmPerms->HavePerm('COMPANY', BX_CRM_PERM_NONE, 'ADD')) { ob_start(); $APPLICATION->IncludeComponent('bitrix:crm.company.edit', 'convert', array('ELEMENT_ID' => 0, 'FORM_ID' => $arResult['FORM_ID'], 'INTERNAL_FILTER' => true, 'CONVERT' => true, 'VALUES' => $arResult['ELEMENT']['COMPANY']), false); $sVal = ob_get_contents(); ob_end_clean(); $arResult['FIELDS']['tab_convert'][] = array('id' => 'LEAD_COMPANY_CONVERT', 'name' => GetMessage('CRM_FIELD_LEAD_COMPANY'), 'colspan' => true, 'type' => 'custom', 'value' => $sVal); } if (!$CrmPerms->HavePerm('DEAL', BX_CRM_PERM_NONE, 'ADD')) { $arDealVals = $arResult['ELEMENT']['DEAL']; if (!isset($arDealVals['PRODUCT_ROWS'])) { $arProductRows = CCrmLead::LoadProductRows($arParams['ELEMENT_ID']); if (count($arProductRows) > 0) { $arDealVals['PRODUCT_ROWS'] = $arProductRows; } } $componentSettings = array('ELEMENT_ID' => 0, 'FORM_ID' => $arResult['FORM_ID'], 'INTERNAL_FILTER' => true, 'CONVERT' => true, 'VALUES' => $arDealVals, 'VARS_FROM_FORM' => $bVarsFromForm, 'PATH_TO_PRODUCT_EDIT' => $arResult['PATH_TO_PRODUCT_EDIT'], 'PATH_TO_PRODUCT_SHOW' => $arResult['PATH_TO_PRODUCT_SHOW']); // load product row settings $productRowSettings = CCrmProductRow::LoadSettings('L', $arParams['ELEMENT_ID']); if (isset($productRowSettings['ENABLE_TAX'])) { $componentSettings['ENABLE_TAX'] = (bool) $productRowSettings['ENABLE_TAX'] ? 'Y' : 'N'; } if (isset($productRowSettings['ENABLE_DISCOUNT'])) { $componentSettings['ENABLE_DISCOUNT'] = (bool) $productRowSettings['ENABLE_DISCOUNT'] ? 'Y' : 'N'; } unset($productRowSettings); ob_start();