From e1c687df876eaa970cb40393cb4443abcfbd0b77 Mon Sep 17 00:00:00 2001 From: Mqdd Date: Wed, 14 Jan 2026 18:55:22 +0700 Subject: add cron notification --- indoteknik_custom/models/gudang_service.py | 50 ++++++++++++++++++++++-------- indoteknik_custom/views/gudang_service.xml | 11 +++++++ 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/indoteknik_custom/models/gudang_service.py b/indoteknik_custom/models/gudang_service.py index d9b32e91..6944f169 100644 --- a/indoteknik_custom/models/gudang_service.py +++ b/indoteknik_custom/models/gudang_service.py @@ -19,22 +19,45 @@ class GudangService(models.Model): remaining_date = fields.Char('Remaining Date', compute='_compute_remaining_date') state = fields.Selection([('draft', 'Draft'), ('onprogress', 'On Progress'),('done', 'Done'), ('cancel', 'Cancel')], default='draft') - def _compute_remaining_date(self): - if self.state in ['done', 'cancel', 'draft']: + def _send_logistic_notification(self): + logistic_user = self.env.user.has_group('indoteknik_custom.group_role_logistic') + + if not logistic_user: return + for rec in self: - if rec.date: - rec.remaining_date = (datetime.now() - rec.date).days + for user in logistic_user: + self.env['mail.activity'].create({ + 'res_model_id': self.env['ir.model']._get_id('gudang.service'), + 'res_id': rec.id, + 'activity_type_id': self.env.ref('mail.mail_activity_data_todo').id, + 'user_id': user.id, + 'summary': 'Gudang Service On Progress', + 'note': _( + 'Gudang Service %s masih On Progress sejak %s' + ) % (rec.name, rec.date), + 'date_deadline': fields.Date.today(), + }) + + @api.model + def cron_notify_onprogress_gudang_service(self): + records = self.search([ + ('state', '=', 'onprogress') + ]) + + if records: + records._send_logistic_notification() + + + @api.depends('date', 'state') + def _compute_remaining_date(self): + today = fields.Date.today() + for rec in self: + if rec.state in ['done', 'cancel', 'draft'] or not rec.date: + rec.remaining_date = 0 + continue + rec.remaining_date = (today - rec.date.date()).days - def send_odoo_notification(self): - return { - 'type': 'ir.actions.act_window', - 'res_model': 'mail.message', - 'view_mode': 'form', - 'view_type': 'form', - 'res_id': self.message_ids[-1].id, - } - def action_submit(self): self.state = 'onprogress' # self.send_odoo_notification() @@ -50,6 +73,7 @@ class GudangService(models.Model): record.write({'state': 'draft'}) else: raise UserError("Hanya record yang di-cancel yang bisa dikembalikan ke draft") + def action_cancel(self): self.state = 'cancel' diff --git a/indoteknik_custom/views/gudang_service.xml b/indoteknik_custom/views/gudang_service.xml index ada1291b..97bb0227 100644 --- a/indoteknik_custom/views/gudang_service.xml +++ b/indoteknik_custom/views/gudang_service.xml @@ -81,4 +81,15 @@ action="action_gudang_service" /> + + + Gudang Service Daily Notification + + code + model.cron_notify_onprogress_gudang_service() + 1 + days + -1 + False + -- cgit v1.2.3