我希望在验证该发票后修改与发票相关的“SaleOrder”类中的“invoice_status”字段。
发票的验证在帐户模块内的“AccountInvoice”类中定义:
std::vector<float>
我意识到“SaleOrder”类中的“name”字段与“AccountInvoice”类中的“origin”字段有关。
所以,我修改了invoice_validate函数,如下所示:
@api.multi
def invoice_validate(self):
...
由于某种原因,写入parte不起作用。
这是SaleOrder类中“invoice_status”字段的官方定义:
@api.multi
def invoice_validate(self):
for invoice in self:
...
origin = self.origin
sale_order_id = self.env['sale.order'].search([('name', '=', origin)])[0].id
sale_order_obj = self.env['sale.order'].browse(sale_order_id)
sale_order_obj.write({'invoice_status': 'invoiced'})
return self.write({'state': 'open'})
答案 0 :(得分:1)
您无法设置invoice_status的值,因为它是计算字段。即使你设置了它的值,当它所依赖的字段被改变时它将被重新计算,并最终找到它应该具有的值 - 并写下该值而不是你的值。
Odoo使它成功(当订单开具发票时会开具发票)。所以我认为你不需要做它。如果你非常需要存储你的值,你应该更改该字段,以便不再计算它,或者创建另一个字段。
答案 1 :(得分:0)
检查Selection类的selection_add
属性。
如果要在选择字段中添加一些项目,则必须在继承自同一模型的另一个类中重新定义它,并将其声明为:
invoice_status = fields.Selection(selection_add=[("state", "open")])
检查Selection类文档并在代码库中搜索selection_add
以查看一些示例。