diff --git a/academy_management/__manifest__.py b/academy_management/__manifest__.py index 09304f5..e1ce385 100644 --- a/academy_management/__manifest__.py +++ b/academy_management/__manifest__.py @@ -18,7 +18,7 @@ Academy Management 'version': '0.1', # any module necessary for this one to work correctly - 'depends': ['base'], + 'depends': ['base', 'mail'], # always loaded 'data': [ @@ -29,6 +29,8 @@ Academy Management 'views/academy_schedule_views.xml', 'views/academy_student_views.xml', 'views/academy_teacher_views.xml', + 'data/email_template_reminder.xml', + 'data/scheduled_action_cron.xml', 'views/academy_menus.xml', ], } diff --git a/academy_management/data/email_template_reminder.xml b/academy_management/data/email_template_reminder.xml new file mode 100644 index 0000000..90a43b2 --- /dev/null +++ b/academy_management/data/email_template_reminder.xml @@ -0,0 +1,52 @@ + + + + + + Nhắc nhở lịch học + + [Nhắc nhở] Bạn có buổi học "{{ object.name }}" vào {{ object.date.strftime('%d/%m/%Y %H:%M') }} + {{ ','.join(object.student_ids.mapped('email'))}} + +

Chào bạn,

+

Đây là lời nhắc rằng bạn có buổi học sắp diễn ra với thông tin chi tiết như sau:

+ + + + + + + + + + + + + + + + + + + + + +
+ 📚 Tên lịch học: +
+ 🎓 Khóa học: +
+ 👨‍🏫 Giáo viên: +
+ 🗓️ Thời gian: + ngày
+ ⏳ Thời lượng: + tiếng
+

Vui lòng chuẩn bị đầy đủ tài liệu và tham gia đúng giờ nhé!

+

Trân trọng,

+

Phòng đào tạo

+
+
+
+ +
\ No newline at end of file diff --git a/academy_management/data/scheduled_action_cron.xml b/academy_management/data/scheduled_action_cron.xml new file mode 100644 index 0000000..6a41fd8 --- /dev/null +++ b/academy_management/data/scheduled_action_cron.xml @@ -0,0 +1,18 @@ + + + + + + Nhắc nhở lịch học + + code + model._send_reminder() + 1 + minutes + + + + + + + \ No newline at end of file diff --git a/academy_management/models/academy_schedule.py b/academy_management/models/academy_schedule.py index ac29922..d006025 100644 --- a/academy_management/models/academy_schedule.py +++ b/academy_management/models/academy_schedule.py @@ -1,4 +1,5 @@ from odoo import api, fields, models, _ +from datetime import timedelta class AcademySchedule(models.Model): _name = 'academy.schedule' @@ -15,10 +16,32 @@ class AcademySchedule(models.Model): ('confirmed', 'Xác nhận'), ('cancel', 'Đã hủy') ], string='Trạng thái', default='draft', required=True) + reminder_sent = fields.Boolean(string="Reminder Sent", default=False) def action_confirm(self): self.state = 'confirmed' def action_cancel(self): self.state = 'cancel' + + def _send_reminder(self): + now = fields.Datetime.now() + next_day = now + timedelta(days=1) + + sessions = self.search([ + ('state', '=', 'confirmed'), + ('date', '>=', now), + ('date', '<=', next_day), + ('reminder_sent', '=', False), + ]) + + template = self.env.ref('academy_management.email_template_reminder', raise_if_not_found=False) + if not template: + return + + for session in sessions: + if session.student_ids: + print(f'Gửi nhắc nhở lịch học: {session.name}') + template.send_mail(session.id, force_send=True) + session.reminder_sent = True \ No newline at end of file