|
|
(не показано 5 промежуточных версий 3 участников) |
Строка 1: |
Строка 1: |
− | Задача: нужно в счёте для юридических лиц выводить цену с указанным НДС.
| |
| | | |
− | Решение: редактируем шаблон, по которому выводится упомянутый выше шаблон. Находится он в файле \templates\demodizzy\xslt\sys-tpls\emarket-invoice.xsl:
| + | '''Актуально для версии 2.9''' |
| | | |
− | <source lang="xml">
| + | Задача: нужно в счёте для юридических лиц выводить цену с указанным НДС. |
| | | |
− | <?xml version="1.0" encoding="utf-8"?>
| + | Решение: редактируем шаблон, по которому выводится упомянутый выше счет. Находится он в файле \templates\demodizzy\xslt\sys-tpls\emarket-invoice.xsl. |
− | <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
| |
| | | |
− | <xsl:stylesheet version="1.0"
| + | Найдите в файле объявления следующих переменных: |
− | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
| |
− | xmlns:php="http://php.net/xsl"
| |
− | xsl:extension-element-prefixes="php"
| |
− | exclude-result-prefixes="php">
| |
| | | |
− | <xsl:output encoding="utf-8" method="html" indent="yes"/>
| + | <source lang="xml"><xsl:variable name="total_original_price" select="//property[@name='total_original_price']/value" /> |
| + | <xsl:variable name="total_price" select="//property[@name='total_price']/value" /> |
| + | <xsl:variable name="delivery" select="//property[@name='delivery_price']/value" /> |
| + | <xsl:variable name="discount" select="$total_original_price + $delivery - $total_price" /></source> |
| | | |
− | <xsl:template match="/">
| + | Вам необходимо эти переменные вырезать и вставить после строчки |
− | <xsl:variable name="payment" select="document(concat('uobject://', //property[@name='payment_id']/value/item/@id))/udata/object" />
| |
− | <xsl:variable name="person" select="document(concat('uobject://', //property[@name='legal_person']/value/item/@id))/udata/object" />
| |
| | | |
− | <html>
| + | <source lang="xml"> |
− | <head>
| + | <xsl:variable name="person" select="document(concat('uobject://', |
− | <style type="text/css">
| + | //property[@name='legal_person']/value/item/@id))/udata/object" /> |
− | table td {
| + | </source> |
− | border: 1px solid black;
| + | чтобы не было проблем с областью видимости. |
− | }
| |
− | </style>
| |
− | </head>
| |
− | <body id="invoice">
| |
− | <div style="width:620px;"><!--hr/--></div>
| |
− | <table bgcolor="#FFFFFF" width="620" height="1000" cellpadding="1" cellspacing="0" border="1">
| |
− | <tr>
| |
− | <td align="left" valign="top" style="font-family:Arial;font-size:13px;">
| |
− | <u><b><xsl:value-of select="$payment//property[@name='name']/value" /></b></u>
| |
− | <br/><br/>
| |
− | <b>Адрес: <xsl:value-of select="$payment//property[@name='legal_address']/value" />, тел.: <xsl:value-of select="$payment//property[@name='phone_number']/value" /></b>
| |
− | <br/><br/>
| |
− | <table class="tbl" width="620" cellpadding="2" cellspacing="0" border="0" bordercolor="#000000" style="font-family:Arial;font-size:13px;">
| |
− | <tr>
| |
− | <td width="175" align="left" valign="top">ИНН <xsl:value-of select="$payment//property[@name='inn']/value" /></td>
| |
− | <td width="175" align="left" valign="top">КПП <xsl:value-of select="$payment//property[@name='kpp']/value" /></td>
| |
− | <td width="54" align="center" valign="bottom" rowspan="2">Сч. №</td>
| |
− | <td width="216" align="left" valign="bottom" rowspan="2"><xsl:value-of select="$payment//property[@name='account']/value" /></td>
| |
− | </tr>
| |
− | <tr>
| |
− | <td width="350" align="left" valign="top" colspan="2">
| |
− | Получатель
| |
− | <br/>
| |
− | <xsl:value-of select="$payment//property[@name='name']/value" />
| |
− | </td>
| |
− | </tr>
| |
− | <tr>
| |
− | <td align="left" valign="top" rowspan="2" colspan="2">
| |
− | Банк получателя
| |
− | <br/>
| |
− | <xsl:value-of select="$payment//property[@name='bank']/value" />
| |
| | | |
− | </td>
| + | Далее нужно добавить следующие переменные: |
− | <td align="center" valign="top">БИК</td>
| |
− | <td align="left" valign="top" style="border-bottom-width:0px;"><xsl:value-of select="$payment//property[@name='bik']/value" /></td>
| |
− | </tr>
| |
− | <tr>
| |
− | <td align="center" valign="top">Сч. №</td>
| |
− | <td align="left" valign="top" style="border-top-width:0px;"><xsl:value-of select="$payment//property[@name='bank_account']/value" /></td>
| |
− | </tr>
| |
− | </table>
| |
− | <br/><br/>
| |
− | <center style="font:16 Arial;font-weight:bold;">СЧЕТ № И/<xsl:value-of select="/udata/object/@id" />/П от <xsl:value-of select="php:function('dateToString', number(//property[@name='order_date']/value/@unix-timestamp))" />.</center>
| |
− | <br/><br/>
| |
− | <table cellpadding="4" cellspacing="0" border="0" style="font-family:Arial;font-size:13px;">
| |
− | <tr>
| |
− | <td>
| |
− | Покупатель: ИНН <xsl:value-of select="$person//property[@name='inn']/value" />
| |
− | , КПП <xsl:value-of select="$person//property[@name='kpp']/value" />
| |
− | , <xsl:value-of select="$person//property[@name='name']/value" />
| |
− | , <xsl:value-of select="$person//property[@name='legal_address']/value" />
| |
− | , тел: <xsl:value-of select="$person//property[@name='phone_number']/value" />
| |
− | , факс: <xsl:value-of select="$person//property[@name='fax']/value" />
| |
− | </td>
| |
− | </tr>
| |
− | <tr>
| |
− | <td> </td>
| |
− | </tr>
| |
− | </table>
| |
− | <table class="tbl" width="620" cellpadding="3" cellspacing="0" border="0" bordercolor="#000000" style="font-family:Arial;font-size:13px;">
| |
− | <tr>
| |
− | <td width="20" align="center" valign="top">№</td>
| |
− | <td width="300" align="left" valign="top">Товар</td>
| |
− | <td width="65" align="left" valign="top">Кол-во</td>
| |
− | <td width="65" align="left" valign="top">Ед.</td>
| |
− | <td width="85" align="center" valign="top">Цена <p>(с НДС, руб.)</p></td>
| |
− | <td width="85" align="center" valign="top">Сумма <p>(с НДС, руб.)</p></td>
| |
− | </tr>
| |
| | | |
− | <xsl:apply-templates select="//property[@name='order_items']/value/item" mode="order-items" />
| + | 1) НДС 18%: |
| + | <source lang="xml"><xsl:variable name="nds" select="0.18" /> </source> |
| + | 2) получим значение первоначальной цены: |
| + | <source lang="xml"><xsl:variable name="price"> |
| + | <xsl:value-of select="$total_price" /> |
| + | </xsl:variable></source> |
| + | 3) в этой переменной будет рассчитываться сам НДС в зависимости от цены: |
| + | <source lang="xml"><xsl:variable name="nds_count" select="$price * $nds" /></source> |
| + | 4) в этой переменной рассчитывается окончательная цена, с учетом НДС: |
| + | <source lang="xml"><xsl:variable name="price_nds" select="$price + $nds_count" /></source> |
| | | |
− | <xsl:variable name="total_original_price" select="//property[@name='total_original_price']/value" />
| + | Далее вносим изменения в сами ячейки квитанции. |
− | <xsl:variable name="total_price" select="//property[@name='total_price']/value" />
| + | После строчки |
− | <xsl:variable name="delivery" select="//property[@name='delivery_price']/value" />
| + | <source lang="xml"> |
− | <xsl:variable name="discount" select="$total_original_price + $delivery - $total_price" />
| + | <td colspan="5" align="right" valign="top"><b>В том числе НДС (18%):</b></td> |
| + | </source> |
| + | следует написать: |
| + | <source lang="xml"> |
| + | <td align="center" valign="top"><xsl:value-of select="format-number($nds_count, '#.##')" /></td> |
| + | </source> |
| + | это сформирует вывод значения, котрое мы получили в переменной в п.3. |
| | | |
− | <xsl:if test="$discount > 0">
| + | После строчки |
− | <tr>
| + | <source lang="xml"> |
− | <td align="right" valign="top" colspan="5"><b>Скидка:</b></td>
| + | <td colspan="5" align="right" valign="top"><b>Всего к оплате:</b></td> |
− | <td align="right" valign="top">
| + | </source> |
− | <xsl:value-of select="format-number($discount, '#.00')" />
| + | пишем: |
− | </td>
| + | <source lang="xml"> |
− | </tr>
| + | <td align="right" valign="top"><xsl:value-of select="format-number($price_nds, '#.##')" /></td> |
− | </xsl:if>
| + | </source> |
| + | эта строка выведет значение, которое мы получили в переменной в п.4. |
| | | |
− | <xsl:apply-templates select="//property[@name='delivery_price']/value" mode="delivery" />
| + | Затем в строчке |
| + | <source lang="xml"> |
| + | Всего наименований <xsl:value-of select="//property[@name='total_amount']/value" />, |
| + | на сумму <xsl:value-of select="format-number(//property[@name='total_price']/value, '#.##')" /> руб. |
| + | </source> |
| + | и в строчке |
| + | <source lang="xml"> |
| + | <b>(<xsl:value-of select="php:function('sumToString', number(//property[@name='total_price']/value))" />)</b> |
| + | </source> |
| + | следует заменить //property[@name='total_price']/value на $price_nds, чтобы выводить сумму с учетом налога. |
| | | |
− | <!--<tr>
| + | [[Категория:Модуль Интернет магазин]][[Категория: Верстка в XSLT]] |
− | <td align="right" valign="top" colspan="5"><b>можно удалить</b></td>
| |
− | <td align="right" valign="top"><xsl:value-of select="format-number(//property[@name='total_price']/value, '#.00')" /></td>
| |
− | </tr>-->
| |
− | <tr>
| |
− | <td colspan="5" align="right" valign="top"><b>В том числе НДС 18%: </b></td>
| |
− | <td align="center" valign="top">-</td>
| |
− | </tr>
| |
− | <tr>
| |
− | <td colspan="5" align="right" valign="top"><b>Всего к оплате с учётом НДС:</b></td>
| |
− | <td align="right" valign="top"><xsl:value-of select="format-number(//property[@name='total_price']/value, '#.00')" /></td>
| |
− | </tr>
| |
− | </table>
| |
− | <br/><br/>
| |
− | <p style="font-family:Arial;font-size:13px;">
| |
− | Всего наименований <xsl:value-of select="//property[@name='total_amount']/value" />, на сумму <xsl:value-of select="format-number(//property[@name='total_price']/value, '#.00')" /> руб.
| |
− | <br/>
| |
− | <b>(<xsl:value-of select="php:function('sumToString', number(//property[@name='total_price']/value))" />)</b>
| |
− | </p>
| |
− | | |
− | <img>
| |
− | <xsl:attribute name="src">
| |
− | <xsl:value-of select="$payment//property[@name='sign_image']/value" />
| |
− | </xsl:attribute>
| |
− | </img>
| |
− | </td>
| |
− | </tr>
| |
− | </table>
| |
− | </body>
| |
− | </html>
| |
− | </xsl:template>
| |
− | | |
− | <xsl:template match="item" mode="order-items">
| |
− | <xsl:variable name="object" select="document(concat('uobject://', @id))/udata/object" />
| |
− | <tr>
| |
− | <td width="20" align="center" valign="top"><xsl:value-of select="position()" /></td>
| |
− | <td width="300" align="left" valign="top"><xsl:value-of select="$object/@name" /></td>
| |
− | <td width="65" align="left" valign="top"><xsl:value-of select="$object//property[@name='item_amount']/value" /></td>
| |
− | <td width="65" align="left" valign="top">шт.</td>
| |
− | <td width="85" align="center" valign="top"><xsl:value-of select="format-number($object//property[@name='item_price']/value, '#.00')" /></td>
| |
− | <td width="85" align="center" valign="top"><xsl:value-of select="format-number($object//property[@name='item_total_price']/value, '#.00')" /></td>
| |
− | </tr>
| |
− | </xsl:template>
| |
− | | |
− | <xsl:template match="value[.='0']" mode="delivery" />
| |
− | <xsl:template match="value" mode="delivery">
| |
− | <tr>
| |
− | <td align="right" valign="top" colspan="5"><b>Доставка:</b></td>
| |
− | <td align="right" valign="top">
| |
− | <xsl:value-of select="format-number(., '#.00')" />
| |
− | </td>
| |
− | </tr>
| |
− | </xsl:template>
| |
− | | |
− | </xsl:stylesheet>
| |
− | | |
− | [[Категория:Модуль Интернет магазин]] [[Категория:XSLT шаблонизатор]] | |
− | | |
− | </source>
| |
Актуально для версии 2.9
Задача: нужно в счёте для юридических лиц выводить цену с указанным НДС.
Решение: редактируем шаблон, по которому выводится упомянутый выше счет. Находится он в файле \templates\demodizzy\xslt\sys-tpls\emarket-invoice.xsl.
Найдите в файле объявления следующих переменных:
<xsl:variable name="total_original_price" select="//property[@name='total_original_price']/value" />
<xsl:variable name="total_price" select="//property[@name='total_price']/value" />
<xsl:variable name="delivery" select="//property[@name='delivery_price']/value" />
<xsl:variable name="discount" select="$total_original_price + $delivery - $total_price" />
Вам необходимо эти переменные вырезать и вставить после строчки
<xsl:variable name="person" select="document(concat('uobject://',
//property[@name='legal_person']/value/item/@id))/udata/object" />
чтобы не было проблем с областью видимости.
Далее нужно добавить следующие переменные:
1) НДС 18%:
<xsl:variable name="nds" select="0.18" />
2) получим значение первоначальной цены:
<xsl:variable name="price">
<xsl:value-of select="$total_price" />
</xsl:variable>
3) в этой переменной будет рассчитываться сам НДС в зависимости от цены:
<xsl:variable name="nds_count" select="$price * $nds" />
4) в этой переменной рассчитывается окончательная цена, с учетом НДС:
<xsl:variable name="price_nds" select="$price + $nds_count" />
Далее вносим изменения в сами ячейки квитанции.
После строчки
<td colspan="5" align="right" valign="top"><b>В том числе НДС (18%):</b></td>
следует написать:
<td align="center" valign="top"><xsl:value-of select="format-number($nds_count, '#.##')" /></td>
это сформирует вывод значения, котрое мы получили в переменной в п.3.
После строчки
<td colspan="5" align="right" valign="top"><b>Всего к оплате:</b></td>
пишем:
<td align="right" valign="top"><xsl:value-of select="format-number($price_nds, '#.##')" /></td>
эта строка выведет значение, которое мы получили в переменной в п.4.
Затем в строчке
Всего наименований <xsl:value-of select="//property[@name='total_amount']/value" />,
на сумму <xsl:value-of select="format-number(//property[@name='total_price']/value, '#.##')" /> руб.
и в строчке
<b>(<xsl:value-of select="php:function('sumToString', number(//property[@name='total_price']/value))" />)</b>
следует заменить //property[@name='total_price']/value на $price_nds, чтобы выводить сумму с учетом налога.