v14.0.0.1.2 add donation line label

This commit is contained in:
Florian du Garage Num 2024-12-19 21:04:09 +01:00
parent e0650de542
commit 26c2b92323
6 changed files with 348 additions and 235 deletions

View File

@ -8,9 +8,14 @@ Addons for Odoo 14.
| Name | Version | Description |
|-------------------------|--------------|----------------------------------------------------------|
| gn_discount | 14.0.0.1.3 | display the total before discount and the discount amount on sales orders and invoices |
| gn_donations | 14.0.0.1.1 | Cerfa 11580 for donations and in-kind donations |
| gn_donations | 14.0.0.1.2 | Cerfa 11580 for donations and in-kind donations |
| gn_mail | 14.0.0.0.1 | Mail client |
## Changelog
- gn_donation | 14.0.0.1.2 | Add description to donation lines
## ToDo
## gn_payroll

View File

@ -1,6 +1,6 @@
{
'name': "Gn Donations",
'version': '14.0.0.1.1',
'version': '14.0.0.1.2',
'author': 'Garage Numérique',
'category': 'Accounting',
'description': """
@ -10,7 +10,9 @@
'depends': ['donation'],
'data': [
'views/donation_thanks_report.xml',
'views/internal_layout.xml'
'views/internal_layout.xml',
'views/donation_thanks_report.xml',
'views/donation.xml'
],
'translate': True,
'installable': True,

View File

@ -16,6 +16,7 @@ from odoo.exceptions import UserError
from odoo.tools.misc import format_amount
from odoo.addons.account import _auto_install_l10n
# Rewriting donation to allow 0€ fiscal receipts
class DonationDonation(models.Model):
_inherit = 'donation.donation'
@ -124,4 +125,10 @@ class DonationDonation(models.Model):
):
receipt_vals = self._prepare_each_tax_receipt()
receipt = self.env["donation.tax.receipt"].create(receipt_vals)
return receipt
return receipt
# Add description to donation line
class DonationLine(models.Model):
_inherit = "donation.line"
name = fields.Char(string='Label', tracking=True, store=True, readonly=False)

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="gn_donations.donation_line_tree" model="ir.ui.view">
<field name="name">gndonations_line_tree</field>
<field name="model">donation.line</field>
<field name="inherit_id" ref="donation.donation_line_tree"/>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='product_id']" position="after">
<field name="name"/>
</xpath>
<xpath expr="//field[@name='in_kind']" position="replace">
<field name="in_kind" optional="hide" />
</xpath>
</field>
</record>
</data>
<data>
<record id="gn_donations.donation_line_form" model="ir.ui.view">
<field name="name">gndonations_line_form</field>
<field name="model">donation.line</field>
<field name="inherit_id" ref="donation.donation_line_form"/>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='product_id']" position="after">
<field name="name"/>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@ -0,0 +1,240 @@
<?xml version="1.0"?>
<odoo>
<template id="gn_donations.report_donationtaxreceipt_document" inherit_id="donation_base.report_donationtaxreceipt_document">
<xpath expr="." position="replace">
<t t-foreach="docs" t-as="o">
<t t-call="gn_donations.internal_layout">
<div class="page" style="page-break-after: always;">
<style>
*{
font-family: 'Comic Sans MS', arial;
}
.pointille{
border-bottom: 2px dotted black;
}
.mtl{
text-decoration: underline dotted;
}
.fond-color{
background-color: #f8f4fc;
}
div{
font-size: 25px
}
</style>
<div class="row">
<div class="col-3 mt-4">
Cerfa n° 11580*04
</div>
<div class="col-6 text-center">
<h1>Reçu au titre des dons à certains organismes dintérêt général</h1>
<p class="font-italic" >Article 200, 238 bis et 978 du code général des impôts (CGI)</p>
</div>
<div class="col-3">
Numéro dordre du reçu <span style="border: 1px solid black;" t-field="o.number"/>
</div>
</div>
<div class="border border-2 mt-2 p-2">
<h3 class="bg-secondary text-center font-weight-bold">Bénéficiaire des versements</h3>
<div class="row">
<div class="col-12">
<h4 class="font-weight-bold">Nom ou dénomination :</h4>
<p class="pointille text-dark fond-color" t-field="o.company_id.name"/>
</div>
</div>
<t t-set="street_parts" t-value="o.company_id.street.split(None, 1)"/>
<t t-set="street_part1" t-value="street_parts[0]"/>
<t t-set="street_part2" t-value="street_parts[1] if len(street_parts) &gt; 1 else ''"/>
<div class="row">
<div class="mt-2 col-12">
<h4 class="font-weight-bold">Adresse :</h4>
</div>
</div>
<div class="row">
<div class="col-4">
<p>Numéro: <span t-esc="street_part1"/><hr style="border-style:dotted; background-color: black;"/></p>
</div>
<div class="col-9">
<p>Rue: <span class="pointille" t-esc="street_part2"/></p>
</div>
</div>
<div class="row">
<div class="col-4">
<p>Code Postal: <span class="pointille" t-field="o.company_id.zip"/></p>
</div>
<div class="col-9">
<p>Commune: <span class="pointille" t-field="o.company_id.city"/></p>
</div>
</div>
<h4 class="mt-3 font-weight-bold">Objet: </h4>
<p class="mtl" t-field="o.company_id.partner_id.comment" />
<hr style="height: 2px; width: 100%; background-color: black;"/>
<h4 class="font-weight-bold">Cochez la case concernée (1) :</h4>
<div>
<t t-foreach="[
('option1', 'Association ou fondation reconnue dutilité publique par décret en date du ...... ...... ...... publié au Journal officiel du ...... ...... ....... ou association située dans le département de la Moselle, du Bas-Rhin ou du Haut-Rhin dont la mission a été reconnue dutilité publique par arrêté en date du ...... ...... ......'),
('option2', 'Fondation universitaire ou fondation partenariale mentionnées respectivement aux articles L. 719-12 et L. 719-13 du code de léducation'),
('option3', 'Fondation dentreprise'),
('option4', 'Oeuvre ou organisme dintérêt général'),
('option5', 'Musée de France'),
('option6', 'Etablissement denseignement supérieur ou denseignement artistique public ou privé, dintérêt général, à but non lucratif'),
('option7', 'Organisme ayant pour objectif exclusif de participer financièrement à la création dentreprises'),
('option8', 'Association cultuelle ou de bienfaisance et établissement public reconnus dAlsaceMoselle'),
('option9', 'Organisme ayant pour activité principale lorganisation de festivals'),
('option10', 'Association fournissant gratuitement une aide alimentaire ou des soins médicaux à des personnes en difficultés ou favorisant leur logement'),
('option11', 'Fondation du patrimoine ou fondation ou association qui affecte irrévocablement les dons à la Fondation du patrimoine, en vue de subventionner les travaux prévus par les conventions conclues entre la Fondation du patrimoine et les propriétaires des immeubles (article L. 143-2-1 du code du patrimoine)'),
('option12', 'Etablissement de recherche public ou privé, dintérêt général, à but non lucratif'),
('option13', 'Entreprise dinsertion ou entreprise de travail temporaire dinsertion (articles L. 5132-5 et L. 5132-6 du code du travail)'),
('option14', 'Association intermédiaire (article L.5132-7 du code du travail)'),
('option15', 'Ateliers et chantiers dinsertion (article L.5132-15 du code du travail)'),
('option16', 'Entreprises adaptées (article L.5213-13 du code du travail)'),
('option17', 'Société ou organisme agrée de recherche scientifique ou technique (2)'),
('option18', 'Autres organismes :') ]" t-as="option">
<div>
<input type="checkbox" t-if="o.company_id.company_registry == option[1]" checked="checked"/>
<input type="checkbox" t-if="o.company_id.company_registry != option[1]"/>
<span t-raw="option[1]"/>
</div>
</t>
</div>
</div>
<div>
<span>(1) ou nindiquez que les renseignements concernant lorganisme</span>
<span>(2) dons effectués par les entreprises</span>
</div>
</div>
<div class="page" style="page-break-after: always;">
<div class="border border-2 p-2">
<h3 class="bg-secondary text-center font-weight-bold">Donateur</h3>
<div class="row">
<div class="col-6">
<p class="mb-1">Nom:</p>
<t t-set="uppercase_words" t-value="[word for word in o.partner_id.name.split() if word.isupper()]"/>
<t t-foreach="uppercase_words" t-as="word">
<p class="pointille" t-esc="word"/><span> </span>
</t>
</div>
<div class="col-6">
<p class="mb-1">Prénoms:</p>
<t t-set="first_letter_uppercase_words" t-value="[word for word in o.partner_id.name.split() if word[0].isupper() and not word.isupper()]"/>
<t t-foreach="first_letter_uppercase_words" t-as="word">
<p class="pointille" t-esc="word"/><span> </span>
</t>
</div>
</div>
<div class="row">
<div class="col-12 mt-4">
<p class="mb-1">Adresse :</p>
<p class="pointille" t-esc="o.partner_id.street + (o.partner_id.street2 and '; ' + o.partner_id.street2 or '')"/>
</div>
</div>
<div class="row mt-3">
<div class="col-3">
<p>Code Postal:<span class="pointille" t-field="o.partner_id.zip" /></p>
</div>
<div class="col-9">
<p>Commune: <span class="pointille" t-field="o.partner_id.city"/></p>
</div>
</div>
</div>
<div class="border border-2 mt-4 p-2">
<p>Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction dimpôt, la somme de :
<span style="border: 1px solid black;" t-esc="o.amount"/> Euros
</p>
<p>Somme en toutes lettres : <span t-esc="o.amount_in_words" /></p>
<p>Date du versement ou du don : <span t-field="o.date" t-options="{'date_format': 'dd MM yyyy'}"/></p>
<p>Le bénéficiaire certifie sur lhonneur que les dons et versements quil reçoit ouvrent droit à la réduction dimpôt prévue à larticle (3) :
<t t-foreach="[ ('200 du CGI', 'person'), ('238 bis du CGI', 'company'), ('978 du CGI', 'other') ]" t-as="option">
<input type="checkbox" t-if="o.partner_id.company_type == option[1]" checked="checked"/>
<input type="checkbox" t-if="o.partner_id.company_type != option[1]"/>
<span t-raw="option[0]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black;"/>
</p>
<p class="font-weight-bold">Forme du don : </p>
<p>
<t t-foreach="[
('option1', 'Acte authentique'),
('option2', 'Acte sous seing privé'),
('option3', 'Déclaration de don manuel'),
('option4', 'Autres')
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'option3'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'option3'"/>
<span t-raw="option[1]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black; margin-top: 20px;" />
</p>
<p class="font-weight-bold">Nature du don : </p>
<p>
<t t-foreach="[
('option1', 'Numéraire'),
('option2', 'Titres de sociétés cotés'),
('option3', 'Autres (4)'),
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'option3'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'option3'"/>
<span t-raw="option[1]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black;"/>
</p>
<p class="font-weight-bold">En cas de don en numéraire, mode de versement du don : </p>
<p>
<t t-foreach="[
('Espèces (entrant)', 'Remise despèces'),
('Chèque', 'Chèque'),
('Virement', 'Virement, prélèvement, carte bancaire'),
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'o.payment_mode_id'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'o.payment_mode_id'"/>
<span t-raw="option[1]"/>
</t>
</p>
</div>
<div>
<div class="row">
<p>(3) Lorganisme bénéficiaire peut cocher une ou plusieurs cases. Lorganisme bénéficiaire peut, en application de larticle L. 80 C du livre des procédures fiscales, demander à ladministration sil relève de lune des catégories dorganismes mentionnées aux articles 200 et 238 bis du code général des impôts. Il est rappelé que la délivrance irrégulière de reçus fiscaux par lorganisme bénéficiaire et susceptible de donner lieu, en application des dispositions de larticle 1740 A du code général des impôts, à une amende fiscale égale à 25% des sommes indûment mentionnées sur ces documents.</p>
<p>(4) Notamment : abandon de revenus ou de produits ; frais engagés par les bénévoles, dont ils renoncent expressément au remboursement.</p>
</div>
<div class="border border-2">
<p style="text-align: right;">Date et signature</p>
</div>
</div>
</div>
</t>
</t>
</xpath>
</template>
</odoo>

View File

@ -1,238 +1,65 @@
<?xml version="1.0"?>
<odoo>
<template id="gn_donations.report_donationtaxreceipt_document" inherit_id="donation_base.report_donationtaxreceipt_document">
<template id="gn_donations.report_donationtaxreceipt_document" inherit_id="donation.report_donation_thanks">
<xpath expr="." position="replace">
<t t-foreach="docs" t-as="o">
<t t-call="gn_donations.internal_layout">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="web.internal_layout">
<div class="page">
<address t-field="o.partner_id" t-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;], &quot;no_marker&quot;: True}"/>
<div t-if="o.partner_id.siret" class="mt16">
<t>Siret</t>: <span t-field="o.partner_id.siret"/>
</div>
<t t-set="total_amount" t-value="0"/>
<t t-foreach="o.line_ids" t-as="line">
<t t-set="total_amount" t-value="total_amount + line.amount"/>
</t>
<h1>Reçu pour don n° <span t-field="o.number"/></h1>
<t t-if="o.payment_mode_id.id==2">
<p>Nous avons bien enregistré votre don du <span t-field="o.donation_date"/>, d'un montant de <span t-field="o.tax_receipt_total"/> , soit <span t-esc="o.currency_id.amount_to_text(o.tax_receipt_total)"/>, versé avec le chèque n° <span t-field="o.payment_ref"/> </p>
</t>
<t t-if="o.payment_mode_id.id==19">
<p>Ce document constitue un reçu pour votre don du <span t-field="o.donation_date"/>*</p>
<p>Votre don est composé des éléments suivants: </p>
<t t-if="o.thanks_template_id.name == o.number and o.thanks_template_id.text">
<div class="page" style="page-break-after: always;">
<style>
*{
font-family: 'Comic Sans MS', arial;
}
.pointille{
border-bottom: 2px dotted black;
}
.mtl{
text-decoration: underline dotted;
}
.fond-color{
background-color: #f8f4fc;
}
div{
font-size: 25px
}
</style>
<div class="row">
<div class="col-3 mt-4">
Cerfa n° 11580*04
</div>
<div class="col-6 text-center">
<h1>Reçu au titre des dons à certains organismes dintérêt général</h1>
<p class="font-italic" >Article 200, 238 bis et 978 du code général des impôts (CGI)</p>
</div>
<div class="col-3">
Numéro dordre du reçu <span style="border: 1px solid black;" t-field="o.number"/>
</div>
</div>
<div class="border border-2 mt-2 p-2">
<h3 class="bg-secondary text-center font-weight-bold">Bénéficiaire des versements</h3>
<div class="row">
<div class="col-12">
<h4 class="font-weight-bold">Nom ou dénomination :</h4>
<p class="pointille text-dark fond-color" t-field="o.company_id.name"/>
</div>
</div>
<t t-set="street_parts" t-value="o.company_id.street.split(None, 1)"/>
<t t-set="street_part1" t-value="street_parts[0]"/>
<t t-set="street_part2" t-value="street_parts[1] if len(street_parts) &gt; 1 else ''"/>
<div class="row">
<div class="mt-2 col-12">
<h4 class="font-weight-bold">Adresse :</h4>
</div>
</div>
<div class="row">
<div class="col-4">
<p>Numéro: <span t-esc="street_part1"/><hr style="border-style:dotted; background-color: black;"/></p>
</div>
<div class="col-9">
<p>Rue: <span class="pointille" t-esc="street_part2"/></p>
</div>
</div>
<div class="row">
<div class="col-4">
<p>Code Postal: <span class="pointille" t-field="o.company_id.zip"/></p>
</div>
<div class="col-9">
<p>Commune: <span class="pointille" t-field="o.company_id.city"/></p>
</div>
</div>
<h4 class="mt-3 font-weight-bold">Objet: </h4>
<p class="mtl" t-field="o.company_id.partner_id.comment" />
<hr style="height: 2px; width: 100%; background-color: black;"/>
<h4 class="font-weight-bold">Cochez la case concernée (1) :</h4>
<div>
<t t-foreach="[
('option1', 'Association ou fondation reconnue dutilité publique par décret en date du ...... ...... ...... publié au Journal officiel du ...... ...... ....... ou association située dans le département de la Moselle, du Bas-Rhin ou du Haut-Rhin dont la mission a été reconnue dutilité publique par arrêté en date du ...... ...... ......'),
('option2', 'Fondation universitaire ou fondation partenariale mentionnées respectivement aux articles L. 719-12 et L. 719-13 du code de léducation'),
('option3', 'Fondation dentreprise'),
('option4', 'Oeuvre ou organisme dintérêt général'),
('option5', 'Musée de France'),
('option6', 'Etablissement denseignement supérieur ou denseignement artistique public ou privé, dintérêt général, à but non lucratif'),
('option7', 'Organisme ayant pour objectif exclusif de participer financièrement à la création dentreprises'),
('option8', 'Association cultuelle ou de bienfaisance et établissement public reconnus dAlsaceMoselle'),
('option9', 'Organisme ayant pour activité principale lorganisation de festivals'),
('option10', 'Association fournissant gratuitement une aide alimentaire ou des soins médicaux à des personnes en difficultés ou favorisant leur logement'),
('option11', 'Fondation du patrimoine ou fondation ou association qui affecte irrévocablement les dons à la Fondation du patrimoine, en vue de subventionner les travaux prévus par les conventions conclues entre la Fondation du patrimoine et les propriétaires des immeubles (article L. 143-2-1 du code du patrimoine)'),
('option12', 'Etablissement de recherche public ou privé, dintérêt général, à but non lucratif'),
('option13', 'Entreprise dinsertion ou entreprise de travail temporaire dinsertion (articles L. 5132-5 et L. 5132-6 du code du travail)'),
('option14', 'Association intermédiaire (article L.5132-7 du code du travail)'),
('option15', 'Ateliers et chantiers dinsertion (article L.5132-15 du code du travail)'),
('option16', 'Entreprises adaptées (article L.5213-13 du code du travail)'),
('option17', 'Société ou organisme agrée de recherche scientifique ou technique (2)'),
('option18', 'Autres organismes :') ]" t-as="option">
<div>
<input type="checkbox" t-if="o.company_id.company_registry == option[1]" checked="checked"/>
<input type="checkbox" t-if="o.company_id.company_registry != option[1]"/>
<span t-raw="option[1]"/>
</div>
</t>
</div>
</div>
<div>
<span>(1) ou nindiquez que les renseignements concernant lorganisme</span>
<span>(2) dons effectués par les entreprises</span>
</div>
</div>
<div class="page" style="page-break-after: always;">
<div class="border border-2 p-2">
<h3 class="bg-secondary text-center font-weight-bold">Donateur</h3>
<div class="row">
<div class="col-6">
<p class="mb-1">Nom:</p>
<t t-set="uppercase_words" t-value="[word for word in o.partner_id.name.split() if word.isupper()]"/>
<t t-foreach="uppercase_words" t-as="word">
<p class="pointille" t-esc="word"/><span> </span>
</t>
</div>
<div class="col-6">
<p class="mb-1">Prénoms:</p>
<t t-set="first_letter_uppercase_words" t-value="[word for word in o.partner_id.name.split() if word[0].isupper() and not word.isupper()]"/>
<t t-foreach="first_letter_uppercase_words" t-as="word">
<p class="pointille" t-esc="word"/><span> </span>
</t>
</div>
</div>
<div class="row">
<div class="col-12 mt-4">
<p class="mb-1">Adresse :</p>
<p class="pointille" t-esc="o.partner_id.street + (o.partner_id.street2 and '; ' + o.partner_id.street2 or '')"/>
</div>
</div>
<div class="row mt-3">
<div class="col-3">
<p>Code Postal:<span class="pointille" t-field="o.partner_id.zip" /></p>
</div>
<div class="col-9">
<p>Commune: <span class="pointille" t-field="o.partner_id.city"/></p>
</div>
</div>
</div>
<div class="border border-2 mt-4 p-2">
<p>Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction dimpôt, la somme de :
<span style="border: 1px solid black;" t-esc="o.amount"/> Euros
</p>
<p>Somme en toutes lettres : <span t-esc="o.amount_in_words" /></p>
<p>Date du versement ou du don : <span t-field="o.date" t-options="{'date_format': 'dd MM yyyy'}"/></p>
<p>Le bénéficiaire certifie sur lhonneur que les dons et versements quil reçoit ouvrent droit à la réduction dimpôt prévue à larticle (3) :
<t t-foreach="[ ('200 du CGI', 'person'), ('238 bis du CGI', 'company'), ('978 du CGI', 'other') ]" t-as="option">
<input type="checkbox" t-if="o.partner_id.company_type == option[1]" checked="checked"/>
<input type="checkbox" t-if="o.partner_id.company_type != option[1]"/>
<span t-raw="option[0]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black;"/>
</p>
<p class="font-weight-bold">Forme du don : </p>
<p>
<t t-foreach="[
('option1', 'Acte authentique'),
('option2', 'Acte sous seing privé'),
('option3', 'Déclaration de don manuel'),
('option4', 'Autres')
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'option3'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'option3'"/>
<span t-raw="option[1]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black; margin-top: 20px;" />
</p>
<p class="font-weight-bold">Nature du don : </p>
<p>
<t t-foreach="[
('option1', 'Numéraire'),
('option2', 'Titres de sociétés cotés'),
('option3', 'Autres (4)'),
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'option3'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'option3'"/>
<span t-raw="option[1]"/>
</t>
<hr style="height: 2px; width: 100%; background-color: black;"/>
</p>
<p class="font-weight-bold">En cas de don en numéraire, mode de versement du don : </p>
<p>
<t t-foreach="[
('Espèces (entrant)', 'Remise despèces'),
('Chèque', 'Chèque'),
('Virement', 'Virement, prélèvement, carte bancaire'),
]"
t-as="option">
<input type="checkbox" t-if="option[0] == 'o.payment_mode_id'" checked="checked"/>
<input type="checkbox" t-if="option[0] != 'o.payment_mode_id'"/>
<span t-raw="option[1]"/>
</t>
</p>
</div>
<div>
<div class="row">
<p>(3) Lorganisme bénéficiaire peut cocher une ou plusieurs cases. Lorganisme bénéficiaire peut, en application de larticle L. 80 C du livre des procédures fiscales, demander à ladministration sil relève de lune des catégories dorganismes mentionnées aux articles 200 et 238 bis du code général des impôts. Il est rappelé que la délivrance irrégulière de reçus fiscaux par lorganisme bénéficiaire et susceptible de donner lieu, en application des dispositions de larticle 1740 A du code général des impôts, à une amende fiscale égale à 25% des sommes indûment mentionnées sur ces documents.</p>
<p>(4) Notamment : abandon de revenus ou de produits ; frais engagés par les bénévoles, dont ils renoncent expressément au remboursement.</p>
</div>
<div class="border border-2">
<p style="text-align: right;">Date et signature</p>
</div>
</div>
</div>
</t>
<table class="table table-sm o_main_table">
<thread>
<tr>
<th class="text-left"><span>Références</span></th>
</tr>
</thread>
<tbody class="invoice_tbody">
<tr>
<td><p t-field="o.thanks_template_id.text"/></td>
</tr>
</tbody>
</table>
</t>
<t t-else="">
<ul>
<t t-foreach="o.line_ids" t-as="line">
<li><span t-esc="line.name if line.name else line.product_id.name"/></li>
</t>
</ul>
</t>
<p>*Ce document ne constitue PAS un reçu fiscal.</p>
</t>
<t t-else="">
<p>L'équipe du Garage Numérique vous remercie pour votre don du <span t-field="o.donation_date"/>, d'un montant de <span t-field="o.tax_receipt_total"/> , soit <span t-esc="o.currency_id.amount_to_text(o.tax_receipt_total)"/> versées en espèces</p>
</t>
</div>
</t>
</t>
</t>
</xpath>