...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/invoice/compatible/helper.php
- Класс: Bitrix\Crm\Invoice\Compatible\Helper
- Вызов: Helper::doSaveOrder
static function doSaveOrder(&$fields, $additionalFields, $id, &$errors) { global $APPLICATION; $id = (int)$id; $defFields = array( "ID" => $fields["ID"], "LID" => $fields["SITE_ID"], "PERSON_TYPE_ID" => $fields["PERSON_TYPE_ID"], "PRICE" => $fields["PRICE"], "CURRENCY" => $fields["CURRENCY"], "USER_ID" => $fields["USER_ID"], "PAY_SYSTEM_ID" => $fields["PAY_SYSTEM_ID"], "PRICE_DELIVERY" => $fields["DELIVERY_PRICE"], "DELIVERY_ID" => ($fields["DELIVERY_ID"] <> '' ? $fields["DELIVERY_ID"] : false), "DISCOUNT_VALUE" => $fields["DISCOUNT_PRICE"], "TAX_VALUE" => $fields["TAX_VALUE"], "TRACKING_NUMBER" => $fields["TRACKING_NUMBER"] ); if ($fields["DELIVERY_PRICE"] == $fields["PRICE_DELIVERY"] && isset($fields['PRICE_DELIVERY_DIFF']) && floatval($fields['PRICE_DELIVERY_DIFF']) > 0) { $defFields["DELIVERY_PRICE"] = $fields['PRICE_DELIVERY_DIFF'] + $fields["PRICE_DELIVERY"]; } if ($id <= 0) { $defFields["PAYED"] = "N"; $defFields["CANCELED"] = "N"; $defFields["STATUS_ID"] = "N"; } $defFields = array_merge($defFields, $additionalFields); // It comes from places like crm_invoice`s Add() and tells us if we need // to convert location props from ID to CODE. if(!$fields['LOCATION_IN_CODES']) { \CSaleOrder::TranslateLocationPropertyValues($fields["PERSON_TYPE_ID"], $fields["ORDER_PROP"]); } unset($fields['LOCATION_IN_CODES']); $orderFields = array_merge($fields, $defFields, $additionalFields); if (isset($orderFields['CUSTOM_DISCOUNT_PRICE']) && $orderFields['CUSTOM_DISCOUNT_PRICE'] === true) Sale\Compatible\DiscountCompatibility::reInit(Sale\Compatible\DiscountCompatibility::MODE_DISABLED); if ($id > 0) $orderFields['ID'] = $id; if (isset($orderFields['ACCOUNT_NUMBER'])) { $accountNumber = $orderFields['ACCOUNT_NUMBER']; if (is_string($accountNumber) && $accountNumber <> '' || is_numeric($accountNumber)) { $res = static::getList( ['ID' => 'ASC'], [ 'ACCOUNT_NUMBER' => $accountNumber, '!ID' => $id, ], false, ['nTopCount' => 1], ['ID'] ); if ($res->fetch()) { $errors[] = Loc::getMessage('CRM_INVOICE_COMPAT_HELPER_EXISTING_ACCOUNT_NUMBER'); return false; } } } /** @var Sale\Result $r */ $r = Invoice::modifyOrder(Invoice::ORDER_COMPAT_ACTION_SAVE, $orderFields); if ($r->isSuccess()) { $id = $r->getId(); } else { foreach ($r->getErrorMessages() as $error) { $errors[] = $error; $APPLICATION->ThrowException($error); } return false; } return $id; }