Skip to content
Extraits de code Groupes Projets
Valider bc5e7a37 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[merge] Merge branch '14.0-new-process' into '14.0' - add new process LF

See merge request !1
parents c5b661d2 41997fc6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!1[merge] add new process LF
......@@ -6,8 +6,6 @@ exclude: |
^setup/|/static/description/index\.html$|
# We don't want to mess with tool-generated files
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|
# Maybe reactivate this when all README files include prettier ignore tags?
^README\.md$|
# Library files can have extraneous formatting (even minimized)
/static/(src/)?lib/|
# Repos using Sphinx to generate docs don't need prettying
......@@ -28,7 +26,7 @@ repos:
language: fail
files: "\\.rej$"
- repo: https://github.com/oca/maintainer-tools
rev: ab1d7f6
rev: 7d8a9f9ad73db0976fb03cbee43d953bc29b89e9
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
......@@ -46,11 +44,11 @@ repos:
- --remove-duplicate-keys
- --remove-unused-variables
- repo: https://github.com/psf/black
rev: 20.8b1
rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.1.2
rev: v2.6.2
hooks:
- id: prettier
name: prettier (with plugin-xml)
......@@ -61,7 +59,7 @@ repos:
- --plugin=@prettier/plugin-xml
files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v7.8.1
rev: v8.15.0
hooks:
- id: eslint
verbose: true
......@@ -69,7 +67,7 @@ repos:
- --color
- --fix
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
rev: v4.2.0
hooks:
- id: trailing-whitespace
# exclude autogenerated files
......@@ -91,12 +89,12 @@ repos:
- id: mixed-line-ending
args: ["--fix=lf"]
- repo: https://github.com/asottile/pyupgrade
rev: v2.7.2
rev: v2.32.1
hooks:
- id: pyupgrade
args: ["--keep-percent-format"]
- repo: https://github.com/PyCQA/isort
rev: 5.5.1
rev: 5.10.1
hooks:
- id: isort
name: isort except __init__.py
......@@ -104,13 +102,13 @@ repos:
- --settings=.
exclude: /__init__\.py$
- repo: https://gitlab.com/PyCQA/flake8
rev: 3.8.3
rev: 3.9.2
hooks:
- id: flake8
name: flake8
additional_dependencies: ["flake8-bugbear==20.1.4"]
- repo: https://github.com/PyCQA/pylint
rev: pylint-2.5.3
rev: v2.11.1
hooks:
- id: pylint
name: pylint with optional checks
......@@ -119,7 +117,7 @@ repos:
- --exit-zero
verbose: true
additional_dependencies: &pylint_deps
- pylint-odoo==3.5.0
- pylint-odoo==5.0.5
- id: pylint
name: pylint with mandatory checks
args:
......
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import models, wizard
......@@ -9,10 +9,13 @@
"application": False,
"depends": [
"cgscop_inovatic",
"cgscop_liste_ministere_alfodoo",
"cgscop_liasse_fiscale",
"cgscop_liste_ministere",
],
"data": [
"security/ir.model.access.csv",
"datas/cron_inovatic.xml",
"wizard/load_xml_liasse.xml",
"views/scop_liste_ministere.xml",
],
"installable": True,
......
......@@ -32,16 +32,28 @@ class InovaticJobQueue(models.Model):
# Internal function
# ------------------------------------------------------
def _get_cmis_file(self):
if not self.liasse_fiscale_id.liste_ministere_id:
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 "
"Liste Ministère associée à cette liasse"
"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.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
......
# © 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 _, exceptions, fields, models
_logger = logging.getLogger(__name__)
class ListeMinistereInovatic(models.Model):
_inherit = "scop.liste.ministere"
......@@ -14,7 +18,7 @@ class ListeMinistereInovatic(models.Model):
last_job_queue_date_sync = fields.Datetime(related="last_job_queue.date_sync")
# ------------------------------------------------------
# BUTTON functions
# Button functions
# ------------------------------------------------------
def inovatic_treatment(self):
liasse_id = self.create_liasse_fiscale()
......@@ -47,3 +51,24 @@ class ListeMinistereInovatic(models.Model):
raise exceptions.UserError(
_("Il n'y a pas de Liasse correspondante dans Alfresco")
)
# ------------------------------------------------------
# Inherit parent
# ------------------------------------------------------
def action_completed(self):
"""
Hérite la fonction parente pour envoyer autmatiquement la liasse à Inovatic
si cette liasse existe et si elle n'a pas déjà été chargée lorsque la coop
valide le dossier
"""
if not self.scop_liasse_fiscale_id:
self.create_liasse_fiscale()
if (
self.scop_liasse_fiscale_id
and not self.scop_liasse_fiscale_id.source == "inovatic_api"
):
try:
self.scop_liasse_ficale_id.inovatic_treatment()
except Exception as e:
_logger.error(e)
super().action_completed()
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_load_xml_liasse,access_load_xml_liasse,model_load_xml_liasse,base.group_user,1,1,1,1
......@@ -23,7 +23,7 @@
/>
<button
string="Charger un XML"
name="%(cgscop_inovatic.load_xml_liasse_act_window)d"
name="%(cgscop_inovatic_lm.load_xml_liasse_act_window)d"
type="action"
class="m-3"
attrs="{'invisible':[('status_liasse_fiscale', '=', 'valide')]}"
......
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import load_xml_liasse
from . import scop_load_liasse_wizard
# © 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, fields, models
class LoadXmlLiasseWizard(models.TransientModel):
_name = "load.xml.liasse"
_description = "Load XML Liasse Wizard"
_rec_name = "liasse_id"
@api.model
def _default_lm_id(self):
return self.env.context.get("active_id")
@api.model
def _default_liasse_id(self):
lm = self.env.context.get("active_id")
return (
self.env["scop.liasse.fiscale"].search([("liste_ministere_id", "=", lm)]).id
)
lm_id = fields.Many2one(
comodel_name="scop.liste.ministere",
string="Liste Ministere",
default=_default_lm_id,
)
liasse_id = fields.Many2one(
comodel_name="scop.liasse.fiscale",
string="Liasse Fiscale",
default=_default_liasse_id,
)
file = fields.Binary("Fichier")
filename = fields.Char("Nom")
def load_liasse(self):
"""
Charge les valeurs du XML de la liasse dans l'objet
:return:
"""
if not self.liasse_id:
self.liasse_id = self.lm_id.create_liasse_fiscale()
data = self.liasse_id.parse_xml_liasse(self.file)
return self.liasse_id.json_matching(data, "xml")
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<!-- FORM View-->
<record id="load_xml_liasse_form_view" model="ir.ui.view">
<field name="name">load.xml.liasse.form</field>
<field name="model">load.xml.liasse</field>
<field name="arch" type="xml">
<form string="Charger une Liasse">
<group name="infos">
<field name="liasse_id" readonly="1" />
</group>
<group>
<field name="filename" invisible="1" />
<field name="file" filename="filename" required="1" />
</group>
<footer>
<button
class="btn btn-sm btn-primary"
name="load_liasse"
string="Charger une liasse XML"
type="object"
confirm="Êtes-vous sûr(e) de vouloir charger ce fichier ?"
/>
<button
class="btn btn-sm btn-default"
special="cancel"
string="Fermer"
/>
</footer>
</form>
</field>
</record>
<!--ACTION view-->
<record id="load_xml_liasse_act_window" model="ir.actions.act_window">
<field name="name">Charger une Liasse XML</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">load.xml.liasse</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</odoo>
# © 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
class ScopLoadLiasseWizard(models.TransientModel):
_inherit = "scop.load.liasse.wizard"
# ------------------------------------------------------
# Inherit parent
# ------------------------------------------------------
def load_liasse(self):
super().load_liasse()
if not self.liasse_id.liste_ministere_id:
# LM d'inscription ou de renouvellement liées à la coop
lm_ids = self.liasse_id.partner_id.liste_ministere_ids.filtered(
lambda lm: lm.type_lm != "survey_adjust"
)
if lm_ids:
lm_type = "renew"
else:
lm_type = "subscribe"
# LM sur l'année N+1 de la liasse
lm_id = lm_ids.filtered(lambda lm: lm.year == self.liasse_id.year + 1)
if not lm_id:
# Création de la LM si elle n'existe pas
new_lm = lm_id.create_folder(
partner_id=self.liasse_id.partner_id,
year=self.liasse_id.year + 1,
lm_type=lm_type,
)
lm_id = lm_id.browse(new_lm)
# Mise à jour de la LM avec les valeurs de la liasse et de la file d'attente
lm_id.update(
{
"scop_liasse_fiscale_id": self.liasse_id.id,
"last_job_queue": self.job_queue_id.id,
}
)
else:
self.liasse_id.liste_ministere_id.update(
{
"scop_liasse_fiscale_id": self.liasse_id.id,
"last_job_queue": self.job_queue_id.id,
}
)
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter