from odoo import models, fields, api from datetime import timedelta class AziendaDeadline(models.Model): _name = 'azienda.deadline' _description = 'Scadenzario Attività Aziendali' _inherit = ['mail.thread', 'mail.activity.mixin'] name = fields.Char(string="Nome Attività", required=True) riferimento_tipo = fields.Selection([ ('dipendente', 'Dipendente'), ('mezzo', 'Mezzo Aziendale') ], string="Tipo Riferimento", required=True) dipendente_id = fields.Many2one('hr.employee', string="Dipendente") mezzo_id = fields.Char(string="Identificativo Mezzo") scadenza = fields.Date(string="Data Scadenza", required=True) frequenza = fields.Selection([ ('una_volta', 'Una volta'), ('mensile', 'Mensile'), ('trimestrale', 'Trimestrale'), ('annuale', 'Annuale') ], string="Frequenza", default='una_volta') note = fields.Text(string="Note") stato = fields.Selection([ ('bozza', 'Bozza'), ('pianificato', 'Pianificato'), ('completato', 'Completato') ], string="Stato", default='bozza', tracking=True) responsabile_id = fields.Many2one('res.users', string="Responsabile", default=lambda self: self.env.user) @api.onchange('riferimento_tipo') def _onchange_riferimento_tipo(self): if self.riferimento_tipo == 'dipendente': self.mezzo_id = False else: self.dipendente_id = False def azione_completa_attivita(self): for record in self: if record.frequenza == 'mensile': nuova_data = record.scadenza + timedelta(days=30) elif record.frequenza == 'trimestrale': nuova_data = record.scadenza + timedelta(days=90) elif record.frequenza == 'annuale': nuova_data = record.scadenza + timedelta(days=365) else: nuova_data = False record.write({ 'stato': 'completato', 'scadenza': nuova_data if nuova_data else record.scadenza }) def _invio_notifiche_scadenze(self): today = fields.Date.today() da_notificare = self.search([ ('scadenza', '<=', today), ('stato', 'in', ['bozza', 'pianificato']) ]) for record in da_notificare: if record.responsabile_id: record.message_post( body="Attività in scadenza: %s" % record.name, partner_ids=[record.responsabile_id.partner_id.id] ) mail_values = { 'subject': 'Promemoria attività in scadenza', 'body_html': '
Attività %s è in scadenza oggi o è già scaduta.
' % record.name, 'email_to': record.responsabile_id.partner_id.email, } self.env['mail.mail'].create(mail_values).send()