В IE не выполняется пересчет цены товаров. Предположительно проблема из-за 302 редеректа,IE не хочет его принимать...Помогите пожалуйста разобраться с этой проблемой.
| Код |
|---|
if (strlen($_REQUEST["BasketRefresh"]) > 0 || strlen($_REQUEST["BasketOrder"]) > 0 || strlen($_REQUEST["action"]) > 0)
{
if(strlen($_REQUEST["action"]) > 0)
{
$id = IntVal($_REQUEST["id"]);
if($id > 0)
{
$dbBasketItems = CSaleBasket::GetList(
array(),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL",
"ID" => $id,
),
false,
false,
array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY")
);
if($arBasket = $dbBasketItems->Fetch())
{
if($_REQUEST["action"] == "delete" && in_array("DELETE", $arParams["COLUMNS_LIST"]))
{
CSaleBasket::Delete($arBasket["ID"]);
}
elseif($_REQUEST["action"] == "quantity" && isset($_REQUEST["amount"]) && in_array("DELAY", $arParams["COLUMNS_LIST"]))
{
if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y")
CSaleBasket::Update($arBasket["ID"], Array("QUANTITY" => $_REQUEST["amount"]));
}
elseif($_REQUEST["action"] == "change_size" && isset($_REQUEST["new_element"]) && in_array("DELAY", $arParams["COLUMNS_LIST"]))
{
if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y"){
CModule::IncludeModule("iblock");
$res = CIBlockElement::GetByID($_REQUEST["new_element"]);
$ar_res = $res->GetNext();
//pre($ar_res); die;
CSaleBasket::Update($arBasket["ID"], Array("PRODUCT_ID" => $_REQUEST["new_element"], "PRODUCT_XML_ID"=>$ar_res["EXTERNAL_ID"]));
}
}
elseif($_REQUEST["action"] == "shelve" && in_array("DELAY", $arParams["COLUMNS_LIST"]))
{
if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y")
CSaleBasket::Update($arBasket["ID"], Array("DELAY" => "Y"));
}
elseif($_REQUEST["action"] == "add" && in_array("DELAY", $arParams["COLUMNS_LIST"]))
{
if ($arBasket["DELAY"] == "Y" && $arBasket["CAN_BUY"] == "Y")
CSaleBasket::Update($arBasket["ID"], Array("DELAY" => "N"));
}
unset($_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]);
}
}
}
else
{
if ($arParams["HIDE_COUPON"] != "Y")
{
$COUPON = Trim($_REQUEST["COUPON"]);
if (strlen($COUPON) > 0)
CCatalogDiscount::SetCoupon($COUPON);
else
CCatalogDiscount::ClearCoupon();
LocalRedirect($arParams["PATH_TO_ORDER"]);
}
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL",
"DELAY"=>"N",
"CAN_BUY"=>"Y",
"SUBSCRIBE"=>"N",
),
false,
false,
array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "DELAY", "CAN_BUY", "PRICE", "QUANTITY", "CURRENCY")
);
while ($arBasketItems = $dbBasketItems->Fetch())
{
$arBasketItems['QUANTITY'] = $arParams['QUANTITY_FLOAT'] == 'Y' ? DoubleVal($arBasketItems['QUANTITY']) : IntVal($arBasketItems['QUANTITY']);
$quantityTmp = $arParams['QUANTITY_FLOAT'] == 'Y' ? DoubleVal($_REQUEST["QUANTITY_".$arBasketItems["ID"]]) : IntVal($_REQUEST["QUANTITY_".$arBasketItems["ID"]]);
if ($arBasketItems["DELAY"] == "N" && $arBasketItems["CAN_BUY"] == "Y")
{
$arFields = array();
if (in_array("QUANTITY", $arParams["COLUMNS_LIST"]))
$arFields["QUANTITY"] = $quantityTmp;
if (count($arFields) > 0 && ($arBasketItems["QUANTITY"] != $arFields["QUANTITY"] && in_array("QUANTITY", $arParams["COLUMNS_LIST"])))
CSaleBasket::Update($arBasketItems["ID"], $arFields);
}
}
}
if (strlen($_REQUEST["BasketOrder"]) > 0)
{
LocalRedirect($arParams["PATH_TO_ORDER"]);
}
else
{
unset($_REQUEST["BasketRefresh"]);
unset($_REQUEST["BasketOrder"]);
LocalRedirect($APPLICATION->GetCurPage());
}
} |