2014-11-05 4 views
0

base_report_designer 모듈이있는 OpenOffice에서 product 개체에 대한 새 보고서를 작성하고 있습니다.Report in OpenERP v7

모든 것이 좋아 보이지만 매번 내가 그것을 인쇄하려고,이 오류가 발생합니다 :

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>) 

당신이 실제로 대신 서버에 보내는 문서를 '저장'을 할 때 일반적으로 발생을하지만 난 해요

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 버전이) :하지 내가 product.product 모델을 사용하여 만든 날 파서를 사용하고, 그 일을, 그리고 그것을 작동합니다, 이건 내 파서입니다 :

[[ 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

o는 제품의 대상입니다. 제품의 가치를 얻을 수 있습니다. 예를 들면 [[o. name_template]] 제품 이름을 반환합니다. 당신이 사용하려는

[[o.product]하지만 product.product 객체에서 당신은 목록에있는

repeatIn 예를 들어 RML 루핑에 사용되는 더 필드 이름 제품들은 없다 record (one2many 필드) 여기 구문이 있습니다.

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

repeatIn
를 들어, 객체 (one2many)의 목록을 가지고 제대로 가치를 얻을 수있는 것보다 할 필요가있다.

희망이 도움이 될 것입니다.

+0

대단히 감사합니다! 매우 논리적 인 것 같습니다, 예, 지금 당장 시도하십시오! – NeoVe

+0

그래, 네가 맞아, 그 길을 따라야한다. 나는 일을 끝내기 위해 몇 가지 관계를 만들거야! 고마워요! – NeoVe