Меню

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

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: заметки разработчика

Фиксированная корзина с обновлением, без перезагрузки страницы.

Иногда нужно сделать так, чтобы корзина в интернет магазине, созданном на Битрикс, была постоянно на виду, при этом обно...

Сортировать товары по названию, цене и свойствам в каталоге 1С-Битрикс

Задача: реализовать возможность сортировки товаров в разделах каталога. Сортировка должна работать с использованием AJAX...

Ленивая подгрузка картинок в компоненте, на vue js Битрикс

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

Заполнение габаритов товара, после обмена с 1С, из свойств элемента инфоблока.

Если Ваш интернет-магазин интегрирован с 1С, скорее всего столкнулись с такой проблемой: 1С не умеет выгружать параметры...

Малая корзина Битрикс, упрощенный шаблон

Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке интернет-магазина. Код окульту...

Регистрация пользователя в определенную группу сайта на Битрикс

Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимости от того какую форму регистра...

Не дать пользователю купить больше одного товара, в Битрикс

Иногда нужно и такое: Например: на одном из разрабатываемых сайтов, мне нужно было создать всего 4 товара. при этом поку...

Создание локальных уведомлений для приложения на Apache Cordova

Задача состоит в том, чтобы реализовать возможность локальных уведомлений в приложении на Apache Cordova без использован...

Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов на одну карту

Предположим, что у вас есть инфоблок со свойством "Привязка к яндекс картам". В этом инфоблоке некоторое количество элем...