$addParams['company_id'] = $internalContext['COMPANY_ID']; } if (isset($internalContext['LEAD_ID'])) { $addParams['lead_id'] = $internalContext['LEAD_ID']; } if (isset($internalContext['DEAL_ID'])) { $addParams['deal_id'] = $internalContext['DEAL_ID']; } } if (!empty($addParams)) { $arResult['PATH_TO_QUOTE_ADD'] = CHTTP::urlAddParams($arResult['PATH_TO_QUOTE_ADD'], $addParams); } } 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]);
if ($arFields === false) { $bEdit = false; $bCopy = false; } else { $arEntityAttr = $CCrmInvoice->cPerms->GetEntityAttr('INVOICE', array($arParams['ELEMENT_ID'])); } //HACK: MSSQL returns '.00' for zero value if (isset($arFields['~PRICE'])) { $arFields['~PRICE'] = $arFields['PRICE'] = floatval($arFields['~PRICE']); } } else { $arFields = array('ID' => 0, 'DATE_INSERT' => ConvertTimeStamp(time(), 'FULL', SITE_ID)); if ($bCreateFromQuote) { $arFields['UF_QUOTE_ID'] = $quoteId; $arQuote = CCrmQuote::GetByID($quoteId); $arQuoteProducts = CCrmQuote::LoadProductRows($quoteId); if (is_array($arQuote) && count($arQuote) > 0) { if ($bTaxMode && isset($arQuote['LOCATION_ID'])) { $arFields['~PR_LOCATION'] = $arQuote['LOCATION_ID']; $arFields['PR_LOCATION'] = htmlspecialcharsbx($arQuote['LOCATION_ID']); } if (isset($arQuote['TITLE'])) { $arFields['~ORDER_TOPIC'] = $arQuote['TITLE']; $arFields['ORDER_TOPIC'] = htmlspecialcharsbx($arQuote['TITLE']); } if (isset($arQuote['COMPANY_ID'])) { $arFields['~UF_COMPANY_ID'] = $arQuote['COMPANY_ID']; $arFields['UF_COMPANY_ID'] = htmlspecialcharsbx($arQuote['COMPANY_ID']); } if (isset($arQuote['CONTACT_ID'])) { $arFields['~UF_CONTACT_ID'] = $arQuote['CONTACT_ID'];
$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>:
public function map(EntityConversionMap $map, array $options = null) { $srcFields = $this->getSourceFields(); if (empty($srcFields)) { return array(); } $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] === '') && $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::Quote, $srcFieldID, $srcFields, $dstEntityTypeID, $dstFieldID, $dstFields, $options); } elseif ($srcFieldID === 'PRODUCT_ROWS') { $productRows = \CCrmQuote::LoadProductRows($this->srcEntityID); if (count($productRows) > 0) { if ($dstEntityTypeID === \CCrmOwnerType::Invoice) { $currencyID = isset($srcFields['CURRENCY_ID']) ? $srcFields['CURRENCY_ID'] : ''; if ($currencyID === '' || !\CCrmCurrency::IsExists($currencyID)) { $currencyID = \CCrmCurrency::GetBaseCurrencyID(); } $actualRows = \CCrmInvoice::ProductRows2BasketItems($productRows, $currencyID, \CCrmInvoice::GetCurrencyID()); if (count($actualRows) > 0) { foreach ($actualRows as &$productRow) { unset($productRow['ID']); } unset($productRow); $dstFields[$dstFieldID] = $actualRows; } } else { foreach ($productRows as &$productRow) { unset($productRow['ID']); } unset($productRow); $dstFields[$dstFieldID] = $productRows; } } } elseif (isset($srcFields[$srcFieldID])) { $dstFields[$dstFieldID] = $srcFields[$srcFieldID]; } } if (!empty($dstFields) && $dstEntityTypeID === \CCrmOwnerType::Invoice) { $dstFields['UF_QUOTE_ID'] = $this->srcEntityID; } return $dstFields; }