odoo_18_Education_management/models/school_student.py

53 lines
1.9 KiB
Python

from odoo import models, fields, api
from odoo.exceptions import UserError
class SchoolStudent(models.Model):
_name = 'school.student'
_description = 'Student'
application_id = fields.Many2one('school.application', string="Application", required=True)
# Use computed char field instead of invalid related field
student_id = fields.Char(string="Student ID", compute='_compute_student_id', store=True)
profile_photo = fields.Binary(related='application_id.image', string="Profile Photo", store=True)
student_name = fields.Char(related='application_id.name', string="Student Name", store=True)
school_id = fields.Many2one('res.company', string="School", default=lambda self: self.env.company)
enrollment_date = fields.Date(string="Enrollment Date")
class_name = fields.Selection([
('1', 'Class 1'),
('2', 'Class 2'),
('3', 'Class 3'),
('4', 'Class 4'),
('5', 'Class 5'),
('6', 'Class 6'),
('7', 'Class 7'),
('8', 'Class 8'),
('9', 'Class 9'),
('10', 'Class 10'),
('11', 'Class 11'),
('12', 'Class 12'),
], string="Class", required=True)
academic_year = fields.Char(string="Academic Year")
session_status = fields.Selection([
('active', 'Active'),
('completed', 'Completed'),
('suspended', 'Suspended')
], string="Session Status")
payment_term = fields.Char(string="Payment Term")
def action_generate_payment_slip(self):
return {
'type': 'ir.actions.act_window',
'name': 'Fee Slip',
'res_model': 'school.enrollment.fee.summary',
'view_mode': 'tree,form',
'domain': [('student_ref', '=', self.id)],
'target': 'current',
}
@api.depends('application_id')
def _compute_student_id(self):
for rec in self:
rec.student_id = str(rec.application_id.id) if rec.application_id else ''