This commit is contained in:
MicheleFerri 2025-05-05 17:15:57 +02:00
parent bff65b71a3
commit 2501b5ab0e
10 changed files with 0 additions and 157 deletions

View File

@ -1 +0,0 @@
from . import models

View File

@ -1,15 +0,0 @@
{
"name": "Scadenzario Aziendale",
"version": "1.0",
"depends": ["base", "mail"],
"author": "Custom",
"category": "Tools",
"description": "Gestione scadenze per attività relative a dipendenti e mezzi",
"data": [
"security/ir.model.access.csv",
"views/azienda_deadline_views.xml",
"data/azienda_deadline_cron.xml"
],
"installable": True,
"application": True
}

View File

@ -1,12 +0,0 @@
<odoo>
<record id="ir_cron_scadenze_notifiche" model="ir.cron">
<field name="name">Reminder Scadenze Aziendali</field>
<field name="model_id" ref="model_azienda_deadline"/>
<field name="state">code</field>
<field name="code">model._invio_notifiche_scadenze()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
</odoo>

View File

@ -1 +0,0 @@
from . import azienda_deadline

View File

@ -1,71 +0,0 @@
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()

View File

@ -1,2 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_azienda_deadline,access_azienda_deadline,model_azienda_deadline,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_azienda_deadline access_azienda_deadline model_azienda_deadline 1 1 1 1

View File

@ -1,55 +0,0 @@
<odoo>
<record id="view_azienda_deadline_tree" model="ir.ui.view">
<field name="name">azienda.deadline.tree</field>
<field name="model">azienda.deadline</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="riferimento_tipo"/>
<field name="dipendente_id"/>
<field name="mezzo_id"/>
<field name="scadenza"/>
<field name="frequenza"/>
<field name="stato"/>
</tree>
</field>
</record>
<record id="view_azienda_deadline_form" model="ir.ui.view">
<field name="name">azienda.deadline.form</field>
<field name="model">azienda.deadline</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="riferimento_tipo"/>
<field name="dipendente_id" attrs="{'invisible': [('riferimento_tipo', '!=', 'dipendente')]}"/>
<field name="mezzo_id" attrs="{'invisible': [('riferimento_tipo', '!=', 'mezzo')]}"/>
<field name="scadenza"/>
<field name="frequenza"/>
<field name="responsabile_id"/>
<field name="stato"/>
<field name="note"/>
</group>
<footer>
<button name="azione_completa_attivita" type="object" string="Segna come completata" class="btn-primary" attrs="{'invisible': [('stato','=','completato')]}"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="action_azienda_deadline" model="ir.actions.act_window">
<field name="name">Scadenzario</field>
<field name="res_model">azienda.deadline</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p>Crea e gestisci le attività aziendali in scadenza.</p>
</field>
</record>
<menuitem id="menu_scadenze_root" name="Scadenzario" sequence="10"/>
<menuitem id="menu_scadenze_attivita" name="Attività" parent="menu_scadenze_root" action="action_azienda_deadline" sequence="20"/>
</odoo>