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
- Activer le mode développeur
- Aller dans Paramètres
- Menu "Technique"
- Cliquer sur Action serveur
- 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".