Python代码实现在线签名 - xiaohao0576/odoo-doc GitHub Wiki

Odoo有一个Sign模块,功能很实用,可以上传PDF文件作为模板,然后在模板上画出需要填写的栏目,比如文本、图片等,把模板通过邮件或者连接发送给相关人,就可以实现在线填写资料并签名了。

这个模块主要用于在线合同签订,通过一些Python代码自动化,也可以实现通过数据+模板的方式批量生成PDF文件。

下面是实现的代码

template = env['sign.template'].browse(4) # 模板文件
role = template.sign_item_ids.responsible_id
sign_items = template.sign_item_ids


sign_request = env['sign.request'].with_context(no_sign_mail=True).create({
    'template_id': template.id,
    'request_item_ids': [Command.create({'role_id': role.id, 'partner_id': env.user.partner_id.id})],
    'reference': 'VAT发票004',  #这个是生成的文件名
    'state': 'sent',
})

request_item = sign_request.request_item_ids[0].sudo() # 需要用超级权限才能模拟签名

item_values = []
for item in sign_items:
    item_values.append(Command.create({
        'sign_item_id':item.id,
        'value': '签署内容123'
    }))

request_item['sign_item_value_ids'] = item_values
request_item['state'] = 'completed'
sign_request['state'] = 'signed'

env["ir.config_parameter"].sudo().set_param("sign.use_custom_font", "Sun-ExtA") # 设置新字体,可生成中文

action = sign_request.get_completed_document()