from odoo import models, fields, api, exceptions, _ class YuthonIndexApproval(models.Model): _name = 'yuthon.index.approval' _description = "组织指标库变更管理" _rec_name = 'name' _inherit = 'soong.workflow.mixin' name = fields.Char('标题') creation_time = fields.Datetime(string='申请日期', default=lambda self: fields.Datetime.now()) job_id = fields.Many2one('hr.job', string="岗位") reason_text = fields.Html(string='申请事由') change_index_library_ids = fields.One2many("yuthon.index.management",'change_index_library_id',string="组织指标库变更明细") new_index_library_ids = fields.One2many("new.index.management.line",'new_change_index_library_id',string="新组织指标库变更明细") @api.onchange('change_index_library_ids') def onchange_change_index_library_ids(self): new_lines = [] for old in self: for new in old.change_index_library_ids: new_lines.append((0, 0, { 'new_dimension': new.dimension, 'new_development_goals': new.development_goals, 'new_index_name': new.index_name, 'new_index_definition': new.index_definition, 'new_index_type': new.index_type, 'new_index_compute': new.index_compute, 'new_compute_type': new.compute_type, 'new_check_norm': new.check_norm, 'new_department_ids': new.department_ids, 'new_in_charge_role_ids': new.in_charge_role_ids, 'new_employee_id': new.employee_id, 'new_start_index_time': new.start_index_time, 'new_end_index_time': new.end_index_time, 'new_unit_compute': new.unit_compute, 'new_weight': new.weight, 'new_compute_method': new.compute_method, 'new_compute_act': new.compute_act, })) self.new_index_library_ids = new_lines class NewIndexManagement(models.Model): _name = 'new.index.management.line' _description = "新组织指标库变更明细" new_change_index_library_id = fields.Many2one('yuthon.index.approval',string="关联组织绩效指标库变更") new_dimension = fields.Char('维度', required=True) new_development_goals = fields.Char('发展目标', required=True) new_index_name = fields.Char('指标名称', required=True) new_index_definition = fields.Text('指标定义', required=True) new_index_type = fields.Selection([('kpi', 'KPI'), ('gs', 'GS'), ('refused_index', '否决指标'), ], '指标类别') new_index_compute = fields.Char('指标计算公式', required=True) new_compute_type = fields.Selection([('bad_index', '反向指标'), ('good_index', '正向指标'), ('two_index', '双向指标'), ], '计算类别') new_check_norm = fields.Char('考核标准', required=True) new_department_ids = fields.Many2many("hr.department", string="指标来源", required=True) new_in_charge_role_ids = fields.Many2many('soong.user.role', string='角色') new_employee_id = fields.Many2one('hr.employee', string="人员") new_start_index_time = fields.Date(string='生效时间', required=True) new_end_index_time = fields.Date(string='失效时间') new_unit_compute = fields.Char('计算单位') new_weight = fields.Char(string="权重%") new_compute_method = fields.Char(string="计算方法") new_compute_act = fields.Char(string="计划安排及具体措施/行动")