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

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    account_invoice.py 4,98 Kio
    # Copyright 2021 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    import base64
    from odoo import api, models
    from odoo import fields as odooFields
    from odoo.addons.cmis_field import fields
    
    
    class AccountInvoice(models.Model):
        _name = 'account.invoice'
        _inherit = ['account.invoice', 'lefilament.alfresco']
    
        # ------------------------------------------------------
        # Fields declaration
        # ------------------------------------------------------
        project_id = odooFields.Many2one(
            'project.project',
            string='Projet',
            change_default=True,
            readonly=True,
            states={'draft': [('readonly', False)]},
            track_visibility='always',
            ondelete='restrict',)
        alfresco_file = odooFields.Char("Facture liée")
        cmis_folder = fields.CmisFolder(
            allow_create=True,
            allow_delete=False,
        )
    
        # ------------------------------------------------------
        # SQL Constraints
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Default methods
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Computed fields / Search Fields
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Onchange / Constraints
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # CRUD methods (ORM overrides)
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Actions
        # ------------------------------------------------------
    
        @api.multi
        def generate_alfresco_file(self):
            """
                Ajoute un fichier sur la GED Alfresco
                @return: fonction get_partner_files() de res.partner
            """
            # Get proof folder nodeRef
            backend = self.env['cmis.backend'].search([], limit=1)
            # Si la facture a déjà été créée, ouvrir dans Alfresco
            if self.alfresco_file:
                prop = backend.get_cmis_repository().getFolder(
                    self.alfresco_file).getProperties()
                url = backend.get_content_details_url_from_props(prop)
            # Sinon, la créer, puis la stocker ainsi que les documents liées à la facture dans Alfresco
            else:
                project_folder = self.project_id.cmis_folder
                self.cmis_folder = project_folder
    
                if not project_folder:
                    raise UserError("Le dossier du projet n'est pas configuré")
    
                # Get Mimetype
                attachment = self.env.ref('account.account_invoices').retrieve_attachment(self)
                content_type = attachment.mimetype
    
                path_proj = backend.get_cmis_repository().getFolder(
                    project_folder).getPaths()
    
                # Get template doc Facture
                template_doc = self.env['adefpat.template.doc'].search([
                    ('type_temp', '=', 'facture'),
                    ('noderef_document', '=', False)])
    
                # Get doc linked to Facture
                template_doc_ids = self.env['adefpat.template.doc'].search([
                    ('type_temp', '=', 'facture'),
                    ('noderef_document', '!=', False)])
    
                # Strore template in Alfresco
                for template in template_doc_ids:
                    self._publipostage_documents(template, False, True)
    
                path_n0 = path_proj + [template_doc.dossier.name]
                path = '/'.join(path_n0)
                cmis_obj = backend.get_folder_by_path(path)
    
                file = cmis_obj.createDocument(
                    name=attachment.name,
                    properties={},
                    contentFile=base64.b64decode(attachment.datas),
                    contentType=content_type
                )
                file_id = file.getProperties().get('cmis:objectId')
                self.alfresco_file = file.getObjectId()
                prop = backend.get_cmis_repository().getFolder(
                    file_id).getProperties()
                url = backend.get_content_details_url_from_props(prop)
            return {
                'type': 'ir.actions.act_url',
                'url': url,
                'target': 'new',
            }
        # ------------------------------------------------------
        # Business methods
        # ------------------------------------------------------
        def fill_data(self):
    
            parser = [
                ('partner_id:name_benef', ['name']),
                ('partner_id:title_benef', [('title', ['name'])]),
                ('partner_id:zip_benef', ['zip']),
                ('partner_id:city_benef', ['city']),
                ('partner_id:street_benef', ['street']),
                ('project_id:cfd_name', [('user_id', ['name'])]),
                ('project_id:cfd_mobile', [('user_id', ['mobile'])]),
                'amount_total:montant',
                'date_invoice:date',
            ]
    
            keys = self.json_build(parser)[0]
            return keys