Advertisement
atomrus1993

1C UMI EXPORT

Nov 13th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 18.30 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. TODO: // Write here your own templates
  4. -->
  5.  
  6. <xsl:stylesheet version="1.0"
  7.                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  8.                xmlns:php="http://php.net/xsl"
  9.                xmlns:udt="http://umi-cms.ru/2007/UData/templates"
  10.                extension-element-prefixes="php"
  11.                exclude-result-prefixes="xsl php udt">
  12.  
  13.     <xsl:template match="object" mode="order">
  14.         <xsl:param name="order_num" select="properties/group/property[@name='number']/value"/>
  15.         <xsl:param name="status_change_date"
  16.                   select="string(properties/group/property[@name='status_change_date']/value/@unix-timestamp)"/>
  17.         <xsl:param name="order_date"
  18.                   select="string(properties/group/property[@name='order_date']/value/@unix-timestamp)"/>
  19.         <xsl:param name="total_price" select="properties/group/property[@name='total_price']/value"/>
  20.         <xsl:param name="customer_id" select="properties/group/property[@name='customer_id']/value/item/@id"/>
  21.         <xsl:param name="customer_comments" select="properties/group/property[@name='comments']/value"/>
  22.  
  23.         <xsl:param name="order_status_id" select="number(properties/group/property[@name='status_id']/value/item/@id)"/>
  24.         <xsl:param name="order_status" select="document(concat('uobject://', $order_status_id))/udata/object"/>
  25.         <xsl:param name="order_status_codename" select="string($order_status//property[@name='codename']/value)"/>
  26.  
  27.         <xsl:param name="idN" select="@id"/>
  28.  
  29.         <xsl:param name="discount_card" select="document(concat('uobject://', $idN))/udata/object/properties/group[@name='order_discount_props']/property/value/item/@name" />
  30.  
  31.         <xsl:param name="comment_user" select="document(concat('uobject://', $idN))/udata/object/properties/group[@name='order_props']/property[@name='customer_id']/value/item/@id" />
  32.  
  33.         <xsl:param name="comment_u" select="document(concat('uobject://', $comment_user))/udata/object/properties/group[@name='personal_info']/property[@name='comment']/value" />
  34.  
  35.         <xsl:param name="phone_u" select="document(concat('uobject://', $comment_user))/udata/object/properties/group[@name='contact_props']/property[@name='phone']/value" />
  36.  
  37.         <xsl:param name="disc_card_u" select="document(concat('uobject://', $comment_user))/udata/object/properties/group[@name='personal_info']/property[@name='card_discount']/value" />
  38.  
  39.  
  40.  
  41.         <xsl:param name="payment_date"
  42.                   select="string(properties/group/property[@name='payment_date']/value/@unix-timestamp)"/>
  43.         <xsl:param name="payment_document_num"
  44.                   select="string(properties/group/property[@name='payment_document_num']/value)"/>
  45.         <xsl:param name="payment_type" select="string(properties/group/property[@name='payment_id']/value/item/@name)"/>
  46.         <xsl:param name="payment_status_id"
  47.                   select="number(properties/group/property[@name='payment_status_id']/value/item/@id)"/>
  48.         <xsl:param name="payment_status_codename"
  49.                   select="string(document(concat('uobject://', $payment_status_id))//property[@name='codename']/value)"/>
  50.         <xsl:param name="delivery_allow_date"
  51.                   select="string(properties/group/property[@name='delivery_allow_date']/value/@unix-timestamp)"/>
  52.         <xsl:param name="delivery_adress_id" select="properties/group/property[@name='delivery_address']/value/item/@id" />
  53.         <xsl:param name="phone" select="properties/group[@name='contact_props']/property[@name='phone']/value" />
  54.         <xsl:param name="email" select="properties/group[@name='contact_props']/property[@name='email']/value" />
  55.  
  56.         <xsl:param name="emailPos" select="properties/group[@name='contact_props']/property[@name='email']/value" />
  57.         <xsl:param name="emailPosU" select="document(concat('uobject://', $comment_user))/udata/object/properties/group[@name='idetntify_data']/property[@name='e-mail']/value" />
  58.  
  59.         <Документ>
  60.             <Ид>
  61.                 <xsl:value-of select="@id"/>
  62.             </Ид>
  63.             <Номер>
  64.                 <xsl:value-of select="@id"/>
  65.             </Номер>
  66.             <Дата>
  67.                 <xsl:if test="string-length($order_date)">
  68.                     <xsl:value-of select="php:function('date', 'Y-m-d', $order_date)"/>
  69.                 </xsl:if>
  70.             </Дата>
  71.             <ХозОперация>Заказ товара</ХозОперация>
  72.             <Роль>Продавец</Роль>
  73.             <Валюта>руб</Валюта>
  74.             <Курс>1</Курс>
  75.             <Сумма>
  76.                 <xsl:value-of select="$total_price"/>
  77.             </Сумма>
  78.             <xsl:if test="string-length($order_date)">
  79.                 <Время>
  80.                     <xsl:value-of select="php:function('date', 'H:i:s', $order_date)"/>
  81.                 </Время>
  82.             </xsl:if>
  83.  
  84.             <xsl:apply-templates
  85.                    select="document(concat('uobject://',$delivery_adress_id))/udata"
  86.                    mode="delivery_time"/>
  87.  
  88.             <Комментарий>Заказ №<xsl:value-of select="$order_num"/>
  89.             </Комментарий>
  90.             <Телефон>
  91.                 <xsl:value-of select="$phone"/>
  92.             </Телефон>
  93.             <xsl:if test="$customer_id">
  94.                 <Контрагенты>
  95.                     <xsl:apply-templates select="document(concat('uobject://', $customer_id))/udata/object"
  96.                                         mode="customer">
  97.                         <xsl:with-param name="adress_id" select="$delivery_adress_id"/>
  98.                     </xsl:apply-templates>
  99.                 </Контрагенты>
  100.             </xsl:if>
  101.  
  102.             <Товары>
  103.                 <xsl:apply-templates select="properties/group/property[@name='delivery_price']/value" mode="delivery"/>
  104.                 <xsl:apply-templates select="properties/group/property[@name='order_items']/value/item"
  105.                                     mode="order-item"/>
  106.             </Товары>
  107.             <Скидка>
  108.                 <xsl:value-of select="$discount_card"/>
  109.             </Скидка>
  110.             <НомерКарты>
  111.                 <xsl:value-of select="$disc_card_u"/>
  112.             </НомерКарты>
  113.  
  114.  
  115.            
  116.  
  117.  
  118.             <КомментарийПокупателя>
  119.                 <xsl:value-of select="$comment_u"/>
  120.             </КомментарийПокупателя>
  121.             <ТелефонПокупателя>
  122.                 <xsl:value-of select="$phone_u"/>
  123.             </ТелефонПокупателя>
  124.  
  125.  
  126.  
  127.  
  128.             <ЗначенияРеквизитов>
  129.                 <xsl:if test="string-length($payment_date)">
  130.                     <ЗначениеРеквизита>
  131.                         <Наименование>Дата оплаты</Наименование>
  132.                         <Значение>
  133.                             <xsl:value-of select="php:function('date', 'Y-m-d', $payment_date)"/>
  134.                         </Значение>
  135.                     </ЗначениеРеквизита>
  136.                 </xsl:if>
  137.  
  138.                 <xsl:if test="string-length($payment_document_num)">
  139.                     <ЗначениеРеквизита>
  140.                         <Наименование>Номер платежного документа</Наименование>
  141.                         <Значение>
  142.                             <xsl:value-of select="$payment_document_num"/>
  143.                         </Значение>
  144.                     </ЗначениеРеквизита>
  145.                 </xsl:if>
  146.  
  147.                 <xsl:if test="string-length($payment_type)">
  148.                     <ЗначениеРеквизита>
  149.                         <Наименование>Метод оплаты</Наименование>
  150.                         <Значение>
  151.                             <xsl:value-of select="$payment_type"/>
  152.                         </Значение>
  153.                     </ЗначениеРеквизита>
  154.                 </xsl:if>
  155.  
  156.                 <xsl:if test="string-length($delivery_allow_date)">
  157.                     <ЗначениеРеквизита>
  158.                         <Наименование>Дата разрешения доставки</Наименование>
  159.                         <Значение>
  160.                             <xsl:value-of select="php:function('date', 'Y-m-d', $delivery_allow_date)"/>
  161.                         </Значение>
  162.                     </ЗначениеРеквизита>
  163.                     <ЗначениеРеквизита>
  164.                         <Наименование>Доставка разрешена</Наименование>
  165.                         <Значение>true</Значение>
  166.                     </ЗначениеРеквизита>
  167.                 </xsl:if>
  168.  
  169.                 <ЗначениеРеквизита>
  170.                     <Наименование>Заказ оплачен</Наименование>
  171.                     <Значение>
  172.                         <xsl:choose>
  173.                             <xsl:when test="$payment_status_codename = 'accepted'">true</xsl:when>
  174.                             <xsl:otherwise>false</xsl:otherwise>
  175.                         </xsl:choose>
  176.                     </Значение>
  177.                 </ЗначениеРеквизита>
  178.  
  179.                 <ЗначениеРеквизита>
  180.                     <Наименование>Отменен</Наименование>
  181.                     <Значение>
  182.                         <xsl:choose>
  183.                             <xsl:when test="$order_status_codename = 'canceled'">true</xsl:when>
  184.                             <xsl:otherwise>false</xsl:otherwise>
  185.                         </xsl:choose>
  186.                     </Значение>
  187.                 </ЗначениеРеквизита>
  188.  
  189.                 <ЗначениеРеквизита>
  190.                     <Наименование>Финальный статус</Наименование>
  191.                     <Значение>
  192.                         <xsl:choose>
  193.                             <xsl:when test="$order_status_codename = 'ready'">true</xsl:when>
  194.                             <xsl:otherwise>false</xsl:otherwise>
  195.                         </xsl:choose>
  196.                     </Значение>
  197.                 </ЗначениеРеквизита>
  198.  
  199.                 <ЗначениеРеквизита>
  200.                     <Наименование>Статус заказа</Наименование>
  201.                     <Значение>
  202.                         <xsl:value-of select="$order_status/@name"/>
  203.                     </Значение>
  204.                 </ЗначениеРеквизита>
  205.  
  206.                 <xsl:if test="string-length($status_change_date)">
  207.                     <ЗначениеРеквизита>
  208.                         <Наименование>Дата изменения статуса</Наименование>
  209.                         <Значение>
  210.                             <xsl:value-of select="php:function('date', 'Y-m-d H:i', $status_change_date)"/>
  211.                         </Значение>
  212.                     </ЗначениеРеквизита>
  213.                 </xsl:if>
  214.             </ЗначенияРеквизитов>
  215.         </Документ>
  216.     </xsl:template>
  217.  
  218.     <xsl:template match="object" mode="customer">
  219.         <xsl:param name="adress_id" />
  220.         <Контрагент>
  221.             <Ид>
  222.                 <xsl:value-of select="@id"/>
  223.             </Ид>
  224.             <Наименование><xsl:value-of select="//property[@name='fname']/value"/>&#160;<xsl:value-of
  225.                    select="//property[@name='lname']/value"/>
  226.             </Наименование>
  227.             <ПолноеНаименование><xsl:value-of select="//property[@name='fname']/value"/>&#160;<xsl:value-of
  228.                    select="//property[@name='lname']/value"/>
  229.             </ПолноеНаименование>
  230.             <Роль>Покупатель</Роль>
  231.             <Фамилия>
  232.                 <xsl:value-of select="//property[@name='lname']/value"/>
  233.             </Фамилия>
  234.             <Имя>
  235.                 <xsl:value-of select="//property[@name='fname']/value"/>
  236.             </Имя>
  237.             <Комментарий>
  238.                 <xsl:value-of select="//property[@name='comment']/value"/>
  239.             </Комментарий>
  240.             <Адрес>
  241.                 <xsl:apply-templates
  242.                        select="document(concat('uobject://',$adress_id))/udata"
  243.                        mode="delivery_info"/>
  244.             </Адрес>
  245.             <Контакты>
  246.                 <Контакт>
  247.                     <Тип>Почта</Тип>
  248.                     <Значение>
  249.                         <xsl:value-of select="properties/group[@name='contact_props']/property[@name='email']/value"/>
  250.                     </Значение>
  251.                 </Контакт>
  252.             </Контакты>
  253.         </Контрагент>
  254.     </xsl:template>
  255.  
  256.     <xsl:template match='object' mode='delivery_info'>
  257.         <Представление> <xsl:value-of select="//property[@name='city']/value"/>, улица <xsl:value-of select="//property[@name='street']/value"/>, дом <xsl:value-of select="//property[@name='house']/value"/> Квартира <xsl:value-of select="//property[@name='flat']/value"/></Представление>
  258.         <АдресноеПоле>
  259.             <Тип>Город</Тип>
  260.             <Значение>
  261.                 <xsl:value-of select="//property[@name='city']/value"/>
  262.             </Значение>
  263.         </АдресноеПоле>
  264.         <АдресноеПоле>
  265.             <Тип>Улица</Тип>
  266.             <Значение>
  267.                 <xsl:value-of select="//property[@name='street']/value"/>
  268.             </Значение>
  269.         </АдресноеПоле>
  270.         <АдресноеПоле>
  271.             <Тип>Дом</Тип>
  272.             <Значение>
  273.                 <xsl:value-of select="//property[@name='house']/value"/>
  274.             </Значение>
  275.         </АдресноеПоле>
  276.         <АдресноеПоле>
  277.             <Тип>Квартира</Тип>
  278.             <Значение>
  279.                 <xsl:value-of select="//property[@name='flat']/value"/>
  280.             </Значение>
  281.         </АдресноеПоле>
  282.     </xsl:template>
  283.  
  284.     <xsl:template match='object' mode='delivery_time'>
  285.         <ВремяДоставки>
  286.             <xsl:value-of select="//property[@name='delivery_time']/value"/>
  287.         </ВремяДоставки>
  288.         <ДатаДоставки>
  289.             <xsl:value-of select="//property[@name='delivery_date']/value"/>
  290.         </ДатаДоставки>
  291.     </xsl:template>
  292.     <xsl:template match="item" mode="order-item">
  293.         <xsl:apply-templates select="document(concat('uobject://', @id))/udata/object" mode="order-item" />
  294.     </xsl:template>
  295.  
  296.     <xsl:template match="object" mode="order-item">
  297.         <xsl:param name="good-id" select="properties/group/property[@name='item_link']/value/page/@id" />
  298.         <xsl:param name="good" select="document(concat('upage://', $good-id))/udata/page" />
  299.         <xsl:param name="item_price" select="properties/group/property[@name='item_price']/value" />
  300.         <xsl:param name="item_amount" select="properties/group/property[@name='item_amount']/value" />
  301.         <xsl:param name="item_total_price" select="properties/group/property[@name='item_total_price']/value" />
  302.         <Товар>
  303.             <xsl:choose>
  304.                 <xsl:when test="not($good)">
  305.                     <Ид><xsl:value-of select="@id" /></Ид>
  306.                 </xsl:when>
  307.                 <xsl:when test="$good//property[@name = '1c_product_id']/value">
  308.                     <Ид><xsl:value-of select="$good//property[@name = '1c_product_id']/value" /></Ид>
  309.                 </xsl:when>
  310.                 <xsl:otherwise>
  311.                     <Ид><xsl:value-of select="$good-id" /></Ид>
  312.                 </xsl:otherwise>
  313.             </xsl:choose>
  314.             <xsl:if test="$good//property[@name = '1c_catalog_id']/value">
  315.                 <ИдКаталога><xsl:value-of select="$good//property[@name = '1c_catalog_id']/value" /></ИдКаталога>
  316.             </xsl:if>
  317.  
  318.             <Наименование><xsl:value-of select="$good/name | @name" /></Наименование>
  319.             <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
  320.  
  321.             <ЦенаЗаЕдиницу><xsl:value-of select="$item_price" /></ЦенаЗаЕдиницу>
  322.             <Сумма><xsl:value-of select="$item_total_price" /></Сумма>
  323.             <Количество><xsl:value-of select="$item_amount" /></Количество>
  324.             <Единица>шт</Единица>
  325.             <Коэффициент>1</Коэффициент>
  326.             <Артикул1С><xsl:value-of select="$good//property[@name = 'vendor_code']/value" /></Артикул1С>
  327.             <Штрихкод><xsl:value-of select="$good//property[@name = 'barcode']/value" /></Штрихкод>
  328.             <Вес><xsl:value-of select="$good//property[@name = 'weight']/value" /></Вес>
  329.  
  330.             <ЗначенияРеквизитов>
  331.                 <ЗначениеРеквизита>
  332.                 <Наименование>ВидНоменклатуры</Наименование>
  333.                 <Значение>Товар</Значение>
  334.                 </ЗначениеРеквизита>
  335.                 <ЗначениеРеквизита>
  336.                 <Наименование>ТипНоменклатуры</Наименование>
  337.                 <Значение>Товар</Значение>
  338.                 </ЗначениеРеквизита>
  339.             </ЗначенияРеквизитов>
  340.         </Товар>
  341.     </xsl:template>
  342. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement