광고 항목의 속성을 기반으로 구매 주문을 필터링하려고합니다. 예를 들어 product_type = 'X'인 광고 항목이있는 모든 구매 주문을보고 싶습니다.광고 항목 속성의 openerp 도메인 필터
<record id="po_x" model="ir.actions.act_window">
<field name="name">X Purchase Orders</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph,gantt</field>
<field name="domain">[('has_x_line','=',True)]</field>
<field name="context">{}</field>
</record>
product_type은 주문 행의 상속 된 버전에 추가 한 맞춤 입력란입니다.
class purchase_order_custom(osv.osv):
_name = 'purchase.order'
_inherit = 'purchase.order'
def linehasproducttype(self, cr, uid, ids, name, arg, context=None):
cur_obj={}
cur_obj=self.browse(cr, uid, ids, context=context)
for line in cur_obj.order_line:
if line.product_type == 'X':
return True
return False
_columns={
'has_x_line': fields.function(linehasproducttype, string="Has X Line", type='boolean', context={'pt':'X'})
}
purchase_order_custom()
2 질문 :
Q1. 위의 코드가 작동하지 않습니다. 즉, 실제로 원하는대로 필터링하지 않습니다. 무엇이 잘못 될 수 있습니까?
2. 나는 많은 제품 유형이 있고 나는 각 유형을위한 기능을 만드는 경향이 없다. 어떻게 든 논증을 전달하거나 내가하려는 것처럼이 목적을 위해 컨텍스트를 사용할 수 있습니까? 그렇다면 코드에서 어떻게 사용합니까?
덕분에
편집는 :
def linehasproducttype(self, cr, uid, ids, name, arg, context=None):
res = dict.fromkeys(ids, False)
for cur_obj in self.browse(cr, uid, ids, context=context):
res[cur_obj.id] = False
for line in cur_obj.order_line:
if line.product_type == 'X':
res[cur_obj.id] = True
return res
감사합니다 : 당신은 단지 당신의 행동이나 필터에서 다음과 같이 도메인 표현을 사용할 수 있어야합니다. 1. has_x_line에 대한 fields.function 호출에서 method = True를 추가했습니다. 2. 일련의 레코드 작업에 관해서, self.browse가 나에게 현재 레코드를 가져다 줄 경우가 아닌가? 3. 사전 반납을 친절하게 설명 할 수 있습니까? 중첩 된 for 루프일까요? 4. 거기에서 컨텍스트 값을 전달할 수 있도록 별도의 뷰를 갖습니다. 하지만 위의 코드 (has_x_line)가 작동하지 않는 컨텍스트 값을 전달합니까? 5. 다른 경우에는 필터가있는 일반 트리보기가 필요합니다. 이를위한 샘플 코드 링크를 가리 키십시오. 다시 한번 감사드립니다. –
내가 시도한 업데이트 된 코드는 편집을 참조하십시오. –
@RazaAli 추가 정보는 편집을 참조하십시오. v6.1에서 작업 하시겠습니까? 소스에 purchase_order_line.product_type 필드가 표시되지 않습니다. 당신이 필드를 추가 했습니까? 만약 필드의 유형이 무엇입니까? 그렇지 않으면 두 번째 코드 예제가 올바른 것 같습니다. – asdfsdfsdfsdfsd3232