...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmInvoiceRecurringRestProxy
- Вызов: CCrmInvoiceRecurringRestProxy::innerAdd
protected function innerAdd(&$fields, &$errors, array $params = null) { $ID = null; $invoiceId = (int)$fields['INVOICE_ID']; if ($invoiceId <= 0) { $errors[] = 'Invoice ID is empty.'; return false; } if( !CCrmInvoice::CheckUpdatePermission($invoiceId, CCrmPerms::GetCurrentUserPermissions()) || !CCrmInvoice::CheckCreatePermission(CCrmPerms::GetCurrentUserPermissions()) ) { $errors[] = 'Access denied.'; return false; } try { if ( $fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Invoice::LIMITED_BY_TIMES && $fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Invoice::LIMITED_BY_DATE ) { $fields['IS_LIMIT'] = \Bitrix\Crm\Recurring\Entity\Invoice::NO_LIMITED; } if (!empty($fields['PARAMS']) && is_array($fields['PARAMS'])) { $fields['PARAMS'] = $this->prepareParams($fields); } else { $fields['PARAMS'] = []; } if(!empty($fields['START_DATE'])) { $fields['START_DATE'] = new \Bitrix\Main\Type\Date($fields['START_DATE']); } if(!empty($fields['LIMIT_DATE'])) { $fields['LIMIT_DATE'] = new \Bitrix\Main\Type\Date($fields['LIMIT_DATE']); } $newRecurringFields = $fields; $invoiceRecurringInstance = \Bitrix\Crm\Recurring\Entity\Invoice::getInstance(); $invoiceFields = \CCrmInvoice::GetByID($invoiceId, false); if ($invoiceFields['IS_RECURRING'] === 'Y') { $recurringRawSearch = $invoiceRecurringInstance->getList([ 'filter' => ['INVOICE_ID' => $invoiceId], 'limit' => 1 ]); if ($recurringRawSearch->fetch()) { $errors[] = 'Invoice already have had recurring settings.'; return false; } $result = $invoiceRecurringInstance->add($newRecurringFields); if ($result->isSuccess()) { $ID = $result->getId(); } } else { unset($newRecurringFields['INVOICE_ID']); $invoiceFields['PRODUCT_ROWS'] = \CCrmInvoice::GetProductRows($invoiceId); $invoiceFields['INVOICE_PROPERTIES'] = \CCrmInvoice::GetProperties($invoiceId, $invoiceFields['PERSON_TYPE_ID']); $result = $invoiceRecurringInstance->createEntity($invoiceFields, $newRecurringFields); if ($result->isSuccess()) { $data = $result->getData(); $ID = $data['ID']; } } if (!$result->isSuccess()) { $errors = $result->getErrorMessages(); return false; } return $ID; } catch(Main\SystemException $ex) { $errors[] = $ex->getMessage(); return false; } }