8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-12-24 16:03:47 +00:00

Fix 141 : envoi des factures par mail

This commit is contained in:
Delphine SALVY 2018-07-23 00:13:25 +02:00 committed by Hugo LEVY-FALK
parent 904c7b279b
commit 9dd54a99a5
3 changed files with 83 additions and 45 deletions

View file

@ -1,3 +1,17 @@
=== English version below ===
Bonjour {{name}},
Nous vous remercions pour votre achat auprès de {{asso_name}} et nous vous en joignons la facture.
En cas de question, nhésitez pas à nous contacter par mail à {{contact_mail}}.
Cordialement,
Léquipe de {{asso_name}}
=== English version ===
Dear {{name}}, Dear {{name}},
Thank you for your purchase. Here is your invoice. Thank you for your purchase. Here is your invoice.

View file

@ -19,6 +19,16 @@
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
from django.template.loader import get_template
from django.core.mail import EmailMessage
from .tex import create_pdf
from preferences.models import AssoOption, GeneralOption
from re2o.settings import LOGO_PATH
from re2o import settings
def find_payment_method(payment): def find_payment_method(payment):
"""Finds the payment method associated to the payment if it exists.""" """Finds the payment method associated to the payment if it exists."""
@ -30,3 +40,56 @@ def find_payment_method(payment):
except method.PaymentMethod.DoesNotExist: except method.PaymentMethod.DoesNotExist:
pass pass
return None return None
def send_mail_invoice(invoice):
"""Creates the pdf of the invoice and sends it by email to the client"""
purchases_info = []
for purchase in invoice.vente_set.all():
purchases_info.append({
'name': purchase.name,
'price': purchase.prix,
'quantity': purchase.number,
'total_price': purchase.prix_total
})
ctx = {
'paid': True,
'fid': invoice.id,
'DATE': invoice.date,
'recipient_name': "{} {}".format(
invoice.user.name,
invoice.user.surname
),
'address': invoice.user.room,
'article': purchases_info,
'total': invoice.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')
ctx = {
'name': "{} {}".format(
invoice.user.name,
invoice.user.surname
),
'contact_mail': AssoOption.get_cached_value('contact'),
'asso_name': AssoOption.get_cached_value('name')
}
mail = EmailMessage(
'Votre facture / Your invoice',
template.render(ctx),
GeneralOption.get_cached_value('email_from'),
[invoice.user.email],
attachments=[('invoice.pdf', pdf, 'application/pdf')]
)
mail.send()

View file

@ -40,8 +40,6 @@ 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
@ -74,9 +72,9 @@ from .forms import (
SelectClubArticleForm, SelectClubArticleForm,
RechargeForm RechargeForm
) )
from .tex import create_pdf, render_invoice from .tex import 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, send_mail_invoice
@login_required @login_required
@ -149,47 +147,7 @@ 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 send_mail_invoice(new_invoice_instance)
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,
@ -791,6 +749,9 @@ def credit_solde(request, user, **_kwargs):
prix=refill_form.cleaned_data['value'], prix=refill_form.cleaned_data['value'],
number=1 number=1
) )
send_mail_invoice(invoice)
return invoice.paiement.end_payment(invoice, request) return invoice.paiement.end_payment(invoice, request)
p = get_object_or_404(Paiement, is_balance=True) p = get_object_or_404(Paiement, is_balance=True)
return form({ return form({