Меню

Ограничение служб доставки по наличию товара на складе

RSS
Ограничение служб доставки по наличию товара на складе, Ограничение служб доставки по наличию товара на складе для расчета стоимости и отображения вариантов в карточке товара
 
Всем привет.
Предыстория: В карточке товара вывел варианты "доставки и самовывоза",
с 00:01 до 23:00 у меня выводится: Самовывоз сегодня - бесплатно , а с 23:00 до 00:01: Самовывоз сегодня - бесплатно
Также ограничил вывод по дням недели, так как в выходные работаем с 9:00 до 18:00. Все казалось бы прекрасно, но некоторых товаров естественно нет в наличии и мне не нужно, чтобы в карточке таких товаров отображался вариант самовывоза. Хочу там выводить только: Доставка на следующий день.

Так вот, пытаюсь ограничить службу доставки по наличию товара на складе, то есть у товаров с нулевым остатком, я не буду выводить службу доставки "Самовывоз".

Пробую сделать так:
Код
//ограничение по наличию товара на складах (если 0, то отправит false).
$arQuantity = CCatalogProduct::GetByID($arResult['ID']);
$quantityAll = $arQuantity['QUANTITY'];

if ($quantityAll > 0) {
    return true;
} else {
    return false;
}
Но, количество не передается в файл php с ограничением службы доставки. Как можно решить проблему?
Изменено: Максим Морозов - 14.07.2020 19:54:00
 
Цитата
Максим Морозов написал:
Всем привет.
Пробую сделать так:  
Код
 //ограничение по наличию товара на складах (если 0, то отправит false).
$arQuantity = CCatalogProduct::GetByID($arResult['ID']);
$quantityAll = $arQuantity['QUANTITY'];

if ($quantityAll > 0) {
    return true;
} else {
    return false;
}
 
Но, количество не передается в файл php с ограничением службы доставки. Как можно решить проблему?


Как-то сложно понять до конца устройсво решения. Но, если что, количество уже есть в массиве элемента, его можно не получать через API
Код
<?=$arResult['CATALOG_QUANTITY'] ?>
для предложения, соответсвенно
Код
<?= $arOffer['CATALOG_QUANTITY'] ?>

Но с самой задачкой до конца не понятно
Изменено: Михаил Базаров - 15.07.2020 10:19:51
 
У меня есть компонент отображения и модуля ограничения служб доставок:
Компонент edost.catalogdelivery выводит службы доставки в карточку товара.
Модуль alkodesign.restrictions добавляет ограничение служб доставки и оплаты по php строке вида return (true/false) или имя функции.

С помощью ограничения по php строке я сделал в разных службах доставки вот такие ограничения по дням недели и времени:

Код
<?php
//ограничение по времени работы (с "время открытия" до "время закрытия"), использую для "Самовывоз сегодня".
$now = new \DateTimeImmutable();
$startWork = new \DateTimeImmutable("08:00");
$endWork = new \DateTimeImmutable("23:00");

if ($startWork <= $now && $now <= $endWork) {
    return true;
} else {
    return false;
}

//ограничение по времени работы (с "время открытия" до "время закрытия"), использую для "Самовывоз завтра".
$now = new \DateTimeImmutable();
$startWork = new \DateTimeImmutable("23:00");
$endWork = new \DateTimeImmutable("+1 day 08:00");

if ($startWork <= $now && $now <= $endWork) {
    return true;
} else {
    return false;
}

//ограничение по дням работы (суббота и воскресенье).
$now = (new \DateTimeImmutable())->format('w');

if ($now === '6'|| $now === '0') {
    return true;
} else {
    return false;
}

//ограничение по дням работы (искулючаем субботу и воскресенье).
$now = (new \DateTimeImmutable())->format('w');

if ($now !== '6'|| $now !== '0') {
    return true;
} else {
    return false;
}
?>
Таким же образом хотел бы ограничить и по наличию товара. Штатно можно ограничить по наличию какого-то товара в корзине. Но как правильно передать значения наличия товара в мой php код я не знаю, Ваш способ тоже не помог. Думаю проблема в том, что он почему-то не определяет ID товара и не может подгрузить количество.
Думаю я добавил ясности в эту тему)
Спасибо, что пытаетесь помочь, если вдруг знаете, как такое решить и поможете, буду весьма благодарен!
 
 
Стандартное ограничение Битрикс "по категории" для доставок работает если в корзине только товары из выбранной категории, если в корзине есть товар не из выбранной категории, то ограничение не работает.

Как можно это поправить, чтобы такое ограничение работало, если в корзине хотя бы 1 товар с ограничением, то работало доставка именно для ограничений?  
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Блог-note: заметки разработчика

Заполнить свойство инфоблока ценой из торгового каталога

Если вам по какой-то причине нужно скопировать цену товара в свойство этого же инфоблока. Например, для вывода старой це...

Fancybox в стандартном шаблоне детальной карточки товара, 1С-Битрикс, вместо всплывающего окна и лупы.

Задача: заменить работу с изображениями в стандартном или кастомном шаблоне детальной карточки (catalog.element)...

Быстрая отписка от всех рассылок модуля "E-mail маркетинг", в кабинете пользователя

Задача: дать пользователям возможность отписаться от всех рассылок "E-mail маркетинга", не только по ссылке из...

Если папка то применяем, проверка текущего раздела или подраздела

Иногда требуется применить особый стиль к определённой директории сайта или управлять выводом элементов на странице в за...

Использование WebP изображений в 1С-Битрикс (на Битрикс: Веб окружение)

WebP это современный формат сжатия изображений, который позволяет, при правильных настройках и уровнях сжатий, уменьшить...

Вывести минимальную и максимальную цену в разделе каталога Битрикс.

Что бы вывести минимальную и максимальную стоимость товаров, из каталога 1С-Битрикс, достаточно получить все товары мето...

Хостинг панель BrainyCp: оптимизация под 1С-битрикс

В этой видео-заметке расскажу как установить и оптимизировать панель управления сервером BrainyCp для использования в св...

Скопировать номер телефона из поля пользователя в телефон для регистрации

Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режиму, через логин(e-mail) и паро...

Информация о службе доставки по ее ID, в 1С-Битрикс

Задача: зная ID службы доставки получить необходимую информацию о ней, с помощью API 1С-Битрикс