Report 如何在报表上显示来自其他模型的数据(但没有ID相关)-OpenERP

Report 如何在报表上显示来自其他模型的数据(但没有ID相关)-OpenERP,report,openerp,rml,Report,Openerp,Rml,我在账户.发票模块上创建报告 我尝试显示一些数据表单sale.order 但是在账户中。发票表没有订单id(与id相关) 如果我想在账户.发票报表上显示一些数据表销售.订单,我该怎么办 但是没有与销售订单相关的id 因此,如果account.invoice有order\u id(id相关),我可以使用 [[o.order_id._____]] 有人能给我一些建议吗 这是我的密码 class order(report_sxw.rml_parse): def __init__(self,

我在
账户.发票
模块上创建报告 我尝试显示一些数据表单
sale.order
但是在
账户中。发票
表没有
订单id
(与id相关) 如果我想在
账户.发票
报表上显示一些数据表
销售.订单
,我该怎么办 但是没有与销售订单相关的id

因此,如果
account.invoice
order\u id
(id相关),我可以使用

[[o.order_id._____]]
有人能给我一些建议吗

这是我的密码

class order(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context=None):
        super(order,self).__init__(cr, uid, name, context=context)
        so_origin = self.pool.get('account.invoice').browse(cr, uid, uid)
        so_obj = self.pool.get('sale.order').browse(cr, uid, so_origin.id)
        self.localcontext.update({
                'order_id': so_obj.id
        })
在rml文件中

[[repeatIn(objects,'o')]]
[[o.order_id._______]]

只需编写一个设置销售订单浏览记录的方法,就可以按常规方式使用它

class invoice_parser(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context=None):
        super(invoice_parser,self).__init__(cr, uid, name, context=context)
        self.order = False

        def setOrder(invoice_id):
            self.order = False
            so_obj = self.pool.get('sale.order')
            so_list = so_obj.search(cr, uid, [('invoice_ids.id','=',invoice_id)], context=context)
            # big question: what should be done with more than one sale order found
            # easiest solution: return True only when one was found
            if len(so_list) == 1:
                self.order = so_obj.browse(cr, uid, so_list[0], context)
                return True
            else:
                return False

        def getOrder():
            return self.order

        self.localcontext.update({
                'setOrder': setOrder,
                'getOrder': getOrder,
        })
现在您可以使用:

[[ setOrder(o.id) and getOrder().name or ' ']]

或者你想做的任何事情。

我尝试“[[setOrder(o.id)和Order.name]]”你的建议不会显示在报告上,我也尝试“[[setOrder(o.id)]”它显示“True”应该做什么。True意味着找到了销售订单,但订单上没有显示任何内容。name则订单上没有名称。请改为尝试Order.id,每个销售订单都有一个id。我已经调试了self.Order,可以看到销售订单的id,但当我使用[[Order.id]]时,不会再次显示任何内容:'(首先我动态编码了它,但现在我测试了它。我将编辑我的答案。问题是self.Order的localcontext。