Программно поменять способ оплаты или доставки D7

Скрипт js, в котором передаем id текущего заказа, id нового способа оплаты или доставки, название нового способа оплаты или доставки:

$('body').on('click', '.site-bar__label', function(e){
$input = $(this).find('input');
$id = $(this).data('order');
$name = $input.parent().find('.site-bar__text').text();
var sendData = {
id: $id,
val: $input.val(),
name: $name
};
if($input.prop('name') == 'user__payment') {
sendAjax(sendData, '/ajax/personal/personal-changePayment.php', successPay);
} else {
sendAjax(sendData, '/ajax/personal/personal-changeDel.php', successDel);
}
}); function sendAjax(sendData, link, func) { $.ajax({
url: link,
type: 'POST',
data: ({sendData: sendData}),
dataType: "html",
error: error,
success: func
})
}
function error(){
alert('Ошибка при загрузке данных!');
}
function successPay(result){
$('.payment-detail' + $id).text(result);
}
function successDel(result){
$('.shipment-detail' + $id).text(result);
}
Ну, и соответственно содержимое файла personal-changePayment.php:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog"))
{
$order_id = $_POST['sendData']['id'];
$payment_id = $_POST['sendData']['val'];
$payment_name = htmlspecialchars($_POST['sendData']['name']);
$order = \Bitrix\Sale\Order::loadByAccountNumber($order_id);

$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection[0];
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$payment->setField('PAY_SYSTEM_ID', $payment_id);
$payment->setField('PAY_SYSTEM_NAME', $payment_name);
$result = $order->save();
if (!$result->isSuccess())
{
$result->getErrors();
} else {
echo $_POST['sendData']['name'];
}
}?>
personal-changeDel.php:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog"))
{
$order_id = $_POST['sendData']['id'];
$ship_id = $_POST['sendData']['val'];
$ship_name = htmlspecialchars($_POST['sendData']['name']);
$order = \Bitrix\Sale\Order::loadByAccountNumber($order_id);
$shipmentCollection = $order->getShipmentCollection();
foreach ($shipmentCollection as $shipment) {
if($shipment->isSystem())
continue;

$shipment->setFields(array(
'DELIVERY_ID' => $ship_id,
'DELIVERY_NAME' => $ship_name,
'CURRENCY' => $order->getCurrency()
));
}
$result = $order->save();
if (!$result->isSuccess())
{
$result->getErrors();
} else {
echo $_POST['sendData']['name'];
}
}?>

bitrixone © 2024