Здравствуйте, коллеги!
Нужно добавить в уже созданный заказ еще одну оплату с внутреннего счета, после изменения статуса заказа, а также списать с него средства. Добавил в init.php вот такой код:
AddEventHandler("sale", "OnSaleStatusOrder", "UpdatePayment");function UpdatePayment($order_id, $status_id) {
$order = \Bitrix\Sale\Order::load(intval($order_id));
if ($status_id == 'F') {
$user_id = $order->getUserId();
$collection = $order->getPropertyCollection();
$paybonus = $collection->getItemById(14);
if(intval($paybonus)>0) {
CSaleUserAccount::UpdateAccount($user_id, -intval($paybonus), "RUB", "Частичная оплата бонусами", $order_id,false);
}
}
$paymentCollection = $order->getPaymentCollection();
$service = \Bitrix\Sale\PaySystem\Manager::getObjectById(4);
$payment = $collection->createItem($service);
$payment->setField('SUM', $paybonus);
}
Но он не работает. В чем может быть проблема, подскажите пожалуйста?
Нужно добавить в уже созданный заказ еще одну оплату с внутреннего счета, после изменения статуса заказа, а также списать с него средства. Добавил в init.php вот такой код:
AddEventHandler("sale", "OnSaleStatusOrder", "UpdatePayment");function UpdatePayment($order_id, $status_id) {
$order = \Bitrix\Sale\Order::load(intval($order_id));
if ($status_id == 'F') {
$user_id = $order->getUserId();
$collection = $order->getPropertyCollection();
$paybonus = $collection->getItemById(14);
if(intval($paybonus)>0) {
CSaleUserAccount::UpdateAccount($user_id, -intval($paybonus), "RUB", "Частичная оплата бонусами", $order_id,false);
}
}
$paymentCollection = $order->getPaymentCollection();
$service = \Bitrix\Sale\PaySystem\Manager::getObjectById(4);
$payment = $collection->createItem($service);
$payment->setField('SUM', $paybonus);
}
Но он не работает. В чем может быть проблема, подскажите пожалуйста?