function __cat_setPriceTypes($arPriceTypes) { $arCurrentPriceTypes = array(); $dbRes = CCatalogGroup::GetList(); while ($arRes = $dbRes->Fetch()) { $arCurrentPriceTypes[$arRes['NAME']] = $arRes; } $arLang = __cat_LoadMess(dirname(__FILE__) . '/types.php'); foreach ($arPriceTypes as $type_id => $arFields) { if (isset($arCurrentPriceTypes[$type_id])) { continue; } foreach ($arLang as $LANG => $arMess) { $arFields['USER_LANG'][$LANG] = $arMess['CAT_PRICE_TYPE_' . $type_id]; } // errors're goin by forest CCatalogGroup::Add($arFields); } }
function ImportPrices($XML_PRICES_PARENT, $IBLOCK_ID, $IBLOCK_LID) { $price_sort = 0; $this->next_step["XML_PRICES_PARENT"] = $XML_PRICES_PARENT; $arLang = array(); foreach ($IBLOCK_LID as $site_id) { $rsSite = CSite::GetList($by = "sort", $order = "asc", array("ID" => $site_id)); while ($site = $rsSite->Fetch()) { $arLang[$site["LANGUAGE_ID"]] = $site["LANGUAGE_ID"]; } } $arPrices = array(); $rsPrice = CCatalogGroup::GetList(); while ($arPrice = $rsPrice->Fetch()) { $arPrices[$arPrice["ID"]] = $arPrice; } if (!CBXFeatures::IsFeatureEnabled('CatMultiPrice')) { $prices_limit = 1 - count($arPrices); } else { $prices_limit = null; } $arXMLPrices = $this->_xml_file->GetAllChildrenArray($XML_PRICES_PARENT); $uniqPriceById = array(); foreach ($arXMLPrices as $arXMLPrice) { $PRICE_ID = $arXMLPrice[$this->mess["IBLOCK_XML2_ID"]]; $PRICE_NAME = $arXMLPrice[$this->mess["IBLOCK_XML2_NAME"]]; if (array_key_exists($PRICE_ID, $uniqPriceById)) { return GetMessage("IBLOCK_XML2_PRICE_DUP_ERROR"); } else { $uniqPriceById[$PRICE_ID] = true; } $found_id = 0; //Check for price by XML_ID if (isset($PRICE_ID) && $PRICE_ID != "") { foreach ($arPrices as $i => $arPrice) { if ($PRICE_ID === $arPrice["XML_ID"]) { $found_id = $arPrice["ID"]; $arPrices[$i]["found"] = true; break; } } } //When lookup by it's name if (!$found_id) { foreach ($arPrices as $arPrice) { if ($PRICE_NAME === $arPrice["NAME"] && !isset($arPrice["found"])) { $found_id = $arPrice["ID"]; break; } } } //Add new price type if (!$found_id) { $price_sort += 100; $arPrice = array("NAME" => $PRICE_NAME, "XML_ID" => $PRICE_ID, "SORT" => $price_sort, "USER_LANG" => array(), "USER_GROUP" => array(2), "USER_GROUP_BUY" => array(2)); foreach ($arLang as $lang) { $arPrice["USER_LANG"][$lang] = $arXMLPrice[$this->mess["IBLOCK_XML2_NAME"]]; } if (!isset($prices_limit) || $prices_limit > 0) { CCatalogGroup::Add($arPrice); } elseif (isset($prices_limit)) { return GetMessage("IBLOCK_XML2_PRICE_SB_ADD_ERROR"); } } elseif (strlen($arPrices[$found_id]["XML_ID"]) <= 0 && strlen($PRICE_ID) >= 0) { CCatalogGroup::Update($found_id, array("XML_ID" => $PRICE_ID)); } elseif ($arPrices[$found_id]["NAME"] !== $PRICE_NAME) { CCatalogGroup::Update($found_id, array("NAME" => $PRICE_NAME)); } if (isset($prices_limit)) { $prices_limit--; } } return true; }
function cmlEndElement($parser, $name) { global $DB; global $currentCatalog, $currentProduct, $currentProperty, $currentOffersList, $currentOffer; global $arIBlockCache; global $APPLICATION, $nameUTF, $tmpid; switch ($name) { case $nameUTF["Catalog"]: $currentCatalog = false; break; case $nameUTF["Product"]: $currentProduct = false; break; case $nameUTF["Property"]: $currentProperty = false; break; case $nameUTF["OffersList"]: if (!array_key_exists("PRICE_TYPE", $currentOffersList) || strlen($currentOffersList["PRICE_TYPE"]) <= 0) { $strSql = "SELECT NAME FROM b_catalog_group WHERE BASE = 'Y'"; $dbRes = $DB->Query($strSql); if ($arRes = $dbRes->Fetch()) { $priceType = $arRes["NAME"]; $currentOffersList["PRICE_TYPE"] = $priceType; $strSql = "INSERT INTO b_catalog_cml_oflist_prop (OFFER_LIST_XML_ID, PROPERTY_VALUE) " . "VALUES (" . $currentOffersList["ID"] . ", '" . $DB->ForSql($priceType, 255) . "')"; $DB->Query($strSql); } } else { $strSql = "SELECT count(*) as CNT FROM b_catalog_group WHERE NAME = '" . $DB->ForSql($currentOffersList["PRICE_TYPE"]) . "'"; $dbRes = $DB->Query($strSql); if ($arRes = $dbRes->Fetch()) { if (IntVal($arRes["CNT"]) <= 0) { CCatalogGroup::Add(array("NAME" => $currentOffersList["PRICE_TYPE"], "USER_LANG" => array("ru" => $currentOffersList["PRICE_TYPE"]))); } } } $currentOffersList = false; break; case $nameUTF["Offer"]: $currentOffer = false; break; } }
} } $dbResultList = CCatalogGroup::GetList(array(), array("BASE" => "Y")); if (!$dbResultList->Fetch()) { $arFields = array(); $rsLanguage = CLanguage::GetList($by, $order, array()); while ($arLanguage = $rsLanguage->Fetch()) { WizardServices::IncludeServiceLang("catalog.php", $arLanguage["ID"]); $arFields["USER_LANG"][$arLanguage["ID"]] = GetMessage("WIZ_PRICE_NAME"); } $arFields["BASE"] = "Y"; $arFields["SORT"] = 100; $arFields["NAME"] = "BASE"; $arFields["USER_GROUP"] = array(1); $arFields["USER_GROUP_BUY"] = array(1); CCatalogGroup::Add($arFields); } if ($IBLOCK_CATALOG_ID == false) { $permissions = array("1" => "X", "2" => "R"); $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "sale_administrator")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "content_editor")); if ($arGroup = $dbGroup->Fetch()) { $permissions[$arGroup["ID"]] = 'W'; } $IBLOCK_CATALOG_ID = WizardServices::ImportIBlockFromXML($iblockXMLFile, "clothes", $iblockType, WIZARD_SITE_ID, $permissions); $IBLOCK_CATALOG_ID1 = WizardServices::ImportIBlockFromXML($iblockXMLFilePrices, "clothes", $iblockType . "_prices", WIZARD_SITE_ID, $permissions); if ($IBLOCK_CATALOG_ID < 1) { return;
if (strlen($OFFER_LIST_CURRENCY)<=0) $OFFER_LIST_CURRENCY = "USD"; //detect "price type" property $props = $xOfferListNode->select_nodes("/".$nameUTF['PropertyValue']); if (!is_object($props[0])) continue; $PRICE_TYPE = $props[0]->GetAttribute($nameUTF['Value']); $res = CCatalogGroup::GetList(array(), array("NAME"=>$PRICE_TYPE)); if ($arr = $res->Fetch()) $PRICE_ID = $arr["ID"]; else $PRICE_ID = CCatalogGroup::Add( Array( "NAME"=>$PRICE_TYPE, "USER_LANG"=>Array("ru"=>$PRICE_TYPE) ) ); $arProducts = $arCatalogsParams[$IBLOCK_XML_ID]["arProducts"]; $arOffers = array(); $offers = $xOfferListNode->select_nodes("/".$nameUTF['Offer']); for ($j = 0, $intOtOFCount = count($offers); $j < $intOtOFCount; $j++) { $xOfferNode = $offers[$j]; $PRODUCT_XML_ID = $xOfferNode->GetAttribute($nameUTF['ProductId']); // we sholdn't go to 'continue', but should search product in DB by XML_ID
function ImportPrices($XML_PRICES_PARENT, $IBLOCK_ID, $IBLOCK_LID) { global $DB; $price_sort = 0; $this->next_step["XML_PRICES_PARENT"] = $XML_PRICES_PARENT; $arLang = array(); foreach ($IBLOCK_LID as $site_id) { $rsSite = CSite::GetList($by = "sort", $order = "asc", array("ID" => $site_id)); while ($site = $rsSite->Fetch()) { $arLang[$site["LANGUAGE_ID"]] = $site["LANGUAGE_ID"]; } } if (!CBXFeatures::IsFeatureEnabled('CatMultiPrice')) { $prices_limit = 1; $rsPrice = CCatalogGroup::GetList(); while ($rsPrice->Fetch()) { $prices_limit--; } } else { $prices_limit = null; } $arXMLPrices = $this->_xml_file->GetAllChildrenArray($XML_PRICES_PARENT); $uniqPrice = array(); foreach ($arXMLPrices as $key => $arXMLPrice) { $PRICE_NAME = $arXMLPrice[GetMessage("IBLOCK_XML2_NAME")]; if (array_key_exists($PRICE_NAME, $uniqPrice)) { return GetMessage("IBLOCK_XML2_PRICE_DUP_ERROR"); } else { $uniqPrice[$PRICE_NAME] = true; } $rsPrice = CCatalogGroup::GetList(array(), array("NAME" => $PRICE_NAME)); if (!$rsPrice->Fetch()) { $price_sort += 100; $arPrice = array("NAME" => $PRICE_NAME, "XML_ID" => $arXMLPrice[GetMessage("IBLOCK_XML2_ID")], "SORT" => $price_sort, "USER_LANG" => array(), "USER_GROUP" => array(2), "USER_GROUP_BUY" => array(2)); foreach ($arLang as $lang) { $arPrice["USER_LANG"][$lang] = $arXMLPrice[GetMessage("IBLOCK_XML2_NAME")]; } if (!isset($prices_limit) || $prices_limit > 0) { $ID = CCatalogGroup::Add($arPrice); } elseif (isset($prices_limit)) { return GetMessage("IBLOCK_XML2_PRICE_SB_ADD_ERROR"); } } if (isset($prices_limit)) { $prices_limit--; } } return true; }
} $arFields = array(); $arFields["USER_LANG"] = array(); foreach ($arActiveLangs as &$language) { if (isset($catalogGroupLangFiles[$language])) { $arFields["USER_LANG"][$language] = $catalogGroupLangFiles[$language]['CRM_BASE_PRICE_NAME']; } } unset($language); unset($catalogGroupLangFiles); $arFields["BASE"] = "Y"; $arFields["SORT"] = 100; $arFields["NAME"] = "BASE"; $arFields["USER_GROUP"] = array(1, 2); $arFields["USER_GROUP_BUY"] = array(1, 2); $basePriceId = CCatalogGroup::Add($arFields); if ($basePriceId <= 0) { $errMsg[] = Loc::getMessage('CRM_UPDATE_ERR_003'); return; } } if ($basePriceId <= 0 && isset($basePrice['ID']) && $basePrice['ID'] > 0) { $basePriceId = $basePrice['ID']; } unset($basePrice, $dbRes); $arCatalogId = array(); $dbCatalogList = CCrmCatalog::GetList(); while ($arCatalog = $dbCatalogList->Fetch()) { $arCatalogId[] = $arCatalog['ID']; } $defCatalogId = CCrmCatalog::EnsureDefaultExists();