forum.bitel.ru
http://forum.bitel.ru/

Как узнать присутствие позиции в счете
http://forum.bitel.ru/viewtopic.php?f=14&t=3079
Страница 1 из 1

Автор:  borisk [ 27 окт 2009, 12:56 ]
Заголовок сообщения:  Как узнать присутствие позиции в счете

Добрый день!

Подскажите, пожалуйста, не могу сообразить. Мне хочется печатать определенный шаблон только если в счете присутствует определенная наработка, можно ли такое сделать? Например: если наработка по телефонии > 0, то печатаем шаблон детализации звонков.

Автор:  rix [ 27 окт 2009, 13:05 ]
Заголовок сообщения:  Re: Как узнать присутствие позиции в счете

Настройка в типе документа
Цитата:
create.only.when.pos.positive=x,y,...,z - создание счета\счета-фактуры только в том случае, если указанные позиции с кодами x,y,...,z положительны.

не решает проблему?

Автор:  borisk [ 27 окт 2009, 13:53 ]
Заголовок сообщения:  Re: Как узнать присутствие позиции в счете

Нет, не решает, так как у меня один общий документ по всем услугам, а не отдельные счета на каждую услугу.

Автор:  Jimson [ 28 окт 2009, 17:14 ]
Заголовок сообщения:  Re: Как узнать присутствие позиции в счете

речь как я понимаю о том как в XSL проверить условие и в случае его истинности запустить темплейт с детализацией ?

вариантов масса
вот мой кусок вызова детализации
Код:
     <xsl:template name="VOIP_DETAIL">
                <!--
                        Суммарное время звонков по договору и субдоговорам для проверки на наличие активных логинов (код модуля 4).
                -->
                <xsl:variable name="summary_query" select="concat('
                        SELECT  sum(session_time) AS duration
                        FROM    contract JOIN
                                log_session_4_', $mysql_date_suffix, ' AS log ON (contract.id = log.cid AND log.session_time > 0)
                        WHERE   contract.id = ', /data/bill/@cid, ' OR contract.scid = ', /data/bill/@cid
                        )" />
                <xsl:variable name="summary" select="sql:select( $summary_query )" />
                <xsl:variable name="duration" select="format-number($summary/row[1]/@duration, '0.00', 'zero')" />
                <xsl:if test="$detail_voip_style != 'NONEED' and $duration > 0 ">
                        <fo:page-sequence master-reference="portrait2" initial-page-number="1" force-page-count="no-force">
                                <fo:static-content flow-name="PageHeader">
                                        <fo:block xsl:use-attribute-sets="text6_right">
                                                страница <fo:page-number /> из <fo:page-number-citation ref-id="endofvoip" />
                                        </fo:block>
                                </fo:static-content>
                                <fo:flow flow-name="xsl-region-body">
                                        <xsl:value-of select="counter:set( 'voip_page_fill', '27.0' )" />
                                        <xsl:call-template name="VOIP_LOGIN_DETAIL" />
                                        <fo:block id="endofvoip" />
                                </fo:flow>
                        </fo:page-sequence>
                </xsl:if>
        </xsl:template>


вы можете просто сделать foreach по элементу /bill/pos и найти позицию с требуемым ID, сумма этой позиции будет условием

Автор:  borisk [ 30 окт 2009, 10:33 ]
Заголовок сообщения:  Re: Как узнать присутствие позиции в счете

Спасибо. Что селект можно сделать и по его результату посмотреть я догадался. А вот про for-each bill/pos забыл. Попробую.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/