Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

OpenERP 关于rml报表的修改



  • 1.rml 报表的组成
        RML报表主要分两部分组成,第一部分是一个在打印目录里面的.py文件,还有.rml的打印文件,这两个文件共同形成了PDF文件。.这两个文件是一样的文件名,不同的扩展名。
      .py文件是一个python程序文件,由它来取数据库的值,并且进行数据计算。
      .rml文件是决定PDF的外观,表格和样式都由rml文件来生成的。一个报表的rml样式由两部分组成,一部分是表头,一部分是内容。分在两个不同的rml文件中,表头文件是一个公共文件。

    2.一个例子讲述rml文件
      下面我以一个POS单来讲述一下rml文件的组成,在代码中,我标记了,每段代码起到的是什么作用。
      为什么以POS单做为例子呢?因为POS单简单,代码少,但具有了rml打印文件的所有部分。
      这个代码已经不是原来的代码了,我已经删除了好多格式文字的代码,以便看的更清楚,事实上,这些代码,只起到装饰作用,做简单的报表,可以不用的。
    [code]
    <?xml version="1.0"?>
    <document filename="test.pdf">
      <template pageSize="(204.0,842.0)" <!-前面的数字代表打印纸张的大小,这个用数字表示的,也可以用cm表示,比如21cm。->title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20">
        <pageTemplate id="first">
          <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/> <!-这个数字代表的打印内容的大小,纸边界,起始位置,这个位置决定了生成文件后文字的位置,一般要测试才能知道具体位置-〉
        </pageTemplate>
      </template>
      <stylesheet>〈!-这个标签是打印样式,表格样式 定义了表格名称,划线,文字的大小等等,可以不定义,表格没有线,文件一样大小-〉
        <blockTableStyle id="Standard_Outline">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
        </blockTableStyle>
        <blockTableStyle id="Table2">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
          <!-上面的这行,kind="LINEABOVE" 决定了表格划线 colorName="#000000" 决定了表格线的颜色 start="1,0" stop="1,0"决定了划线的起止位置,没有这句,表格是没有线的 ->
        </blockTableStyle>
        <blockTableStyle id="Table4">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
        </blockTableStyle>
        <blockTableStyle id="Table10">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
        </blockTableStyle>
        <initialize>
          <paraStyle name="all" alignment="justify"/>
        </initialize>
        </stylesheet>
      <story><!-story开始就是表格的内容了,oe的数据就调用到这里->
        <para>[[ repeatIn(objects,'o') ]]</para> <!-para标签调用数据和要显示的文字,这个标签里面的内容就是表格内的内容->
        <para>[[o.user_id.company_id.name]]</para>
        <para>[[ address and display_address(address)]]</para>
        <para>电话 : [[ address and address.phone ]]</para>
        <para>收银 : [[ o.user_id.name ]]</para>
        <para>超市 : [[ o.shop_id.name ]]</para>
        <para>时间 : [[ o.date_order ]]</para>
        <para>N° : [[ o.name ]]</para>
        <blockTable colWidths="68.0,68.0,68.0"><!-一个blockTable标签就是一个表格,colWidths表格的宽度,后来字一个分号代表一个格,还有一个标签 rowHeights表格的高度->
          <tr>
            <td>
              <para>Description</para>
            </td>
            <td>
              <para>Qty</para>
            </td>
            <td>
              <para>Price</para>
            </td>
          </tr><!-一个td代表一个格,一个tr代表表格的一行->
          <tr>
            <td>
              <para>[[ repeatIn(o.lines,'line') ]]</para>
              <para>[[ line.product_id.name ]]</para>
              <para>With a [[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]) % discount. <!-百分号是格式化用的%.2f'表示两位小数->
              </para>
              <para>
                <font color="white"> </font>
              </para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="136.0,68.0" style="Table2">
          <tr>
            <td>
              <para>Taxes :</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_tax, currency_obj=company.currency_id)]]</para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="136.0,68.0" style="Table4">
          <tr>
            <td>
              <para>Total :</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_total, currency_obj=company.currency_id)]]</para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="102.0,34.0,68.0" style="Table10">
          <tr>
            <td>
              <para>Payment Mode</para>
            </td>
            <td>
              <para>
                <font> </font>
              </para>
            </td>
            <td>
              <para>Amount</para>
            </td>
          </tr>
          <tr>
            <td>
              <para>[[ repeatIn(get_journal_amt(o),'d') ]]</para>
              <para>[[ d['name'] ]]</para>
            </td>
            <td>
              <para>
                <font color="white"> </font>
              </para>
            </td>
            <td>
              <para>[[ formatLang(d['amt'] or 0, currency_obj=company.currency_id) ]]</para>
            </td>
          </tr>
        </blockTable>
      </story>
    </document>
    [/code]
      以上是对rml文件的分析,根据这个分析就能写出自己的rml文件了,但这只是一部分,因为你还不会调用其它数据到rml文件里面来。不过我们能够修改表格去掉不显示的东西,和完全重新画一个新样式的表格了。

    3.报表的表头
      即使这样,我们发现,如果使用系统表头的打印文件,默认的表头,在横线下面有很大一块空白。这样我们就要修改表头的rml文件,修改这个不用找到文件,在软件里就能修改。
      在设置-公司-公司-页眉页脚里时行修改。修改第一项“RML页眉”下面是我修改过的一个例子:
    [code]
    <header>
        <pageTemplate>
            <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/>
            <!-上面这段代码表示了带表头打印的宽高,我说的那个空白是由y1="3.0cm"控制的,是表的打印高度,改成6,文字就上去了,打印的位置比较合适->
            <stylesheet>
                <!-- Set here the default font to use for all <para> tags -->
                <paraStyle name='Normal' fontName="DejaVu Sans"/>
                <paraStyle name="main_footer" fontSize="8.0" alignment="CENTER"/>
                <paraStyle name="main_header" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
            </stylesheet>
            <pageGraphics>
                <!-- Set here the default font to use for all <drawString> tags -->
                <setFont name="DejaVu Sans" size="8"/>
                <!-- You Logo - Change X,Y,Width and Height -->
                <image x="1.3cm" y="27.7cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image>
                <fill color="black"/>
                <stroke color="black"/>

                <!-- page header -->
                <lines>1.3cm 27.7cm 20cm 27.7cm</lines><!-这个是表头的线,要保留->
                <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString>
                <drawString x="1.3cm" y="27.3cm">[[ company.partner_id.name ]]</drawString>
                <place x="1.3cm" y="25.3cm" height="1.8cm" width="15.0cm">
                    <para style="main_header">[[ display_address(company.partner_id) or  '' ]]</para>
                </place><!--phone这段是公司电话吧,可以删除这段话在表头里没啥用-->
                <drawString x="1.3cm" y="25.0cm">Phone:</drawString>
                <drawRightString x="7cm" y="25.0cm">[[ company.partner_id.phone or '' ]]</drawRightString>
                <drawString x="1.3cm" y="24.6cm">Mail:</drawString>
                <drawRightString x="7cm" y="24.6cm">[[ company.partner_id.email or '' ]]</drawRightString>
                <lines>1.3cm 24.5cm 7cm 24.5cm</lines><!--这个线可以不要,没啥用-->

                <!-- left margin --><!--这段代码是打印在底下左边的公司版权,那个90好像是文字旋转90度,改打印公司名字就在我加的**那里-->
                <rotate degrees="90"/>
                <fill color="grey"/>
                <drawString x="2.65cm" y="-0.4cm">power by openERP</drawString>
                <fill color="black"/>
                <rotate degrees="-90"/>

                <!--page bottom--><!--这段是打印底下的页码和线,页码计算在这段代码里,自己写的rml代码可以参考这个-->
                <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines>
                <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm">
                    <para style="main_footer">[[ company.rml_footer ]]</para>
                    <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para>
                </place>
            </pageGraphics>
        </pageTemplate>
    </header>
    [/code]
    4.关于格式化.py文件
      这个文件我还没太弄懂,好像又称做解释器我只发我知道的,我看OE介绍,这个文件主要包括以下代码:
    [code]
      import time
    from report import report_sxw

    class order(report_sxw.rml_parse):
        def init(self, cr, uid, name, context):
            super(order, self).init(cr, uid, name, context)
            self.localcontext.update({
                'time': time,
            })

    report_sxw.report_sxw('report.sale.order', 'sale.order',
          'addons/sale/report/order.rml', parser=order, header=True)
    [/code]
        就写到这,关于如何调用数据库数据,等我弄明白了,再给大家写出来,好像得用python代码。
        承德-至阳



  • 1.rml 报表的组成
        RML报表主要分两部分组成,第一部分是一个在打印目录里面的.py文件,还有.rml的打印文件,这两个文件共同形成了PDF文件。.这两个文件是一样的文件名,不同的扩展名。
      .py文件是一个python程序文件,由它来取数据库的值,并且进行数据计算。
      .rml文件是决定PDF的外观,表格和样式都由rml文件来生成的。一个报表的rml样式由两部分组成,一部分是表头,一部分是内容。分在两个不同的rml文件中,表头文件是一个公共文件。

    2.一个例子讲述rml文件
      下面我以一个POS单来讲述一下rml文件的组成,在代码中,我标记了,每段代码起到的是什么作用。
      为什么以POS单做为例子呢?因为POS单简单,代码少,但具有了rml打印文件的所有部分。
      这个代码已经不是原来的代码了,我已经删除了好多格式文字的代码,以便看的更清楚,事实上,这些代码,只起到装饰作用,做简单的报表,可以不用的。
    [code]
    <?xml version="1.0"?>
    <document filename="test.pdf">
      <template pageSize="(204.0,842.0)" <!-前面的数字代表打印纸张的大小,这个用数字表示的,也可以用cm表示,比如21cm。->title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20">
        <pageTemplate id="first">
          <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/> <!-这个数字代表的打印内容的大小,纸边界,起始位置,这个位置决定了生成文件后文字的位置,一般要测试才能知道具体位置-〉
        </pageTemplate>
      </template>
      <stylesheet>〈!-这个标签是打印样式,表格样式 定义了表格名称,划线,文字的大小等等,可以不定义,表格没有线,文件一样大小-〉
        <blockTableStyle id="Standard_Outline">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
        </blockTableStyle>
        <blockTableStyle id="Table2">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
          <!-上面的这行,kind="LINEABOVE" 决定了表格划线 colorName="#000000" 决定了表格线的颜色 start="1,0" stop="1,0"决定了划线的起止位置,没有这句,表格是没有线的 ->
        </blockTableStyle>
        <blockTableStyle id="Table4">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
        </blockTableStyle>
        <blockTableStyle id="Table10">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
        </blockTableStyle>
        <initialize>
          <paraStyle name="all" alignment="justify"/>
        </initialize>
        </stylesheet>
      <story><!-story开始就是表格的内容了,oe的数据就调用到这里->
        <para>[[ repeatIn(objects,'o') ]]</para> <!-para标签调用数据和要显示的文字,这个标签里面的内容就是表格内的内容->
        <para>[[o.user_id.company_id.name]]</para>
        <para>[[ address and display_address(address)]]</para>
        <para>电话 : [[ address and address.phone ]]</para>
        <para>收银 : [[ o.user_id.name ]]</para>
        <para>超市 : [[ o.shop_id.name ]]</para>
        <para>时间 : [[ o.date_order ]]</para>
        <para>N° : [[ o.name ]]</para>
        <blockTable colWidths="68.0,68.0,68.0"><!-一个blockTable标签就是一个表格,colWidths表格的宽度,后来字一个分号代表一个格,还有一个标签 rowHeights表格的高度->
          <tr>
            <td>
              <para>Description</para>
            </td>
            <td>
              <para>Qty</para>
            </td>
            <td>
              <para>Price</para>
            </td>
          </tr><!-一个td代表一个格,一个tr代表表格的一行->
          <tr>
            <td>
              <para>[[ repeatIn(o.lines,'line') ]]</para>
              <para>[[ line.product_id.name ]]</para>
              <para>With a [[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]) % discount. <!-百分号是格式化用的%.2f'表示两位小数->
              </para>
              <para>
                <font color="white"> </font>
              </para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="136.0,68.0" style="Table2">
          <tr>
            <td>
              <para>Taxes :</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_tax, currency_obj=company.currency_id)]]</para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="136.0,68.0" style="Table4">
          <tr>
            <td>
              <para>Total :</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_total, currency_obj=company.currency_id)]]</para>
            </td>
          </tr>
        </blockTable>
        <blockTable colWidths="102.0,34.0,68.0" style="Table10">
          <tr>
            <td>
              <para>Payment Mode</para>
            </td>
            <td>
              <para>
                <font> </font>
              </para>
            </td>
            <td>
              <para>Amount</para>
            </td>
          </tr>
          <tr>
            <td>
              <para>[[ repeatIn(get_journal_amt(o),'d') ]]</para>
              <para>[[ d['name'] ]]</para>
            </td>
            <td>
              <para>
                <font color="white"> </font>
              </para>
            </td>
            <td>
              <para>[[ formatLang(d['amt'] or 0, currency_obj=company.currency_id) ]]</para>
            </td>
          </tr>
        </blockTable>
      </story>
    </document>
    [/code]
      以上是对rml文件的分析,根据这个分析就能写出自己的rml文件了,但这只是一部分,因为你还不会调用其它数据到rml文件里面来。不过我们能够修改表格去掉不显示的东西,和完全重新画一个新样式的表格了。

    3.报表的表头
      即使这样,我们发现,如果使用系统表头的打印文件,默认的表头,在横线下面有很大一块空白。这样我们就要修改表头的rml文件,修改这个不用找到文件,在软件里就能修改。
      在设置-公司-公司-页眉页脚里时行修改。修改第一项“RML页眉”下面是我修改过的一个例子:
    [code]
    <header>
        <pageTemplate>
            <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/>
            <!-上面这段代码表示了带表头打印的宽高,我说的那个空白是由y1="3.0cm"控制的,是表的打印高度,改成6,文字就上去了,打印的位置比较合适->
            <stylesheet>
                <!-- Set here the default font to use for all <para> tags -->
                <paraStyle name='Normal' fontName="DejaVu Sans"/>
                <paraStyle name="main_footer" fontSize="8.0" alignment="CENTER"/>
                <paraStyle name="main_header" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
            </stylesheet>
            <pageGraphics>
                <!-- Set here the default font to use for all <drawString> tags -->
                <setFont name="DejaVu Sans" size="8"/>
                <!-- You Logo - Change X,Y,Width and Height -->
                <image x="1.3cm" y="27.7cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image>
                <fill color="black"/>
                <stroke color="black"/>

                <!-- page header -->
                <lines>1.3cm 27.7cm 20cm 27.7cm</lines><!-这个是表头的线,要保留->
                <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString>
                <drawString x="1.3cm" y="27.3cm">[[ company.partner_id.name ]]</drawString>
                <place x="1.3cm" y="25.3cm" height="1.8cm" width="15.0cm">
                    <para style="main_header">[[ display_address(company.partner_id) or  '' ]]</para>
                </place><!--phone这段是公司电话吧,可以删除这段话在表头里没啥用-->
                <drawString x="1.3cm" y="25.0cm">Phone:</drawString>
                <drawRightString x="7cm" y="25.0cm">[[ company.partner_id.phone or '' ]]</drawRightString>
                <drawString x="1.3cm" y="24.6cm">Mail:</drawString>
                <drawRightString x="7cm" y="24.6cm">[[ company.partner_id.email or '' ]]</drawRightString>
                <lines>1.3cm 24.5cm 7cm 24.5cm</lines><!--这个线可以不要,没啥用-->

                <!-- left margin --><!--这段代码是打印在底下左边的公司版权,那个90好像是文字旋转90度,改打印公司名字就在我加的**那里-->
                <rotate degrees="90"/>
                <fill color="grey"/>
                <drawString x="2.65cm" y="-0.4cm">power by openERP</drawString>
                <fill color="black"/>
                <rotate degrees="-90"/>

                <!--page bottom--><!--这段是打印底下的页码和线,页码计算在这段代码里,自己写的rml代码可以参考这个-->
                <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines>
                <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm">
                    <para style="main_footer">[[ company.rml_footer ]]</para>
                    <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para>
                </place>
            </pageGraphics>
        </pageTemplate>
    </header>
    [/code]
    4.关于格式化.py文件
      这个文件我还没太弄懂,好像又称做解释器我只发我知道的,我看OE介绍,这个文件主要包括以下代码:
    [code]
      import time
    from report import report_sxw

    class order(report_sxw.rml_parse):
        def init(self, cr, uid, name, context):
            super(order, self).init(cr, uid, name, context)
            self.localcontext.update({
                'time': time,
            })

    report_sxw.report_sxw('report.sale.order', 'sale.order',
          'addons/sale/report/order.rml', parser=order, header=True)
    [/code]
        就写到这,关于如何调用数据库数据,等我弄明白了,再给大家写出来,好像得用python代码。
        承德-至阳



  • 写的不对的地方,请大家指正



  • 谢谢分享

    先顶再读



  • 向分享者致敬!



  • 赞......  支持分享....



  • 帮楼主加了 [code][/code] 标签,这样看起来清楚些。

    xml注释如果用 <!--  --> 这样双中划线括起来应该看起来更清晰些。



  • 再整理一下,一个rml表,主要包括以下几部分:

    第一部分:表的说明
    [code]
    <?xml version="1.0"?>
    <document filename="test.pdf">
      <template pageSize="(204.0,842.0)" title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20">
        <pageTemplate id="first">
          <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/>
        </pageTemplate>
      </template>
    [/code]
    第二部分 表的格式,包括每个表的格线等
    [code]
      <stylesheet>
        <blockTableStyle id="Standard_Outline">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
        </blockTableStyle>
        <blockTableStyle id="Table10">
          <blockAlignment value="LEFT"/>
          <blockValign value="TOP"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
          <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/>
          <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
        </blockTableStyle>
        <initialize>
          <paraStyle name="all" alignment="justify"/>
        </initialize>
        </stylesheet>
    [/code]
    第三部分,表格内容
    [code]
    <story>
        <blockTable colWidths="68.0,68.0,68.0">
          <tr>
            <td>
              <para>Description</para>
            </td>
            <td>
              <para>Qty</para>
            </td>
            <td>
              <para>Price</para>
            </td>
          </tr>
          <tr>
            <td>
              <para>[[ repeatIn(o.lines,'line') ]]</para>
              <para>[[ line.product_id.name ]]</para>
              <para>
                <font color="white"> </font>
              </para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para>
            </td>
            <td>
              <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para>
            </td>
          </tr>
        </blockTable>
      </story>
    </document>
    [/code]
    就是以上三部分控制着一个表格



  • 先占个座再慢慢拜读。。。。



  • 页眉页脚能通过rml文件直接修改吗


  • 管理员

    这里已经回复你了[url=http://shine-it.net/index.php/topic,2405.msg22901.html#new]http://shine-it.net/index.php/topic,2405.msg22901.html#new[/url]



  • 谢谢分享,还没到报表开发阶段呢,先mark



  • 刚接触没几天,正要修个页眉和页脚,看出来点思路来了,谢谢分享


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待