如何解决如何将文档从 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 举报,一经查实,本站将立刻删除。