The last notes
All English-language materials have been translated fully automatically using the Google service
List all orders in sale.personal.order.list, including canceled ones
It is enough to place the code before calling the component:
$_REQUEST<'show_all'>='Y';
Getting the order property for D7
use Bitrix \ Sale \ Internals \ OrderPropsValueTable;
$ obProps = OrderPropsValueTable :: getList (array ('filter' => array ('ORDER_ID' => $ orderId, 'CODE' => 'PROPERTY_CODE')));
while ($ prop = $ obProps-> Fetch ()) {
$ arResult ['ORDERS'] [$ key] ['ORDER'] ['ADDITIONAL'] [$ prop ['CODE']] = $ prop ['VALUE'];
}
Emptying the Bitrix shopping cart before repeating the order
Let's say we want the sale.personal.order.list component to empty the cart before using the "Repeat order" button
The easiest way is to enable CNC support in the component (the page will be auto-updated) and add a condition before calling the component
if ($ _ REQUEST ['COPY_ORDER'] == 'Y') {// Check that the COPY_ORDER parameter was passed
// Empty the trash completely
CSaleBasket :: DeleteAll (CSaleBasket :: GetBasketUserID ()); // Auto-detect the cart user and clear it
// Option with saving pending and expected goods
$ res = CSaleBasket :: GetList (array (), array (
'FUSER_ID' => CSaleBasket :: GetBasketUserID (),
'LID' => SITE_ID,
'ORDER_ID' => 'null',
'DELAY' => 'N',
'CAN_BUY' => 'Y'));
while ($ row = $ res-> fetch ()) {
CSaleBasket :: Delete ($ row ['ID']);
}
}
Working with order status
Getting order status
$ order = Bitrix \ Sale \ Order :: load ($ order_id);
$ order-> getField ('STATUS_ID');
// Most common statuses
$ STATUS_ID = array (
'F' => 'Completed',
'N' => 'Waiting for payment',
'P' => 'Paid'
);
Order status change
CSaleOrder :: StatusOrder ($ order_id, 'F'); // Done
Set order status "Paid"
CSaleOrder :: PayOrder ($ order_id, "Y"); // status paid (Y / N)
Find out if the order has been canceled
$ order = Bitrix \ Sale \ Order :: load ($ order_id);
$ order-> getField ('CANCELED'); // order canceled (Y / N)
$ order-> getField ('EMP_CANCELED_ID'); // ID of the user who canceled the order
$ order-> getField ('DATE_CANCELED') -> toString (); // canceled date (05.01.2020 21:11:10)
$ order-> getField ('REASON_CANCELED'); // reason for cancellation
Set the order status "Canceled"
if (CModule :: IncludeModule ("sale") && CModule :: IncludeModule ("catalog"))
{
$ order_id = $ _POST ['sendData'] ['id'];
$ order = \ Bitrix \ Sale \ Order :: loadByAccountNumber ($ order_id);
$ r = $ order-> setField ('STATUS_ID', 'C');
if (! $ r-> isSuccess ()) {
var_dump ($ r-> getErrorMessages ());
}
$ r = $ order-> save ();
if (! $ r-> isSuccess ()) {
var_dump ($ r-> getErrorMessages ());
} else {
echo {
$ _POST ['sendData'] ['id']
}
}
Comments