commit bff65b71a341f42dc95fdb8b47eb825d839902b1 Author: MicheleFerri Date: Mon May 5 17:11:21 2025 +0200 init diff --git a/addons-custom/azienda_scadenze/__init__.py b/addons-custom/azienda_scadenze/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/addons-custom/azienda_scadenze/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/addons-custom/azienda_scadenze/__manifest__.py b/addons-custom/azienda_scadenze/__manifest__.py new file mode 100644 index 0000000..951dd66 --- /dev/null +++ b/addons-custom/azienda_scadenze/__manifest__.py @@ -0,0 +1,15 @@ +{ + "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 +} diff --git a/addons-custom/azienda_scadenze/__pycache__/__init__.cpython-312.pyc b/addons-custom/azienda_scadenze/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..2e93851 Binary files /dev/null and b/addons-custom/azienda_scadenze/__pycache__/__init__.cpython-312.pyc differ diff --git a/addons-custom/azienda_scadenze/data/azienda_deadline_cron.xml b/addons-custom/azienda_scadenze/data/azienda_deadline_cron.xml new file mode 100644 index 0000000..aeca291 --- /dev/null +++ b/addons-custom/azienda_scadenze/data/azienda_deadline_cron.xml @@ -0,0 +1,12 @@ + + + Reminder Scadenze Aziendali + + code + model._invio_notifiche_scadenze() + 1 + days + -1 + True + + diff --git a/addons-custom/azienda_scadenze/models/__init__.py b/addons-custom/azienda_scadenze/models/__init__.py new file mode 100644 index 0000000..5383133 --- /dev/null +++ b/addons-custom/azienda_scadenze/models/__init__.py @@ -0,0 +1 @@ +from . import azienda_deadline diff --git a/addons-custom/azienda_scadenze/models/__pycache__/__init__.cpython-312.pyc b/addons-custom/azienda_scadenze/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..d273e04 Binary files /dev/null and b/addons-custom/azienda_scadenze/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/addons-custom/azienda_scadenze/models/__pycache__/azienda_deadline.cpython-312.pyc b/addons-custom/azienda_scadenze/models/__pycache__/azienda_deadline.cpython-312.pyc new file mode 100644 index 0000000..957b5ec Binary files /dev/null and b/addons-custom/azienda_scadenze/models/__pycache__/azienda_deadline.cpython-312.pyc differ diff --git a/addons-custom/azienda_scadenze/models/azienda_deadline.py b/addons-custom/azienda_scadenze/models/azienda_deadline.py new file mode 100644 index 0000000..54afa5e --- /dev/null +++ b/addons-custom/azienda_scadenze/models/azienda_deadline.py @@ -0,0 +1,71 @@ +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() diff --git a/addons-custom/azienda_scadenze/security/ir.model.access.csv b/addons-custom/azienda_scadenze/security/ir.model.access.csv new file mode 100644 index 0000000..c69d96f --- /dev/null +++ b/addons-custom/azienda_scadenze/security/ir.model.access.csv @@ -0,0 +1,2 @@ +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 diff --git a/addons-custom/azienda_scadenze/views/azienda_deadline_views.xml b/addons-custom/azienda_scadenze/views/azienda_deadline_views.xml new file mode 100644 index 0000000..225a0c3 --- /dev/null +++ b/addons-custom/azienda_scadenze/views/azienda_deadline_views.xml @@ -0,0 +1,55 @@ + + + azienda.deadline.tree + azienda.deadline + tree + + + + + + + + + + + + + + + azienda.deadline.form + azienda.deadline + +
+ + + + + + + + + + + + +
+
+
+
+
+
+ + + Scadenzario + azienda.deadline + tree,form + +

Crea e gestisci le attività aziendali in scadenza.

+
+
+ + + +
diff --git a/addons-custom/progetto-custom/__init__.py b/addons-custom/progetto-custom/__init__.py new file mode 100644 index 0000000..9a7e03e --- /dev/null +++ b/addons-custom/progetto-custom/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/addons-custom/progetto-custom/__manifest__.py b/addons-custom/progetto-custom/__manifest__.py new file mode 100644 index 0000000..46e802d --- /dev/null +++ b/addons-custom/progetto-custom/__manifest__.py @@ -0,0 +1,15 @@ +{ + 'name': ' POLO Project Task Codici', + 'version': '1.0', + 'summary': 'Aggiunge codici personalizzati alle task di progetto', + 'description': 'Aggiunge i campi x_pi_codTec e x_pi_codParl al modello project.task', + 'author': 'Tuo Nome', + 'category': 'Project', + 'depends': ['project'], + 'data': [ + 'views/project_task_views.xml', + ], + 'installable': True, + 'application': False, + 'auto_install': False, +} diff --git a/addons-custom/progetto-custom/__pycache__/__init__.cpython-312.pyc b/addons-custom/progetto-custom/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..3c6020a Binary files /dev/null and b/addons-custom/progetto-custom/__pycache__/__init__.cpython-312.pyc differ diff --git a/addons-custom/progetto-custom/models/__init__.py b/addons-custom/progetto-custom/models/__init__.py new file mode 100644 index 0000000..cfd8e16 --- /dev/null +++ b/addons-custom/progetto-custom/models/__init__.py @@ -0,0 +1 @@ +from . import project_task \ No newline at end of file diff --git a/addons-custom/progetto-custom/models/__pycache__/__init__.cpython-312.pyc b/addons-custom/progetto-custom/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..83b11a6 Binary files /dev/null and b/addons-custom/progetto-custom/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/addons-custom/progetto-custom/models/__pycache__/project_task.cpython-312.pyc b/addons-custom/progetto-custom/models/__pycache__/project_task.cpython-312.pyc new file mode 100644 index 0000000..a5fb254 Binary files /dev/null and b/addons-custom/progetto-custom/models/__pycache__/project_task.cpython-312.pyc differ diff --git a/addons-custom/progetto-custom/models/project_task.py b/addons-custom/progetto-custom/models/project_task.py new file mode 100644 index 0000000..e1b9c17 --- /dev/null +++ b/addons-custom/progetto-custom/models/project_task.py @@ -0,0 +1,7 @@ +from odoo import models, fields + +class ProjectTask(models.Model): + _inherit = 'project.task' + + x_pi_codTec = fields.Char(string="Codice Tecnico") + x_pi_codParl = fields.Char(string="Codice Parlante") diff --git a/addons-custom/progetto-custom/views/project_task_views.xml b/addons-custom/progetto-custom/views/project_task_views.xml new file mode 100644 index 0000000..ee41b97 --- /dev/null +++ b/addons-custom/progetto-custom/views/project_task_views.xml @@ -0,0 +1,13 @@ + + + project.task.form.codici + project.task + + + + + + + + +