odex30_standard/exp_employee_custody/models/employee_custody.py

92 lines
2.8 KiB
Python

from odoo import models, fields, api, _, exceptions
from odoo import SUPERUSER_ID
from odoo.exceptions import ValidationError
# from datetime import datetime , date
class EmployeeCustody(models.Model):
_name = 'custom.employee.custody'
_rec_name = 'employee_id'
_description = 'Employee custody'
_inherit = ['mail.thread', 'mail.activity.mixin']
current_date = fields.Date(default=lambda self: fields.Date.today())
from_hr_department = fields.Boolean()
employee_no = fields.Char(related="employee_id.emp_no", readonly=True)
note = fields.Text()
state = fields.Selection(selection=[
("draft", _("Draft")),
("submit", _("send")),
("direct", _("Direct Manager")),
("admin", _("Human Resources Manager")),
("approve", _("Warehouse Keeper")),
("done", _("Return Done")),
("refuse", _("Refuse"))
], default='draft')
# Relational fields
receiving_custody = fields.Many2one('hr.custody.receiving')
custody_line_ids = fields.One2many('employee.custody.line', 'employee_custody_line')
employee_id = fields.Many2one('hr.employee', 'Employee', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
department_id = fields.Many2one(related="employee_id.department_id", readonly=True)
job_id = fields.Many2one(related="employee_id.job_id", readonly=True)
country_id = fields.Many2one(related="employee_id.country_id", readonly=True)
company_id = fields.Many2one(related="employee_id.company_id", store=True)
def draft(self):
self.state = "draft"
def submit(self):
self.state = "submit"
def direct(self):
self.state = "direct"
def admin(self):
self.state = "admin"
def approve(self):
self.state = "approve"
def done(self):
self.state = "done"
def refuse(self):
self.state = "refuse"
def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid), ('state', '=', 'open')], limit=1)
if employee_id:
return employee_id.id
else:
return False
def unlink(self):
for i in self:
if i.state != 'draft':
raise ValidationError(_('You can not delete record in state not in draft'))
return super(EmployeeCustody, self).unlink()
# EmployeeCustody()
class EmployeeCustodyLine(models.Model):
_name = 'employee.custody.line'
name = fields.Char()
serial = fields.Char()
quantity = fields.Float()
receiving_quantity = fields.Float()
note = fields.Char()
receiving_date = fields.Date()
amount = fields.Float()
# Relational fields
employee_custody_line = fields.Many2one('custom.employee.custody') # Inverse field
# EmployeeCustodyLine()