Sélectionner une révision Git
hr_expense.py 2,73 Kio
# Copyright 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models, fields
from odoo.exceptions import UserError
class AdefpatHrExpense(models.Model):
_inherit = 'hr.expense'
proof_file = fields.Char("Justificatif")
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
def unlink(self):
for espense in self:
if espense.proof_file:
raise UserError(
"Un document est attaché à cette note de frais, "
"veuillez le supprimer avant de supprimer la note de frais.")
return super(AdefpatHrExpense, self).unlink()
# ------------------------------------------------------
# Button Function
# ------------------------------------------------------
@api.multi
def get_content_details_url(self):
# TODO: Refaire la fonction sans le type CMIS Folder
"""
Ouvre une nouvelle fenêtre avec le fichier
:return: ir.actions.act_url
"""
backend = self.env['cmis.backend'].search([], limit=1)
for expense in self:
if expense.proof_file:
properties = backend.get_cmis_repository().getFolder(
expense.proof_file).getProperties()
url = backend.get_content_details_url_from_props(properties)
return {
'type': 'ir.actions.act_url',
'url': url,
'target': 'new',
}
def delete_file(self):
backend = self.env['cmis.backend'].search([], limit=1)
try:
file = backend.get_cmis_repository().getObject(
self.proof_file
)
file.delete()
self.proof_file = False
except Exception as e:
self.proof_file = False
# raise UserError(json.loads(e.details).get('message'))
# ------------------------------------------------------
# Common Function
# ------------------------------------------------------
def get_file_properties(self):
# TODO: Renvoyer les propriétés Alfresco
"""
Ajoute les propriétés au dossier lors de la création dans Alfresco
"""
return {
'cmis:secondaryObjectTypeIds': ['P:adefpat:justificatif'],
'adefpat:justificatifDate': fields.Datetime.to_datetime(self.date).isoformat(),
'adefpat:justificatifTypeConvention': self.type_convention_id.name if self.type_convention_id.name else '',
'adefpat:justificatifUtilisateurs': self.employee_id.user_id.login
}