lie2
@lie2

Как добавить свойство о наличии товара, либо о его поставках?

Добрый день.
Известно, что в битрикс есть проверка на наличие товара на складах и как результат вы получаем "В наличии" и "Нет в наличии", но не всем этого хватает, не так ли?
Мой вопрос вот в чем, есть файл quantity:
<?
$showCatalogQty = ('Y' == $arParams["SHOW_CATALOG_QUANTITY"]);
$showCatalogQtyCnt = ('Y' == $arParams["SHOW_CATALOG_QUANTITY_CNT"]);

if (!function_exists('printAvailHtml'))
{
    function printAvailHtml($qty, $measure, $params, $showCatalogQtyCnt) {
        $html = '<div class="bxr-instock-wrap">';
        if ($qty > 0) {
            $html .= "<i class='fa fa-check'></i>";
        } else {
            $html .= "<i class='fa fa-times'></i>";
        };
        if ($qty > 0) {
            $html .= $params["IN_STOCK"];
        } else {
            $html .= $params["NOT_IN_STOCK"];
        };
        if ($showCatalogQtyCnt && $qty > 0) {
            if ($params["QTY_SHOW_TYPE"] == "NUM") {
                    $qtyText = $qty." ".$measure;
            } elseif ($qty > $params["QTY_MANY_GOODS_INT"]) {
                $qtyText = $params["QTY_MANY_GOODS_TEXT"];
            } else {
                $qtyText = $params["QTY_LESS_GOODS_TEXT"];
            }
            $html .= ' ('.$qtyText.')';
        }
        $html .= '</div>';

        return $html;
    }
}

if ($showCatalogQty) {
    $params = array(
        "IN_STOCK" => $arParams["IN_STOCK"],
        "NOT_IN_STOCK" => $arParams["NOT_IN_STOCK"],
        "QTY_SHOW_TYPE" => $arParams["QTY_SHOW_TYPE"],
        "QTY_MANY_GOODS_INT" => $arParams["QTY_MANY_GOODS_INT"],
        "QTY_MANY_GOODS_TEXT" => $arParams["QTY_MANY_GOODS_TEXT"],
        "QTY_LESS_GOODS_TEXT" => $arParams["QTY_LESS_GOODS_TEXT"]
    );
    if (count($arResult["OFFERS"]) > 0) {?>
        <div class="bxr-main-avail-wrap">
    <?}
    echo printAvailHtml($arResult["CATALOG_QUANTITY"], $arResult["CATALOG_MEASURE_NAME"], $params, $showCatalogQtyCnt);
    if (count($arResult["OFFERS"]) > 0) {?>
        </div>
        <?  foreach ($arResult["OFFERS"] as $offer) {?>
            <div class="bxr-offer-avail-wrap" data-item="<?=$offer["ID"]?>" style="display: none;">
                <?echo printAvailHtml($offer["CATALOG_QUANTITY"], $offer["CATALOG_MEASURE_NAME"], $params, $showCatalogQtyCnt);?>
            </div>
        <?}
    }
}

Сюда нужно добавить проверку на свойство о доставке ()
т.е. для товара создаем свойство с датой поставки, а в файле берем if (([время доставки]-[сегодня]<7 дней)&([время доставки]-[сегодня]>0 дней)) то пишем "Ожидается поставка".
Создал свойство товара, но почему-то оно не выводится никак... пробовал и $html .= $arParams["PROPERTIES"]["DATE_POSTAVKY"]["VALUE"]; и $html .= $arElement['PROPERTIES']['DATE_POSTAVKY']['VALUE'];, но ничего не выводит
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
lie2
@lie2 Автор вопроса
Решено:
Реализовано было 2 варианта:
1) добавлено свойство товара - дата поставки, сравниваю с настоящей датой, и если разница меньше 14 дней - меняется статус
2) (более простой) свойство типа список - выбираешь пункт "ожид. поставка" и меняется статус.

Важно!
Пошагово пройдемся по коду:
1) делаем проверку (кстати не обязательно), главное - присвоить значение
if ($arResult["PROPERTIES"]["ojidaetsya_dostavka"]["VALUE"] !== '') $ojidaetsya_dostavka = $arResult["PROPERTIES"]["ojidaetsya_dostavka"]["VALUE"];

2) передаем результат в
echo printAvailHtml($arResult["CATALOG_QUANTITY"], $arResult["CATALOG_MEASURE_NAME"], $params, $showCatalogQtyCnt, $ojidaetsya_dostavka);

и уже в обработчике проверяем условие:
if ($ojidaetsya_dostavka =='да') $params["NOT_IN_STOCK"]="Уточнить наличие"; 
				$html .= $params["NOT_IN_STOCK"];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы