diff --git a/models/account.py b/models/account.py index b7d3f74cee0516b3235078ab5d99e425874bde27..558a1511d5e5a2fe4e734f02e3145b9190471daa 100644 --- a/models/account.py +++ b/models/account.py @@ -68,12 +68,21 @@ class AccountInvoice(models.Model): """ if self.task_ids: task_start = self.task_ids.sorted(key=lambda r: r.date_deadline)[0].date_deadline + if task_start: + start_date = fields.Datetime.to_datetime(task_start).isoformat() + else: + start_date = "" task_end = self.task_ids.sorted(key=lambda r: r.date_deadline, reverse=True)[0].date_deadline + if task_end: + end_date = fields.Datetime.to_datetime(task_end).isoformat() + else: + end_date = "" return { 'cmis:secondaryObjectTypeIds': ['P:adefpat:facture'], - 'adefpat:factureStartDate': fields.Datetime.to_datetime(task_start).isoformat(), - 'adefpat:factureEndDate': fields.Datetime.to_datetime(task_end).isoformat(), + 'adefpat:factureStartDate': start_date, + 'adefpat:factureEndDate': end_date, 'adefpat:factureTypeConvention': self.type_convention_id.name or "", + 'adefpat:factureProjet': self.project_id.name or "", } else: return { diff --git a/models/hr_expense.py b/models/hr_expense.py index be52f5245968278a5699ee88e3085ad506fba5ec..1fa3b58f466cf698083e74eb5983a6d8671ab546 100644 --- a/models/hr_expense.py +++ b/models/hr_expense.py @@ -1,8 +1,16 @@ # Copyright 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import logging + from odoo import api, models, fields -from odoo.exceptions import UserError +from odoo.exceptions import UserError, ValidationError +from cmislib.exceptions import ContentAlreadyExistsException, \ + ObjectNotFoundException, UpdateConflictException, InvalidArgumentException + +_logger = logging.getLogger(__name__) + +ALFRESCO_TRACKED_FIELDS = ['type_convention_id', 'date', 'employee_id'] class AdefpatHrExpense(models.Model): @@ -14,6 +22,40 @@ class AdefpatHrExpense(models.Model): # ------------------------------------------------------ # Override ORM # ------------------------------------------------------ + @api.multi + def write(self, vals): + """ Surcharge la fonction write() pour mettre à jour + le type de convention, la date et l'utilisateur + """ + # Ecriture des nouvelles valeurs + result = super(AdefpatHrExpense, self).write(vals) + change_fields = vals.keys() + # check intersection + is_alfresco_field = [ + value for value in change_fields if value in ALFRESCO_TRACKED_FIELDS] + + # Check des modifications sur les coopératives présentes dans RIGA + for record in self: + if record.proof_file: + if is_alfresco_field: + try: + properties = self.get_file_properties() + backend = self.env['cmis.backend'].search([], limit=1) + file = backend.get_cmis_repository().getObject( + self.proof_file + ) + file.updateProperties(properties) + except (ContentAlreadyExistsException, ObjectNotFoundException, + UpdateConflictException, InvalidArgumentException) as e: + _logger.error(e) + raise ValidationError("""Erreur de mise à jour Alfresco : + - Code : %s + - Url : %s + - Détail : %s""" % (e.status, e.url, e.details)) + except Exception as e: + raise ValidationError(e) + return result + @api.multi def unlink(self): for espense in self: diff --git a/wizard/adefpat_project_justif_zip_wizard.py b/wizard/adefpat_project_justif_zip_wizard.py index c54c5712e4f37be12ee0061ab9cc899d892935ff..04ff52fa7c2e1b880ab587b6584c0e9b2b05e027 100644 --- a/wizard/adefpat_project_justif_zip_wizard.py +++ b/wizard/adefpat_project_justif_zip_wizard.py @@ -72,7 +72,7 @@ class AdefpatProjectJustifZip(models.TransientModel): json_file = [] for project in project_ids: compteur += 1 - proj = project.name.replace(" ", "_x0020_") + proj = project.name.replace(" ", "_x0020_").replace("'", "_x0027") path = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Projets/cm:" + proj json_file.append({ "id": bilan_nb + str(compteur), @@ -133,6 +133,18 @@ class AdefpatProjectJustifZip(models.TransientModel): "query": path + "/cm:admin//*'" + " AND (=adefpat:typeDocument:'convention d'accompagnement' OR =adefpat:typeDocument:'convention d'objectif')", }, }, + { + "id": bilan_nb + str(compteur) + "7", + "name": "Factures Fournisseurs", + "description": "Factures Fournisseurs", + "search": { + "language": "fts-alfresco", + "query": "(PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Factures_x0020_fournisseurs//*') AND (+adefpat:factureEndDate:['" + str( + self.period_start) + "' TO '" + str( + self.period_end) + "'] OR +adefpat:factureSartDate:['" + str( + self.period_start) + "' TO '" + str(self.period_end) + "']) AND =adefpat:factureProjet:'"+ project.name +"'", + }, + }, ]}) virtual_json = { @@ -234,7 +246,7 @@ class AdefpatProjectJustifZip(models.TransientModel): if self.type_convention_id: query = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Justificatifs//*' AND =adefpat:justificatifUtilisateurs:'" + user.login + "' AND (+adefpat:justificatifDate:['" + str( self.period_start) + "' TO '" + str( - self.period_end) + "']) AND =adefpat: justificatifTypeConvention:'" + self.type_convention_id.name + "'" + self.period_end) + "']) AND =adefpat:justificatifTypeConvention:'" + self.type_convention_id.name + "'" else: query = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Justificatifs//*' AND =adefpat:justificatifUtilisateurs:'" + user.login + "' AND (+adefpat:justificatifDate:['" + str( self.period_start) + "' TO '" + str(