mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-30 08:32:26 +00:00
134 lines
4.7 KiB
Python
134 lines
4.7 KiB
Python
# -*- mode: python; coding: utf-8 -*-
|
|
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
|
# se veut agnostique au réseau considéré, de manière à être installable en
|
|
# quelques clics.
|
|
#
|
|
# Copyright © 2018 Hugo Levy-Falk
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 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, CotisationsOption, Mandate
|
|
)
|
|
from re2o.settings import LOGO_PATH
|
|
from re2o import settings
|
|
|
|
|
|
def find_payment_method(payment):
|
|
"""Finds the payment method associated to the payment if it exists."""
|
|
from cotisations.payment_methods import PAYMENT_METHODS
|
|
for method in PAYMENT_METHODS:
|
|
try:
|
|
o = method.PaymentMethod.objects.get(payment=payment)
|
|
return o
|
|
except method.PaymentMethod.DoesNotExist:
|
|
pass
|
|
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.get_mail],
|
|
attachments=[('invoice.pdf', pdf, 'application/pdf')]
|
|
)
|
|
mail.send()
|
|
|
|
|
|
def send_mail_voucher(invoice):
|
|
"""Creates a voucher from an invoice and sends it by email to the client"""
|
|
president = Mandate.get_mandate(invoice.date).president
|
|
ctx = {
|
|
'asso_name': AssoOption.get_cached_value('name'),
|
|
'pres_name': ' '.join([president.name, president.surname]),
|
|
'firstname': invoice.user.name,
|
|
'lastname': invoice.user.surname,
|
|
'email': invoice.user.email,
|
|
'phone': invoice.user.telephone,
|
|
'date_end': invoice.get_subscription().latest('date_end').date_end,
|
|
'date_begin': invoice.get_subscription().earliest('date_start').date_start
|
|
}
|
|
templatename = CotisationsOption.get_cached_value('voucher_template').template.name.split('/')[-1]
|
|
pdf = create_pdf(templatename, ctx)
|
|
template = get_template('cotisations/email_subscription_accepted')
|
|
|
|
ctx = {
|
|
'name': "{} {}".format(
|
|
invoice.user.name,
|
|
invoice.user.surname
|
|
),
|
|
'asso_email': AssoOption.get_cached_value('contact'),
|
|
'asso_name': AssoOption.get_cached_value('name'),
|
|
'date_end': invoice.get_subscription().latest('date_end').date_end,
|
|
}
|
|
|
|
mail = EmailMessage(
|
|
'Votre reçu / Your voucher',
|
|
template.render(ctx),
|
|
GeneralOption.get_cached_value('email_from'),
|
|
[invoice.user.get_mail],
|
|
attachments=[('voucher.pdf', pdf, 'application/pdf')]
|
|
)
|
|
mail.send()
|