|
|
Может подскажете в чем может быть проблема? Скрытый текст |
|---|
<?php use Bitrix\Main\Loader; AddEventHandler("sale", "OnOrderSave", "POnOrderSave"); AddEventHandler("crm", "OnBeforeCrmInvoiceAdd", "POnBeforeInvoiceAdd"); AddEventHandler("crm", "OnBeforeCrmInvoiceUpdate", "POnBeforeInvoiceUpdate"); if(!(Loader::includeModule("sale") && Loader::includeModule("catalog") && Loader::includeModule("crm"))): echo "failure\n".GetMessage("CC_BSC1_ERROR_MODULE"); return; endif; class PoseidonCAllCrmInvoice extends CAllCrmInvoice { public 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) { /* модификация poseidon */ /* Выборка ИНН, КПП из компании */ /* begin */ if($arCompany['ID']>0): $resCompany = CCrmCompany::GetList( Array('DATE_CREATE' => 'DESC'), Array('ID' => $arCompany['ID']), Array('ID', 'TITLE','UF_CRM_1412145380', 'UF_CRM_1412145381') ); $dopCompany=$resCompany->Fetch(); $arCompany['INN'] = $dopCompany['UF_CRM_1412145380']; $arCompany['KPP'] = $dopCompany['UF_CRM_1412145381']; endif; /* end */ foreach ($arInvoiceProperties as $propertyKey => $property) { $curVal = $arInvoiceProperties[$propertyKey]['VALUE']; 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 = Bitrix\Crm\Format\CompanyAddressFormatter::format( $arCompany, array('TYPE_ID' => \Bitrix\Crm\EntityAddress::Registered) ); } elseif ($property['FIELDS']['CODE'] === 'INN') { $curVal = ($arCompany['INN'] != '') ? $arCompany['INN'] : '';// замена строки кода $todo = 'todo'; // TODO: } elseif ($property['FIELDS']['CODE'] === 'KPP') { $curVal = ($arCompany['KPP'] != '') ? $arCompany['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 = $arInvoiceProperties[$propertyKey]['VALUE']; 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 = Bitrix\Crm\Format\ContactAddressFormatter::format($arContact); }
$arInvoiceProperties[$propertyKey]['VALUE'] = $curVal; } } } } }
function POnBeforeInvoiceAdd($arFields) { global $APPLICATION; $e = new CAdminException(); // Проверка заполненности поля ИНН if ($arFields['INVOICE_PROPERTIES'][8] == ''): $err = true; $e->AddMessage(array ("text" => "Ошибка: Не заполнено поле ИНН компании в реквизитах и карточке компании",)); endif; // Проверка заполненности поля КПП if ($arFields['INVOICE_PROPERTIES'][9] == ''): $err = true; $e->AddMessage(array ("text" => "Ошибка: Не заполнено поле КПП компании в реквизитах и карточке компании",)); endif; // Если были ошибки - то возвращаем false if ($err): $arFields['RESULT_MESSAGE'] = $e; $APPLICATION->ThrowException($arFields['RESULT_MESSAGE']); return false; endif; }
function POnBeforeInvoiceUpdate($arFields) { $action = explode("/", $_SERVER['HTTP_REFERER']); $action = $action[5]; if($action == 'edit'): global $APPLICATION; $e = new CAdminException(); // Проверка заполненности поля ИНН if ($arFields['INVOICE_PROPERTIES'][8] == ''): $err = true; $e->AddMessage(array ("text" => "Ошибка: Не заполнено поле ИНН компании в реквизитах и карточке компании",)); endif; // Проверка заполненности поля КПП if ($arFields['INVOICE_PROPERTIES'][9] == ''): $err = true; $e->AddMessage(array ("text" => "Ошибка: Не заполнено поле КПП компании в реквизитах и карточке компании",)); endif; // Если были ошибки - то возвращаем false if ($err): $arFields['RESULT_MESSAGE'] = $e; $APPLICATION->ThrowException($arFields['RESULT_MESSAGE']); return false; endif; endif; }
function POnOrderSave($orderId, $arFields, $arOrder, $isNew) { if($isNew == false): global $APPLICATION; $e = new CAdminException(); if($orderId>0): $dbOrder = CCrmInvoice::GetList(Array("ID"=>"DESC"),Array('ID' => $orderId),false,false,array('ID', 'UF_COMPANY_ID')); $arOrder = $dbOrder->Fetch(); if($arOrder['UF_COMPANY_ID']>0): $resCompany = CCrmCompany::GetList(Array('DATE_CREATE' => 'DESC'),Array('ID' => $arOrder['UF_COMPANY_ID']),Array('ID', 'TITLE','UF_CRM_1412145380')); $arCompany=$resCompany->Fetch();
if($arCompany['UF_CRM_1412145380']>0): $arFields = array('ORDER_ID' => $orderId,'ORDER_PROPS_ID' => 8,'NAME' => "ИНН",'VALUE' => $arCompany['UF_CRM_1412145380'],'CODE' => 'INN'); if (!CSaleOrderPropsValue::Add($arFields)): $err = true; $e->AddMessage(array ("text" => "Ошибка: ИНН компании не обновился при сохранении заказа")); endif; else: $err = true; $e->AddMessage(array ("text" => "Ошибка: Нет ИНН компании")); endif; else: $err = true; $e->AddMessage(array ("text" => "Ошибка: Нет id компании")); endif; else: $err = true; $e->AddMessage(array ("text" => "Ошибка: Нет id заказа")); endif; if ($err): $APPLICATION->ThrowException($e); return false; endif; endif; }
|
|