从发票行树

时间:2016-04-18 06:57:55

标签: python python-2.7 openerp openerp-7

逗人!

我需要访问销售发票标题数据(即字段invoice_id)以默认发票行表树视图中字段(analytics_id)的另一个值。

我编写了以下代码来确定字段analytics_id的默认值,并在继承account.invoice.line的自定义类中实现它:

class my_account_invoice_line(osv.osv):
    _inherit = "account.invoice.line"

    def _default_analytics_id(self, cr, uid, context=None):
        if context is None:
            context = {}

        invoice_id = context.get('invoice_id', False)
        if invoice_id:
            inv_obj = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context)
            plan = inv_obj.plan_id
            return plan

        return False

    _defaults = {
        'analytics_id': _default_analytics_id,
        }

my_account_invoice_line()

令我惊讶的是,invoice_id字段在上下文中不可用(context.get('invoice_id', False)始终返回False),尽管已创建发票标题 且< em>有一个id。我确信,它必须以某种方式提供 - 只是想不出怎么做的。

你能指导我走向正确的方向吗?

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

民间,

最后我做到了 - 并在此记录我的结果,希望它可以帮助其他人解决这类问题。

需要通过相应XML文件中的context属性显式传递发票ID(或发票标题中的任何其他字段)。因此,我在继承的表单中修改了字段context的{​​{1}}属性,如下所示:

invoice_line

备注:<record model="ir.ui.view" id="view_custom_account_invoice_form_inherited"> <field name="name">account.invoice.form</field> <field name="model">account.invoice</field> <field name="type">form</field> <field name="inherit_id" ref="account.invoice_form" /> <field name="arch" type="xml"> <xpath expr="//field[@name='invoice_line']" position="attributes"> <attribute name="context">{'type': type, 'custom_field_id': custom_field_id}</attribute> </xpath> </field> </record> 是OpenERP 7中的标准值(请参阅文件context="{'type': type}")。

一旦完成此操作,发票行数据中的/addons/account/account_invoice_view.xml值就会在发票行中提供,您可以将其用于您的目的:

custom_field_id

此致

相关问题