Импорт скидок номенклатуры из 1С: Предприятие в 1С-Битрикс
Импорт скидок номенклатуры из 1С: Предприятие в 1С-Битрикс
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Импорт скидок номенклатуры из 1С Предприятия в 1С Битрикс
Начну с цитаты
...если документом "Установка скидок номенклатуры" определены скидки на товары в зависимости от их количества в заказе, то данная информация поступит на сайт и скидка будет применяться и при продаже в Интернет-магазине. Кроме этого, модуль на стороне 1С выгружает в CommerceML и другие типы скидок, но их автоматический импорт в 1С-Битрикс предлагается реализовать разработчикам интернет-магазина, поскольку их применение очень сильно зависит от особенностей ценообразования для каждого конкретного случая.
Вот об опыте импорта тех самых "других" типов скидок я и хочу рассказать в данной статье. В частности, об импорте скидок, которые применяются к определенному товару вне зависимости от каких-либо условий. (В сезон распродажи или на залежалый товар/размер).
Данную задачу мы (я и мой помощник Вадим Соловьев) решали для того же самого проекта, для которого я незадолго до этого подогнала импорт под готовую структуру инфоблоков (см. статью Как подогнать стандартный импорт из 1С под готовое решение из маркетплейс Битрикс). В этом проекте у нас уже был унаследован класс CIBlockCMLImport, был кастомизирован компонент catalog.import.1c для работы именно с этим классом.
class CIBlockCMLCustomImport extends CIBlockCMLImport{}
и была перегружена функция ImportElement
Этот же перегруженный метод ImportElement мы и дополнили функционалом для импорта из 1С безусловных скидок на товар.
Информация о скидках приходила к нам из 1С Предприятия в следующем виде:
<СкидкиНаценки> <СкидкаНаценка> <Условие>Количество одного товара в документе превысило</Условие> <Процент>20</Процент> <Валюта>руб</Валюта> <Получатель>8a21ac94-2ac6-11e0-8e8a-00265abc1d64</Получатель> </СкидкаНаценка> ... </СкидкиНаценки>
И торговые предложения, у которых в секции СкидкиНаценки присутствовала скидка указанного вида нам нужно было интерпретировать как торговые предложения, на которые действует безусловная процентная скидка.
Думая о том, как организовать хранение этих скидок в Битрикс, я хотела дописывать торговые предложения, на которые действует скидка в условия для существующих в системе процентных скидок (желтая стрелочка на рисунке). Вадим предложил заводить отдельную скидку для каждого торгового предложения (зеленая стрелочка на рисунке). И я отдала предпочтение решению Вадима, так как оно предполагает меньшее количество запросов к БД при импорте ссылок (особенно в случаях когда в 1С удалена скидка на товар, к-я ранее была импортирована на сайт и которую нужно удалить и на сайте в процессе импорта), хотя результат и не так красиво смотрится в админке.
Итак, в нашем перегруженном методе ImportElement мы дописали следующее:
В самом начале метода мы смотрим, есть ли для указанного элемента безусловная процентная скидка. Если есть, пишем ее в переменную $discount_perc. Если нет - эта переменная остается равной 0.
Далее, ниже секции, в которой в стандартном методе ImportElement определяются скидки на товары в зависимости от их количества в заказе, мы вставили код, создающи/обновляющий/удаляющий наши безусловные процентные скидки. В этом коде мы пошли на небольшую хитрость и ставим каждой новой скидке ID равный ID элемента, для которого данная скидка была создана.
И безусловные скидки на товары были успешно импортированы из 1С Предприятия в Битрикс.
Решение не претендует на идеальность, но оно имеет место быть, успешно внедрено и не перегружает достаточно стандартную виртуальную хостинговую площадку.
Данная статья - перепост из моего blogspot блога http://bedrosova.blogspot.ru/ Люблю blogspot. Жаль, что кросспостить в блоги веб-разработчиков Битрикс оттуда приходится вручную. А вот на своем сайте bedrosova.ru я организовала автоматический кросспостинг анонсов из своего блога посредством своего же бесплатного компонента из Маркетплейс Битрикс http://marketplace.1c-bitrix.ru/solut....atomshow/.