2017-10-11 4 views
0

내 코드에 무슨 문제가 있습니까? 나는 두 개의 모델을 가지고 있는데, 하나는 payroll.adjustment이며, 이는 필자의 XML에서 모델을 사용했고 하나는 payroll.adjustment.lines이다. 내가해야 할 일은 employee_id 인 payroll.adjustment.lines의 필드에 도메인을 작성하는 것입니다. 여기에 제가하는 일이 있습니다.odoo 10에서 헤더에서 세부 사항까지 도메인을 작성하십시오.

<field name="employee_id" options="{'no_create': True}" domain=" 
[('address_id','=',company_id)]"/> 

하지만이 오류가 표시 평

from odoo import models, fields, api 
from odoo.exceptions import UserError, ValidationError 

class PayrollAdjustment(models.Model): 
    _name = 'payroll.adjustment' 
    _description ='Payroll Adjustment' 

    name = fields.Char(string="Name", related='doc_num') 
    doc_num = fields.Char(string="Document No.") 
    state = fields.Selection([('draft', 'Draft'), 
          ('confirm', 'Waiting for Approval'), 
          ('approved','Approved'), 
          ('void', 'Void')],default='draft') 
    company_id = fields.Many2one('res.partner',string="Company",domain=" 
    [('is_company','=',True)]") 
    date_from = fields.Date(string="Date From", required= True) 
    date_to = fields.Date(string="Date To", required= True) 
    adjustment_lines = 
    fields.One2many('payroll.adjustment.lines','adj_id',string="Adjustment 
    lines") 
    color = fields.Integer() 
    sample = fields.Many2one ('hr.employee') 

    @api.multi 
    def action_draft(self): 
     self.state = 'draft' 

    @api.multi 
    def action_confirm(self): 
     self.state = 'confirm' 

    @api.multi 
    def action_approve(self): 
     self.state = 'approved' 

    @api.multi 
    def action_void(self): 
     self.state = 'void' 

    @api.model 
    def create(self, vals): 
     vals['name'] = self.env['ir.sequence'].get('payroll.adj.seq') 

     return super(PayrollAdjustment, self).create(vals) 

class PayrollAdjustmentLines(models.Model): 
    _name = 'payroll.adjustment.lines' 
    _description = 'Payroll Adjustment Lines' 
    _inherit = ['mail.thread'] 

    employee_id = fields.Many2one('hr.employee',  
    string="Employee",required=True) 
    adjustment_for = fields.Many2one('hr.salary.rule', string="Adjustment 
    for",domain=[('appears_on_adj', '=', True)], required=True) 
    remarks = fields.Char(string="Remarks") 
    amount = fields.Float(string="Amount", default = 0.00) 
    adj_id = fields.Many2one('payroll.adjustment',string="Payroll 
    Adjustment",ondelete='cascade') 

내 코드 .XML에서

내 코드 "catch되지 않은 오류 : 나가서 설명하자면 NameError 이름 'COMPANY_ID은'정의되지 않은"

<record id="payroll_adjustment_form_view" model="ir.ui.view"> 
     <field name="name">payroll_adjustment.form</field> 
     <field name="model">payroll.adjustment</field> 
     <field name="arch" type="xml"> 
      <form> 
       <header> 
        <button name="action_draft" type="object" string="Set 
back to draft" states="confirm"/> 
        <button name="action_confirm" type="object" 
string="Confirm" states="draft" class="oe_highlight"/> 
        <button name="action_approve" type="object" 
string="Approve" states="confirm" class="oe_highlight" 
groups="hr_payroll.group_hr_payroll_manager"/> 
        <button name="action_void" type="object" string="Void" 
states="confirm,approved" class="oe_highlight" 
groups="hr_payroll.group_hr_payroll_manager"/> 
        <field name="state" widget="statusbar"/> 
       </header> 
       <sheet> 
        <div class="pull-left"> 
         <label for="doc_num" class="oe_edit_only oe_inline"/> 
         <h1> 
          <field name="doc_num" readonly="1"/> 
         </h1> 
        </div> 
        <group> 
         <label for="company_id"/> 
         <div> 
          <field name="company_id" class="oe_inline" 
attrs="{'readonly': [('state','not in',('draft'))]}"/> 
         </div> 

         <label for="date_from" string="Period"/> 
         <div> 
          <field name="date_from" class="oe_inline" 
attrs="{'readonly': [('state','not in',('draft'))]}"/> - 
          <field name="date_to" class="oe_inline" attrs=" 
{'readonly': [('state','not in',('draft'))]}"/> 
          <field name="sample" domain=" 
[('address_id','=',company_id)]"/> 
         </div> 
        </group> 
        <field name="adjustment_lines" attrs="{'readonly': 
[('state','not in',('draft'))]}" context="{'company': company_id }"> 
         <tree editable="1"> 
          <field name="employee_id" options="{'no_create': 
True}" domain="[('address_id','=',company_id)]"/> 
          <field name="adjustment_for" options=" 
{'no_create': True}"/> 
          <field name="amount"/> 
          <field name="remarks"/> 
         </tree> 
        </field> 
       </sheet> 
      </form> 
     </field> 
    </record> 

도와주세요. 미리 감사드립니다.

답변

1

'payroll.adjustment.lines'모델의 employee_id 필드에 도메인을 추가하고 있지만 'company_id'필드가 해당 모델에 없지만 상위 모델 'payroll.adjustment'에 있습니다.

그래서 당신은 다음과 같이 작성해야합니다 :

<field name="employee_id" options="{'no_create': True}" domain=" 
[('address_id','=',parent.company_id)]"/> 
+0

가 작동합니다. 고마워요 –

+0

안녕하세요/부인. payroll.adjustment의 트리 뷰에서 employee_id를 표시하려면 가능합니까? 무엇을 추가 할 수 있습니까? 맞습니까? ? –