2016-12-16 8 views
0

one2many 필드에서 레코드를 생성하는 동안 여러 필드의 기본값을 설정하려는 경우 기본값은 상위 모델에서 가져옵니다.one2many 필드에서 레코드를 생성하는 동안 기본값 설정 - odoo

Odoo 모델 구조

class purchase_order(models.Model): 
    _inherit='purchase.order' 

    cash_forecast_ids = fields.One2many(comodel_name='cash.forecast', inverse_name='purchase_order_id', string='Payment Schedules') 


class cash_forecast(models.Model): 
    _name='cash.forecast' 

    purchase_order_id = fields.Many2one(comodel_name='purchase.order', string='PO', select=True, copy=False) 
    foreign_currency_amount = fields.Float("Foreign Currency Amount", copy=False) 
    currency_id = fields.Many2one(comodel_name="res.currency", string="Currency", copy=False) 
    company_id = fields.Many2one(comodel_name='res.company', string='Company') 

문제 : 지금 제가하고 싶은 것은 내가 현금 예측 기록이 될 것입니다 동안 구매 주문에서 통화 및 회사를 설정할이다 PO 양식보기에서 생성되었지만이를 수행하는 방법을 모르겠습니다.

참고 : 나는 할 수 걸릴 통화 또는 관련 회사의 필드 또는 회사와 통화를 수동으로 입력해야하는 몇 가지 다른 경우가 있기 때문에 기능과 그 어떤 PO 참조에 가 설정됩니다하지 오전.

내가 그 경우에 무엇을해야

<page string="Deliveries &amp; Invoices" position="after"> 
    <page string="Payment Scedule"> 
     <field name="cash_forecast_ids" attrs="{'readonly' : [('state','in',['done','cancel'])]}"> 
      <tree string="Payment Scedule" editable="bottom"> 
       <field name="name"/> 
       <field name="cash_forecast_type_id" required="1" domain="[('add_to_po_payment_schedule','=',True)]" /> 
       <field name="note" /> 
       <field name="forecast_date" /> 
       <field name="period_id" required="1" /> 
       <field name="foreign_currency_amount" required="1" /> 
       <field name="currency_id" required="1" /> 
       <field name="purchase_order_id" invisible="1"/> 
       <field name="company_id" required="1" /> 
      </tree> 
     </field> 
    </page> 
</page> 

어느 한 날을 제안 할 수 PO 양식보기?

답변

1

나는 그것을하는 방법을 얻었다. 값 : one2many 필드에서 레코드를 추가하는 동안 직접 기본 값을 설정하기 위해

, 우리는 접두사 default_field_name와 컨텍스트의 값을 설정해야합니다.

문맥 = "{ 'default_currency_id', 'default_company_id'currency_id : COMPANY_ID}"

을 참고 : one2many 가치를 제공하는 경우 그 새로운 기록에 새로운 기록 및 을 만드는 동안 active_id을 사용할 수 없습니다 그러면 활성 ID가 모델에 없습니다. 상위 레코드를 저장 한 후에 만 ​​액세스 할 수 있습니다.

솔루션 :

<field name="cash_forecast_ids" context="{'default_currency_id' : currency_id, 'default_company_id' : company_id}"> 
    <tree string="Payment Scedule" editable="bottom"> 
     <field name="name"/> 
     <field name="forecast_date" /> 
     <field name="foreign_currency_amount" required="1" /> 
     <field name="currency_id" domain="[('id','=',parent.currency_id)]" required="1" /> 
     <field name="purchase_order_id" invisible="1"/> 
     <field name="company_id" domain="[('id','=',parent.company_id)]" required="1" /> 
    </tree> 
</field> 

당신이 one2many 모델의 분야에서 당신은 당신이 다음과 같은 방법으로 그것을 할 수 상위 모델의 값을 사용하고자한다는 점에서 도메인을 추가 할 경우.

<field name="company_id" domain="[('id','=',parent.company_id)]" />