• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/conversionhandlers.php
  • Класс: BitrixSaleInternalsConversionHandlers
  • Вызов: ConversionHandlers::onGetRateTypes
static function onGetRateTypes()
{
	$scale = array(0.5, 1, 1.5, 2, 5);

	$format = array(
		'SUM' => function ($value, $format = null)
		{
			return Utils::formatToBaseCurrency($value, $format);
		},
	);

	$units = array('SUM' => Utils::getBaseCurrencyUnit()); // TODO deprecated

	return array(
		'sale_payment' => array(
			'NAME'      => Loc::getMessage('SALE_CONVERSION_RATE_PAYMENT_NAME'),
			'SCALE'     => $scale,
			'FORMAT'    => $format,
			'UNITS'     => $units,
			'MODULE'    => 'sale',
			'SORT'      => 1100,
			'COUNTERS'  => array('conversion_visit_day', 'sale_payment_add_day', 'sale_payment_add', 'sale_payment_add_cmpfb', 'sale_payment_sum_add'),
			'CALCULATE' => function (array $counters)
			{
				$denominator = $counters['conversion_visit_day'] ?: 0;
				$numerator   = $counters['sale_payment_add_day'] ?: 0;
				$quantity    = $counters['sale_payment_add']+$counters['sale_payment_add_cmpfb'] ?: 0;
				$sum         = $counters['sale_payment_sum_add'] ?: 0;

				return array(
					'DENOMINATOR' => $denominator,
					'NUMERATOR'   => $numerator,
					'QUANTITY'    => $quantity,
					'RATE'        => $denominator ? $numerator / $denominator : 0,
					'SUM'         => $sum,
				);
			},
		),

		'sale_order' => array(
			'NAME'      => Loc::getMessage('SALE_CONVERSION_RATE_ORDER_NAME'),
			'SCALE'     => $scale,
			'FORMAT'    => $format,
			'UNITS'     => $units,
			'MODULE'    => 'sale',
			'SORT'      => 1200,
			'COUNTERS'  => array('conversion_visit_day', 'sale_order_add_day', 'sale_order_add', 'sale_order_add_cmpfb', 'sale_order_sum_add'),
			'CALCULATE' => function (array $counters)
			{
				$denominator = $counters['conversion_visit_day'] ?: 0;
				$numerator   = $counters['sale_order_add_day'] ?: 0;
				$quantity    = $counters['sale_order_add']+$counters['sale_order_add_cmpfb'] ?: 0;
				$sum         = $counters['sale_order_sum_add'] ?: 0;

				return array(
					'DENOMINATOR' => $denominator,
					'NUMERATOR'   => $numerator,
					'QUANTITY'    => $quantity,
					'RATE'        => $denominator ? $numerator / $denominator : 0,
					'SUM'         => $sum,
				);
			},
		),

		'sale_cart' => array(
			'NAME'      => Loc::getMessage('SALE_CONVERSION_RATE_CART_NAME'),
			'SCALE'     => $scale,
			'FORMAT'    => $format,
			'UNITS'     => $units,
			'MODULE'    => 'sale',
			'SORT'      => 1300,
			'COUNTERS'  => array('conversion_visit_day', 'sale_cart_add_day', 'sale_cart_add', 'sale_cart_add_cmpfb', 'sale_cart_sum_add'),
			'CALCULATE' => function (array $counters)
			{
				$denominator = $counters['conversion_visit_day'] ?: 0;
				$numerator   = $counters['sale_cart_add_day'] ?: 0;
				$quantity    = $counters['sale_cart_add']+$counters['sale_cart_add_cmpfb'] ?: 0;
				$sum         = $counters['sale_cart_sum_add'] ?: 0;

				return array(
					'DENOMINATOR' => $denominator,
					'NUMERATOR'   => $numerator,
					'QUANTITY'    => $quantity,
					'RATE'        => $denominator ? $numerator / $denominator : 0,
					'SUM'         => $sum,
				);
			},
		),
	);
}