- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
- Класс: \CAllCrmInvoice
- Вызов: CAllCrmInvoice::__RewritePayerInfo
static function __RewritePayerInfo($companyId, $contactId, &$arInvoiceProperties)
{
$arCompany = $companyEMail = $companyPhone = null;
$arContact = $contactEMail = $contactPhone = null;
if ($companyId > 0)
{
$arCompany = CCrmCompany::GetByID($companyId);
// Get multifields values (EMAIL and PHONE)
$arFieldsMulti = CCrmFieldMulti::GetEntityFields('COMPANY', $companyId, 'EMAIL', true, false);
if (is_array($arFieldsMulti) && isset($arFieldsMulti[0]['VALUE']))
$companyEMail = $arFieldsMulti[0]['VALUE'];
$arFieldsMulti = CCrmFieldMulti::GetEntityFields('COMPANY', $companyId, 'PHONE', true, false);
if (is_array($arFieldsMulti) && isset($arFieldsMulti[0]['VALUE']))
$companyPhone = $arFieldsMulti[0]['VALUE'];
unset($arFieldsMulti);
}
if ($contactId > 0)
{
$arContact = CCrmContact::GetByID($contactId);
// Get multifields values (EMAIL and PHONE)
$arFieldsMulti = CCrmFieldMulti::GetEntityFields('CONTACT', $contactId, 'EMAIL', true, false);
if (is_array($arFieldsMulti) && isset($arFieldsMulti[0]['VALUE']))
$contactEMail = $arFieldsMulti[0]['VALUE'];
$arFieldsMulti = CCrmFieldMulti::GetEntityFields('CONTACT', $contactId, 'PHONE', true, false);
if (is_array($arFieldsMulti) && isset($arFieldsMulti[0]['VALUE']))
$contactPhone = $arFieldsMulti[0]['VALUE'];
unset($arFieldsMulti);
}
if ($companyId > 0)
{
if (is_array($arCompany) && count($arCompany) >0)
{
foreach ($arInvoiceProperties as $propertyKey => $property)
{
$curVal = '';
if ($property['FIELDS']['CODE'] === 'COMPANY' || $property['FIELDS']['CODE'] === 'COMPANY_NAME')
{
if (isset($arCompany['TITLE']))
$curVal = $arCompany['TITLE'];
}
elseif ($property['FIELDS']['CODE'] === 'CONTACT_PERSON' && $contactId > 0)
{
if (isset($arContact['FULL_NAME']))
$curVal = $arContact['FULL_NAME'];
}
elseif ($property['FIELDS']['CODE'] === 'COMPANY_ADR')
{
$curVal = AddressFormatter::getSingleInstance()->formatTextComma(
CompanyAddress::mapEntityFields(
$arCompany,
['TYPE_ID' => EntityAddressType::Registered]
)
);
}
elseif ($property['FIELDS']['CODE'] === 'INN')
{
$todo = 'todo'; // TODO:
}
elseif ($property['FIELDS']['CODE'] === 'KPP')
{
$todo = 'todo'; // TODO:
}
elseif ($property['FIELDS']['CODE'] === 'EMAIL')
{
$curVal = ($contactEMail != '') ? $contactEMail : $companyEMail;
}
elseif ($property['FIELDS']['CODE'] === 'PHONE')
{
$curVal = ($contactPhone != '') ? $contactPhone : $companyPhone;
}
$arInvoiceProperties[$propertyKey]['VALUE'] = $curVal;
}
}
}
elseif ($contactId > 0)
{
if (is_array($arContact) && count($arContact) >0)
{
foreach ($arInvoiceProperties as $propertyKey => $property)
{
$curVal = '';
if ($property['FIELDS']['CODE'] === 'FIO')
{
if (isset($arContact['FULL_NAME']))
$curVal = $arContact['FULL_NAME'];
}
elseif ($property['FIELDS']['CODE'] === 'EMAIL')
{
$curVal = $contactEMail;
}
elseif ($property['FIELDS']['CODE'] === 'PHONE')
{
$curVal = $contactPhone;
}
elseif ($property['FIELDS']['CODE'] === 'ADDRESS')
{
$curVal = AddressFormatter::getSingleInstance()->formatTextComma(
ContactAddress::mapEntityFields($arContact)
);
}
$arInvoiceProperties[$propertyKey]['VALUE'] = $curVal;
}
}
}
}