首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odoo 7 Webkit报表打印发票

Odoo 7 Webkit报表打印发票
EN

Stack Overflow用户
提问于 2015-10-29 14:02:59
回答 1查看 189关注 0票数 1

我尝试使用xmlrpclib打印基于Webkit模型的发票。

其目的是在另一个服务器上获得PDF发票。

我用标准PDF报告成功地做到了这一点:

代码语言:javascript
复制
printsock = xmlrpclib.ServerProxy(url+'/xmlrpc/report')
model = 'account.invoice'
id_report = printsock.report(dbname, uid, pwd, model, ids, {'model': model, 'id': ids[0], 'report_type':'pdf'})

我试试看没有任何效果.

代码语言:javascript
复制
printsock = xmlrpclib.ServerProxy(url+'/xmlrpc/report')
model = 'account.invoice'
id_report = printsock.report(dbname, uid, pwd, model, ids, {'model': model, 'report_type':'webkit', 'id':866, 'webkit_header':[2,"sale order"], 'report_name':'webkit.account.invoice'})

以前有人这么做过吗?

完整示例代码:

代码语言:javascript
复制
import sys
import time
import base64
import xmlrpclib
import imp

config = imp.load_source('config', '../config/config.py')

ref_facture = sys.argv[1]

username = config.ADMIN_USER #the user
pwd = config.ADMIN_PASSWORD     #the password of the user
dbname = config.DBNAME    #the database
url = config.URL

# Get the uid
sock_common = xmlrpclib.ServerProxy (url+'/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)

# Connection
sock = xmlrpclib.ServerProxy(url+'/xmlrpc/object')

args = [('number', '=', ref_facture)] #query clause
ids = sock.execute(dbname, uid, pwd, 'account.invoice', 'search', args)

# Service de reporting
printsock = xmlrpclib.ServerProxy(url+'/xmlrpc/report')
model = 'account.invoice'
id_report = printsock.report(dbname, uid, pwd, model, ids, {'model': model, 'report_type':'webkit', 'id':866, 'webkit_header':[2,"sale order"], 'report_name':'webkit.account.invoice'})
time.sleep(5)
state = False
attempt = 0
while not state:
    report = printsock.report_get(dbname, uid, pwd, id_report)
    state = report['state']
    if not state:
        time.sleep(1)
        attempt += 1
    if attempt>200:
        print 'Printing aborted, too long delay !'

    string_pdf = base64.decodestring(report['result'])
    file_pdf = open('/tmp/facture.pdf','w')
    file_pdf.write(string_pdf)
    file_pdf.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 11:27:05

经过多次测试,我找到了答案:

代码语言:javascript
复制
context = {'lang': 'fr_FR'}
id_report = printsock.report(dbname, uid, pwd, model, ids, {'model': model, 'report_type':'webkit', 'id':id_of_report, 'webkit_header':[id_of_webkit_header,"name_of_webkit_header"], 'report_name':'webkit.account.invoice', 'lang':'fr_FR','tz':'Europe/Paris'}, context)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33416371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档