if (array_key_exists($val["PRODUCT_ID"], $arMeasures)) { $arResult["ITEMS"]["AnDelCanBuy"][$key]["CATALOG_MEASURE"] = $arMeasures[$val["PRODUCT_ID"]]; } if ($arResult["ITEMS_IMG"][$val["ID"]]) { $arResult["ITEMS"]["AnDelCanBuy"][$key]["DETAIL_PICTURE"] = $arResult["ITEMS_IMG"][$val["ID"]]; } if ($productId = CCatalogSku::GetProductInfo($val["PRODUCT_ID"])) { $arElementsID[] = $productId["ID"]; $arProductsToElements[$productId["ID"]][] = $val["PRODUCT_ID"]; } } if (function_exists(getMeasures)) { $arResult["ITEMS"]["AnDelCanBuy"] = getMeasures($arResult["ITEMS"]["AnDelCanBuy"]); } if (function_exists(getRatio)) { $arResult["ITEMS"]["AnDelCanBuy"] = getRatio($arResult["ITEMS"]["AnDelCanBuy"]); } $arResult["ITEMS"]["AnDelCanBuy"] = getAvailableQuantity($arResult["ITEMS"]["AnDelCanBuy"]); foreach ($arResult["ITEMS"]["DelDelCanBuy"] as $key => $val) { if ($arResult["ITEMS_IMG"][$val["ID"]]) { $arResult["ITEMS"]["DelDelCanBuy"][$key]["DETAIL_PICTURE"] = $arResult["ITEMS_IMG"][$val["ID"]]; } if ($productId = CCatalogSku::GetProductInfo($val["PRODUCT_ID"])) { $arElementsID[] = $productId["ID"]; $arProductsToElements[$productId["ID"]][] = $val["PRODUCT_ID"]; } } foreach ($arResult["ITEMS"]["nAnCanBuy"] as $key => $val) { if ($arResult["ITEMS_IMG"][$val["ID"]]) { $arResult["ITEMS"]["nAnCanBuy"][$key]["DETAIL_PICTURE"] = $arResult["ITEMS_IMG"][$val["ID"]]; }
public function recalculateBasket($arPost) { global $USER; $arRes = array(); if ($this->hideCoupon != "Y") { if (!empty($arPost['delete_coupon'])) { $arRes['VALID_COUPON'] = DiscountCouponsManager::delete($arPost['delete_coupon']); } else { $oldUse = false; if (array_key_exists('coupon', $arPost)) { $arPost['coupon'] = trim((string) $arPost['coupon']); if ($arPost['coupon'] != '') { $arRes['VALID_COUPON'] = DiscountCouponsManager::add($arPost['coupon']); } else { $oldUse = true; } } if ($oldUse) { if (!isset($arRes["VALID_COUPON"]) || $arRes["VALID_COUPON"] === false) { DiscountCouponsManager::clear(true); } } } } $arTmpItems = array(); $dbItems = CSaleBasket::GetList(array("PRICE" => "DESC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID", "NAME", "PRODUCT_PROVIDER_CLASS", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY", "SUBSCRIBE", "TYPE", "SET_PARENT_ID", "NOTES")); while ($arItem = $dbItems->Fetch()) { if (CSaleBasketHelper::isSetItem($arItem)) { continue; } $arTmpItems[] = $arItem; } if (!empty($arTmpItems)) { if (self::$catalogIncluded === null) { self::$catalogIncluded = Loader::includeModule('catalog'); } if (self::$catalogIncluded) { $arTmpItems = getRatio($arTmpItems); } foreach ($arTmpItems as $arItem) { $isFloatQuantity = isset($arItem["MEASURE_RATIO"]) && floatval($arItem["MEASURE_RATIO"]) > 0 && $arItem["MEASURE_RATIO"] != 1 || $this->quantityFloat == "Y" ? true : false; if (!isset($arPost["QUANTITY_" . $arItem["ID"]]) || floatval($arPost["QUANTITY_" . $arItem["ID"]]) <= 0) { $quantityTmp = $isFloatQuantity === true ? floatval($arItem["QUANTITY"]) : intval($arItem["QUANTITY"]); } else { $quantityTmp = $isFloatQuantity === true ? floatval($arPost["QUANTITY_" . $arItem["ID"]]) : intval($arPost["QUANTITY_" . $arItem["ID"]]); } $deleteTmp = $arPost["DELETE_" . $arItem["ID"]] == "Y" ? "Y" : "N"; $delayTmp = $arPost["DELAY_" . $arItem["ID"]] == "Y" ? "Y" : "N"; if ($arItem["CAN_BUY"] == "Y") { $res = $this->checkQuantity($arItem, $quantityTmp); if (!empty($res)) { $arRes["WARNING_MESSAGE"][] = $res["ERROR"]; } } if ($deleteTmp == "Y" && in_array("DELETE", $this->columns)) { if ($arItem["SUBSCRIBE"] == "Y" && is_array($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()])) { unset($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()][$arItem["PRODUCT_ID"]]); } CSaleBasket::Delete($arItem["ID"]); } elseif ($arItem["DELAY"] == "N" && $arItem["CAN_BUY"] == "Y") { $arFields = array(); if (in_array("QUANTITY", $this->columns)) { $arFields["QUANTITY"] = $quantityTmp; } if (in_array("DELAY", $this->columns)) { $arFields["DELAY"] = $delayTmp; } if (!empty($arFields) && ($arItem["QUANTITY"] != $arFields["QUANTITY"] && in_array("QUANTITY", $this->columns) || $arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns))) { CSaleBasket::Update($arItem["ID"], $arFields); } } elseif ($arItem["DELAY"] == "Y" && $arItem["CAN_BUY"] == "Y") { $arFields = array(); if (in_array("DELAY", $this->columns)) { $arFields["DELAY"] = $delayTmp; } if (!empty($arFields) && ($arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns))) { CSaleBasket::Update($arItem["ID"], $arFields); } } } } return $arRes; }
// else if ($storeCount == -1) TODO - storeCount = -1 not used at all // storeCount = 0 - different logic? // } } if (CSaleBasketHelper::isSetParent($arBasket) || CSaleBasketHelper::isSetItem($arBasket)) { $parentItemFound = true; } } } if (!empty($arBasketItem)) // measures and ratio { $arBasketItem = getMeasures($arBasketItem); $arBasketItem = getRatio($arBasketItem); } if ($parentItemFound === true && !empty($arBasketItem) && is_array($arBasketItem)) { $arBasketItem = CSaleBasketHelper::reSortItems($arBasketItem, true); } $arProductData = array(); $arIblockProps = array(); $arTmpColumns = array(); $arColumnsOptions = CUserOptions::GetOption("order_basket_table", "table_columns"); $arCustomSelectFields = array(); if ($arColumnsOptions) {
function UpdateBasketPrices($fuserID, $siteID) { $fuserID = (int) $fuserID; if ($fuserID <= 0) { return false; } $siteID = (string) $siteID; if ($siteID == '') { $siteID = SITE_ID; } $isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'N'); DiscountCouponsManager::clearApply(false); $basketItems = array(); /* if (!empty($arBasketItems) && is_array($arBasketItems)) { foreach ($arBasketItems as &$basketItemData) { if (array_key_exists('MEASURE_RATIO', $basketItemData)) { $basketItemQuantity = floatval($basketItemData['QUANTITY']); $basketItemRatio = floatval($basketItemData['MEASURE_RATIO']); $mod = roundEx(($basketItemQuantity / $basketItemRatio - intval($basketItemQuantity / $basketItemRatio)), 6); if ($mod !== 0) { $basketItemData['QUANTITY'] = ceil(ceil($basketItemQuantity) / $basketItemRatio)* $basketItemRatio; CSaleBasket::Update($basketItemData['ID'], array('QUANTITY' => $basketItemData['QUANTITY'])); } } } unset($basketItemData); } */ $dbBasketItems = CSaleBasket::GetList(array("ALL_PRICE" => "DESC"), array("FUSER_ID" => $fuserID, "LID" => $siteID, "ORDER_ID" => "NULL", "SUBSCRIBE" => "N"), false, false, array("ID", "MODULE", "PRODUCT_ID", "QUANTITY", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS", "CAN_BUY", "DELAY", "NOTES", "TYPE", "SET_PARENT_ID")); while ($arItem = $dbBasketItems->Fetch()) { $basketItems[] = $arItem; } if (!empty($basketItems) && is_array($basketItems)) { $basketItems = getRatio($basketItems); foreach ($basketItems as $basketItem) { $fields = array(); $basketItem['CALLBACK_FUNC'] = (string) $basketItem['CALLBACK_FUNC']; $basketItem['PRODUCT_PROVIDER_CLASS'] = (string) $basketItem['PRODUCT_PROVIDER_CLASS']; if (strval(trim($basketItem['PRODUCT_PROVIDER_CLASS'])) !== '' || strval(trim($basketItem['CALLBACK_FUNC'])) !== '') { $basketItem['MODULE'] = (string) $basketItem['MODULE']; $basketItem['PRODUCT_ID'] = (int) $basketItem['PRODUCT_ID']; $basketItem['QUANTITY'] = (double) $basketItem['QUANTITY']; if ($productProvider = CSaleBasket::GetProductProvider($basketItem)) { $fields = $productProvider::GetProductData(array("PRODUCT_ID" => $basketItem["PRODUCT_ID"], "QUANTITY" => $basketItem["QUANTITY"], "RENEWAL" => "N", "CHECK_COUPONS" => 'Y' == $basketItem['CAN_BUY'] && 'N' == $basketItem['DELAY'] ? 'Y' : 'N', "CHECK_DISCOUNT" => CSaleBasketHelper::isSetItem($basketItem) ? 'N' : 'Y', "BASKET_ID" => $basketItem["ID"], "NOTES" => $basketItem["NOTES"])); } else { $fields = CSaleBasket::ExecuteCallbackFunction($basketItem["CALLBACK_FUNC"], $basketItem["MODULE"], $basketItem["PRODUCT_ID"], $basketItem["QUANTITY"], "N"); } if (!empty($fields) && is_array($fields)) { if ($isOrderConverted == 'Y' && $basketItem['DELAY'] == 'N') { if (!Sale\Compatible\DiscountCompatibility::isInited()) { Sale\Compatible\DiscountCompatibility::init(); } if (Sale\Compatible\DiscountCompatibility::usedByClient()) { Sale\Compatible\DiscountCompatibility::setBasketItemData($basketItem['ID'], $fields); } } $fields['CAN_BUY'] = 'Y'; $fields['TYPE'] = (int) $basketItem['TYPE']; $fields['SET_PARENT_ID'] = (int) $basketItem['SET_PARENT_ID']; } else { $fields = array('CAN_BUY' => 'N'); } } if (array_key_exists('MEASURE_RATIO', $basketItem)) { $basketItemQuantity = floatval($basketItem['QUANTITY']); $basketItemRatio = floatval($basketItem['MEASURE_RATIO']); $mod = roundEx($basketItemQuantity / $basketItemRatio - intval($basketItemQuantity / $basketItemRatio), 6); if ($mod != 0) { $fields['QUANTITY'] = floor(ceil($basketItemQuantity) / $basketItemRatio) * $basketItemRatio; } } if (!empty($fields) && is_array($fields)) { CSaleBasket::Update($basketItem['ID'], $fields); } } } return true; }
public function getBasketItems() { global $APPLICATION; $bUseCatalog = CModule::IncludeModule("catalog"); $bUseIblock = $bUseCatalog; $bShowReady = False; $bShowDelay = False; $bShowSubscribe = False; $bShowNotAvail = False; $allSum = 0; $allWeight = 0; $allCurrency = CSaleLang::GetLangCurrency($this->getSiteId()); $allVATSum = 0; $arParents = array(); $arResult["ITEMS"]["AnDelCanBuy"] = array(); $arResult["ITEMS"]["DelDelCanBuy"] = array(); $arResult["ITEMS"]["nAnCanBuy"] = array(); $arResult["ITEMS"]["ProdSubscribe"] = array(); $DISCOUNT_PRICE_ALL = 0; // BASKET PRODUCTS (including measures, ratio, iblock properties data) $arImgFields = array("PREVIEW_PICTURE", "DETAIL_PICTURE"); $arBasketItems = array(); $arSku2Parent = array(); $arSetParentWeight = array(); $basketItemsFilter = array("USER_ID" => $this->userId, "ORDER_ID" => "NULL"); if ($this->showDelay != 'Y') { $basketItemsFilter['DELAY'] = 'N'; } $dbItems = CSaleBasket::GetList(array("ID" => "ASC"), $basketItemsFilter, 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", "TYPE", "SET_PARENT_ID")); while ($arItem = $dbItems->GetNext()) { $arBasketItems[] = $arItem; if (CSaleBasketHelper::isSetItem($arItem)) { continue; } $arElementId[] = $arItem["PRODUCT_ID"]; if ($bUseCatalog) { $arParent = CCatalogSku::GetProductInfo($arItem["PRODUCT_ID"]); if ($arParent) { $arElementId[] = $arParent["ID"]; $arSku2Parent[$arItem["PRODUCT_ID"]] = $arParent["ID"]; $arParents[$arItem["PRODUCT_ID"]]["PRODUCT_ID"] = $arParent["ID"]; $arParents[$arItem["PRODUCT_ID"]]["IBLOCK_ID"] = $arParent["IBLOCK_ID"]; } } } // get measures, ratio, sku props data and available quantity if (!empty($arBasketItems) && $bUseCatalog) { $arBasketItems = getMeasures($arBasketItems); $arBasketItems = getRatio($arBasketItems); $arBasketItems = $this->getAvailableQuantity($arBasketItems); } // get product properties data $arProductData = getProductProps($arElementId, array_merge(array("ID"), $arImgFields, $this->arCustomSelectFields)); foreach ($arBasketItems as &$arItem) { $quantityIsFloat = false; if (number_format(doubleval($arItem['QUANTITY']), 2, '.', '') != intval($arItem['QUANTITY'])) { $quantityIsFloat = true; } $arItem["QUANTITY"] = $quantityIsFloat === false && $this->quantityFloat != "Y" ? intval($arItem['QUANTITY']) : number_format(doubleval($arItem['QUANTITY']), 2, '.', ''); $arItem["QUANTITY_FORMATED"] = $arItem["QUANTITY"] . " " . $arItem["MEASURE_TEXT"]; $arItem["PROPS"] = array(); $dbProp = CSaleBasket::GetPropsList(array("SORT" => "ASC", "ID" => "ASC"), array("BASKET_ID" => $arItem["ID"], "!CODE" => array("CATALOG.XML_ID", "PRODUCT.XML_ID"))); while ($arProp = $dbProp->GetNext()) { $arItem["PROPS"][] = $arProp; } $arItem["PRICE_VAT_VALUE"] = $arItem["PRICE"] / ($arItem["VAT_RATE"] + 1) * $arItem["VAT_RATE"]; $arItem["PRICE_FORMATED"] = $this->getSaleFormatCurrency($arItem["PRICE"], $arItem["CURRENCY"]); $arItem["WEIGHT"] = doubleval($arItem["WEIGHT"]); $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; $arItem["DISCOUNT_FORMATED"] = $this->getSaleFormatCurrency($arItem["DISCOUNT_PRICE"], $arItem["CURRENCY"]); if (CSaleBasketHelper::isSetItem($arItem)) { $arSetParentWeight[$arItem["SET_PARENT_ID"]] += $arItem["WEIGHT"] * $arItem["QUANTITY"]; } if (array_key_exists($arItem["PRODUCT_ID"], $arProductData) && is_array($arProductData[$arItem["PRODUCT_ID"]])) { foreach ($arProductData[$arItem["PRODUCT_ID"]] as $key => $value) { if (strpos($key, "PROPERTY_") !== false || in_array($key, $arImgFields)) { $arItem[$key] = $value; } } } if (array_key_exists($arItem["PRODUCT_ID"], $arSku2Parent)) { $arFieldsToFill = array_merge($this->arCustomSelectFields, $arImgFields); // fields to be filled with parents' values if empty foreach ($arFieldsToFill as $field) { $fieldVal = in_array($field, $arImgFields) ? $field : $field . "_VALUE"; $parentId = $arSku2Parent[$arItem["PRODUCT_ID"]]; if ((!isset($arItem[$fieldVal]) || isset($arItem[$fieldVal]) && strlen($arItem[$fieldVal]) == 0) && (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) { $arItem[$fieldVal] = $arProductData[$parentId][$fieldVal]; } } } foreach ($arItem as $key => $value) { if (strpos($key, "PROPERTY_", 0) === 0 && strrpos($key, "_VALUE") == strlen($key) - 6) { $code = str_replace(array("PROPERTY_", "_VALUE"), "", $key); $propData = $this->arIblockProps[$code]; $arItem[$key] = CSaleHelper::getIblockPropInfo($value, $propData); } } $arItem["PREVIEW_PICTURE_SRC"] = ""; if (isset($arItem["PREVIEW_PICTURE"]) && intval($arItem["PREVIEW_PICTURE"]) > 0) { $arImage = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); if ($arImage) { $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true); $arItem["PREVIEW_PICTURE_SRC"] = $arFileTmp["src"]; } } $arItem["DETAIL_PICTURE_SRC"] = ""; if (isset($arItem["DETAIL_PICTURE"]) && intval($arItem["DETAIL_PICTURE"]) > 0) { $arImage = CFile::GetFileArray($arItem["DETAIL_PICTURE"]); if ($arImage) { $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true); $arItem["DETAIL_PICTURE_SRC"] = $arFileTmp["src"]; } } } unset($arItem); // get sku props data if (!empty($arBasketItems) && $bUseCatalog && isset($this->offersProps) && !empty($this->offersProps)) { $arBasketItems = $this->getSkuPropsData($arBasketItems, $arParents, $this->offersProps); } // count weight for set parent products foreach ($arBasketItems as &$arItem) { if (CSaleBasketHelper::isSetParent($arItem)) { $arItem["WEIGHT"] = $arSetParentWeight[$arItem["ID"]] / $arItem["QUANTITY"]; $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; } } if (isset($arItem)) { unset($arItem); } // fill item arrays for old templates foreach ($arBasketItems as &$arItem) { if (CSaleBasketHelper::isSetItem($arItem)) { continue; } if ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "N") { $allSum += $arItem["PRICE"] * $arItem["QUANTITY"]; $allWeight += $arItem["WEIGHT"] * $arItem["QUANTITY"]; $allVATSum += roundEx($arItem["PRICE_VAT_VALUE"] * $arItem["QUANTITY"], SALE_VALUE_PRECISION); $bShowReady = True; if (doubleval($arItem["DISCOUNT_PRICE"]) > 0) { if (0 < doubleval($arItem["DISCOUNT_PRICE"] + $arItem["PRICE"])) { $arItem["DISCOUNT_PRICE_PERCENT"] = $arItem["DISCOUNT_PRICE"] * 100 / ($arItem["DISCOUNT_PRICE"] + $arItem["PRICE"]); } else { $arItem["DISCOUNT_PRICE_PERCENT"] = 0; } $arItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION) . "%"; $DISCOUNT_PRICE_ALL += $arItem["DISCOUNT_PRICE"] * $arItem["QUANTITY"]; } $arResult["ITEMS"]["AnDelCanBuy"][] = $arItem; } elseif ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "Y") { $bShowDelay = True; $arResult["ITEMS"]["DelDelCanBuy"][] = $arItem; } elseif ($arItem["CAN_BUY"] == "N" && $arItem["SUBSCRIBE"] == "Y") { $bShowSubscribe = True; $arResult["ITEMS"]["ProdSubscribe"][] = $arItem; } else { $bShowNotAvail = True; $arItem["NOT_AVAILABLE"] = true; $arResult["ITEMS"]["nAnCanBuy"][] = $arItem; } } unset($arItem); $arResult["ShowReady"] = $bShowReady ? "Y" : "N"; $arResult["ShowDelay"] = $bShowDelay ? "Y" : "N"; $arResult["ShowNotAvail"] = $bShowNotAvail ? "Y" : "N"; $arResult["ShowSubscribe"] = $bShowSubscribe ? "Y" : "N"; $arOrder = array('SITE_ID' => $this->getSiteId(), 'USER_ID' => $this->userId, 'ORDER_PRICE' => $allSum, 'ORDER_WEIGHT' => $allWeight, 'BASKET_ITEMS' => $arResult["ITEMS"]["AnDelCanBuy"]); $arOptions = array('COUNT_DISCOUNT_4_ALL_QUANTITY' => $this->countDiscount4AllQuantity); $arErrors = array(); CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors); $allSum = 0; $allWeight = 0; $allVATSum = 0; $DISCOUNT_PRICE_ALL = 0; $priceWithoutDiscount = 0; foreach ($arOrder["BASKET_ITEMS"] as &$arOneItem) { $allWeight += $arOneItem["WEIGHT"] * $arOneItem["QUANTITY"]; $allSum += $arOneItem["PRICE"] * $arOneItem["QUANTITY"]; if (array_key_exists('VAT_VALUE', $arOneItem)) { $arOneItem["PRICE_VAT_VALUE"] = $arOneItem["VAT_VALUE"]; } $allVATSum += roundEx($arOneItem["PRICE_VAT_VALUE"] * $arOneItem["QUANTITY"], SALE_VALUE_PRECISION); $arOneItem["PRICE_FORMATED"] = $this->getSaleFormatCurrency($arOneItem["PRICE"], $arOneItem["CURRENCY"]); $arOneItem["FULL_PRICE"] = $arOneItem["PRICE"] + $arOneItem["DISCOUNT_PRICE"]; $arOneItem["FULL_PRICE_FORMATED"] = $this->getSaleFormatCurrency($arOneItem["FULL_PRICE"], $arOneItem["CURRENCY"]); $arOneItem["SUM"] = $this->getSaleFormatCurrency($arOneItem["PRICE"] * $arOneItem["QUANTITY"], $arOneItem["CURRENCY"]); if (0 < doubleval($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"])) { $arOneItem["DISCOUNT_PRICE_PERCENT"] = $arOneItem["DISCOUNT_PRICE"] * 100 / ($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"]); } else { $arOneItem["DISCOUNT_PRICE_PERCENT"] = 0; } $arOneItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arOneItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION) . "%"; $DISCOUNT_PRICE_ALL += $arOneItem["DISCOUNT_PRICE"] * $arOneItem["QUANTITY"]; } unset($arOneItem); $arResult["ITEMS"]["AnDelCanBuy"] = $arOrder["BASKET_ITEMS"]; // fill grid data (for new templates with custom columns) foreach ($arResult["ITEMS"] as $type => $arItems) { foreach ($arItems as $k => $arItem) { $arResult["GRID"]["ROWS"][$arItem["ID"]] = $arItem; } } $arResult["allSum"] = $allSum; $arResult["allWeight"] = $allWeight; $arResult["allWeight_FORMATED"] = roundEx(doubleval($allWeight / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; $arResult["allSum_FORMATED"] = $this->getSaleFormatCurrency($allSum, $allCurrency); $arResult["DISCOUNT_PRICE_FORMATED"] = $this->getSaleFormatCurrency($arResult["DISCOUNT_PRICE"], $allCurrency); $arResult["PRICE_WITHOUT_DISCOUNT"] = $this->getSaleFormatCurrency($allSum + $DISCOUNT_PRICE_ALL, $allCurrency); if ($this->priceVatShowValue == 'Y') { $arResult["allVATSum"] = $allVATSum; $arResult["allVATSum_FORMATED"] = $this->getSaleFormatCurrency($allVATSum, $allCurrency); $arResult["allSum_wVAT_FORMATED"] = $this->getSaleFormatCurrency(doubleval($arResult["allSum"] - $allVATSum), $allCurrency); } if (!empty($arCoupons)) { $arResult["COUPON"] = htmlspecialcharsbx($arCoupons[0]); } if (count($arBasketItems) <= 0) { $arResult["ERROR_MESSAGE"] = GetMessage("SALE_EMPTY_BASKET"); } $arResult["DISCOUNT_PRICE_ALL"] = $DISCOUNT_PRICE_ALL; $arResult["DISCOUNT_PRICE_ALL_FORMATED"] = $this->getSaleFormatCurrency($DISCOUNT_PRICE_ALL, $allCurrency); return $arResult; }
public function recalculateBasket($arPost) { global $USER; $arRes = array(); if ($this->hideCoupon != "Y") { if (isset($arPost["coupon"]) && !empty($arPost["coupon"])) { $arRes["VALID_COUPON"] = CCatalogDiscountCoupon::SetCoupon($arPost["coupon"]); } if (!isset($arRes["VALID_COUPON"]) || (isset($arRes["VALID_COUPON"]) && $arRes["VALID_COUPON"] === false)) { CCatalogDiscountCoupon::ClearCoupon(); } } $arTmpItems = array(); $dbItems = CSaleBasket::GetList( array("PRICE" => "DESC"), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array( "ID", "NAME", "PRODUCT_PROVIDER_CLASS", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY", "SUBSCRIBE", "TYPE", "SET_PARENT_ID", "NOTES" ) ); while ($arItem = $dbItems->Fetch()) { if (CSaleBasketHelper::isSetItem($arItem)) continue; $arTmpItems[] = $arItem; } if (!empty($arTmpItems) && CModule::IncludeModule("catalog")) $arTmpItems = getRatio($arTmpItems); foreach ($arTmpItems as $arItem) { $isFloatQuantity = ((isset($arItem["MEASURE_RATIO"]) && floatval($arItem["MEASURE_RATIO"]) > 0 && $arItem["MEASURE_RATIO"] != 1) || $this->quantityFloat == "Y") ? true : false; if (!isset($arPost["QUANTITY_".$arItem["ID"]]) || floatval($arPost["QUANTITY_".$arItem["ID"]]) <= 0) { $quantityTmp = ($isFloatQuantity === true) ? floatval($arItem["QUANTITY"]) : intval($arItem["QUANTITY"]); } else { $quantityTmp = ($isFloatQuantity === true) ? floatval($arPost["QUANTITY_".$arItem["ID"]]) : intval($arPost["QUANTITY_".$arItem["ID"]]); } $deleteTmp = ($arPost["DELETE_".$arItem["ID"]] == "Y") ? "Y" : "N"; $delayTmp = ($arPost["DELAY_".$arItem["ID"]] == "Y") ? "Y" : "N"; if ($arItem["CAN_BUY"] == "Y") { $res = $this->checkQuantity($arItem, $quantityTmp); if (!empty($res)) $arRes["WARNING_MESSAGE"][] = $res["ERROR"]; } if ($deleteTmp == "Y" && in_array("DELETE", $this->columns)) { if ($arItem["SUBSCRIBE"] == "Y" && is_array($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()])) unset($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()][$arItem["PRODUCT_ID"]]); CSaleBasket::Delete($arItem["ID"]); } elseif ($arItem["DELAY"] == "N" && $arItem["CAN_BUY"] == "Y") { unset($arFields); $arFields = array(); if (in_array("QUANTITY", $this->columns)) $arFields["QUANTITY"] = $quantityTmp; if (in_array("DELAY", $this->columns)) $arFields["DELAY"] = $delayTmp; if (count($arFields) > 0 && ($arItem["QUANTITY"] != $arFields["QUANTITY"] && in_array("QUANTITY", $this->columns) || $arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns)) ) CSaleBasket::Update($arItem["ID"], $arFields); } elseif ($arItem["DELAY"] == "Y" && $arItem["CAN_BUY"] == "Y") { unset($arFields); $arFields = array(); if (in_array("DELAY", $this->columns)) $arFields["DELAY"] = $delayTmp; if (count($arFields) > 0 && ($arItem["DELAY"] != $arFields["DELAY"] && in_array("DELAY", $this->columns)) ) CSaleBasket::Update($arItem["ID"], $arFields); } } return $arRes; }
<th><a href="#" class="sortheader" onclick="ts_resortTable(this);return false;">Time<span class="sortarrow"> </span></a></th> <th><a href="#" class="sortheader" onclick="ts_resortTable(this);return false;">Wins<span class="sortarrow"> </span></a></th> <th><a href="#" class="sortheader" onclick="ts_resortTable(this);return false;">Losses<span class="sortarrow"> </span></a></th> <th><a href="#" class="sortheader" onclick="ts_resortTable(this);return false;">Ratio<span class="sortarrow"> </span></a></th> <th><a href="#" class="sortheader" onclick="ts_resortTable(this);return false;">B.R.<span class="sortarrow"> </span></a></th> </tr>'; #add <tr class="favorite"> for ($i = 0; $i < getArmyCount(); $i++) { $template .= ' <tr> <td id="theater-' . $i . '">' . $TheaterData[$i]['name'] . '</td> <td title="' . $TheaterData[$i]['time'] . '" nowrap="nowrap">' . intToTime($TheaterData[$i]['time']) . '</td> <td>' . $TheaterData[$i]['wins'] . '</td> <td>' . $TheaterData[$i]['losses'] . '</td> <td>' . round(getRatio($TheaterData[$i]['wins'], $TheaterData[$i]['losses']), 2) . '</td> <td>' . $TheaterData[$i]['br'] . '</td> </tr>'; } $template .= ' <!-- <tr> <td id="theater-1">MEC</td> <td title="387492" nowrap="nowrap">107:38:12</td> <td>194</td> <td>168</td> <td>1.15</td> <td>245</td> </tr> <tr>