\Bitrix\Main\EventManager::getInstance()->addEventHandler("sale", "OnSaleComponentOrderCreated", "ChangePrice");
use Bitrix\Sale;
use Bitrix\Main;
use Bitrix\Sale\Internals;
use Bitrix\Currency;
function ChangePrice($order, &$arUserResult, $request, &$arParams, &$arResult, &$arPaySystemServiceAll, &$arDeliveryServiceAll)
{
$basket = $order->getBasket();
$opt_user = CSite::InGroup(array(8));
$id_basket = Sale\Fuser::getId();
foreach ($order->getShipmentCollection() as $shipment) {
if (!$shipment->isSystem()) {
if ($shipment->getDeliveryId() == 2 && $opt_user != 1) {
$basketRes = Sale\Internals\BasketTable::getList(array(
'filter' => array(
'FUSER_ID' => $id_basket,
'ORDER_ID' => null,
'CAN_BUY' => 'Y',
)
));
while ($item_res = $basketRes->Fetch()) {
$inBasket[] = $item_res;
}
$basket_id = array_column($inBasket, 'PRODUCT_ID');
$dbProductPrice = CPrice::GetList(
array("PRODUCT_ID" => "ASC"),
array("PRODUCT_ID" => $basket_id, "CATALOG_GROUP_ID" => 3),
false,
false,
array("CATALOG_GROUP_NAME", "PRODUCT_ID", "PRICE", "CATALOG_GROUP_ID", "CURRENCY")
);
while ($ar_price = $dbProductPrice->Fetch()) {
$allPrice[] = $ar_price;
}
foreach ($allPrice as $arr_price_id => $price) {
$id_price[$price['PRODUCT_ID']] = ceil($price['PRICE']);
unset($price);
}
$prods = array();
foreach ($basket as $basketItem) {
$prods[$basketItem->getField("PRODUCT_ID")] = $basketItem->getPrice();{
$recalc_basket = array_replace($prods, $id_price);
$basketItem->setField("PRICE", $recalc_basket[$basketItem->getField("PRODUCT_ID")]);
$basketItem->setField("BASE_PRICE", $recalc_basket[$basketItem->getField("PRODUCT_ID")]);
}
}
}
}
}
foreach ($order->getPaymentCollection() as $payment) {
if ($payment->getPaymentSystemId() == 64 && $opt_user != 1) {
$basketRes = Sale\Internals\BasketTable::getList(array(
'filter' => array(
'FUSER_ID' => $id_basket,
'ORDER_ID' => null,
'CAN_BUY' => 'Y',
)
));
while ($item_res = $basketRes->Fetch()) {
$inBasket[] = $item_res;
}
$basket_id = array_column($inBasket, 'PRODUCT_ID');
$dbProductPrice = CPrice::GetList(
array("PRODUCT_ID" => "ASC"),
array("PRODUCT_ID" => $basket_id, "CATALOG_GROUP_ID" => 3),
false,
false,
array("CATALOG_GROUP_NAME", "PRODUCT_ID", "PRICE", "CATALOG_GROUP_ID", "CURRENCY")
);
while ($ar_price = $dbProductPrice->Fetch()) {
$allPrice[] = $ar_price;
}
foreach ($allPrice as $arr_price_id => $price) {
$id_price[$price['PRODUCT_ID']] = ceil($price['PRICE']);
unset($price);
}
$prods = array();
foreach ($basket as $basketItem) {
$prods[$basketItem->getField("PRODUCT_ID")] = $basketItem->getPrice();{
$recalc_basket = array_replace($prods, $id_price);
$basketItem->setField("PRICE", $recalc_basket[$basketItem->getField("PRODUCT_ID")]);
$basketItem->setField("BASE_PRICE", $recalc_basket[$basketItem->getField("PRODUCT_ID")]);
}
}
}
}
}
include_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/wsrubi.smtp/classes/general/wsrubismtp.php");
|