Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save flayder/1e64b4ba6d06e36ad4781423516e18da to your computer and use it in GitHub Desktop.
Save flayder/1e64b4ba6d06e36ad4781423516e18da to your computer and use it in GitHub Desktop.
$ID = $_REQUEST["ID"];
if($ID > 0 && \Bitrix\Main\Loader::includeModule("sale") && \Bitrix\Main\Loader::includeModule("catalog")) {
$fuserId = CSaleBasket::GetBasketUserID();
$arOrder = CSaleOrder::GetByID($ID);
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
'FUSER_ID' => $fuserId,
"ORDER_ID" => 'null'
),
false,
false,
array('ID')
);
while ($arItems = $dbBasketItems->Fetch())
{
CSaleBasket::Delete($arItems["ID"]);
}
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"ORDER_ID" => $ID
),
false,
false,
array()
);
while ($arItems = $dbBasketItems->Fetch())
{
CCatalogProduct::Update($arItems['PRODUCT_ID'], array('QUANTITY' => 1));
Add2BasketByProductID($arItems['PRODUCT_ID'], 1);
}
//$order = \Bitrix\Sale\Order::load($ORDER_ID);
$order = \Bitrix\Sale\Order::create(SITE_ID, $arOrder["USER_ID"]);
$order->setPersonTypeId($arOrder['PERSON_TYPE_ID']);
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID);
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true)));
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem();
// $service = \Bitrix\Sale\Delivery\Services\Manager::getById($arOrder['DELIVERY_ID']);
// $shipment->setFields(array(
// 'DELIVERY_ID' => $service['ID'],
// 'DELIVERY_NAME' => $service['NAME'],
// ));
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem();
$paySystemService = \Bitrix\Sale\PaySystem\Manager::getObjectById($arOrder['PAY_SYSTEM_ID']);
$payment->setFields(array(
'PAY_SYSTEM_ID' => $paySystemService->getField("PAY_SYSTEM_ID"),
'PAY_SYSTEM_NAME' => $paySystemService->getField("NAME"),
));
$res = $discounts->calculate();
$order->setBasket($basket);
$order->doFinalAction(true);
$order->save();
$ORDER_ID = $order->getId();
if($ORDER_ID > 0) {
$db_props = CSaleOrderPropsValue::GetOrderProps($ID);
while ($arProps = $db_props->Fetch())
{
$arProps['ORDER_ID'] = $ORDER_ID;
CSaleOrderPropsValue::Add($arProps);
}
LocalRedirect('/order/?ORDER_ID='.$ORDER_ID);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment