Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • fab92b8455a6d257e4cc21266db4d2c8a55b122c
  • 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

scop_partner_staff.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    adefpat_project_justif_zip_wizard.py 12,00 Kio
    # Copyright 2022 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    import json
    
    from datetime import date, datetime
    from odoo import api, fields, models
    
    from odoo.exceptions import UserError
    
    
    class AdefpatProjectJustifZip(models.TransientModel):
        _name = "adefpat.project.justif.zip.wizard"
        _inherit = 'lefilament.alfresco'
        _description = "Wizard justifs zip projets"
    
        period_start = fields.Date("Début de période", required=True)
        period_end = fields.Date(
            "Fin de période", required=True, default=fields.Date.today()
        )
        type_convention_id = fields.Many2one(
            "adefpat.type.convention",
            domain=[
                "|",
                ("date_end_validity", ">=", fields.Date.today()),
                ("date_end_validity", "=", False),
            ],
            string="Type de convention de financement",
        )
    
        @api.multi
        def build_folder_bilan(self):
            json_file = []
            json_file_proj = self.build_json_project("11")
            json_file.append(json_file_proj)
            json_file_ff = self.build_json_file_facture_fournisseur("21")
            json_file.append(json_file_ff)
            json_file_fc = self.build_json_file_facture_client("31")
            json_file.append(json_file_fc)
            json_file_frais = self.build_json_file_expense_zip("41")
            json_file.append(json_file_frais)
    
            virtual_json = {
                "name": "Bilan",
                "nodes": [{
                    "id": "1",
                    "name": "Bilan",
                    "description": "Bilan",
                    "nodes": json_file,
                }]
            }
            if self.type_convention_id:
                file_name = "bilan"+ str(datetime.now().strftime("%y-%m-%d-%H-%M")) + "_" + self.type_convention_id.name
            else:
                file_name = "bilan"+ str(datetime.now().strftime("%y-%m-%d-%H-%M"))
            json_file_cmis = self.env.user.company_id.proof_justif_cmis
            return self.create_json_file(file_name, virtual_json, json_file_cmis)
    
        @api.multi
        def build_json_project(self, bilan_nb=None):
            # Get Projects with at least 1 task on period
            project_ids = self.env["project.task"].search([
                ("date_deadline", "<=", self.period_end),
                ("date_deadline", ">=", self.period_start),
            ]).mapped("project_id")
    
            if self.type_convention_id:
                project_ids = project_ids.filtered(
                    lambda p: p.type_convention_id == self.type_convention_id)
    
            compteur = 0
            json_file = []
            for project in project_ids:
                compteur += 1
                proj = project.name.replace(" ", "_x0020_")
                path = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Projets/cm:" + proj
                json_file.append({
                        "id": bilan_nb + str(compteur),
                        "name": project.name,
                        "description": project.name,
                        "nodes":[
                            {
                                "id": bilan_nb + str(compteur) + "1",
                                "name": "CR séance",
                                "description": "Compte-Rendus des séances d’accompagnement",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:seances//*'" + " AND =adefpat:typeDocument:'compte rendu'",
                                }
                            },
                            {
                                "id": bilan_nb + str(compteur) + "2",
                                "name": "GAP",
                                "description": "Compte-Rendus des séances de GAP",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:gap//*'" + " AND =adefpat:typeDocument:'compte rendu'",
                                },
                            },
                            {
                                "id": bilan_nb + str(compteur) + "3",
                                "name": "Evaluation CF",
                                "description": "Evaluation finale du consultant formateur",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:seances//*'" + " AND =adefpat:typeDocument:'évaluation du formateur'",
                                },
                            },
                            {
                                "id": bilan_nb + str(compteur) + "4",
                                "name": "Evaluation stagiaire",
                                "description": "Questionnaire de satisfaction de chaque stagiaire",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:beneficiaires//*'" + " AND =adefpat:typeDocument:'questionnaire de satisfaction'",
                                },
                            },
                            {
                                "id": bilan_nb + str(compteur) + "5",
                                "name": "Consultations",
                                "description": "Consultations",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:consultation//*'",
                                },
                            },
                            {
                                "id": bilan_nb + str(compteur) + "6",
                                "name": "Conventions",
                                "description": "Conventions",
                                "search": {
                                    "language": "fts-alfresco",
                                    "query": path + "/cm:admin//*'" + " AND (=adefpat:typeDocument:'convention d'accompagnement' OR =adefpat:typeDocument:'convention d'objectif')",
                                },
                            },
                    ]})
    
            virtual_json = {
                "name": "Justificatifs Projets",
                "nodes": [{
                    "id": bilan_nb,
                    "name": "Justificatifs Projets",
                    "description": "Justificatifs Projets",
                    "nodes": json_file,
                }]
            }
            return virtual_json
    
        @api.multi
        def build_folder(self):
            virtual_json = self.build_json_project("1")
    
            if self.type_convention_id:
                file_name = "justifs_projets_"+ str(datetime.now().strftime("%y-%m-%d-%H-%M")) + "_" + self.type_convention_id.name
            else:
                file_name = "justifs_projets_"+ str(datetime.now().strftime("%y-%m-%d-%H-%M"))
            json_file_cmis = self.env.user.company_id.proof_justif_cmis
            return self.create_json_file(file_name, virtual_json, json_file_cmis)
    
        @api.multi
        def build_json_file_facture_fournisseur(self, bilan_nb=None):
            virtual_json = {
                "name": "Factures fournisseurs",
                "nodes": [{
                    "id": bilan_nb,
                    "name": "Factures fournisseurs",
                    "description": "Factures fournisseurs",
                    "search": {
                        "language": "fts-alfresco",
                        "query": "(PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Factures_x0020_fournisseurs//*') AND (+adefpat:factureEndDate:['" + str(
                            self.period_start) + "' TO '" + str(
                            self.period_end) + "'] OR +adefpat:factureSartDate:['" + str(
                            self.period_start) + "' TO '" + str(self.period_end) + "'])",
                    }
                },
                ]
            }
            return virtual_json
    
        @api.multi
        def build_facture_fournisseur(self):
    
            virtual_json = self.build_json_file_facture_fournisseur("1")
            if self.type_convention_id:
                file_name = "justifs_factures_fournisseurs_" + str(datetime.now().strftime("%y-%m-%d-%H-%M")) + "_" + self.type_convention_id.name
            else:
                file_name = "justifs_factures_fournisseurs_" + str(datetime.now().strftime("%y-%m-%d-%H-%M"))
            json_file_cmis = self.env.user.company_id.proof_justif_cmis
            return self.create_json_file(file_name, virtual_json, json_file_cmis)
    
        @api.multi
        def build_json_file_facture_client(self, bilan_nb=None):
            if self.type_convention_id:
                query = "(PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Factures_x0020_clients//*') AND (+adefpat:factureStartDate:['" + str(self.period_start) + "' TO '" + str(self.period_end) +"']) AND =adefpat:factureTypeConvention:'"+ self.type_convention_id.name +"'"
            else:
                query = "(PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Factures_x0020_clients//*') AND (+adefpat:factureStartDate:['" + str(
                                self.period_start) + "' TO '" + str(
                                self.period_end) + "'])"
            virtual_json = {
                "name": "Factures clients",
                "nodes": [{
                        "id": bilan_nb,
                        "name": "Factures clients",
                        "description": "Factures clients",
                        "search": {
                            "language": "fts-alfresco",
                            "query": query,
                            }
                        },
                ]
            }
            return virtual_json
    
        @api.multi
        def build_facture_client(self):
    
            virtual_json = self.build_json_file_facture_client("1")
            if self.type_convention_id:
                file_name = "justifs_factures_clients_" + str(datetime.now().strftime("%y-%m-%d-%H-%M")) + "_" + self.type_convention_id.name
            else:
                file_name = "justifs_factures_clients_" + str(datetime.now().strftime("%y-%m-%d-%H-%M"))
            json_file_cmis = self.env.user.company_id.proof_justif_cmis
            return self.create_json_file(file_name, virtual_json, json_file_cmis)
    
        @api.multi
        def build_json_file_expense_zip(self, bilan_nb=None):
            user_ids = self.env["res.users"].search([("active", "=", True)])
    
            compteur = 0
            json_file = []
    
            for user in user_ids:
                if user.has_group('base.group_user'):
                    if self.type_convention_id:
                        query = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Justificatifs//*' AND =adefpat:justificatifUtilisateurs:'" + user.login + "' AND (+adefpat:justificatifDate:['" + str(
                            self.period_start) + "' TO '" + str(
                            self.period_end) + "']) AND =adefpat: justificatifTypeConvention:'" + self.type_convention_id.name + "'"
                    else:
                        query = "PATH:'/app:company_home/st:sites/cm:odoo/cm:documentLibrary/cm:Justificatifs//*' AND =adefpat:justificatifUtilisateurs:'" + user.login + "' AND (+adefpat:justificatifDate:['" + str(
                            self.period_start) + "' TO '" + str(
                            self.period_end) + "'])"
                    compteur += 1
                    json_file.append({
                        "id": bilan_nb + str(compteur),
                        "name": user.name,
                        "description": user.name,
                        "search": {
                            "language": "fts-alfresco",
                            "query": query,
                        }
                    })
    
            virtual_json = {
                "name": "Justificatifs Frais",
                "nodes": [{
                    "id": bilan_nb,
                    "name": "Justificatifs Frais",
                    "description": "Justificatifs Frais",
                    "nodes": json_file,
                }]
            }
            return virtual_json
    
        @api.multi
        def build_expense_zip(self):
    
            virtual_json = self.build_json_file_expense_zip("1")
            if self.type_convention_id:
                file_name = "justifs_frais_" + str(
                    datetime.now().strftime("%y-%m-%d-%H-%M")) + "_" + self.type_convention_id.name
            else:
                file_name = "justifs_frais_" + str(
                    datetime.now().strftime("%y-%m-%d-%H-%M"))
            json_file_cmis = self.env.user.company_id.proof_justif_cmis
            return self.create_json_file(file_name, virtual_json, json_file_cmis)