Импорт всех типов Цен
Материал из Umicms
Если вам необходимо при импорте данных из 1С, импортировать все типы цен, допустим такие как Оптовая, Розничная, Закупочная и т.п., то необходимо переписать xsl шаблон импорта. Можно воспользоваться следующим вариантом шаблона /xsl/import/custom/commerceML2.xsl:
<?xml version="1.0" encoding="UTF-8"?> <!-- TODO: // Write here your own templates --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" xmlns:udt="http://umi-cms.ru/2007/UData/templates" extension-element-prefixes="php" exclude-result-prefixes="xsl php udt"> <xsl:key name="pricetype" match="ТипыЦен/ТипЦены" use="Ид"/> <!-- Предложения --> <xsl:template match="ПакетПредложений"> <meta> <source-name>commerceML2</source-name> </meta> <pages> <xsl:apply-templates select="Предложения/Предложение" /> </pages> </xsl:template> <xsl:template match="Предложения/Предложение"> <page id="{Ид}" update-only="1"> <properties> <xsl:apply-templates select="Цены" /> <group name="catalog_stores_props" title="Склады"> <property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1"> <type data-type="float" /> <title>Общее количество на складах</title> <value> <xsl:value-of select="Количество"/> </value> </property> </group> </properties> </page> </xsl:template> <xsl:template match="Цены"> <group name="cenovye_svojstva" title="Ценовые свойства"> <xsl:apply-templates select="Цена" /> </group> </xsl:template> <xsl:template match="Цена"> <xsl:variable name="currency_ref" select="concat('udata://exchange/getCurrencyCodeByAlias/?alias=', php:function('urlencode', string(Валюта)))" /> <xsl:variable name="currency" select="document($currency_ref)/udata" /> <property name="price{position()}" is-public="1" visible="visible" allow-runtime-add="1"> <xsl:attribute name="title"> <xsl:value-of select="key('pricetype', ИдТипаЦены)/Наименование"/> </xsl:attribute> <type data-type="float" /> <title>Цена<xsl:value-of select="position()"/></title> <value currency_code="{$currency}"> <xsl:value-of select="ЦенаЗаЕдиницу"/> </value> </property> </xsl:template> <xsl:template match="Цена[position() = 1]"> <xsl:variable name="currency_ref" select="concat('udata://exchange/getCurrencyCodeByAlias/?alias=', php:function('urlencode', string(Валюта)))" /> <xsl:variable name="currency" select="document($currency_ref)/udata" /> <property name="price" is-public="1"> <xsl:attribute name="title"> <xsl:value-of select="key('pricetype', ИдТипаЦены)/Наименование"/> </xsl:attribute> <type data-type="price" /> <title>Цена</title> <value currency_code="{$currency}"> <xsl:value-of select="ЦенаЗаЕдиницу"/> </value> </property> </xsl:template> </xsl:stylesheet>
После импорта всех данных, необходимо вручную сделать небольшую правку, необходимо изменить название основной (1-ой) Цены в типе данных «Объект каталога».
О том как использовать несколько Цен, назначенных для одного товара, можно прочитать в данной статье: Использование нескольких Цен для одного товара
