odoo-ImmobiliareM2/addons-custom/azienda_scadenze/models/azienda_deadline.py
2025-05-05 17:11:21 +02:00

72 lines
2.9 KiB
Python

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': '<p>Attività <b>%s</b> è in scadenza oggi o è già scaduta.</p>' % record.name,
'email_to': record.responsabile_id.partner_id.email,
}
self.env['mail.mail'].create(mail_values).send()