- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
- Класс: \CAllCrmInvoice
- Вызов: CAllCrmInvoice::CheckFields
public function CheckFields(&$arFields, $ID = false, $bStatusSuccess = true, $bStatusFailed = true,
$options = array())
{
/** @global CUserTypeManager $USER_FIELD_MANAGER */
/** @global CMain $APPLICATION */
global $APPLICATION, $USER_FIELD_MANAGER;
$this->LAST_ERROR = '';
$bTaxMode = CCrmTax::isTaxMode();
if (!isset($arFields['PRODUCT_ROWS']) || !is_array($arFields['PRODUCT_ROWS']) || count($arFields['PRODUCT_ROWS']) === 0)
{
$this->LAST_ERROR .= GetMessage('CRM_ERROR_EMPTY_INVOICE_SPEC')."
\n";
}
else
{
$invalidQuantityExists = false;
foreach ($arFields['PRODUCT_ROWS'] as $productRow)
{
if (!isset($productRow['QUANTITY']) || round(doubleval($productRow['QUANTITY']), 4) <= 0.0)
{
$invalidQuantityExists = true;
break;
}
}
unset($productRow);
if ($invalidQuantityExists)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_INVOICE_SPEC_INVALID_QUANTITY')."
\n";
unset($invalidQuantityExists);
}
if ($ID !== false && isset($arFields['ACCOUNT_NUMBER']))
{
if ($arFields['ACCOUNT_NUMBER'] == '')
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_IS_MISSING', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_ACCOUNT_NUMBER')))."
\n";
}
if (($ID == false || isset($arFields['ORDER_TOPIC'])) && $arFields['ORDER_TOPIC'] == '')
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_IS_MISSING', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_ORDER_TOPIC')))."
\n";
if (!empty($arFields['ORDER_TOPIC']) && mb_strlen($arFields['ORDER_TOPIC']) > 255)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_ORDER_TOPIC')))."
\n";
if (!empty($arFields['COMMENTS']) && mb_strlen($arFields['COMMENTS']) > 2000)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_COMMENTS')))
.' ('.GetMessage('CRM_FIELD_COMMENTS_INCORRECT_INFO').").
\n";
if (!empty($arFields['USER_DESCRIPTION']) && mb_strlen($arFields['USER_DESCRIPTION']) > 2000)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_USER_DESCRIPTION')))
.' ('.GetMessage('CRM_FIELD_USER_DESCRIPTION_INCORRECT_INFO').").
\n";
$crmStatus = new CCrmStatus('INVOICE_STATUS');
if (empty($arFields['STATUS_ID']) || !$crmStatus->CheckStatusId($arFields['STATUS_ID']))
{
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_STATUS_ID')))."
\n";
}
unset($crmStatus);
if ($bStatusSuccess)
{
if (!empty($arFields['PAY_VOUCHER_NUM']) && mb_strlen($arFields['PAY_VOUCHER_NUM']) > 20)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_PAY_VOUCHER_NUM')))."
\n";
if (!empty($arFields['PAY_VOUCHER_DATE']) && !CheckDateTime($arFields['PAY_VOUCHER_DATE']))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_PAY_VOUCHER_DATE')))."
\n";
if (!empty($arFields['REASON_MARKED']) && mb_strlen($arFields['REASON_MARKED']) > 255)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_REASON_MARKED_SUCCESS')))."
\n";
}
elseif ($bStatusFailed)
{
if (!empty($arFields['DATE_MARKED']) && !CheckDateTime($arFields['DATE_MARKED']))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_DATE_MARKED')))."
\n";
if (!empty($arFields['REASON_MARKED']) && mb_strlen($arFields['REASON_MARKED']) > 255)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_REASON_MARKED')))."
\n";
}
if (!isset($arFields['PERSON_TYPE_ID']) || intval($arFields['PERSON_TYPE_ID']) <= 0
|| (intval($arFields['UF_COMPANY_ID']) <= 0 && intval($arFields['UF_CONTACT_ID']) <= 0))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_PAYER_IS_MISSING')."
\n";
if ($bTaxMode)
{
if (!isset($arFields['PR_LOCATION']) || intval($arFields['PR_LOCATION']) <= 0)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_IS_MISSING', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_PR_LOCATION')))."
\n";
}
if (!isset($arFields['PAY_SYSTEM_ID']) || intval($arFields['PAY_SYSTEM_ID']) <= 0)
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_IS_MISSING', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_PAY_SYSTEM_ID')))."
\n";
if (!empty($arFields['DATE_INSERT']) && !CheckDateTime($arFields['DATE_INSERT']))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_DATE_INSERT')))."
\n";
if (!empty($arFields['DATE_BILL']) && !CheckDateTime($arFields['DATE_BILL']))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_DATE_BILL')))."
\n";
if (!empty($arFields['DATE_PAY_BEFORE']) && !CheckDateTime($arFields['DATE_PAY_BEFORE']))
$this->LAST_ERROR .= GetMessage('CRM_ERROR_FIELD_INCORRECT', array('%FIELD_NAME%' => GetMessage('CRM_FIELD_DATE_PAY_BEFORE')))."
\n";
if(!is_array($options))
{
$options = array();
}
$enableUserFieldCheck = !(isset($options['DISABLE_USER_FIELD_CHECK'])
&& $options['DISABLE_USER_FIELD_CHECK'] === true);
if ($enableUserFieldCheck)
{
CCrmEntityHelper::NormalizeUserFields(
$arFields, self::$sUFEntityID, $USER_FIELD_MANAGER, array('IS_NEW' => ($ID == false))
);
$enableRequiredUserFieldCheck = !(isset($options['DISABLE_REQUIRED_USER_FIELD_CHECK'])
&& $options['DISABLE_REQUIRED_USER_FIELD_CHECK'] === true);
if(!$USER_FIELD_MANAGER->CheckFields(
self::$sUFEntityID, $ID, $arFields, false, $enableRequiredUserFieldCheck))
{
$e = $APPLICATION->GetException();
$this->LAST_ERROR .= $e->GetString();
}
}
if ($this->LAST_ERROR <> '')
return false;
return true;
}