Exemplo n.º 1
0
         } else {
             $ID_tmp = CPrice::Add($arCatalogFields);
             $arUpdatedIDs[] = $ID_tmp;
             if (!$ID_tmp) {
                 $strWarning .= str_replace("#PRICE#", $arCatalogFields["PRICE"], GetMessage("C2IT_ERROR_SAVEPRICE")) . "<br>";
             }
         }
     }
 }
 foreach ($arCatalogPrices as $catalogGroupID => $arCatalogPrice_tmp) {
     $intCountPrice = count($arCatalogPrice_tmp);
     for ($i = 0; $i < $intCountPrice; $i++) {
         if (strlen($arCatalogPrice_tmp[$i]["PRICE"]) > 0) {
             $arCatalogFields = array("EXTRA_ID" => $arCatalogPrice_tmp[$i]["EXTRA_ID"] > 0 ? $arCatalogPrice_tmp[$i]["EXTRA_ID"] : false, "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $catalogGroupID, "PRICE" => DoubleVal($arCatalogPrice_tmp[$i]["PRICE"]), "CURRENCY" => $arCatalogPrice_tmp[$i]["CURRENCY"], "QUANTITY_FROM" => $arCatalogPrice_tmp[$i]["QUANTITY_FROM"] > 0 ? $arCatalogPrice_tmp[$i]["QUANTITY_FROM"] : false, "QUANTITY_TO" => $arCatalogPrice_tmp[$i]["QUANTITY_TO"] > 0 ? $arCatalogPrice_tmp[$i]["QUANTITY_TO"] : false);
             if ($arCatalogPrice_tmp[$i]["ID"] > 0) {
                 $arCatalogPrice = CPrice::GetByID($arCatalogPrice_tmp[$i]["ID"]);
                 if ($arCatalogPrice && $arCatalogPrice["PRODUCT_ID"] == $PRODUCT_ID) {
                     $arUpdatedIDs[] = $arCatalogPrice_tmp[$i]["ID"];
                     if (!CPrice::Update($arCatalogPrice_tmp[$i]["ID"], $arCatalogFields)) {
                         $strWarning .= str_replace("#ID#", $arCatalogPrice_tmp[$i]["ID"], GetMessage("C2IT_ERROR_PRPARAMS")) . "<br>";
                     }
                 } else {
                     $ID_tmp = CPrice::Add($arCatalogFields);
                     $arUpdatedIDs[] = $ID_tmp;
                     if (!$ID_tmp) {
                         $strWarning .= str_replace("#PRICE#", $arCatalogFields["PRICE"], GetMessage("C2IT_ERROR_SAVEPRICE")) . "<br>";
                     }
                 }
             } else {
                 $ID_tmp = CPrice::Add($arCatalogFields);
                 $arUpdatedIDs[] = $ID_tmp;
Exemplo n.º 2
0
						<?php 
            $arCountPricesCanAccess = 0;
            foreach ($arItem["PRICES"] as $key => $arPrice) {
                if ($arPrice["CAN_ACCESS"]) {
                    $arCountPricesCanAccess++;
                }
            }
            ?>
						<?php 
            foreach ($arItem["PRICES"] as $key => $arPrice) {
                ?>
							<?php 
                if ($arPrice["CAN_ACCESS"]) {
                    ?>
								<?php 
                    $price = CPrice::GetByID($arPrice["ID"]);
                    ?>
								<?php 
                    if ($arCountPricesCanAccess > 1) {
                        ?>
<div class="price_name"><?php 
                        echo $price["CATALOG_GROUP_NAME"];
                        ?>
</div><?php 
                    }
                    ?>
									
								<span class="price">
									<?php 
                    if ($arPrice["VALUE"] > $arPrice["DISCOUNT_VALUE"]) {
                        ?>
Exemplo n.º 3
0
function getDataForXml()
{
    CModule::IncludeModule("iblock");
    CModule::IncludeModule('catalog');
    $filter["ACTIVE"] = "Y";
    $filter["ACTIVE_DATE"] = "Y";
    $filter["IBLOCK_ID"] = 2;//goodies
    $rsItems = CIBlockElement::GetList(array(), $filter, false, false, array());
    $strOfferGoogle = '';
    while ($obItem = $rsItems->GetNextElement()) {
        $arItem = $obItem->GetFields();
        if (CModule::IncludeModule("catalog") && CCatalog::GetByID($arItem['IBLOCK_ID'])) {
            $arItem = $obItem->GetFields();
            $productId = $arItem['ID'];
            $rsPrices = CPrice::GetByID($productId);
            $arItem['PROPERTIES'] = $obItem->GetProperties();
            $strFile = '';
            $arItem["DETAIL_PICTURE"] = (int)$arItem["DETAIL_PICTURE"];
            $arItem["PREVIEW_PICTURE"] = (int)$arItem["PREVIEW_PICTURE"];
            if ($arItem["DETAIL_PICTURE"] > 0 || $arItem["PREVIEW_PICTURE"] > 0) {
                $pictNo = ($arItem["DETAIL_PICTURE"] > 0 ? $arItem["DETAIL_PICTURE"] : $arItem["PREVIEW_PICTURE"]);

                if ($ar_file = CFile::GetFileArray($pictNo)) {
                    if (substr($ar_file["SRC"], 0, 1) == "/")
                        $strFile = "http://" . $_SERVER['SERVER_NAME'] . CHTTP::urnEncode($ar_file['SRC'], 'utf-8');
                    else
                        $strFile = $ar_file["SRC"];
                }
            }
            $arItem['google_PICT'] = $strFile;

            if (!empty($arItem["DETAIL_TEXT"]))
                $arItem['google_DESCR'] = google_text2xml(strip_tags(stristr($arItem["DETAIL_TEXT"], '.', true)));
            else
                $arItem['google_DESCR'] = google_text2xml(strip_tags($arItem["NAME"]));

            $strOfferGoogle .= "<item>\n";
            $strOfferGoogle .= "<title>";
            $strOfferGoogle .= $arItem['NAME'];
            $strOfferGoogle .= "</title>\n";
            $strOfferGoogle .= "<link>";
            $strOfferGoogle .= "http://".$_SERVER['SERVER_NAME'].$arItem['DETAIL_PAGE_URL'];
            $strOfferGoogle .= "</link>\n";
            $strOfferGoogle .= "<description>";
            $strOfferGoogle .= $arItem['google_DESCR'];
            $strOfferGoogle .= "</description>\n";
            $strOfferGoogle .= "<g:image_link>";
            $strOfferGoogle .= $strFile;
            $strOfferGoogle .= "</g:image_link>\n";
            $strOfferGoogle .= "<g:price>";
            $strOfferGoogle .= $rsPrices['PRICE'];
            $strOfferGoogle .= "</g:price>\n";
            $strOfferGoogle .= "<g:condition>";
            $strOfferGoogle .= "новый";
            $strOfferGoogle .= "</g:condition>\n";
            $strOfferGoogle .= "<g:id>";
            $strOfferGoogle .= $arItem['CODE'];
            $strOfferGoogle .= "</g:id>\n";
            $strOfferGoogle .= "</item>\n";
            //etc etc
        }
        else
        {
            continue;
        }
    }
    writeData($strOfferGoogle);
}
Exemplo n.º 4
0
function Add2BasketByProductID($PRODUCT_ID, $QUANTITY = 1, $arRewriteFields = array(), $arProductParams = false)
{
    global $APPLICATION;
    /* for old use */
    if (false === $arProductParams) {
        $arProductParams = $arRewriteFields;
        $arRewriteFields = array();
    }
    $PRODUCT_ID = IntVal($PRODUCT_ID);
    if ($PRODUCT_ID <= 0) {
        $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_EMPTY_PRODUCT_ID'), "EMPTY_PRODUCT_ID");
        return false;
    }
    $QUANTITY = DoubleVal($QUANTITY);
    if ($QUANTITY <= 0) {
        $QUANTITY = 1;
    }
    if (!CModule::IncludeModule("sale")) {
        $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_NO_SALE_MODULE'), "NO_SALE_MODULE");
        return false;
    }
    if (CModule::IncludeModule("statistic") && IntVal($_SESSION["SESS_SEARCHER_ID"]) > 0) {
        $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_SESS_SEARCHER'), "SESS_SEARCHER");
        return false;
    }
    $arProduct = CCatalogProduct::GetByID($PRODUCT_ID);
    if ($arProduct === false) {
        $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_NO_PRODUCT'), "NO_PRODUCT");
        return false;
    }
    $CALLBACK_FUNC = "CatalogBasketCallback";
    $productProviderClass = "CCatalogProductProvider";
    //ADD PRODUCT TO SUBSCRIBE
    if (isset($arRewriteFields["SUBSCRIBE"]) && $arRewriteFields["SUBSCRIBE"] == "Y") {
        global $USER;
        if ($USER->IsAuthorized() && !isset($_SESSION["NOTIFY_PRODUCT"][$USER->GetID()])) {
            $_SESSION["NOTIFY_PRODUCT"][$USER->GetID()] = array();
        }
        $arBuyerGroups = CUser::GetUserGroup($USER->GetID());
        $arPrice = CCatalogProduct::GetOptimalPrice($PRODUCT_ID, 1, $arBuyerGroups, "N", array(), SITE_ID, array());
        $arCallbackPrice = array("PRICE" => $arPrice["DISCOUNT_PRICE"], "VAT_RATE" => 0, "CURRENCY" => CSaleLang::GetLangCurrency(SITE_ID), "QUANTITY" => 1);
    } else {
        $arRewriteFields["SUBSCRIBE"] = "N";
        if ($arProduct["CAN_BUY_ZERO"] != 'Y' && $arProduct["QUANTITY_TRACE"] == "Y" && DoubleVal($arProduct["QUANTITY"]) <= 0) {
            $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_PRODUCT_RUN_OUT'), "PRODUCT_RUN_OUT");
            return false;
        }
        $arCallbackPrice = CSaleBasket::ReReadPrice($CALLBACK_FUNC, "catalog", $PRODUCT_ID, $QUANTITY, "N", $productProviderClass);
        if (!is_array($arCallbackPrice) || empty($arCallbackPrice)) {
            $APPLICATION->ThrowException(GetMessage('CATALOG_PRODUCT_PRICE_NOT_FOUND'), "NO_PRODUCT_PRICE");
            return false;
        }
    }
    $dbIBlockElement = CIBlockElement::GetList(array(), array("ID" => $PRODUCT_ID, "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "CHECK_PERMISSIONS" => "Y", "MIN_PERMISSION" => "R"), false, false, array("ID", "IBLOCK_ID", "XML_ID", "NAME", "DETAIL_PAGE_URL"));
    $arIBlockElement = $dbIBlockElement->GetNext();
    if ($arIBlockElement == false) {
        $APPLICATION->ThrowException(GetMessage('CATALOG_ERR_NO_IBLOCK_ELEMENT'), "NO_IBLOCK_ELEMENT");
        return false;
    }
    $arProps = array();
    $dbIBlock = CIBlock::GetList(array(), array("ID" => $arIBlockElement["IBLOCK_ID"]));
    if ($arIBlock = $dbIBlock->Fetch()) {
        $arProps[] = array("NAME" => "Catalog XML_ID", "CODE" => "CATALOG.XML_ID", "VALUE" => $arIBlock["XML_ID"]);
    }
    $arProps[] = array("NAME" => "Product XML_ID", "CODE" => "PRODUCT.XML_ID", "VALUE" => $arIBlockElement["XML_ID"]);
    $arPrice = CPrice::GetByID($arCallbackPrice["PRODUCT_PRICE_ID"]);
    $arFields = array("PRODUCT_ID" => $PRODUCT_ID, "PRODUCT_PRICE_ID" => $arCallbackPrice["PRODUCT_PRICE_ID"], "PRICE" => $arCallbackPrice["PRICE"], "CURRENCY" => $arCallbackPrice["CURRENCY"], "WEIGHT" => $arProduct["WEIGHT"], "QUANTITY" => $QUANTITY, "LID" => SITE_ID, "DELAY" => "N", "CAN_BUY" => "Y", "NAME" => $arIBlockElement["~NAME"], "MODULE" => "catalog", "PRODUCT_PROVIDER_CLASS" => "CCatalogProductProvider", "NOTES" => $arPrice["CATALOG_GROUP_NAME"], "DETAIL_PAGE_URL" => $arIBlockElement["DETAIL_PAGE_URL"], "CATALOG_XML_ID" => $arIBlock["XML_ID"], "PRODUCT_XML_ID" => $arIBlockElement["XML_ID"], "VAT_RATE" => $arCallbackPrice['VAT_RATE'], "SUBSCRIBE" => $arRewriteFields["SUBSCRIBE"]);
    if ($arProduct["CAN_BUY_ZERO"] != "Y" && $arProduct["QUANTITY_TRACE"] == "Y") {
        if (IntVal($arProduct["QUANTITY"]) - $QUANTITY < 0) {
            $arFields["QUANTITY"] = DoubleVal($arProduct["QUANTITY"]);
        }
    }
    if (is_array($arProductParams) && !empty($arProductParams)) {
        foreach ($arProductParams as &$arOneProductParams) {
            $arProps[] = array("NAME" => $arOneProductParams["NAME"], "CODE" => $arOneProductParams["CODE"], "VALUE" => $arOneProductParams["VALUE"], "SORT" => $arOneProductParams["SORT"]);
        }
        if (isset($arOneProductParams)) {
            unset($arOneProductParams);
        }
    }
    $arFields["PROPS"] = $arProps;
    if (is_array($arRewriteFields) && !empty($arRewriteFields)) {
        while (list($key, $value) = each($arRewriteFields)) {
            $arFields[$key] = $value;
        }
    }
    $addres = CSaleBasket::Add($arFields);
    if ($addres) {
        if (isset($arRewriteFields["SUBSCRIBE"]) && $arRewriteFields["SUBSCRIBE"] == "Y") {
            $_SESSION["NOTIFY_PRODUCT"][$USER->GetID()][$PRODUCT_ID] = $PRODUCT_ID;
        }
        if (CModule::IncludeModule("statistic")) {
            CStatistic::Set_Event("sale2basket", "catalog", $arFields["DETAIL_PAGE_URL"]);
        }
    }
    return $addres;
}
Exemplo n.º 5
0
/**
 * Добавление в корзину
 * аналогично системной функции Add2Basket за исключением использования кастомизированных функций обратного вызова
 * также в функции отключена статистика
 * 
 * @param $PRICE_ID
 * @param $QUANTITY
 * @param $arRewriteFields
 * @param $arProductParams
 */
function Add2BasketCustom($PRICE_ID, $QUANTITY = 1, $arRewriteFields=array(), $arProductParams = array())
{
	$PRICE_ID = IntVal($PRICE_ID);
	if ($PRICE_ID<=0) return false;
	$QUANTITY = DoubleVal($QUANTITY);
	if ($QUANTITY<=0) $QUANTITY = 1;

	if (!CModule::IncludeModule("sale"))
		return false;

	$arPrice = CPrice::GetByID($PRICE_ID);
	if ($arPrice===false) return false;

	$arCatalogProduct = CCatalogProduct::GetByID($arPrice["PRODUCT_ID"]);
	if ($arCatalogProduct["QUANTITY_TRACE"]=="Y" && DoubleVal($arCatalogProduct["QUANTITY"])<=0)
		return false;

//	$arProduct = GetIBlockElement($arPrice["PRODUCT_ID"]);
	$dbIBlockElement = CIBlockElement::GetList(
			array(),
			array(
					"ID" => $arPrice["PRODUCT_ID"],
					"ACTIVE_DATE" => "Y",
					"ACTIVE" => "Y",
					"CHECK_PERMISSIONS" => "Y"
				)
		);
	$arProduct = $dbIBlockElement->GetNext();

	$arProps = array();

	$dbIBlock = CIBlock::GetList(
			array(),
			array("ID" => $arProduct["IBLOCK_ID"])
		);
	if ($arIBlock = $dbIBlock->Fetch())
	{
		$arProps[] = array(
				"NAME" => "Catalog XML_ID",
				"CODE" => "CATALOG.XML_ID",
				"VALUE" => $arIBlock["XML_ID"]
			);
	}

	$arProps[] = array(
			"NAME" => "Product XML_ID",
			"CODE" => "PRODUCT.XML_ID",
			"VALUE" => $arProduct["XML_ID"]
		);
		
	$arFields = array(
			"PRODUCT_ID" => $arPrice["PRODUCT_ID"],
			"PRODUCT_PRICE_ID" => $PRICE_ID,
			"PRICE" => $arPrice["PRICE"],
			"CURRENCY" => $arPrice["CURRENCY"],
			"WEIGHT" => $arCatalogProduct["WEIGHT"],
			"QUANTITY" => $QUANTITY,
			"LID" => LANG,
			"DELAY" => "N",
			"CAN_BUY" => "Y",
			"NAME" => $arProduct["~NAME"],
			"CALLBACK_FUNC" => "CatalogBasketCustomCallback",
			"MODULE" => "catalog",
			"NOTES" => $arPrice["CATALOG_GROUP_NAME"],
			"ORDER_CALLBACK_FUNC" => "CatalogBasketOrderCustomCallback",
			"CANCEL_CALLBACK_FUNC" => "CatalogBasketCancelCallback",
			"PAY_CALLBACK_FUNC" => "CatalogPayOrderCallback",
			"DETAIL_PAGE_URL" => $arProduct["DETAIL_PAGE_URL"],
			"CATALOG_XML_ID" => $arIBlock["XML_ID"],
			"PRODUCT_XML_ID" => $arProduct["XML_ID"]
		);
		
	if ($arCatalogProduct["QUANTITY_TRACE"]=="Y")
	{
		if (DoubleVal($arCatalogProduct["QUANTITY"])-$QUANTITY<0)
			$arFields["QUANTITY"] = DoubleVal($arCatalogProduct["QUANTITY"]);
	}

	if (is_array($arProductParams) && count($arProductParams) > 0)
	{
		for ($i = 0; $i < count($arProductParams); $i++)
		{
			$arProps[] = array(
					"NAME" => $arProductParams[$i]["NAME"],
					"CODE" => $arProductParams[$i]["CODE"],
					"VALUE" => $arProductParams[$i]["VALUE"]
				);
		}
	}
	$arFields["PROPS"] = $arProps;

	if (is_array($arRewriteFields) && count($arRewriteFields)>0)
	{
		while(list($key, $value)=each($arRewriteFields)) $arFields[$key] = $value;
	}
	$addres = CSaleBasket::Add($arFields);

	return $addres;
}