admin, надеюсь на Вашу помощь. Я не знаю, как связать строки из выпадающего списка со следующими колонками, для произведения автоматического расчета + реализация самого расчета по формуле (файл прикреплял уже выше). Просто, как я уже ранее писал, будет выпадающий список со списком регионов, справа от него цена доставки, а вот при выборе какого-либо региона, надо, чтобы xslt произвел расчет - точная стоимости доставки в регион в зависимости от стоимости товара (связка выпадающего списка с колонками, где будут цены). Вложение посмотрите, пробежитесь по тому, что там написано, логику поймёте.
P.S. Моё видение расчета:
<xsl:variable name="item_weight" select="//property[@name = 'weight']/value" />
<xsl:variable name="item_price" select="document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual" />
/*Стоимость доставки в регион*/
<xsl:variable name="kg_price_zone-0" select="//property[@name = 'kg_price_zone-0']/value" />
/*Стоимость доставки более 1 кг*/
<xsl:variable name="kg_plus_zone-0" select="//property[@name = 'kg_plus_zone-0']/value" />
/*Формула*/
<xsl:variable name="delivery_zone-0" select="$kg_price_zone-0 + ($kg_plus_zone-0 * $item_weight) + ($item_price * 0,05)" />
/*Итоговая стоимость доставки*/
<xsl:value-of select="$delivery_zone-0" /><xsl:text> руб</xsl:text>
Буду крайне признателен за комментарии и подсказки, если что-то не так!
Ваша задача, описана достаточно общими словами, при этом вы явно хотите каких-то конкретных советов. В этом большое противоречие вашего вопроса.
Мне показалось, что вопрос с ожидаемой функцией описан нормально.
Попробуем иначе: Вы посетитель из региона, зашли к нам на сайт (карточка товара), а там информация про экспресс-доставку в регионы (6-7 зон/inpute - выпадающий список с регионами каждой зоны), а рядом с каждой зоной, чтобы была указана стоимость доставки данного товара из карточки в каждую зону, т.е. формула должна выводить стоимость доставки в определенную зону (регионы внутри зон в input). Цену доставки вы должны увидеть сразу при заходе в карточку, а в input нажмете, чтобы посмотреть в какой вы зоне/в каком input, вернее ваш регион к какой зоне относится.
Формулу еще раз описывать не буду, так как, думаю она описана достаточно подробно (xls и xsl) - вроде я там даю понимание того, какая информация откуда должна браться.
А для примерных вызовов, то что описано в коде, думаю надо создавать блоки в карточке/типе данных, чтобы цены указать в этих блоках
/*Стоимость доставки в регион*/
<xsl:variable name="kg_price_zone-0" select="//property[@name = 'kg_price_zone-0']/value" />
/*Стоимость доставки более 1 кг*/
<xsl:variable name="kg_plus_zone-0" select="//property[@name = 'kg_plus_zone-0']/value" />
И не уверен, что код ниже (расчет) выполнен правильно?!
/*Формула*/
<xsl:variable name="delivery_zone-0" select="$kg_price_zone-0 + ($kg_plus_zone-0 * $item_weight) + ($item_price * 0,05)" />
Обидно, что никто, кроме Вас не включается в эту тему. Это я к тому, что если Вас одного на всех нас не хватает, вернее Вашего времени на нас.
1. admin, ничего не смущает, просто по коду ниже, Вы скажите, что это правильное произведение расчета, или же наоборот, т.е. не правильное (0,005 в расчете это процент страховки доставки (0,5%)):
/*Формула*/
<xsl:variable name="delivery_zone-0" select="$kg_price_zone-0 + ($kg_plus_zone-0 * $item_weight) + ($item_price * 0,005)" />
Если не правильное, то приведите свой вариант, т.е. тот, который на Ваш взгляд должен быть правильным расчетом стоимости доставки.
2. Пример, как будет это выглядеть в объектах каталога (см. вложение).
3. Цена товара будет известна (price), вес товара тоже (weight), а вот для доставок (до 1 кг и более 1 кг) будут создаваться в объектах поля, где будут четко указаны стоимость для каждой зоны (до 1 кг и более 1 кг) - это моё видение. И в расчёте данные должны браться из всех этих уже известных нам полей. Важное замечание, посетителю не будут выводиться данные из полей (до 1 кг и более 1 кг), вместо них он будет видеть стоимость доставки в регион (расчёт по формуле).
Если нужны еще какие-то пояснения по задумке, спрашивайте, постараюсь дополнить, чем могу.