Sélectionner une révision Git
acc_repartition_keys_wizard.py
Bifurcation depuis
Le Filament / Opération Auto-Consommation Collective / oacc_repartition_keys
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()