微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将文档从 Odoo 中的向导附加到员工?

如何解决如何将文档从 Odoo 中的向导附加到员工?

我扩展了 hr 模块以在“员工”表单中按下“存档”按钮时显示一个向导。该表格旨在向员工添加一些信息,包括一些文件。正如您在下一个代码中看到的,当从向导调用“action_cancel”方法时,“hr.cancelation_wizard”向员工添加“date_cancel”、“reason”和“documents_cancel_ids”(向导表单中的按钮调用方法) )。但是当按下该按钮时,它会显示以下错误

2021-03-10 17:11:15,187 7702 ERROR odoo12 odoo.sql_db: bad query: INSERT INTO "hr_cancel_document" ("id","create_uid","create_date","write_uid","write_date","attachment_id","employee_id","user_id") VALUES (nextval('hr_cancel_document_employee_id_fkey'),2,(Now() at time zone 'UTC'),699,63,2) RETURNING id
ERROR: insert or update on table "hr_cancel_document" violates foreign key constraint "hr_cancel_document_employee_id_fkey"
DETAIL:  Key (employee_id)=(63) is not present in table "hr_employee".

这是我的代码

class UtepdaHr(models.Model):
    _inherit = 'hr.employee'

    documents_cancel_ids = fields.One2many('hr.cancel_document','employee_id',string="Documents")
    date_cancel = fields.Date(string="Cancelation Date",required=True)
    reason = fields.Selection(selection=[
        ('cancelation','Cancelation'),('resign','Resign'),('passing','Passed away'),],required=True,string="Cancelation reason")

    @api.multi
    def toggle_active(self):
        self.ensure_one()
        if self.active==True:
            return {
                'name': 'Cancel employee','res_model': 'hr.cancelacion_wizard','view_mode': 'form','target': 'new','context': {
                    'default_employee_id': self.id
                },'type': 'ir.actions.act_window',}
        else:
            self.active = True
            self.reason= False
            self.date_cancel= False
            self.documents_cancel_ids = [(6,[])]
            return True

class CancelationDocument(models.Model):
    _name = 'hr.cancel_document'
    _description = 'Save some documents when the employeed leaves the company'

    _inherits = {'ir.attachment': 'attachment_id'}

    user_id = fields.Many2one('res.users','Uploaded by',default=lambda self: self.env.user)
    
    employee_id = fields.Many2one('hr.employee',string="Employee",ondelete="cascade")


    @api.model
    def create(self,vals):

        if 'user_id' not in vals:
            vals['user_id'] = self.env.user.id
        return super(CancelationDocument,self).create(vals)

    @api.onchange('datas_fname')
    def _change_tipo(self):
        self.name = self.datas_fname


class UtepdaHrCancelacionWizard(models.TransientModel):
    _name = 'hr.cancelation_wizard'
    _description = 'Wizard intended to add some information to an Employee'

    employee_id = fields.Many2one('hr.employee')
    date_cancel = fields.Date(string="Cancelation Date",string="Cancelation reason")

    documentw_ids = fields.One2many(
        'hr.cancel_document',realted="employee_id.documents_cancel_ids")

    def action_cancel(self):
        if self.date_cancel and self.reason: 
            vals = {}

            vals['date_cancel'] = self.date_cancel
            vals['reason'] = self.reason
            vals['active'] = False
            if vals:
                self.empleado_id.write(vals)
                message="You deactivated the employee"
                self.empleado_id.message_post(body=message,subtype="mail.mt_note")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。