Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 6b7f3504e9e6af5e7884b26de0e011cc0c3c44e9
  • 12.0-evo-202003 par défaut
  • 14-RV-20250324
  • 14-RV-20240830
  • 14-RV-20231222
  • 12-RV-Bug_ecrasement_date_radiation
  • 12-RV-revision-staff
  • 12-RV-copadev
  • 12-RV-Correctif-open-instagram
  • 12-RV-Tree-Coop-Ajout-effectif
  • 12.0-RV-Instagram
  • 12.0-RV-segment_visibility
  • 12.0 protégée
  • 12.0-RV-Abonnements
14 résultats

res_partner_lists.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    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()