%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/conversion/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/conversion/handlers.php |
<?php namespace Bitrix\Sale\Conversion; use Bitrix\Conversion\Config; use Bitrix\Conversion\DayContext; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); class Handlers { // public static function OnGetCountersInfo() // { // return array( // 'sale_cart_add_day' => array('MODULE' => 'sale', 'GROUP' => 'day', 'NAME' => ''), // 'sale_cart_sum_add' => array('MODULE' => 'sale', 'GROUP' => 'sale_cart_sum', 'TYPE' => 'currency', 'NAME' => ''), //// 'sale_cart_sum_rem' => array('MODULE' => 'sale', 'GROUP' => 'sale_cart_sum', 'TYPE' => 'currency', 'NAME' => ''), // // 'sale_order_add_day' => array('MODULE' => 'sale', 'GROUP' => 'day', 'NAME' => ''), // 'sale_order_sum_add' => array('MODULE' => 'sale', 'GROUP' => 'sale_order_sum', 'NAME' => ''), //// 'sale_order_sum_rem' => array('MODULE' => 'sale', 'GROUP' => 'sale_order_sum', 'NAME' => ''), // // 'sale_payment_add_day' => array('MODULE' => 'sale', 'GROUP' => 'day', 'NAME' => ''), // 'sale_payment_sum_add' => array('MODULE' => 'sale', 'GROUP' => 'sale_payment_sum', 'NAME' => ''), //// 'sale_payment_sum_rem' => array('MODULE' => 'sale', 'GROUP' => 'sale_payment_sum', 'NAME' => ''), // ); // } static public function OnGetRateClasses() { $scale = array(0.5, 1, 1.5, 2, 5); $units = array('SUM' => Config::getCurrencyUnit()); return array( 'sale_payment' => array( 'TITLE' => Loc::getMessage('SALE_CONVERSION_RATE_PAYMENT_TITLE'), 'SCALE' => $scale, 'UNITS' => $units, 'MODULE' => 'sale', 'COUNTERS' => array('conversion_visit_day', 'sale_payment_add_day', 'sale_payment_sum_add'), 'CALCULATE' => function (array $counters) { $denominator = $counters['conversion_visit_day'] ?: 0; $numerator = $counters['sale_payment_add_day'] ?: 0; $sum = $counters['sale_payment_sum_add'] ?: 0; return array( 'DENOMINATOR' => $denominator, 'NUMERATOR' => $numerator, 'RATE' => $denominator ? $numerator / $denominator : 0, 'SUM' => $sum, ); }, ), 'sale_order' => array( 'TITLE' => Loc::getMessage('SALE_CONVERSION_RATE_ORDER_TITLE'), 'SCALE' => $scale, 'UNITS' => $units, 'MODULE' => 'sale', 'COUNTERS' => array('conversion_visit_day', 'sale_order_add_day', 'sale_order_sum_add'), 'CALCULATE' => function (array $counters) { $denominator = $counters['conversion_visit_day'] ?: 0; $numerator = $counters['sale_order_add_day' ] ?: 0; $sum = $counters['sale_order_sum_add' ] ?: 0; return array( 'DENOMINATOR' => $denominator, 'NUMERATOR' => $numerator, 'RATE' => $denominator ? $numerator / $denominator : 0, 'SUM' => $sum, ); }, ), 'sale_cart' => array( 'TITLE' => Loc::getMessage('SALE_CONVERSION_RATE_CART_TITLE'), 'SCALE' => $scale, 'UNITS' => $units, 'MODULE' => 'sale', 'COUNTERS' => array('conversion_visit_day', 'sale_cart_add_day', 'sale_cart_sum_add'), 'CALCULATE' => function (array $counters) { $denominator = $counters['conversion_visit_day'] ?: 0; $numerator = $counters['sale_cart_add_day' ] ?: 0; $sum = $counters['sale_cart_sum_add' ] ?: 0; return array( 'DENOMINATOR' => $denominator, 'NUMERATOR' => $numerator, 'RATE' => $denominator ? $numerator / $denominator : 0, 'SUM' => $sum, ); }, ), ); } // Cart private static $cartSum; public static function OnBeforeBasketAdd(array $fields) { if (Loader::includeModule('conversion')) { if ($row = \CSaleBasket::GetList( array(), array( 'LID' => $fields['LID'], 'FUSER_ID' => $fields['FUSER_ID'], 'PRODUCT_ID' => $fields['PRODUCT_ID'], 'ORDER_ID' => 'NULL', ), false, false, array('PRICE', 'QUANTITY') )->Fetch()) { self::$cartSum = $row['PRICE'] * $row['QUANTITY']; } else { self::$cartSum = 0; } } } public static function OnBasketAdd($id, array $fields) { if (Loader::includeModule('conversion')) { $sum = $fields['PRICE'] * $fields['QUANTITY']; if ($sum > self::$cartSum) { $context = DayContext::getInstance(); $context->addDayCounter ('sale_cart_add_day', 1); $context->addCurrencyCounter('sale_cart_sum_add', $sum - self::$cartSum, $fields['CURRENCY']); } } } // Order public static function OnOrderAdd($id, array $fields) { if (Loader::includeModule('conversion')) { $context = DayContext::getInstance(); $context->addDayCounter ('sale_order_add_day', 1); $context->addCurrencyCounter('sale_order_sum_add', $fields['PRICE'], $fields['CURRENCY']); $context->attachEntityItem ('sale_order', $id); } } // Payment public static function OnSalePayOrder($id, $paid) { if (Loader::includeModule('conversion') && ($row = \CSaleOrder::GetById($id))) { if ($paid == 'Y') { $context = DayContext::getEntityItemInstance('sale_order', $id); $context->addCurrencyCounter('sale_payment_sum_add', $row['PRICE'], $row['CURRENCY']); if (defined('ADMIN_SECTION') && ADMIN_SECTION === true) { $context->addCounter ('sale_payment_add_day', 1, new \Bitrix\Main\Type\Date()); } else { $context->addDayCounter ('sale_payment_add_day', 1); } } } } }