Отложенные товары и корзина краткая

#
Отложенные товары и корзина краткая
Перевозил как-то систему с пятёрки на шестёрку и заметил маленькую "неточность" в работе корзины краткой.
Суть в том что если в корзине есть товар и мы его полностью откладываем, то корзина краткая пишет нам что в корзине 0 товаров на 0 рублей. Но это как-то не совсем логично. Заходим в корзину и видим товар (хоть и отложенный)
Предположим клиент зашёл в магазин набрал товар в корзину - перешёл в корзину и понял, что не будет пока покупать всё, но купить что-то хочется... Логичным было бы отложить часть товара а остальное оформить... оформляет получает...

Спустя какое-то время опять заходит под своим логином и сообщение видит что в корзине 0 товаров на 0 рублей... сначала вспоминает, что он хотел ещё купить-то - откладывает в корзину и видит что в корзине всё таки был товар который он вспоминал... (думаю не много будет "приятных" эмоций)...

Собственно конец приамбуле. предлагаю решение заменой xsl корзины краткой на этот код:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- МагазинКорзинаКраткая -->
   
   <xsl:decimal-format name="my" decimal-separator="," grouping-separator=" "/>
   
   <xsl:template match="/shop">
<div id="little_cart">
<xsl:choose>
<!-- В корзине нет вообще товаров -->

<xsl:when test="count(shop_cart) = 0">
<a href="{/shop/url}cart/">Корзина пуста</a>
               <p><xsl:choose>
                     <xsl:when test="siteuser_id != 0">
                     Если вы зарегистрированный пользователь, данные вашей корзины станут видны после <a href="/users/">авторизации</a>.
                     </xsl:when>
                  <xsl:otherwise>Перейдите в <a href="{/shop/url}">каталог</a>, выберите требуемый товар и добавьте его в корзину.</xsl:otherwise>
               </xsl:choose></p>
</xsl:when>

<!-- Иначе прорабатываем остальные два варианта-->
<xsl:otherwise>

<xsl:choose>
<!-- В корзине нет готовых товаров но есть отложенные-->
<xsl:when test="total_quantity = 0 and count(shop_cart[postpone = 1]) &gt; 0">
<xsl:variable name="totalQuantity" select="sum(shop_cart[postpone = 0]/quantity)" />
<p>В корзине <b>только отложенные товары</b>
<br />можете <a href="{/shop/url}cart/">перейти в корзину </a> и оформить отложенные товары</p>
<br/>
</xsl:when>

<!-- Иначе вывод общих количества, веса и стоимости товаров НЕ отложенных -->
<xsl:otherwise>
<xsl:variable name="totalQuantity" select="sum(shop_cart[postpone = 0]/quantity)" />


<p>В корзине <b><xsl:value-of select="$totalQuantity"/></b><xsl:text> </xsl:text><xsl:call-template name="declension"><xsl:with-param name="number" select="$totalQuantity"/></xsl:call-template>
<br/>Общий вес заказа <b><xsl:value-of select="total_weight"/>&#xA0;
<xsl:value-of select="/shop/shop_measure/name"/></b>
<br />на сумму <b><xsl:value-of select="format-number(total_amount, '### ##0,00', 'my')"/><xsl:text> </xsl:text><xsl:value-of disable-output-escaping="yes" select="shop_currency/name"/></b></p>

<xsl:if test="count(shop_cart[postpone = 1]) &gt; 0"> <p/>+ Отложенные товары</xsl:if>
<p class="button">
<a href="{/shop/url}cart/">Оформить заказ</a>
</p>   <br/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>

</xsl:choose>
</div></xsl:template>
   
   <!-- Склонение после числительных -->
   <xsl:template name="declension">
      
      <xsl:param name="number" select="number"/>
      
      <!-- Именительный падеж -->
      <xsl:variable name="nominative">
         <xsl:text>товар</xsl:text>
      </xsl:variable>
      
      <!-- Родительный падеж, единственное число -->
      <xsl:variable name="genitive_singular">
         <xsl:text>товара</xsl:text>
      </xsl:variable>
      
      
      <xsl:variable name="genitive_plural">
         <xsl:text>товаров</xsl:text>
      </xsl:variable>
      
      <xsl:variable name="last_digit">
         <xsl:value-of select="$number mod 10"/>
      </xsl:variable>
      
      <xsl:variable name="last_two_digits">
         <xsl:value-of select="$number mod 100"/>
      </xsl:variable>
      
      <xsl:choose>
         <xsl:when test="$last_digit = 1 and $last_two_digits != 11">
            <xsl:value-of select="$nominative"/>
         </xsl:when>
         <xsl:when test="$last_digit = 2 and $last_two_digits != 12     or     $last_digit = 3 and $last_two_digits != 13     or     $last_digit = 4 and $last_two_digits != 14">
            <xsl:value-of select="$genitive_singular"/>
         </xsl:when>
         <xsl:otherwise>
            <xsl:value-of select="$genitive_plural"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>
</xsl:stylesheet>
#
Re: Отложенные товары и корзина краткая
Да, кстати, отдельная благодарность специалисту службы поддержки Александру Егорову...
Авторизация