- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discount/formatter.php
- Класс: BitrixSaleDiscountFormatter
- Вызов: Formatter::prepareRow
static function prepareRow($type, $data)
{
self::clearErrors();
$process = true;
$result = array();
$type = (int)$type;
if ($type != self::TYPE_SIMPLE)
{
if (empty($data) || !is_array($data))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
switch ($type)
{
case self::TYPE_SIMPLE:
if (empty($data) || !is_string($data))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
if ($process)
{
$result = array(
'TYPE' => self::TYPE_SIMPLE,
'DESCR' => $data
);
}
break;
case self::TYPE_LIMIT_VALUE:
case self::TYPE_VALUE:
if ($type == self::TYPE_LIMIT_VALUE)
{
if ($process)
{
if (!isset($data['LIMIT_TYPE']) || !isset($data['LIMIT_VALUE']) || !isset($data['LIMIT_UNIT']))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
elseif ($data['LIMIT_TYPE'] != self::LIMIT_MAX && $data['LIMIT_TYPE'] != self::LIMIT_MIN)
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
if ($data['VALUE_TYPE'] != self::VALUE_TYPE_PERCENT)
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
$result['LIMIT_TYPE'] = $data['LIMIT_TYPE'];
$result['LIMIT_VALUE'] = $data['LIMIT_VALUE'];
$result['LIMIT_UNIT'] = $data['LIMIT_UNIT'];
}
}
if ($process)
{
if (!isset($data['VALUE']) || !isset($data['VALUE_TYPE']))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
if (
$data['VALUE_TYPE'] != self::VALUE_TYPE_PERCENT
&& $data['VALUE_TYPE'] != self::VALUE_TYPE_CURRENCY
&& $data['VALUE_TYPE'] != self::VALUE_TYPE_SUMM
&& $data['VALUE_TYPE'] != self::VALUE_TYPE_SUMM_BASKET
)
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
elseif (
$data['VALUE_TYPE'] == self::VALUE_TYPE_CURRENCY
|| $data['VALUE_TYPE'] == self::VALUE_TYPE_SUMM
|| $data['VALUE_TYPE'] == self::VALUE_TYPE_SUMM_BASKET
)
{
if (!isset($data['VALUE_UNIT']))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
}
if ($process)
{
if (!isset($data['VALUE_ACTION']))
$data['VALUE_ACTION'] = self::VALUE_ACTION_DISCOUNT;
if (
$data['VALUE_ACTION'] != self::VALUE_ACTION_DISCOUNT
&& $data['VALUE_ACTION'] != self::VALUE_ACTION_EXTRA
&& $data['VALUE_ACTION'] != self::VALUE_ACTION_CUMULATIVE
)
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
$result['TYPE'] = $type;
$result['VALUE'] = $data['VALUE'];
$result['VALUE_TYPE'] = $data['VALUE_TYPE'];
$result['VALUE_ACTION'] = $data['VALUE_ACTION'];
if (
$data['VALUE_TYPE'] == self::VALUE_TYPE_CURRENCY
|| $data['VALUE_TYPE'] == self::VALUE_TYPE_SUMM
|| $data['VALUE_TYPE'] == self::VALUE_TYPE_SUMM_BASKET
)
$result['VALUE_UNIT'] = $data['VALUE_UNIT'];
if (isset($data['RESULT_VALUE']) && isset($data['RESULT_UNIT']))
{
$result['RESULT_VALUE'] = (string)$data['RESULT_VALUE'];
$result['RESULT_UNIT'] = $data['RESULT_UNIT'];
}
}
break;
case self::TYPE_FIXED:
if ($process)
{
if (!isset($data['VALUE']) || !isset($data['VALUE_UNIT']))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
$result = array(
'TYPE' => $type,
'VALUE' => $data['VALUE'],
'VALUE_UNIT' => $data['VALUE_UNIT']
);
}
break;
case self::TYPE_MAX_BOUND:
if ($process)
{
if (!isset($data['VALUE']) || !isset($data['VALUE_UNIT']))
{
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
}
}
if ($process)
{
$result = array(
'TYPE' => $type,
'VALUE' => $data['VALUE'],
'VALUE_UNIT' => $data['VALUE_UNIT']
);
if (isset($data['RESULT_VALUE']) && isset($data['RESULT_UNIT']))
{
$result['RESULT_VALUE'] = (string)$data['RESULT_VALUE'];
$result['RESULT_UNIT'] = $data['RESULT_UNIT'];
}
}
break;
case self::TYPE_SIMPLE_GIFT:
$result = array(
'TYPE' => self::TYPE_SIMPLE_GIFT
);
break;
default:
$process = false;
self::addError(Loc::getMessage('SALE_DISCOUNT_FORMATTER_ERR_FORMAT_DESCR_BAD'));
break;
}
return ($process ? $result : null);
}