Некорректный расчет НДС

#
Некорректный расчет НДС
В XSL-шаблоне "Банковский счет" НДС вычисляется некорректно.

Вне зависимости от того, указана цена товары с НДС или без НДС всегда происходит приведение XML-данных для шаблона в вид "цена, включая НДС". Далее уже в самом шаблоне для каждой позиции происходит расчет НДС по алгоритму "цена без НДС" (это поправить можно ручками в самом шаблоне).

Остется одна проблема - вывод общей суммы НДС. Данные для этого уже содержатся в готовом виде в XML "<tax_sum>259.6</tax_sum>" и опять же посчитанные некорректно. Для расчета взята цена с НДС. От неё считается НДС так, как-будто он в неё не включен.

Каким образом это можно исправить?
nba
Модератор
#
Re: Некорректный расчет НДС
nba,
Спасибо за Ваше замечание, информация передана в отдел разработки.
Модератор
#
Re: Некорректный расчет НДС
В XSL-шаблон "БанковскийСчет" необходимо внести изменения, эти изменения приведены ниже и выделены:
   <!-- Выводим элементы заказа -->
   <xsl:template match="order_list/order_items/items_order">
   <xsl:variable name="tax_sum_item" select="order_items_quantity * order_items_price div (100 + order_items_tax_rate) * order_items_tax_rate" />
      <tr>
         <td class="td_main_2">
            <xsl:value-of select="position()"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="order_items_name"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="order_items_quantity"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="item/mesure"/>
         </td>
         <td class="td_main_2" align="right">
            <xsl:value-of select="format-number(order_items_price, '#.00')"/>
         </td>

         <td class="td_main_2" align="right">
            <xsl:choose>
               <xsl:when test="$tax_sum_item != 0">
                  <xsl:value-of select="format-number(order_items_price - $tax_sum_item, '#.00')"/>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of select="format-number(order_items_price, '#.00')"/>
               </xsl:otherwise>
            </xsl:choose>
         </td>

         <td class="td_main_2" align="center">
            <xsl:choose>
               <xsl:when test="order_items_tax_rate != 0">
                  <xsl:value-of select="order_items_tax_rate"/>%</xsl:when>
               <xsl:otherwise>нет</xsl:otherwise>
            </xsl:choose>
         </td>
         <td class="td_main_2" align="right">
            <xsl:if test="order_items_quantity * order_items_price div 100 * order_items_tax_rate != 0">
               <xsl:value-of select="format-number(order_items_quantity * order_items_price div 100 * order_items_tax_rate, '###.00')"/>
            </xsl:if>
         </td>

         <td class="td_main_2" align="right">
            <xsl:if test="$tax_sum_item != 0">
               <xsl:value-of select="format-number($tax_sum_item, '###.00')"/>
            </xsl:if>
         </td>

         <td class="td_main_2" align="right" style="border-right: black 1px solid;">
            <xsl:if test="order_items_price * order_items_quantity != 0">
               <xsl:value-of select="format-number(order_items_price * order_items_quantity, '#.00')"/>
            </xsl:if>
         </td>
      </tr>
   </xsl:template>


Фрагмент с уже примененными изменениями:
   <!-- Выводим элементы заказа -->
   <xsl:template match="order_list/order_items/items_order">
      <xsl:variable name="tax_sum_item" select="order_items_quantity * order_items_price div (100 + order_items_tax_rate) * order_items_tax_rate" />
      <tr>
         <td class="td_main_2">
            <xsl:value-of select="position()"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="order_items_name"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="order_items_quantity"/>
         </td>
         <td class="td_main_2">
            <xsl:value-of select="item/mesure"/>
         </td>
         <td class="td_main_2" align="right">
            <xsl:choose>
               <xsl:when test="$tax_sum_item != 0">
                  <xsl:value-of select="format-number(order_items_price - $tax_sum_item, '#.00')"/>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of select="format-number(order_items_price, '#.00')"/>
               </xsl:otherwise>
            </xsl:choose>
         </td>
         <td class="td_main_2" align="center">
            <xsl:choose>
               <xsl:when test="order_items_tax_rate != 0">
                  <xsl:value-of select="order_items_tax_rate"/>%</xsl:when>
               <xsl:otherwise>нет</xsl:otherwise>
            </xsl:choose>
         </td>
         <td class="td_main_2" align="right">
            <xsl:if test="$tax_sum_item != 0">
               <xsl:value-of select="format-number($tax_sum_item, '###.00')"/>
            </xsl:if>
         </td>
         <td class="td_main_2" align="right" style="border-right: black 1px solid;">
            <xsl:if test="order_items_price * order_items_quantity != 0">
               <xsl:value-of select="format-number(order_items_price * order_items_quantity, '#.00')"/>
            </xsl:if>
         </td>
      </tr>
   </xsl:template>
#
Re: Некорректный расчет НДС
Это не решает проблемы...

НДС по прежнему считается неправильно.

Немного теории для начала.

Формула 1. Расчет суммы НДС в случае, если цена не содержит НДС:
Цена без НДС * Ставка НДС / 100

Формула 2. Расчет суммы НДС в случае, если цена содержит НДС:
Цена с НДС * Ставка НДС / (100 + Ставка НДС)

Элемент order_items_price уже содержит цену товара, включающую НДС (вне зависиомсти от того, какой вариант указания цены был выбран).

Вы же используете для расчета в шаблоне Формулу 1, что есть неправильно.

Правильная формула будет выглядеть так:
order_items_quantity * order_items_price div (100 + order_items_tax_rate) * order_items_tax_rate

Так мы можем исправить сумму НДС по каждой позиции в счете, но остается ещё итоговая Сумма НДс по всему счету. Она передается системой в элементе order_list/order_items/tax_sum, и рассчитывается некорректно.

Как попроваить данную ошибку???
nba
Модератор
#
Re: Некорректный расчет НДС
nba,
напишите ответ на сообщение от поддержки, будем решать вопрос.
Модератор
#
Re: Некорректный расчет НДС
Исправления внесены в вышеуказанные примеры. Также нужно будет обновить файл в /modules/shop/, этот файл будет отправлен Вам почтой и войдет в обновление.

Спасибо за участие в решении вопроса.
Авторизация