72 lines
2.9 KiB
Python
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()
|