Se rendre au contenu

⚙️Custom Odoo : Générer et envoyer en signature un mandat de prélèvement

En Standard, Odoo ne permet pas d'utiliser la signature électronique pour faire signer le mandat de prélèvement que l'on vient de générer. Voici comment faire cela automatiquement.
⚠️

Nécessite d'avoir des licences "Personnalisées" (ou Custom) d'Odoo.

Si vous êtes en licence Standard, vous risquez de passez automatiquement en licence Personnalisée.


Résultat

Il est maintenant possible de générer un mandat PDF et de l'envoyer automatiquement en signature. Vous serez notifié une fois le mandat signé.


Etapes

Créer une action serveur

  1. Activer le mode développeur
  2. Aller dans Paramètres
  3. Menu "Technique"
  4. Cliquer sur Action serveur
  5. Puis sur le bouton "Nouveau"

Nom: Générer & Signer un mandat de prélèvement
Type: Exécuter le code
Modèle: Mandat de prélèvement 
Code:

for record in records:
    # Generate mandat (pdf report)
    pdf_report = env.ref('account_sepa_direct_debit.sdd_mandate_form_report_main')
    content, _report_type = env['ir.actions.report']._render_qweb_pdf(
        pdf_report.report_name,
        res_ids=[record.id],
    )
   
    # Create Attachment
    attachment = env['ir.attachment'].create({
        'type': 'binary',
        'name': 'Mandat.pdf',
        'res_model': 'mail.compose.message',
        'datas': b64encode(content),
    })

    # Create Sign template
    sign_template = env['sign.template'].create({
        'name': 'Mandat de Prélèvement %s' % record.id,
        'attachment_id': attachment.id,
        'active': False,
    })
    env['sign.item'].create([
        {
            'type_id': env.ref('sign.sign_item_type_date').id,
            'required': True,
            'responsible_id': env.ref('sign.sign_item_role_customer').id,
            'page': 1,
            'posX': 0.261,
            'posY': 0.738,
            'template_id': sign_template.id,
            'width': 0.150,
            'height': 0.015,
        },
        {
            'type_id': env.ref('sign.sign_item_type_signature').id,
            'required': True,
            'responsible_id': env.ref('sign.sign_item_role_customer').id,
            'page': 1,
            'posX': 0.583,
            'posY': 0.729,
            'template_id': sign_template.id,
            'width': 0.328,
            'height': 0.076,
        },
        {
            'type_id': env.ref('sign.sign_item_type_text').id,
            'required': True,
            'responsible_id': env.ref('sign.sign_item_role_customer').id,
            'page': 1,
            'posX': 0.049,
            'posY': 0.762,
            'template_id': sign_template.id,
            'width': 0.359,
            'height': 0.015,
        },
    ])
   
    # Create Sign request
    sign_request = env['sign.request'].create({
        'template_id': sign_template.id,
        'request_item_ids': [Command.create({
            'partner_id': record.partner_id.id,
            'role_id': env.ref('sign.sign_item_role_customer').id,
        })],
        'reference': 'Mandat de prélèvement',
        'subject': 'Signature de votre mandat de prélèvement',
        'message': 'Bonjour, veuillez signer votre mandat de prélèvement pour confirmer votre inscription.',
        'attachment_ids': [(4,attachment.id)],
        'reference_doc': '%s,%s' % (model._name, record.id),
    })
    record.message_post(body='Mandat de prélèvement envoyé en <a href="sign.request/%s">signature</a>.' % sign_request.id, body_is_html=True)


Afficher dans les actions des mandats de prélèvement

Cliquer sur "Créer une action contextuelle".


 

⚙️Custom Odoo : Générer et envoyer en signature un mandat de prélèvement
LCSX Tech, Cossiaux Laurent 6 décembre 2024
Partager cet article
Étiquettes
Se connecter pour laisser un commentaire.
Facilitez vos imports Odoo avec Excel et VBA
Transformez automatiquement vos données Excel pour qu'elles soient prêtes à l'import dans Odoo