Вопрос довольно актуальный судя по форуму
Появилась надобность выставлять счета в разных валютах, но столкнулись с проблемой - тип валюты не выбирается, а просто выставляется базовый по умолчанию.
Т.е. если у вас две валюты - рубли и гривны, то вы сможете выставлять счета только меняя базовую валюту в конфигах валют в crm(это реальный совет где-то вычитал).
Вот так выглядит стандартная форма добавления счета
Что мы получим в итоге
Все, что необходимо сделать это кастомизировать компонент crm.invoice.edit. В конце статьи приложу готовый код component.php.
Что делаем?
1. Создаем пространство имен, ну например /bitrix/components/dev/
2. Копируем туда компоненту crm.invoice.edit
3. В скопированной компоненте заменяем component.php (будет прикреплено к статье)
4. Далее копируем шаблон комплексной компоненты отвечающей за раздел счетов. Идем сюда /crm/invoice/list/ . Режим правки. И копируем компонент в шаблон, применяя новый шаблон.
5. Затем идем в шаблон сайта /<шаблон сайта>/bitrix/components/crm.invoice/custom_invoice_edit/edit.php и заменяем там стандартную компоненту на свою, которую скопировали в п.1.
Вот и все, можно пользоваться. Далее уже разберу что менялось в component.php.
Теперь немного проблематики, разберем component.php
1. Задается всегда базовая цена сайта для счета. Пришлось менять со стандартного.
строка 116
2. Не сделан селект для показа. Приблизительно строка 1240 Заменил вот так
3. Добавил в создание счета поле с установкой валюты, потому что оно там вообще не устанавливается . Ориентировочно строку видно на скрине.
Возможно, есть еще способы улучшить. Если узнаю в процессе эксплуатации, отпишусь.
P.S. занимаемся внедрением и доработкой б24 облако и битрикс24 в коробках. Обращаться сюда
Появилась надобность выставлять счета в разных валютах, но столкнулись с проблемой - тип валюты не выбирается, а просто выставляется базовый по умолчанию.
Т.е. если у вас две валюты - рубли и гривны, то вы сможете выставлять счета только меняя базовую валюту в конфигах валют в crm(это реальный совет где-то вычитал).
Вот так выглядит стандартная форма добавления счета
Что мы получим в итоге
Все, что необходимо сделать это кастомизировать компонент crm.invoice.edit. В конце статьи приложу готовый код component.php.
Что делаем?
1. Создаем пространство имен, ну например /bitrix/components/dev/
2. Копируем туда компоненту crm.invoice.edit
3. В скопированной компоненте заменяем component.php (будет прикреплено к статье)
4. Далее копируем шаблон комплексной компоненты отвечающей за раздел счетов. Идем сюда /crm/invoice/list/ . Режим правки. И копируем компонент в шаблон, применяя новый шаблон.
5. Затем идем в шаблон сайта /<шаблон сайта>/bitrix/components/crm.invoice/custom_invoice_edit/edit.php и заменяем там стандартную компоненту на свою, которую скопировали в п.1.
Вот и все, можно пользоваться. Далее уже разберу что менялось в component.php.
Теперь немного проблематики, разберем component.php
1. Задается всегда базовая цена сайта для счета. Пришлось менять со стандартного.
строка 116
if (($bEdit || $bCopy) && !empty($arResult['ELEMENT']['CURRENCY']))
{
$currencyID = $arResult['ELEMENT']['CURRENCY'];
}
else
{
$arInvoice = CCrmInvoice::GetList(array(), array("ID"=>$arParams['ELEMENT_ID']), false, false, array())->fetch();
$currencyID = $arInvoice['CURRENCY'];
}
if (strlen($_REQUEST['CURRENCY_ID']) > 0)
{
$currencyID = htmlspecialchars($_REQUEST['CURRENCY_ID']);
} |
2. Не сделан селект для показа. Приблизительно строка 1240 Заменил вот так
$arResult['FIELDS']['tab_1'][] = array(
'id' => 'CURRENCY_ID',
'name' => GetMessage('CRM_FIELD_CURRENCY_ID'),
'type' => 'list',
'items' => $arResult['CURRENCY_LIST'],
'params' => array('id' => 'CURRENCY_ID'),
'value' => $currencyID
); |
3. Добавил в создание счета поле с установкой валюты, потому что оно там вообще не устанавливается . Ориентировочно строку видно на скрине.
$arFields = array( 'ORDER_TOPIC' => trim($_POST['ORDER_TOPIC']), 'STATUS_ID' => trim($_POST['STATUS_ID']), 'DATE_BILL' => isset($_POST['DATE_BILL']) ? trim($_POST['DATE_BILL']) : null, 'PAY_VOUCHER_DATE' => isset($_POST['PAY_VOUCHER_DATE']) ? trim($_POST['PAY_VOUCHER_DATE']) : null, 'DATE_PAY_BEFORE' => trim($_POST['DATE_PAY_BEFORE']), 'RESPONSIBLE_ID' => intval($_POST['RESPONSIBLE_ID']), 'COMMENTS' => $comments, 'USER_DESCRIPTION' => $userDescription, 'UF_QUOTE_ID' => $quoteID, 'UF_DEAL_ID' => $dealID, 'UF_COMPANY_ID' => $companyID, 'UF_CONTACT_ID' => $contactID, 'UF_MYCOMPANY_ID' => $myCompanyId, 'CURRENCY' => $currencyID ); |
P.S. занимаемся внедрением и доработкой б24 облако и битрикс24 в коробках. Обращаться сюда
! Даже, 3x3. Лучше на английском приведу описание




