$basket_id = 0;
$arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=> 8, "ACTIVE"=>"Y", "ID"=> $post['id']);
$res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if($ob = $res->GetNext()){
$db_res = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $post['id'],
"CATALOG_GROUP_ID" => 1
)
);
if ($ar_res = $db_res->Fetch()) {
$arFields = array(
"PRODUCT_ID" => $post['id'],
"PRODUCT_PRICE_ID" => $ar_res['ID'],
"PRICE" => $ar_res['PRICE'],
"CURRENCY" => "RUB",
"WEIGHT" => 0,
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $ob['NAME'],
"NOTES" => "",
"DETAIL_PAGE_URL" => $ob['DETAIL_PAGE_URL']
);
$basket_id = CSaleBasket::Add($arFields);
}
}
if($basket_id > 0) {
$basketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"ID" => $basket_id
),
false,
false,
array()
);
if ($arItems = $dbBasketItems->Fetch()) {
$basketItems[] = $arItems;
}
if (!empty($basketItems)) {
$arErrors = array();
$arWarnings = array();
$arOrderDat = CSaleOrder::DoCalculateOrder(
SITE_ID,
$user_id,
$basketItems,
1,
array(),
4,
3,
array(),
$arErrors,
$arWarnings
);
$arOrderFields = array(
"LID" => $arOrderDat['LID'],
"PERSON_TYPE_ID" => $arOrderDat['PERSON_TYPE_ID'],
"PAYED" => "N",
"CANCELED" => "N",
"STATUS_ID" => "N",
"PRICE" => $arOrderDat['PRICE'],
"CURRENCY" => $arOrderDat['CURRENCY'],
"USER_ID" => $arOrderDat['USER_ID'],
"USER_DESCRIPTION" => "",
"ADDITIONAL_INFO" => "",
"PAY_SYSTEM_ID" => 1,
"PRICE_DELIVERY" => 0,
"DELIVERY_ID" => 2
);
//Создание заказа и привязка корзин к заказу
$ORDER_ID = CSaleOrder::DoSaveOrder($arOrderDat, $arOrderFields, 0, $errors, array(), array(), array());
if ($ORDER_ID > 0) {
//Применение скидок на товары в корзинах
$arOrder = array(
'SITE_ID' => SITE_ID,
'USER_ID' => $user_id,
'BASKET_ITEMS' => $basketItems
);
$arOptions = array();
$arErrors = array();
CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors);
$db_props = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
while ($arProps = $db_props->Fetch()) {
if ($arProps['ORDER_PROPS_ID'] == 2 || $arProps['ORDER_PROPS_ID'] == 21 || $arProps['ORDER_PROPS_ID'] == 3) {
CSaleOrderPropsValue::Update($arProps['ID'], array("VALUE" => $post['ORDER_PROP_' . $arProps['ORDER_PROPS_ID']]));
}
}
}
}
}
|