Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Интернет-магазин: служб доставки и способы оплаты

00 голосов
3
Как можно организовать зависимость службы доставки и способом оплаты?

Например, есть 2 службы доставки: "Курьером по Спб" и "по EMS"
И 3 способа оплаты: "Webmoney", "Наличный расчет" и "Банковский перевод"

Естественно, наличный расчет используется только при доставки курьером.

Нужно сделать так, чтобы при выборе доставки "курьером" показывались все варианты, но при выборе "по EMS" только "Webmoney" и "Банковский перевод"

К сожалению, насколько я знаю, через стандартные средства битрикса это не сделать.
спросил 09 Март, 14 от Waerror (100 баллов)

3 Ответы

00 голосов
Цитата
snowwlex пишет:
К сожалению, насколько я знаю, через стандартные средства битрикса это не сделать.
Очень даже сделать. Используйте параметр DELIVERY2PAY_SYSTEM.

Цитата
Интернет-магазин
v8.0.0 (2009-03-24)
Добавлен новый компонент bitrix:sale.order.ajax - Оформление заказа на одной странице без перезагрузки с использованием технологии Ajax. Разработчикам: У компонента есть скрытый параметр DELIVERY2PAY_SYSTEM, позволяет задать соответствие Службы доставки Платежной системе.
ответил 22 Авг, 14 от smileplz (8,020 баллов)
00 голосов
Max Pryazhevsky,
Спасибо большое! Как то я пропустил этот момент :)
ответил 27 Дек, 14 от Waerror (100 баллов)
00 голосов
Разобрался с этим параметром. Там не все очевидно, и тем более в документации написано неправильно.
Поэтому решил написать здесь, вдруг кому-нибудь пригодится :)

Документация:
Цитата
Примечание: у компонента есть скрытый параметр DELIVERY2PAY_SYSTEM, который позволяет задать соответствие службы доставки платежной системе. Он прописывается вручную.
Пример:
"DELIVERY2PAY_SYSTEM" =>Array(1=>2, 3=>4)
где 1,3 - ID служб доставки; 2, 4 - ID платежных систем.


Это не правильно!

Вот так - работает:
Код
...
?><?$APPLICATION->IncludeComponent("bitrix:sale.order.ajax", "order", array(
    "DELIVERY2PAY_SYSTEM" => array(
         array(  "ems:delivery"=> array(3,5,6),
                 "1"           => array(2,4,5)  
              )
    ),
   "PAY_FROM_ACCOUNT" => "N",
   "COUNT_DELIVERY_TAX" => "N",
   "COUNT_DISCOUNT_4_ALL_QUANTITY" 
...

Здесь "ems:delivery" и "1" - id служб доставки, а другое, соотвественно, id платежных систем.

В обработчике параметра DELIVERY2PAY_SYSTEM в коде компонента, его значение обрабатывается циклом foreach, но при этом не учитывается ключевой параметр!
Поэтому приходится передавать как массив в массиве. Непонятно зачем так сделано, и тем более почему в документации напиписано совершенно другое.

Еще одна странность, что нигде, нельзя узнать id "автоматизированных служб доставки" - мне пришлось редактировать код компонента и заставить его вывести этот ID, так как он его достает сам через API битрикса.
ответил 16 Апр, 15 от Waerror (100 баллов)

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

0 голосов
6 ответов
0 голосов
3 ответов
0 голосов
3 ответов
спросил 09 Фев, 13 от Drop (120 баллов)
0 голосов
0 ответов
0 голосов
2 ответов