в том-то и дело, что купон клиентами не применяется, а в заказ попадает первая найденная скидка у которой есть купон. и даже отследить этот момент не получается уже 2 недели. ни я ни коллеги на нескольких машинах под разными браузерами делали заказ - все ок, и тут же клиент и у него скидка. отследить удалось только до CSaleDiscount::DoProcessOrder($arOrd, array(), $arErrors); этого момента.пока повтора не будет сложно дальше получить ошибку.
а так покупатель добавляет товары в корзину переходит в нее(тут все стандартное), а далее для тех кто хочет через телефон(а ля один клик) отдельный функционал где считывается корзина, формируется заказ, регистрируется пользователь...
Код |
---|
$dbBasketItems = CSaleBasket::GetList(
array("ID" => "ASC"),
array(
'FUSER_ID' => CSaleBasket::GetBasketUserID(),
'LID' => SITE_ID,
'ORDER_ID' => 'NULL'
),
false,
false,
array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY",
"CAN_BUY", "PRICE", "WEIGHT", "NAME", "CURRENCY", "CATALOG_XML_ID", "VAT_RATE",
"NOTES", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "DIMENSIONS", "TYPE", "SET_PARENT_ID", "DETAIL_PAGE_URL"
)
);
$allSum = 0;
$allWeight = 0;
$arItems = array();
while ($arBasketItems = $dbBasketItems->Fetch())
{
$allSum += ($arBasketItems["PRICE"] * $arBasketItems["QUANTITY"]);
$allWeight += ($arBasketItems["WEIGHT"] * $arBasketItems["QUANTITY"]);
$arItems[] = $arBasketItems;
}
$arOrder = array(
'SITE_ID' => SITE_ID,
'USER_ID' => CSaleBasket::GetBasketUserID(),
'ORDER_PRICE' => $allSum,
'ORDER_WEIGHT' => $allWeight,
'BASKET_ITEMS' => $arItems
);
$arOptions = array();
$arErrors = array();
echo "1111<pre>";print_r($arOrder);echo "</pre>";
CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors);
echo "2222<pre>";print_r($arOrder);echo "</pre>"; |
у меня все в норме, а вот у клиента где 1111 - тут все в норме, а где 2222 - тут уже скидка
этим функционалом не многие пользуются: на 15 заказов за 2 недели - 2 со скидками