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

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

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

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

【开发】Report_Webkit 报表制作方法



  • 目录:
    [list type=decimal]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29342]开发目标[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29343]实现步骤[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29346]总结及代码下载[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29348]关于打印条码的问题[/url][/li]
    [/list]



  • 目录:
    [list type=decimal]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29342]开发目标[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29343]实现步骤[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29346]总结及代码下载[/url][/li]
    [li][url=http://shine-it.net/index.php/topic,16705.msg29343.html#msg29348]关于打印条码的问题[/url][/li]
    [/list]



  • (1) 在系统用户(设置/用户/用户)列表界面和表单界面,可以打印用所所有的权限组及访问数据库表的权限请单(样式见附件)
    (2)采用Webkit引擎实现



  • (1)在“addons” 目录新建一个目录,命名为:“report_webkit_demo”
    (2)添加两个文件
            ----    init.py
            ----    openerp.py

    init.py (不添加内容)
    openerp.py (按odoo模块要求添加)
    [code]{
        'name': 'webkit report demo',
        'version': '1.1',
        'author': '',
        'summary': 'webkit, report, demo',
        'description': """
    webkit report demo
    ==============================================================
        """,
        'website': '',
        'images': [],
        'depends': ['report_webkit'],
        'category': '',
        'sequence': 16,
        'demo': [
        ],
        'data': [
        ],
        'test': [
        ],
        'installable': True,
        'application': True,
        'auto_install': False,
        'qweb': [],
    }[/code]
    (3)以上为odoo模块所要求的最基础两个文件,建立完成后可,更新“模块列表”,然后进行安装,如无问题进入下一步。



  • 步骤1的基础上

    (1)在"report_webkit_demo"目录下建立子文件夹“report”
    (2)在“report”文件夹下建立始下代码文件:
    init.py :  空

    webkit_report_demo.mako 报表模板文件

    [code]
    <!DOCTYPE html>
    <html>
    <head>
        <style type="text_css">${css}</style>
    </head>
    <body>
        % for user in objects:
        <h1>${user.name} Access Informations:</h1>
        % for group in user.groups_id:
    <h2>Group Name:${group.name}</h2>
        <table border="1" width="100%">
        <tr>
        <th width="40%">Model</th>
    <th>Read</th>
    <th>write</th>
    <th>Create</th>
    <th>Delete</th>
    </tr>
        % for access in group.model_access:
        <tr>
            <td>${access.model_id.name}</td>
    <td>${access.perm_read}</td>
    <td>${access.perm_write}</td>
    <td>${access.perm_create}</td>
    <td>${access.perm_unlink}</td>
        </tr>
    % endfor
    </table>
    % endfor
        % endfor

        <p>The administrator name is: ${admin_name}</p>
        <p>If this report does not contain headers, it is because you have a badly compiled wkhtmltopdf. Consider installing
            the static version distributed on the official web site: <a href="https://code.google.com/p/wkhtmltopdf/">https://code.google.com/p/wkhtmltopdf/</a>.</p>
    </body>
    </html>
    [/code]

    webkit_report_demo.py :报表数据准备代码,非必须(本DEMO中只为说明如何使用,加入了个简单的例子)
    [code]
    from openerp.addons.report_webkit.webkit_report import webkit_report_extender
    from openerp import SUPERUSER_ID

    @webkit_report_extender("report_webkit_demo.webkit_demo_report_users")
    def extend_demo(pool, cr, uid, localcontext, context):
        admin = pool.get("res.users").browse(cr, uid, SUPERUSER_ID, context)
        localcontext.update({
            "admin_name": admin.name,
        })
    [/code]

    webkit_report_demo.xml  :在“用户”增加界面菜单,并关联报表模板

    [code]
    <?xml version="1.0" encoding="utf-8"?>
    <openerp>
        <data>

            <report string="Report on users"
                id="webkit_demo_report_users"
                model="res.users"
                name="webkit.res.users.report.xml"
                file="report_webkit_demo/report/webkit_report_demo.mako"
                report_type="webkit"/>
               
        </data>
    </openerp>
    [/code]




  • 在步骤2的基础上:
    (1)更新report_webkit_demo/report/init.py文件
    [code]
    import webkit_report_demo
    [/code]
    (2)更新report_webkit_demo/init.py文件
    [code]
    import report
    [/code]
    (3)更新report_webkit_demo/openerp.py文件  : 将 "report/webkit_report_demo.xml"文件加入,在模块安装或更新时,对该文件加载。
    [code]{
        'name': 'webkit report demo',
        'version': '1.1',
        'author': 'lihaihe@hotmail.com',
        'summary': 'webkit, report, demo',
        'description': """
    webkit report demo
    ==============================================================
        """,
        'website': '',
        'images': [],
        'depends': ['report_webkit'],
        'category': '',
        'sequence': 16,
        'demo': [
        ],
        'data': [
        "report/webkit_report_demo.xml",
        ],
        'test': [
        ],
        'installable': True,
        'application': True,
        'auto_install': False,
        'qweb': [],
    }[/code]
    (4)进入设置>本地模块,找到report_webkit_demo模块,对其更新。
    (5)进入设置>用户>用户,选择用户进行打印,或进入表单界面进行打印。



  • (1)DEMO模块下载地址:请在附件下载测试
    (2)在Odoo 8.0版本和master版本下测试通过
    (3)关于mko文件中加入中文件报错的解决办法:
    http://shine-it.net/index.php/topic,16668.msg29220.html#msg29220
    (3)代码参考report_webkit模块的demo代码


    全文完!欢迎讨论。



  • 目前Report_webkit,本身没有生产条码的功能,查了一些资料,如果想打印条码有以下几种方法:
    (1)采用条码字体的方式
    (2)在数据库里建一个函数类型的二进制字段,将生成的条码图像存进去,然后以图片的方式在MaKO文件调用
    (3)在做报表打印的数据准备时,生成条码图片,然后在MaKO文件调用


登录后回复
 

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