$dbBasketItems = CSaleBasket::GetList(
array(
'DATE_INSERT' => 'ASC',
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL"
),
false,
false,
array("ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID", "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS")
);
while ($arItems = $dbBasketItems->GetNext())
{
$arItems['QUANTITY'] = $arParams['QUANTITY_FLOAT'] == 'Y' ? number_format(DoubleVal($arItems['QUANTITY']), 2, '.', '') : IntVal($arItems['QUANTITY']);
$arItems["PROPS"] = Array();
if(in_array("PROPS", $arParams["COLUMNS_LIST"]))
{
$dbProp = CSaleBasket::GetPropsList(Array("SORT" => "ASC", "ID" => "ASC"), Array("BASKET_ID" => $arItems["ID"], "!CODE" => array("CATALOG.XML_ID", "PRODUCT.XML_ID")));
while($arProp = $dbProp -> GetNext())
$arItems["PROPS"][] = $arProp;
}
$arItems["PRICE_VAT_VALUE"] = (($arItems["PRICE"] / ($arItems["VAT_RATE"] +1)) * $arItems["VAT_RATE"]);
$arItems["PRICE_FORMATED"] = SaleFormatCurrency($arItems["PRICE"], $arItems["CURRENCY"]);
$arItems["WEIGHT"] = DoubleVal($arItems["WEIGHT"]);
$arItems["WEIGHT_FORMATED"] = roundEx(DoubleVal($arItems["WEIGHT"]/$arParams["WEIGHT_KOEF"]), SALE_VALUE_PRECISION)." ".$arParams["WEIGHT_UNIT"];
if ($arItems["DELAY"] == "N" && $arItems["CAN_BUY"] == "Y")
{
$allSum += ($arItems["PRICE"] * $arItems["QUANTITY"]);
$allWeight += ($arItems["WEIGHT"] * $arItems["QUANTITY"]);
$allVATSum += roundEx($arItems["PRICE_VAT_VALUE"] * $arItems["QUANTITY"], SALE_VALUE_PRECISION);
}
if ($arItems["DELAY"] == "N" && $arItems["CAN_BUY"] == "Y")
{
$bShowReady = True;
if(DoubleVal($arItems["DISCOUNT_PRICE"]) > 0)
{
$arItems["DISCOUNT_PRICE_PERCENT"] = $arItems["DISCOUNT_PRICE"]*100 / ($arItems["DISCOUNT_PRICE"] + $arItems["PRICE"]);
$arItems["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arItems["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION)."%";
$DISCOUNT_PRICE_ALL += $arItems["DISCOUNT_PRICE"] * $arItems["QUANTITY"];
}
$arResult["ITEMS"]["AnDelCanBuy"][] = $arItems;
}
elseif ($arItems["DELAY"] == "Y" && $arItems["CAN_BUY"] == "Y")
{
$bShowDelay = True;
$arResult["ITEMS"]["DelDelCanBuy"][] = $arItems;
}
elseif ($arItems["CAN_BUY"] == "N" && $arItems["SUBSCRIBE"] == "Y")
{
$bShowSubscribe = True;
$arResult["ITEMS"]["ProdSubscribe"][] = $arItems;
}
else
{
$bShowNotAvail = True;
$arResult["ITEMS"]["nAnCanBuy"][] = $arItems;
}
$arBasketItems[] = $arItems;
}
$arOrder = array(
'SITE_ID' => SITE_ID,
'USER_ID' => $user['ID'],
'ORDER_PRICE' => $allSum,
'ORDER_WEIGHT' => $allWeight,
'BASKET_ITEMS' => $arResult["ITEMS"]["AnDelCanBuy"]
);
$arOptions = array(
'COUNT_DISCOUNT_4_ALL_QUANTITY' => 'Y',
);
$arErrors = array();
// Discount
CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors, $dVal);
$allSum = 0;
$allWeight = 0;
$allVATSum = 0;
$DISCOUNT_PRICE_ALL = 0;
foreach ($arOrder['BASKET_ITEMS'] as &$arOneItem)
{
$allSum += ($arOneItem["PRICE"] * $arOneItem["QUANTITY"]);
$arOneItem["PRICE_FORMATED"] = SaleFormatCurrency($arOneItem["PRICE"], $arOneItem["CURRENCY"]);
$arOneItem["DISCOUNT_PRICE_PERCENT"] = $arOneItem["DISCOUNT_PRICE"]*100 / ($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"]);
$arOneItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arOneItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION)."%";
$DISCOUNT_PRICE_ALL += $arOneItem["DISCOUNT_PRICE"] * $arOneItem["QUANTITY"];
}
if (isset($arOneItem))
unset($arOneItem);
$order_price = $arOrder['ORDER_PRICE'];
$arFields = array(
'LID' => 's1',
'PERSON_TYPE_ID' => 1,
'STATUS_ID' => 'N',
'PRICE' => $order_price,
'CURRENCY' => 'UAH',
'USER_ID' => $user['ID'],
'PAY_SYSTEM_ID' => 1,
'DELIVERY_ID' => 1,
'NOT_SEND_SMS' => false
);
$ORDER_ID = CSaleOrder::Add($arFields);
$ORDER_ID = IntVal($ORDER_ID);
$rsOrderProp = CSaleOrderProps::GetList(array(), array('CODE' => 'PHONE', 'PERSON_TYPE_ID' => $arFields['PERSON_TYPE_ID']));
if($arOrderProp = $rsOrderProp->Fetch()){
CSaleOrderPropsValue::Add(array('ORDER_ID' => $ORDER_ID, 'ORDER_PROPS_ID' => $arOrderProp['ID'], 'NAME' => $arOrderProp['NAME'], 'VALUE' => $phone, 'CODE' => $arOrderProp['CODE'] ));
}
if ($user['LAST_NAME'] || $user['SECOND_NAME']) {
$rsOrderProp = CSaleOrderProps::GetList(array(), array('CODE' => 'FIO', 'PERSON_TYPE_ID' => $arFields['PERSON_TYPE_ID']));
if($arOrderProp = $rsOrderProp->Fetch()){
CSaleOrderPropsValue::Add(array('ORDER_ID' => $ORDER_ID, 'ORDER_PROPS_ID' => $arOrderProp['ID'], 'NAME' => $arOrderProp['NAME'], 'VALUE' => $user['NAME'] . ' ' . $user['LAST_NAME'], 'CODE' => $arOrderProp['CODE'] ));
}
}
CSaleBasket::OrderBasket($ORDER_ID, CSaleBasket::GetBasketUserID(), SITE_ID); |