Как скрыть онлайн оплату картой для весовых товаров?Сделать условие в оформлении заказа, если присутствуют в заказе весовые товары, т.е. товары с количественным коэфициентом измерения (все кроме шт) - кг, л, грамм и тд, то Онлайн оплату картой
проверял не приходит вес в функцию
Код |
---|
<?php
//bitrix/php_interface/init.php
$eventManager2 = \Bitrix\Main\EventManager::getInstance();
$eventManager2->addEventHandler(
'sale',
'onSalePaySystemRestrictionsClassNamesBuildList',
'onCheckRulePayment'
);
function onCheckRulePayment()
{
$filePayments = '/bitrix/php_interface/classes/restrictions/payments.php';
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
array(
'\checkPayBrand' => $filePayments, // по бренду
'\checkPayDiscount' => $filePayments, // по скидкам
'\checkvesovie' => $filePayments, // по скидкам
)
);
}
//php_interface/classes/restrictions/payments.php
use Bitrix\Sale\Delivery\Restrictions;
use Bitrix\Sale\Services\Base;
use Bitrix\Sale\Internals\CollectableEntity;
use Bitrix\Sale\Internals\Entity;
use Bitrix\Sale\Order;
use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\Shipment;
/**
* Class ByWeight
* Restricts delivery by weight
* @package Bitrix\Sale\Delivery\Restrictions
*/
class checkvesovie extends Restrictions\Base
{
public static function getClassTitle()
{
return Loc::getMessage("SALE_DLVR_RSTR_BY_WEIGHT_NAME");
}
public static function getClassDescription()
{
return Loc::getMessage("SALE_DLVR_RSTR_BY_WEIGHT_DESCRIPT");
}
public static function check($weight, array $restrictionParams, $serviceId = 0)
{
file_put_contents('/var/www/www-root/data/www/shop.mercury-market.ru/bitrix/php_interface/classes/restrictions/log.php', print_r($weight, true));
if(empty($restrictionParams))
return true;
$weight = floatval($weight);
if(isset($restrictionParams["MIN_WEIGHT"]) && floatval($restrictionParams["MIN_WEIGHT"]) > 0 && $weight < floatval($restrictionParams["MIN_WEIGHT"]))
return false;
if(isset($restrictionParams["MAX_WEIGHT"]) && floatval($restrictionParams["MAX_WEIGHT"]) > 0 && $weight > floatval($restrictionParams["MAX_WEIGHT"]))
return false;
return true;
}
protected static function extractParams(Entity $entity)
{
if (!($entity instanceof Shipment))
return false;
return $entity->getWeight();
}
public static function getParamsStructure($entityId = 0)
{
return array(
"MIN_WEIGHT" => array(
'TYPE' => 'NUMBER',
'DEFAULT' => "0",
'MIN' => 0,
'LABEL' => "минимальный вес(грамм)"
),
"MAX_WEIGHT" => array(
'TYPE' => 'NUMBER',
'DEFAULT' => "0",
'MIN' => 0,
'LABEL' => "максимальный вес(грамм)"
)
);
}
} |