在OpenERP v7中报告问题

时间:2014-11-05 21:32:09

标签: python parsing openerp openoffice.org openerp-7

我正在base_report_designer对象上使用product模块从OpenOffice创建一个新报告。

一切似乎都没问题,但每当我尝试打印它时,都会抛出这个错误:

Field 'product' does not exist in object 'browse_record(product.product, 12)'

(<type 'exceptions.AttributeError'>, AttributeError(KeyError("Field 'product' does not exist in object 'browse_record(product.product, 12)'",),), <traceback object at 0xc2801e4>)

这通常发生在您实际“保存”文档而不是发送到服务器时,但我没有这样做,我正在使用我使用product.product模型制作的解析器,它应该工作,这是我的解析器:

import time
from openerp.report import report_sxw
class reporte_locacion(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
    super(reporte_locacion, self).__init__(cr, uid, name, context=context)
    self.localcontext.update({
         'time': time,
         'qty_total':self._qty_total
    })

def _qty_total(self, objects):
    total = 0.0
    uom = objects[0].product_uom.name
    for obj in objects:
        total += obj.product_qty
    return {'quantity':total,'uom':uom}


report_sxw.report_sxw(
'report.reporte.locacion',
'product.product',
'addons/stock/report/reporte_locacion.rml',
parser=reporte_locacion,
header='internal'
)

我的报告(sxw格式,它有.rml版本):

[[ repeatIn(objects,'o') ]] 
Stock Inventory

Inventory
Date
[[ o.name ]]
[[ formatLang(o.date,date_time=True) ]]

Location
Production Lot
Product 
Quantity
[[ repeatIn(o.product, 'p') ]]
[[ p.location_id.name ]]
[[ p.prod_lot_id  and p.prod_lot_id.name or '' ]]
[ [[ p.product_id.code ]] ] [[ p.product_id.name ]]
[[ formatLang(p.product_qty) ]] [[ p.product_uom.name ]]

Total:
[[ formatLang(qty_total(o.inventory_line_id)['quantity']) ]] [[ qty_total(o.inventory_line_id)['uom'] ]]

无法搞清楚,它应该循环product我不明白,任何想法?

如果您需要进一步说明,请提前告知我们,谢谢!

1 个答案:

答案 0 :(得分:1)

o是产品的对象。你可以获得产品的价值,例如[[o。 name_template]]它将返回产品名称。

您正尝试使用[[o.product]],但在product.product对象中,他们没有字段名 product

repeatIn 用于在RML中循环,例如你必须列出记录(one2many字段),这里是语法。

[[ repeatIn(o.one2many_field_name, 'p') ]]

对于 repeatIn ,您需要拥有对象列表(one2many),而不是正确获取值。

希望这会对你有所帮助。