Опиця showwhenzero больше не работает. В 4.5 мы сильно переделали и упростили логику генерации счетов. Убрали множество опций и флагов, т.к. зачастую они противоречили друг другу.. Флаг в типе документа означает, что нужно создавать документ с отрицательной суммой. У вас он не создается?
Чтобы упорядочить позиции в счете по id можете воспользоваться возможностями XSLT. Например тут есть примеры использования <sort
http://www.zvon.org/xxl/XSLTreference/Output/.
В bill_pdf.xsl скорректируйте вот этот кусок:
Код:
<xsl:for-each select="pos">
<xsl:variable name="nds" select="number((@summ * ($nds_rate div 100))div($nds_rate div 100 + 1))" />
<!-- <xsl:value-of select="counter:add( 'total_nds', format-number($nds, '0.00') )"/> -->
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="cell_border">
<fo:block xsl:use-attribute-sets="table_text_center"><xsl:value-of select="position()"/></fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell_border">
<fo:block xsl:use-attribute-sets="table_text_left"><xsl:value-of select="@name"/></fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell_border">
<fo:block xsl:use-attribute-sets="table_text_center">
<xsl:if test="@unit">
<xsl:value-of select="@unit"/>
</xsl:if>
<xsl:if test="not(@unit)">
месяц
</xsl:if>
</fo:block>
На примерно такой:
Код:
<xsl:for-each select="pos">
<xsl:sort select = "@position_id" />
а может даже так..
Код:
<xsl:for-each select="pos">
<xsl:sort select = "number(@position_id)" />