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

[update] creation & membership process

parent 3ad21ac9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!1[add] merge 14.0 new process adh
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
from pytz import timezone from pytz import timezone
from odoo import fields, models from odoo import _, fields, models
from odoo.exceptions import UserError
class ScopAlfrescoAdhesionPartner(models.Model): class ScopAlfrescoAdhesionPartner(models.Model):
...@@ -90,20 +91,67 @@ class ScopAlfrescoAdhesionPartner(models.Model): ...@@ -90,20 +91,67 @@ class ScopAlfrescoAdhesionPartner(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Business method # Business method
# ------------------------------------------------------ # ------------------------------------------------------
def get_compulsory_docs(self): def get_compulsory_docs(self, type_process):
domain = [ domain = [
("coop_type_id", "=", self.cooperative_form_id.id), ("coop_type_id", "=", self.cooperative_form_id.id),
("is_compulsory", "=", True), ("is_compulsory", "=", True),
("type_process", "=", type_process),
] ]
# Si la coop est en projet de création
if self.project_status == "3_accompagnement":
domain += [("type_process", "=", "project")]
# Si la coop est en phase d'adhésion
if self.membership_status == "adhesion":
domain += [("type_process", "=", "adhesion")]
return self.env["scop.adhesion.file"].search(domain) return self.env["scop.adhesion.file"].search(domain)
def scop_check_docs(self, type_process, error_type=""):
"""
Return error message for mandatory documents
:param str type_process: scop.adhesion.file type_process
:param str error_type: scop.adhesion.file type_process
"""
errors = str()
compulsory_docs = self.get_compulsory_docs(type_process)
loaded_docs = self.compulsory_doc_cmis_query()
errors_complete_docs = self.check_compulsory_docs(
compulsory_docs, loaded_docs)
if errors_complete_docs:
errors_str = str()
for error in errors_complete_docs:
errors_str += "<li>" + error + "</li>"
errors += (
"<hr/><strong>Documents manquants :</strong><ul>" + errors_str + "</ul>"
)
# Si des erreurs remplir les logs avec la liste des documents manquants
if errors:
local_tz = timezone("Europe/Paris")
utc_tz = timezone("UTC")
log_date = utc_tz.localize(
fields.Datetime.now()).astimezone(local_tz).strftime("%d/%m/%Y %-H:%M")
self.list_logs = "<strong>%s</strong> %s %s" % (
log_date, error_type, errors
)
else:
self.list_logs = False
def check_compulsory_docs(self, compulsory_docs, loaded_docs):
"""
Override function to check docs with cmis query
:param obj compulsory_docs: scop.adhesion.file object
:param list loaded_docs: cmis query response
@returns list: list of missing mandatory documents
"""
errors = list()
compulsory_docs_list = compulsory_docs.mapped(
lambda d: {"name": d.name, "metadata": d.type_doc}
)
loaded_docs_list = list(
map(lambda d: d.properties.get("crm:type"), loaded_docs)
)
for mandatory_doc in compulsory_docs_list:
if mandatory_doc.get("metadata") not in loaded_docs_list:
errors.append(mandatory_doc.get("name"))
return errors
# ------------------------------------------------------ # ------------------------------------------------------
# Override parent # Override parent
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -172,23 +220,50 @@ class ScopAlfrescoAdhesionPartner(models.Model): ...@@ -172,23 +220,50 @@ class ScopAlfrescoAdhesionPartner(models.Model):
return res return res
def check_compulsory_docs(self): def scop_suivi_adhesion(self):
""" """
Override function to check docs with cmis query Inherit parent to check documents
:return:
""" """
errors = list() # vérification des documents obligatoires
compulsory_docs = self.get_compulsory_docs() self.scop_check_docs("project", "Impossible de créer la coopérative")
loaded_docs = self.env["scop.adhesion.file"].compulsory_doc_cmis_query(self)
compulsory_docs_list = compulsory_docs.mapped( return super(ScopAlfrescoAdhesionPartner, self).scop_suivi_adhesion()
lambda d: {"name": d.name, "metadata": d.type_doc}
) def scop_sumbit_cg(self):
loaded_docs_list = list( """
map(lambda d: d.properties.get("crm:type"), loaded_docs) Inherit parent to check documents
"""
res = super(ScopAlfrescoAdhesionPartner, self).scop_sumbit_cg()
# vérification des documents obligatoires
self.scop_check_docs(
"adhesion", "Impossible de transmettre le dossier d'adhésion"
) )
for mandatory_doc in compulsory_docs_list: return res
if mandatory_doc.get("metadata") not in loaded_docs_list:
errors.append(mandatory_doc.get("name"))
return errors # ------------------------------------------------------
# Alfresco method
# ------------------------------------------------------
def compulsory_doc_cmis_query(self):
self.ensure_one()
backend = self.env["cmis.backend"].search([])
backend.ensure_one()
cmis_client = backend.get_cmis_client()
query = (
"""
SELECT * FROM crm:document as d
JOIN crm:organisme as o ON d.cmis:objectId = o.cmis:objectId
WHERE o.crm:id = '%s'"""
% self.id
)
try:
doc = cmis_client.getDefaultRepository().query(query)
result = doc.getResults()
return result
except Exception as e:
raise UserError(
_(
"Impossible de vérifier les documents d'adhésion"
" dans Alfresco : %s"
)
% e
)
# © 2021 Le Filament (<http://www.le-filament.com>) # © 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, exceptions, fields, models from odoo import fields, models
class ScopAdhesionFiles(models.Model): class ScopAdhesionFiles(models.Model):
...@@ -9,30 +9,3 @@ class ScopAdhesionFiles(models.Model): ...@@ -9,30 +9,3 @@ class ScopAdhesionFiles(models.Model):
_description = "Documents pour adhésion des coops" _description = "Documents pour adhésion des coops"
type_doc = fields.Char("Méta : Type") type_doc = fields.Char("Méta : Type")
# ------------------------------------------------------
# Business method
# ------------------------------------------------------
def compulsory_doc_cmis_query(self, partner):
backend = self.env["cmis.backend"].search([])
backend.ensure_one()
cmis_client = backend.get_cmis_client()
query = (
"""
SELECT * FROM crm:document as d
JOIN crm:organisme as o ON d.cmis:objectId = o.cmis:objectId
WHERE o.crm:id = '%s'"""
% partner.id
)
try:
doc = cmis_client.getDefaultRepository().query(query)
result = doc.getResults()
return result
except Exception as e:
raise exceptions.UserError(
_(
"Impossible de vérifier les documents d'adhésion"
" dans Alfresco : %s"
)
% e
)
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