Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • dac534bfa600c55f5ed1c1a1b657c1b19743f609
  • master par défaut protégée
  • v1.4.0
  • v1.3.1
  • v1.3.0
  • v1.2.9
  • v1.2.8
  • v1.2.7
  • v1.2.6
  • v1.2.5
  • v1.2.4
  • v1.2.3
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.1
  • v1.0.0
20 résultats

showlog.css

Blame
  • inovatic_job_queue.py 3,05 Kio
    # © 2020 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    import base64
    import logging
    import time
    
    from odoo import _, exceptions, models
    from odoo.exceptions import UserError
    
    _logger = logging.getLogger(__name__)
    
    
    class InovaticJobQueue(models.Model):
        _inherit = "inovatic.job.queue"
    
        # ------------------------------------------------------
        # Button function
        # ------------------------------------------------------
        def inovatic_sync(self):
            """
            Méthode permettant de transmettre une liasse fiscale
            depuis Alfresco
            """
            for job in self:
                file = job._get_cmis_file()
                stream = file.getContentStream().read()
                filename = file.name
                data_file = base64.b64encode(stream)
                job.inovatic_load_file(file=data_file, filename=filename)
                time.sleep(5)
    
        # ------------------------------------------------------
        # Internal function
        # ------------------------------------------------------
        def inovatic_sync_file(self, doc):
            self.ensure_one()
            stream = doc.getContentStream().read()
            filename = doc.name
            data_file = base64.b64encode(stream)
            self.inovatic_load_file(file=data_file, filename=filename)
    
        def _get_cmis_file(self):
            if (
                not self.liasse_fiscale_id.node_ref
                or not self.liasse_fiscale_id.liste_ministere_id
            ):
                raise UserError(
                    _(
                        "Rechargement impossible : il n'y a pas de fichier ou de "
                        "Liste Ministère associé à cette liasse"
                    )
                )
            backend = self.env["cmis.backend"].search([])
            backend.ensure_one()
            cmis_client = backend.get_cmis_client()
            if self.liasse_fiscale_id.node_ref:
                ref = self.liasse_fiscale_id.node_ref.split(";")
                query = """
                    SELECT * FROM crm:document
                    WHERE cmis:objectId = '%s'
                """ % (
                    ref[0],
                )
            else:
                query = """
                    SELECT * FROM crm:document as d
                    JOIN crm:organisme as o ON d.cmis:objectId = o.cmis:objectId
                    WHERE d.crm:type='LFI'
                    AND d.crm:annee = '%s'
                    AND d.crm:contexte = 'LM'
                    AND o.crm:id = '%s'""" % (
                    str(self.liasse_fiscale_id.liste_ministere_id.year - 1),
                    str(self.liasse_fiscale_id.partner_id.id),
                )
            doc = cmis_client.getDefaultRepository().query(query)
            if not doc:
                raise exceptions.UserError(
                    _("Il n'y a pas de fichier dans Alfresco pour cette liasse")
                )
            return doc[0]
    
        # ------------------------------------------------------
        # CRON function
        # ------------------------------------------------------
        def _cron_sync(self):
            jobs = self.env["inovatic.job.queue"].search([["state", "=", "waiting"]])
            return jobs.inovatic_sync()