Как удалить заказ на D7 Битрикс
25 февраля 2021 17:49:11
8128 просмотров
Чтобы заказ успешно удалился из системы, у него не должно быть активных оплат и отгрузок. Поэтому перед удалением нужно проверить эти условия.
Подключаем необходимые модули.
\Bitrix\Main\Loader::includeModule('sale');
use Bitrix\Sale;
Выбираем заказы которые будем удалять.
$filter = Array("ID" => 1000); //ID заказа
$order_list = array();
$log_file = $_SERVER["DOCUMENT_ROOT"]."/orders.log"; if(file_exists($log_file)) unlink($log_file);
$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $filter);
while($ar_sales = $db_sales->Fetch())
{
$order_list[] = $ar_sales["ID"];
}
Отменяем оплаты, отгрузки и удаляем заказы.
foreach($order_list as $id)
{
$order = Sale\Order::load($id);
file_put_contents($log_file, "Работаем с заказом " . $id . "\n", FILE_APPEND);
//отменяем оплаты если есть
$paymentCollection = $order->getPaymentCollection();
if($paymentCollection->isPaid())
{
file_put_contents($log_file, "Оплачен\n", FILE_APPEND);
foreach($paymentCollection as $payment)
{
$payment->setReturn("Y");
}
}
//отменяем отгрузки если есть
$shipmentCollection = $order->getShipmentCollection();
if($shipmentCollection->isShipped())
{
file_put_contents($log_file, "Отгружен\n", FILE_APPEND);
$shipment = $shipmentCollection->getItemById($shipmentCollection[0]->getField("ID"));
$res = $shipment->setField("DEDUCTED", "N");
if(!$res->isSuccess())
{
file_put_contents($log, print_r($res->getErrors(), true), FILE_APPEND);
}
}
$order->save();
$res_delete = Sale\Order::delete($id);
if(!$res_delete->isSuccess()) {
file_put_contents($log_file, print_r($res_delete->getErrors(), true), FILE_APPEND);
}
else
{
file_put_contents($log_file, "Заказ " . $id . " удален\n", FILE_APPEND);
}
file_put_contents($log_file, "------------\n", FILE_APPEND);
}
Материалы по теме
19 ноября 2021 15:10:37
Как очистить очередь писем на отправку Bitrix
Бывают случаи, когда на сайте есть проблемы с отправкой почты. Перед тем как исправлять ошибку, стоит обратить внимание на очередь писем которые не были отправлены.
19 февраля 2018 17:38:00
Как сбросить пароль администратора Битрикс
Если вы вдруг забыли пароль от админки сайта, то маленький трюк с API Битрикса поможет вам его сбросить.