2namespace Bitrix\Catalog\Ebay;
4use Bitrix\Main\SystemException;
25 $arPropertyMap =
array();
27 $this->arSelectOfferProps =
array();
28 $arOffers = \CCatalogSku::GetInfoByProductIBlock($this->iBlockId);
33 $this->intOfferIBlockID =
$arOffers[
'IBLOCK_ID'];
34 $rsOfferIBlocks = \CIBlock::GetByID($this->intOfferIBlockID);
36 if (!$this->arOfferIBlock = $rsOfferIBlocks->Fetch())
37 throw new SystemException(
"Bad offers iBlock ID (".__CLASS__.
"::".__METHOD__.
")");
39 $rsProps = \CIBlockProperty::GetList(
40 array(
'SORT' =>
'ASC',
'NAME' =>
'ASC'),
41 array(
'IBLOCK_ID' => $this->intOfferIBlockID,
'ACTIVE' =>
'Y',
'CHECK_PERMISSIONS' =>
'N')
46 $arProp[
'ID'] = (int)$arProp[
'ID'];
48 if (
$arOffers[
'SKU_PROPERTY_ID'] != $arProp[
'ID'])
50 $arProp[
'USER_TYPE'] = (string)$arProp[
'USER_TYPE'];
51 $arProp[
'CODE'] = (string)$arProp[
'CODE'];
52 $this->arIblock[
'OFFERS_PROPERTY'][$arProp[
'ID']] = $arProp;
53 $this->arProperties[$arProp[
'ID']] = $arProp;
56 $this->arSelectOfferProps[] = $arProp[
'ID'];
58 if ($arProp[
'CODE'] !==
'')
60 foreach ($this->arIblock[
'PROPERTY'] as &$arMainProp)
62 if ($arMainProp[
'CODE'] == $arProp[
'CODE'])
64 $arPropertyMap[$arProp[
'ID']] = $arMainProp[
'CODE'];
69 if (isset($arMainProp))
75 $this->arOfferIBlock[
'LID'] = $this->arIblock[
'LID'];
77 $this->arOfferIBlock[
'PROPERTY'] =
array();
79 $rsProps = \CIBlockProperty::GetList(
80 array(
'SORT' =>
'ASC',
'NAME' =>
'ASC'),
81 array(
'IBLOCK_ID' => $this->intOfferIBlockID,
'ACTIVE' =>
'Y',
'CHECK_PERMISSIONS' =>
'N')
87 $arProp[
'ID'] = (int)$arProp[
'ID'];
88 $arProp[
'USER_TYPE'] = (string)$arProp[
'USER_TYPE'];
89 $arProp[
'CODE'] = (string)$arProp[
'CODE'];
90 $this->arOfferIBlock[
'PROPERTY'][$arProp[
'ID']] = $arProp;
113 if (is_array($this->arOfferIBlock) && !empty($this->arOfferIBlock))
115 if (empty($this->xmlData[
'SKU_EXPORT']))
128 if (empty(
$arSKUExport[
'SKU_PROP_COND'][
'PROP_ID']) || !in_array(
$arSKUExport[
'SKU_PROP_COND'][
'PROP_ID'],$this->arSelectOfferProps))
132 throw new SystemException(
"YANDEX_SKU_EXPORT_ERR_PROPERTY_COND_ABSENT");
137 throw new SystemException(
"YANDEX_SKU_EXPORT_ERR_PROPERTY_VALUES_ABSENT");
147 $strOfferTemplateURL =
'';
149 if (!empty($this->arSKUExport[
'SKU_URL_TEMPLATE_TYPE']))
151 switch($this->arSKUExport[
'SKU_URL_TEMPLATE_TYPE'])
154 $strOfferTemplateURL =
'#PRODUCT_URL#';
157 if (!empty($this->arSKUExport[
'SKU_URL_TEMPLATE']))
158 $strOfferTemplateURL = $this->arSKUExport[
'SKU_URL_TEMPLATE'];
162 $strOfferTemplateURL =
'';
167 return $strOfferTemplateURL;
172 $arOfferSelect =
array(
"ID",
"LID",
"IBLOCK_ID",
"NAME",
"PREVIEW_PICTURE",
"PREVIEW_TEXT",
173 "PREVIEW_TEXT_TYPE",
"DETAIL_PICTURE",
"DETAIL_PAGE_URL",
"DETAIL_TEXT");
175 $arOfferFilter =
array(
'IBLOCK_ID' => $this->intOfferIBlockID,
'PROPERTY_'.$this->arOffers[
'SKU_PROPERTY_ID'] => 0,
176 "ACTIVE" =>
"Y",
"ACTIVE_DATE" =>
"Y");
178 if($this->onlyAvailableElements)
179 $arOfferFilter[
"CATALOG_AVAILABLE"] =
"Y";
186 if ($this->arSKUExport[
'SKU_PROP_COND'][
'COND'] ==
'NONZERO' || $this->arSKUExport[
'SKU_PROP_COND'][
'COND'] ==
'NONEQUAL')
189 $strExportKey .=
'PROPERTY_'.$this->arSKUExport[
'SKU_PROP_COND'][
'PROP_ID'];
191 if ($this->arSKUExport[
'SKU_PROP_COND'][
'COND'] ==
'EQUAL' || $this->arSKUExport[
'SKU_PROP_COND'][
'COND'] ==
'NONEQUAL')
192 $mxValues = $this->arSKUExport[
'SKU_PROP_COND'][
'VALUES'];
194 $arOfferFilter[$strExportKey] = $mxValues;
197 $arOfferFilter[
'PROPERTY_'.$this->arOffers[
'SKU_PROPERTY_ID']] = $itemId;
198 return \CIBlockElement::GetList(
array(),$arOfferFilter,
false,
false,$arOfferSelect);
205 if (!empty($arItem[
'PROPERTIES']))
207 foreach ($arItem[
'PROPERTIES'] as &$arProp)
208 $arCross[$arProp[
'ID']] = $arProp;
219 $itemOffer[
"QUANTITY"] = $this->
getQuantity($itemOffer[
"ID"]);
220 $itemOffer[
"CATEGORIES"] = $this->
getCategories($itemOffer[
"ID"]);
221 $itemOffer[
"DETAIL_PICTURE_URL"] = $this->
getPictureUrl((
int)$itemOffer[
"DETAIL_PICTURE"]);
222 $itemOffer[
"PREVIEW_PICTURE_URL"] = $this->
getPictureUrl((
int)$itemOffer[
"PREVIEW_PICTURE"]);
223 $itemOffer[
"PARAMS"] = $this->
getParams($itemOffer, $this->arOfferIBlock);
224 $itemOffer[
"DETAIL_PAGE_URL"] = $this->
getDetailPageUrl($itemOffer[
"~DETAIL_PAGE_URL"]);
236 $arCross = (!empty($arItem[
'PROPERTIES']) ? $arItem[
'PROPERTIES'] :
array());
237 $props = $obOfferItem->GetProperties();
240 foreach (
$props as $arProp)
241 $arCross[$arProp[
'ID']] = $arProp;
256 while ($obOfferItem = $rsOfferItems->GetNextElement())
258 $arOfferItem = $obOfferItem->GetFields();
259 $arOfferItem[
"PRICES"] = $this->
getPrices($obOfferItem[
"ID"], $this->arOfferIBlock[
'LID']);
261 if ($arOfferItem[
"PRICES"][
"MIN"] <= 0)
266 $dblAllMinPrice = $arOfferItem[
"PRICES"][
"MIN"];
271 if ($dblAllMinPrice > $arOfferItem[
"PRICES"][
"MIN_RUB"])
272 $dblAllMinPrice = $arOfferItem[
"PRICES"][
"MIN_RUB"];
278 $arOfferItem[
'PROPERTIES'] = $this->
getItemProps($obOfferItem, $arItem);
279 $arCurrentOffer = $arOfferItem;
281 if (!empty($arCurrentOffer) && $arCurrentOffer[
"PRICES"][
"MIN"] > 0)
283 $arOfferItem = $arCurrentOffer;
288 $arOfferItem =
array();
297 if(!$obItem = $this->dbItems->GetNextElement())
299 $arItem = $obItem->GetFields();
301 $arItem[
'PROPERTIES'] = $obItem->GetProperties($arItem);
303 $arItem[
"DETAIL_PICTURE_URL"] = $this->
getPictureUrl((
int)$arItem[
"DETAIL_PICTURE"]);
304 $arItem[
"PREVIEW_PICTURE_URL"] = $this->
getPictureUrl((
int)$arItem[
"PREVIEW_PICTURE"]);
305 $arItem[
'OFFERS'] =
array();
311 if (!empty($strOfferTemplateURL))
312 $rsOfferItems->SetUrlTemplates($strOfferTemplateURL);
318 if(!empty($arOfferItem))
321 $arItem[
'OFFERS'][] = $arOfferItem;
326 while ($obOfferItem = $rsOfferItems->GetNextElement())
328 $arOfferItem = $obOfferItem->GetFields();
329 $arOfferItem[
"PRICES"] = $this->
getPrices($arOfferItem[
"ID"], $this->arOfferIBlock[
'LID']);
331 if ($arOfferItem[
"PRICES"][
"MIN"] <= 0)
334 $arOfferItem[
'PROPERTIES'] = $this->
getItemProps($obOfferItem, $arItem);
336 $arItem[
'OFFERS'][] = $arOfferItem;
340 if(empty($arItem[
'OFFERS']) && $this->catalogType == \CCatalogSku::TYPE_FULL)
342 $arItem[
"QUANTITY"] = $this->
getQuantity($arItem[
"ID"]);
343 $arItem[
"PRICES"] = $this->
getPrices($arItem[
"ID"], $this->arIblock[
'LID']);
344 $arItem[
"PARAMS"] = $this->
getParams($arItem, $this->arIblock);
345 $arItem[
"DETAIL_PAGE_URL"] = $this->
getDetailPageUrl($arItem[
"~DETAIL_PAGE_URL"]);
const YANDEX_SKU_EXPORT_PROP
const YANDEX_SKU_TEMPLATE_OFFERS
const YANDEX_SKU_TEMPLATE_CUSTOM
const YANDEX_SKU_EXPORT_ALL
const YANDEX_SKU_EXPORT_MIN_PRICE
const YANDEX_SKU_TEMPLATE_PRODUCT
getDetailPageUrl($detailPageUrl)
getParams($product, $arIblock)
getPrices($productId, $siteId)
getCategories($productId)
getItemProps($obOfferItem, array $arItem)
getMinPriceOffer($rsOfferItems, $arItem)
getOffersItemsDb($itemId)
__construct($catalogType, $params)
getItemParams(array $itemOffer)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
if(!empty($arOffers['IBLOCK_ID'])) $arCondSelectProp