Odoo生成报价单 - xiaohao0576/odoo-doc GitHub Wiki
record.ensure_one()
order = record # 取出报价单
partner = order.partner_id # 取出报价单上的客户
company = partner.parent_id
template = env['sign.template'].browse(3) #通过id查找要使用的PDF模板
if not template:
raise UserError("找不到PDF模板文件!")
role = template.sign_item_ids.responsible_id
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': f'报价单-{record.id}', #这个是生成的文件名
'state': 'sent',
})
request_item = sign_request.request_item_ids[0].sudo() # 需要用超级权限才能模拟签名
item_values = [] #填空列表
# 添加客户姓名
if company:
# 添加公司名称
item_values.append(Command.create({
'sign_item_id': 13,
'value': company.name
}))
# 添加联系人名称
item_values.append(Command.create({
'sign_item_id': 14,
'value': partner.name
}))
# 添加公司地址
item_values.append(Command.create({
'sign_item_id': 15,
'value': company.contact_address
}))
else:
# 添加联系人名称
item_values.append(Command.create({
'sign_item_id': 14,
'value': partner.name
}))
# 添加客户购买原因
item_values.append(Command.create({
'sign_item_id': 16,
'value': order.x_purpose
}))
# 添加报价单号
item_values.append(Command.create({
'sign_item_id': 17,
'value': order.name
}))
# 添加报价日期
item_values.append(Command.create({
'sign_item_id': 18,
'value': order.create_date.strftime("%Y-%m-%d")
}))
#报价单明细行,第一行 ###########
try:
item = order.order_line[0]
# 添加产品描述
item_values.append(Command.create({
'sign_item_id': 20,
'value': item.name
}))
# 添加数量
item_values.append(Command.create({
'sign_item_id': 21,
'value': "1"
}))
# 添加单价
item_values.append(Command.create({
'sign_item_id': 22,
'value': f'$ {item.price_unit}'
}))
# 添加小计
item_values.append(Command.create({
'sign_item_id': 23,
'value': f'$ {item.price_subtotal}'
}))
except:
pass
#报价单明细行,第二行 ###########
try:
item = order.order_line[1]
# 添加产品描述
item_values.append(Command.create({
'sign_item_id': 24,
'value': item.name
}))
# 添加数量
item_values.append(Command.create({
'sign_item_id': 25,
'value': "1"
}))
# 添加单价
item_values.append(Command.create({
'sign_item_id': 26,
'value': f'$ {item.price_unit}'
}))
# 添加小计
item_values.append(Command.create({
'sign_item_id': 27,
'value': f'$ {item.price_subtotal}'
}))
except:
pass
#报价单明细行,第三行 ###########
try:
item = order.order_line[2]
# 添加产品描述
item_values.append(Command.create({
'sign_item_id': 28,
'value': item.name
}))
# 添加数量
item_values.append(Command.create({
'sign_item_id': 29,
'value': "1"
}))
# 添加单价
item_values.append(Command.create({
'sign_item_id': 30,
'value': f'$ {item.price_unit}'
}))
# 添加小计
item_values.append(Command.create({
'sign_item_id': 31,
'value': f'$ {item.price_subtotal}'
}))
except:
pass
# 添加税前总价
item_values.append(Command.create({
'sign_item_id': 32,
'value': order.amount_total
}))
# 添加税后总价
item_values.append(Command.create({
'sign_item_id': 33,
'value': order.amount_total
}))
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()