mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-23 20:03:11 +00:00
POC de l'envoi de facture par mail.
This commit is contained in:
parent
a02db1547a
commit
904c7b279b
3 changed files with 67 additions and 5 deletions
8
cotisations/templates/cotisations/email_invoice
Normal file
8
cotisations/templates/cotisations/email_invoice
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Dear {{name}},
|
||||||
|
|
||||||
|
Thank you for your purchase. Here is your invoice.
|
||||||
|
|
||||||
|
Should you need extra information, you can email us at {{contact_mail}}.
|
||||||
|
|
||||||
|
Best regards,
|
||||||
|
{{ asso_name }}'s team
|
|
@ -61,11 +61,9 @@ def render_invoice(_request, ctx={}):
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
def render_tex(_request, template, ctx={}):
|
def create_pdf(template, ctx={}):
|
||||||
"""
|
"""
|
||||||
Creates a PDF from a LaTex templates using pdflatex.
|
Creates and returns a PDF from a LaTeX template using pdflatex.
|
||||||
Writes it in a temporary directory and send back an HTTP response for
|
|
||||||
accessing this file.
|
|
||||||
"""
|
"""
|
||||||
context = Context(ctx)
|
context = Context(ctx)
|
||||||
template = get_template(template)
|
template = get_template(template)
|
||||||
|
@ -81,6 +79,17 @@ def render_tex(_request, template, ctx={}):
|
||||||
process.communicate(rendered_tpl)
|
process.communicate(rendered_tpl)
|
||||||
with open(os.path.join(tempdir, 'texput.pdf'), 'rb') as f:
|
with open(os.path.join(tempdir, 'texput.pdf'), 'rb') as f:
|
||||||
pdf = f.read()
|
pdf = f.read()
|
||||||
|
|
||||||
|
return pdf
|
||||||
|
|
||||||
|
|
||||||
|
def render_tex(_request, template, ctx={}):
|
||||||
|
"""
|
||||||
|
Creates a PDF from a LaTex templates using pdflatex.
|
||||||
|
Writes it in a temporary directory and send back an HTTP response for
|
||||||
|
accessing this file.
|
||||||
|
"""
|
||||||
|
pdf = create_pdf(template, ctx={})
|
||||||
r = HttpResponse(content_type='application/pdf')
|
r = HttpResponse(content_type='application/pdf')
|
||||||
r.write(pdf)
|
r.write(pdf)
|
||||||
return r
|
return r
|
||||||
|
|
|
@ -40,6 +40,8 @@ from django.db.models import Q
|
||||||
from django.forms import modelformset_factory, formset_factory
|
from django.forms import modelformset_factory, formset_factory
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
from django.core.mail import EmailMessage
|
||||||
|
from django.template.loader import get_template
|
||||||
|
|
||||||
# Import des models, forms et fonctions re2o
|
# Import des models, forms et fonctions re2o
|
||||||
from reversion import revisions as reversion
|
from reversion import revisions as reversion
|
||||||
|
@ -72,7 +74,7 @@ from .forms import (
|
||||||
SelectClubArticleForm,
|
SelectClubArticleForm,
|
||||||
RechargeForm
|
RechargeForm
|
||||||
)
|
)
|
||||||
from .tex import render_invoice
|
from .tex import create_pdf, render_invoice
|
||||||
from .payment_methods.forms import payment_method_factory
|
from .payment_methods.forms import payment_method_factory
|
||||||
from .utils import find_payment_method
|
from .utils import find_payment_method
|
||||||
|
|
||||||
|
@ -147,6 +149,48 @@ def new_facture(request, user, userid):
|
||||||
p.facture = new_invoice_instance
|
p.facture = new_invoice_instance
|
||||||
p.save()
|
p.save()
|
||||||
|
|
||||||
|
facture = new_invoice_instance # BErk
|
||||||
|
purchases_info = []
|
||||||
|
for purchase in facture.vente_set.all():
|
||||||
|
purchases_info.append({
|
||||||
|
'name': purchase.name,
|
||||||
|
'price': purchase.prix,
|
||||||
|
'quantity': purchase.number,
|
||||||
|
'total_price': purchase.prix_total
|
||||||
|
})
|
||||||
|
ctx = {
|
||||||
|
'paid': True,
|
||||||
|
'fid': facture.id,
|
||||||
|
'DATE': facture.date,
|
||||||
|
'recipient_name': "{} {}".format(
|
||||||
|
facture.user.name,
|
||||||
|
facture.user.surname
|
||||||
|
),
|
||||||
|
'address': facture.user.room,
|
||||||
|
'article': purchases_info,
|
||||||
|
'total': facture.prix_total(),
|
||||||
|
'asso_name': AssoOption.get_cached_value('name'),
|
||||||
|
'line1': AssoOption.get_cached_value('adresse1'),
|
||||||
|
'line2': AssoOption.get_cached_value('adresse2'),
|
||||||
|
'siret': AssoOption.get_cached_value('siret'),
|
||||||
|
'email': AssoOption.get_cached_value('contact'),
|
||||||
|
'phone': AssoOption.get_cached_value('telephone'),
|
||||||
|
'tpl_path': os.path.join(settings.BASE_DIR, LOGO_PATH)
|
||||||
|
}
|
||||||
|
|
||||||
|
pdf = create_pdf('cotisations/factures.tex', ctx)
|
||||||
|
|
||||||
|
template = get_template('cotisations/email_invoice')
|
||||||
|
|
||||||
|
mail = EmailMessage(
|
||||||
|
_('Your invoice'),
|
||||||
|
template.render(ctx),
|
||||||
|
GeneralOption.get_cached_value('email_from'),
|
||||||
|
[new_invoice_instance.user.email],
|
||||||
|
attachments = [('invoice.pdf', pdf, 'application/pdf')]
|
||||||
|
)
|
||||||
|
mail.send()
|
||||||
|
|
||||||
return new_invoice_instance.paiement.end_payment(
|
return new_invoice_instance.paiement.end_payment(
|
||||||
new_invoice_instance,
|
new_invoice_instance,
|
||||||
request
|
request
|
||||||
|
@ -161,6 +205,7 @@ def new_facture(request, user, userid):
|
||||||
balance = user.solde
|
balance = user.solde
|
||||||
else:
|
else:
|
||||||
balance = None
|
balance = None
|
||||||
|
|
||||||
return form(
|
return form(
|
||||||
{
|
{
|
||||||
'factureform': invoice_form,
|
'factureform': invoice_form,
|
||||||
|
|
Loading…
Reference in a new issue