...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/invoice/compatible/helper.php
- Класс: Bitrix\Crm\Invoice\Compatible\Helper
- Вызов: Helper::checkFields
static function checkFields($action, &$fields, $id = 0) { /** @global \CDatabase $DB */ /** @global \CMain $APPLICATION */ /** @global \CUserTypeManager $USER_FIELD_MANAGER */ global $DB, $APPLICATION, $USER_FIELD_MANAGER; if (is_set($fields, "SITE_ID") && $fields["SITE_ID"] <> '') $fields["LID"] = $fields["SITE_ID"]; if ((is_set($fields, "LID") || $action=="ADD") && $fields["LID"] == '') { $APPLICATION->ThrowException(Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EMPTY_SITE")); return false; } if ((is_set($fields, "PERSON_TYPE_ID") || $action=="ADD") && intval($fields["PERSON_TYPE_ID"])<=0) { $APPLICATION->ThrowException(Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EMPTY_PERS_TYPE")); return false; } if ((is_set($fields, "USER_ID") || $action=="ADD") && intval($fields["USER_ID"])<=0) { $APPLICATION->ThrowException(Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EMPTY_USER_ID")); return false; } if (is_set($fields, "PAYED") && $fields["PAYED"] != "Y") $fields["PAYED"] = "N"; if (is_set($fields, "CANCELED") && $fields["CANCELED"] != "Y") $fields["CANCELED"] = "N"; if (is_set($fields, "STATUS_ID") && $fields["STATUS_ID"] == '') $fields["STATUS_ID"] = "N"; if (is_set($fields, "ALLOW_DELIVERY") && $fields["ALLOW_DELIVERY"] != "Y") $fields["ALLOW_DELIVERY"] = "N"; if (is_set($fields, "EXTERNAL_ORDER") && $fields["EXTERNAL_ORDER"] != "Y") $fields["EXTERNAL_ORDER"] = "N"; if (is_set($fields, "PRICE") || $action=="ADD") { $fields["PRICE"] = str_replace(",", ".", $fields["PRICE"]); $fields["PRICE"] = doubleval($fields["PRICE"]); } if (is_set($fields, "PRICE_DELIVERY") || $action=="ADD") { $fields["PRICE_DELIVERY"] = str_replace(",", ".", $fields["PRICE_DELIVERY"]); $fields["PRICE_DELIVERY"] = doubleval($fields["PRICE_DELIVERY"]); } if (is_set($fields, "SUM_PAID") || $action=="ADD") { $fields["SUM_PAID"] = str_replace(",", ".", $fields["SUM_PAID"]); $fields["SUM_PAID"] = doubleval($fields["SUM_PAID"]); } if (is_set($fields, "DISCOUNT_VALUE") || $action=="ADD") { $fields["DISCOUNT_VALUE"] = str_replace(",", ".", $fields["DISCOUNT_VALUE"]); $fields["DISCOUNT_VALUE"] = doubleval($fields["DISCOUNT_VALUE"]); } if (is_set($fields, "TAX_VALUE") || $action=="ADD") { $fields["TAX_VALUE"] = str_replace(",", ".", $fields["TAX_VALUE"]); $fields["TAX_VALUE"] = doubleval($fields["TAX_VALUE"]); } if(!is_set($fields, "LOCKED_BY") && (!is_set($fields, "UPDATED_1C") || (is_set($fields, "UPDATED_1C") && $fields["UPDATED_1C"] != "Y"))) { $fields["UPDATED_1C"] = "N"; $fields["~VERSION"] = "VERSION+0+1"; } if ((is_set($fields, "CURRENCY") || $action=="ADD") && $fields["CURRENCY"] == '') { $APPLICATION->ThrowException(Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EMPTY_CURRENCY")); return false; } if (is_set($fields, "CURRENCY")) { if (!($arCurrency = \CCurrency::GetByID($fields["CURRENCY"]))) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_CURRENCY", ["#ID#" => $fields["CURRENCY"]] ) ); return false; } } if (is_set($fields, "LID")) { $dbSite = \CSite::GetByID($fields["LID"]); if (!$dbSite->Fetch()) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_SITE", ["#ID#" => $fields["LID"]] ) ); return false; } } if (is_set($fields, "USER_ID")) { $dbUser = \CUser::GetByID($fields["USER_ID"]); if (!$dbUser->Fetch()) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_USER", ["#ID#" => $fields["USER_ID"]] ) ); return false; } } if (is_set($fields, "PERSON_TYPE_ID")) { $dbRes = Crm\Invoice\PersonType::getList([ 'filter' => [ '=ID' => $fields["PERSON_TYPE_ID"] ] ]); if (!$dbRes->fetch()) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_PERSON_TYPE", ["#ID#" => $fields["PERSON_TYPE_ID"]] ) ); return false; } } if (is_set($fields, "PAY_SYSTEM_ID") && intval($fields["PAY_SYSTEM_ID"]) > 0) { $paysystem = new \CSalePaySystem(); if (!($arPaySystem = $paysystem->GetByID(intval($fields["PAY_SYSTEM_ID"])))) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_PS", ["#ID#" => $fields["PAY_SYSTEM_ID"]] ) ); return false; } unset($paysystem); } if (is_set($fields, "DELIVERY_ID") && intval($fields["DELIVERY_ID"]) > 0) { if (!($delivery = Sale\Delivery\Services\Table::getById($fields["DELIVERY_ID"]))) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_DELIVERY", ["#ID#" => $fields["DELIVERY_ID"]] ) ); return false; } } if (is_set($fields, "STATUS_ID")) { $res = Crm\Invoice\InvoiceStatus::getList(['filter' => ['STATUS_ID' => $fields['STATUS_ID']]]); $row = $res->fetch(); if (!is_array($row)) { $APPLICATION->ThrowException( Loc::getMessage( "CRM_INVOICE_COMPAT_HELPER_WRONG_STATUS", ["#ID#" => $fields["STATUS_ID"]] ) ); return false; } unset($res, $row); } if (is_set($fields, "ACCOUNT_NUMBER") && $action=="UPDATE") { if ($fields["ACCOUNT_NUMBER"] == '') { $APPLICATION->ThrowException(Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EMPTY_ACCOUNT_NUMBER")); return false; } else { $accountNumber = $DB->ForSql($fields["ACCOUNT_NUMBER"]); $dbres = $DB->Query( "SELECT ID, ACCOUNT_NUMBER FROM b_crm_invoice WHERE ACCOUNT_NUMBER = '{$accountNumber}'", true ); unset($accountNumber); if ($arRes = $dbres->GetNext()) { if (is_array($arRes) && $arRes["ID"] != $id) { $APPLICATION->ThrowException( Loc::getMessage("CRM_INVOICE_COMPAT_HELPER_EXISTING_ACCOUNT_NUMBER") ); return false; } } } } if($action == "ADD") $fields["VERSION"] = 1; if (!$USER_FIELD_MANAGER->CheckFields(Crm\Invoice\Internals\InvoiceTable::getUfId(), $id, $fields)) { return false; } return True; }