From 2380d30abab02c67c8914c84db214c83902ff31d Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 13 Sep 2022 20:20:40 +0000 Subject: [PATCH] =?UTF-8?q?Script=20de=20contr=C3=B4le=20des=20adh=C3=A9si?= =?UTF-8?q?ons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controle_adhesion/Makefile | 8 + controle_adhesion/README.md | 1 + controle_adhesion/mail_bienvenue.txt | 35 ++ controle_adhesion/mail_bienvenue_header.txt | 6 + controle_adhesion/mail_resume.txt | 5 + controle_adhesion/main.py | 343 ++++++++++++++++++ controle_adhesion/sendmail.sh | 8 + controle_cotisation/RECU_COTISATION.tex | 117 ++++++ controle_cotisation/check_cotisation.sh | 234 ++++++++++++ .../envoi_instruction_cotisation.sh | 77 ++++ controle_cotisation/generer_cotisation.sh | 44 +++ controle_cotisation/get_all.sh | 21 ++ controle_cotisation/get_expires.sh | 12 + controle_cotisation/get_impayes.sh | 12 + controle_cotisation/get_payes.sh | 12 + controle_cotisation/header.png | Bin 0 -> 86999 bytes controle_cotisation/mail_cotisation.txt | 32 ++ .../mail_instructions_cotisation.txt | 47 +++ .../manuel_valider_cotisation.sh | 73 ++++ controle_cotisation/recap_header.txt | 6 + controle_cotisation/valider_cotisation.sh | 58 +++ controle_don/RECU_FISCAL.tex | 122 +++++++ controle_don/check_don.sh | 173 +++++++++ controle_don/envoi_instructions_don.sh | 71 ++++ controle_don/generer_don.sh | 43 +++ controle_don/get_all.sh | 21 ++ controle_don/get_expires.sh | 12 + controle_don/get_impayes.sh | 12 + controle_don/get_payes.sh | 12 + controle_don/header.png | Bin 0 -> 86999 bytes controle_don/mail_don.txt | 32 ++ controle_don/mail_instructions_don.txt | 48 +++ controle_don/recap_header.txt | 6 + controle_don/valider_don.sh | 76 ++++ 34 files changed, 1779 insertions(+) create mode 100644 controle_adhesion/Makefile create mode 100644 controle_adhesion/README.md create mode 100644 controle_adhesion/mail_bienvenue.txt create mode 100644 controle_adhesion/mail_bienvenue_header.txt create mode 100644 controle_adhesion/mail_resume.txt create mode 100755 controle_adhesion/main.py create mode 100755 controle_adhesion/sendmail.sh create mode 100644 controle_cotisation/RECU_COTISATION.tex create mode 100755 controle_cotisation/check_cotisation.sh create mode 100755 controle_cotisation/envoi_instruction_cotisation.sh create mode 100755 controle_cotisation/generer_cotisation.sh create mode 100755 controle_cotisation/get_all.sh create mode 100755 controle_cotisation/get_expires.sh create mode 100755 controle_cotisation/get_impayes.sh create mode 100755 controle_cotisation/get_payes.sh create mode 100644 controle_cotisation/header.png create mode 100644 controle_cotisation/mail_cotisation.txt create mode 100644 controle_cotisation/mail_instructions_cotisation.txt create mode 100755 controle_cotisation/manuel_valider_cotisation.sh create mode 100644 controle_cotisation/recap_header.txt create mode 100755 controle_cotisation/valider_cotisation.sh create mode 100644 controle_don/RECU_FISCAL.tex create mode 100755 controle_don/check_don.sh create mode 100755 controle_don/envoi_instructions_don.sh create mode 100755 controle_don/generer_don.sh create mode 100755 controle_don/get_all.sh create mode 100755 controle_don/get_expires.sh create mode 100755 controle_don/get_impayes.sh create mode 100755 controle_don/get_payes.sh create mode 100644 controle_don/header.png create mode 100644 controle_don/mail_don.txt create mode 100644 controle_don/mail_instructions_don.txt create mode 100644 controle_don/recap_header.txt create mode 100755 controle_don/valider_don.sh diff --git a/controle_adhesion/Makefile b/controle_adhesion/Makefile new file mode 100644 index 0000000..400f306 --- /dev/null +++ b/controle_adhesion/Makefile @@ -0,0 +1,8 @@ +build: + : + +install: + : + +run: + python3 main.py \ No newline at end of file diff --git a/controle_adhesion/README.md b/controle_adhesion/README.md new file mode 100644 index 0000000..77d4dd7 --- /dev/null +++ b/controle_adhesion/README.md @@ -0,0 +1 @@ +# GESTION -- outils de secrétariat diff --git a/controle_adhesion/mail_bienvenue.txt b/controle_adhesion/mail_bienvenue.txt new file mode 100644 index 0000000..d7d246d --- /dev/null +++ b/controle_adhesion/mail_bienvenue.txt @@ -0,0 +1,35 @@ +Bonjour NOM_MEMBRE, + +J'ai le plaisir de vous confirmer que votre adhésion à l'association Libre en +Communs a été enregistrée, sous le numéro de membre NUMERO_MEMBRE. + +En adhérant à l'association vous adoptez ses statuts et acceptez son règlement +intérieur. Vous pourrez retrouver ces textes, actualisés, sur la forge +logicielle de l'association : + +- https://git.a-lec.org/a-lec/vie-associative/statuts +- https://git.a-lec.org/a-lec/vie-associative/reglement-interieur + +Notez que les correspondances ultérieures avec l'association se feront à +travers l'adresse de courriel COURRIEL_MEMBRE que vous avez choisie lors de +votre adhésion, redirigée ou non selon vos demandes à l'inscription. +La Commission Infrastructures vous informera de la mise en place de cette +adresse et des autres services éventuels que vous auriez demandés. N'hésitez +pas à contacter cette commission pour toute demande (cominfra@a-lec.org). + +Le trésorier de notre association vous contactera très bientôt pour fixer avec +vous les modalités de règlement de votre cotisation annuelle. + +En attendant, au nom de toute l'association, je vous souhaite la bienvenue dans +ce nouvel espace de liberté partagé ! + +Librement, +-- +Jean Sirmai +Secrétaire de Libre en Communs +GPG: 4ab2153d1f66ac2e +- +Association Libre en Communs + + + diff --git a/controle_adhesion/mail_bienvenue_header.txt b/controle_adhesion/mail_bienvenue_header.txt new file mode 100644 index 0000000..7b4c6c7 --- /dev/null +++ b/controle_adhesion/mail_bienvenue_header.txt @@ -0,0 +1,6 @@ +From: =?UTF-8?Q?Secr=c3=a9taire_de_Libre_en_Communs?= +To: +Bcc: , +Subject: =?UTF-8?Q?=5bSecr=c3=a9tariat=5d_Confirmation de votre adh=c3=a9sion?= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable \ No newline at end of file diff --git a/controle_adhesion/mail_resume.txt b/controle_adhesion/mail_resume.txt new file mode 100644 index 0000000..d5717d1 --- /dev/null +++ b/controle_adhesion/mail_resume.txt @@ -0,0 +1,5 @@ +From: =?UTF-8?Q?Secr=c3=a9taire_de_Libre_en_Communs?= +To: +Subject: Suivi automatique des adhesions +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable \ No newline at end of file diff --git a/controle_adhesion/main.py b/controle_adhesion/main.py new file mode 100755 index 0000000..ed28fd4 --- /dev/null +++ b/controle_adhesion/main.py @@ -0,0 +1,343 @@ +#!/usr/bin/python3 + +# Libre en Communs's adhesion control program +# Copyright (C) 2022 Libre en Communs + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import os, requests, json, datetime, shutil, quopri, subprocess +from requests.auth import HTTPBasicAuth +from requests.auth import HTTPDigestAuth + + +VERSION="0.0.1" +GESTION_SECRET_FILE="/home/secretaire/.secret/gestion_api_password" +GIT_SECRET_FILE="/home/secretaire/.secret/git_api_password" +WORKDIR="/srv/validation_pre_adhesion.d" +WELCOME_MAIL="mail_bienvenue.txt" +WELCOME_MAIL_HEADERS="mail_bienvenue_header.txt" +SUMMARY_MAIL="mail_resume.txt" +SENDMAIL_LOCATION = "/usr/sbin/sendmail" # sendmail location +BUF=[] + +# gestion_read("SELECT * FROM services_users su \ +# INNER JOIN membres m ON m.id = su.id_user \ +# INNER JOIN services_fees sf ON sf.id = su.id_fee \ +# LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id \ +# LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction \ +# WHERE m.id = 3 AND l.id_account = 481;") + +def gestion_get_secret(): + with open(GESTION_SECRET_FILE) as sfile: + return sfile.readline().replace("\n", "") + +def git_get_secret(): + with open(GIT_SECRET_FILE) as sfile: + return sfile.readline().replace("\n", "") + +def get_file_content(filename): + with open(filename) as sfile: + return sfile.readlines() + +def get_file_content_all(filename): + with open(filename) as sfile: + return sfile.read() + +def set_file_content(filename, lines): + with open(filename, "x") as sfile: + return sfile.writelines(lines) + +def gestion_read(req): + response = requests.post('https://gestion.a-lec.org/api/sql/', + auth = HTTPBasicAuth('api666', gestion_get_secret()), + data = req) + return response.json() + +def git_mail_ticket_create(req): + response = requests.post('https://git.a-lec.org/api/v4/projects/46/issues', + headers={'PRIVATE-TOKEN' : git_get_secret()}, + data = req) + return response.json() + +def git_xmpp_ticket_create(req): + response = requests.post('https://git.a-lec.org/api/v4/projects/44/issues', + headers={'PRIVATE-TOKEN' : git_get_secret()}, + data = req) + return response.json() + +def gestion_adduser(req): + response = requests.put('https://gestion.a-lec.org/api/user/import', + auth = HTTPBasicAuth('api666', gestion_get_secret()), + data = req) + return response.content + +def setup_workdir(): + if not os.path.isdir(WORKDIR): + os.mkdir(WORKDIR) + if not "nouveau" in os.listdir(WORKDIR): + os.mkdir(WORKDIR+"/nouveau") + if not "attente" in os.listdir(WORKDIR): + os.mkdir(WORKDIR+"/attente") + if not "valide" in os.listdir(WORKDIR): + os.mkdir(WORKDIR+"/valide") + if not "refuse" in os.listdir(WORKDIR): + os.mkdir(WORKDIR+"/refuse") + +def sendmail(headers, data): + msg = bytes(headers + "\n", 'utf-8') + quopri.encodestring(bytes(data, 'utf-8')) + subprocess.run([SENDMAIL_LOCATION, "-t", "-oi"], input=msg) + +def new_registrations_worker(): + if (os.listdir(WORKDIR+"/nouveau") == []): + return + global BUF + BUF.append("*** Nouvelles adhésions ***") + BUF.append("{} nouvelle(s) adhésion(s) reçue(s)".format( + len(os.listdir( + WORKDIR+"/nouveau")))) + + # Parse each new registration + for registration in os.listdir(WORKDIR+"/nouveau"): + registration = WORKDIR+"/nouveau/"+registration + if not os.path.isfile(registration): + BUF.append("{} n'est pas un fichier".format(registration)) + continue + numcode, content = get_file_content(registration)[0].split("|") + reg_name, reg_firstname, reg_addr, reg_postalcode, reg_city, reg_email,\ + reg_attribmail, reg_redir, reg_tarif, reg_payment, reg_xmpp \ + = content.split(";") + + # Write summary + BUF.append("\n* {}\n".format(numcode)) + BUF.append("Nom: {} {}\nCode postal: {}\n".format(reg_name, + reg_firstname, reg_postalcode)) + + # Check if exists + request = "SELECT numero FROM membres \ + WHERE email = '{}' and nom = '{} {}'".format( + reg_attribmail, + reg_name, + reg_firstname) + try: + if len(gestion_read(request)['results']) > 0: + BUF.append("Utilisateur déjà existant !") + continue + except: + BUF.append("Erreur inconnue : {}".format(gestion_read(request))) + continue + + # Create this new member + request = ('"numero","date_adhesion","statut_juridique","siren_rna",' \ + + '"nom","email","mail_redirs","adresse","code_postal","ville","pays",'\ + + '"telephone","notes","Catégorie membre"' + "\n" \ + + '"{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}",' + + '"{}"').format( + "", + datetime.datetime.now().strftime("%d/%m/%Y"), + "Personne physique", + "", + "{} {}".format(reg_name, reg_firstname), + reg_attribmail, + reg_email, + reg_addr, + reg_postalcode, + reg_city, + "FR", + "", + "Adhesion "+numcode, + "") + answer = gestion_adduser(request) + if len(answer) > 0: + BUF.append("Erreur : {}".format(answer)) + + # Check if exists now + request = "SELECT numero FROM membres \ + WHERE email = '{}' and nom = '{} {}'".format( + reg_attribmail, + reg_name, + reg_firstname) + try: + if len(gestion_read(request)['results']) == 0: + BUF.append("Inscription échouée pour une raison inconnue...") + continue + except: + BUF.append("Erreur inconnue : {}".format(gestion_read(request))) + continue + + # Register new member to wait for secretary + numero = gestion_read(request)['results'][-1]['numero'] + try: + os.remove(WORKDIR+"/attente/"+numcode) + except: + pass + set_file_content( + WORKDIR+"/attente/"+numcode, + ["{};{};{};{}".format(numero, reg_email, reg_redir, reg_xmpp)]) + + # Cleanup + os.remove(registration) + + +def validate_registrations_worker(): + if (os.listdir(WORKDIR+"/attente") == []): + return + global BUF + PREBUF = [] + PREBUF.append("\n*** Adhésions en validation ***") + PREBUF.append("{} nouvelle(s) adhésion(s) reçue(s)".format( + len(os.listdir( + WORKDIR+"/attente")))) + if len(BUF) > 0: + BUF = BUF + PREBUF ; PREBUF = [] # flush + + + # Parse each new registration + for registration in os.listdir(WORKDIR+"/attente"): + numcode = registration + registration = WORKDIR+"/attente/"+registration + if not os.path.isfile(registration): + BUF = BUF + PREBUF ; PREBUF = [] # flush + BUF.append("{} n'est pas un fichier".format(registration)) + continue + + numero, email, is_redir, is_xmpp = \ + get_file_content(registration)[0].split(";") + + # Write summary + PREBUF.append("\n* {}\n".format(numcode)) + + # Gather information + request = "SELECT * FROM membres \ + WHERE numero = '{}'".format(numero) + + # Check status + try: + if len(gestion_read(request)['results']) == 0: + BUF = BUF + PREBUF ; PREBUF = [] # flush + BUF.append("Validation échouée : membre refusé.") + + # Register new member to be refused + try: + os.remove(registration.replace("attente", "refuse")) + except: + pass + os.rename(registration, registration.replace("attente", "refuse")) + continue + except: + BUF.append("Erreur inconnue : {}".format(gestion_read(request))) + continue + + # Gather information + member = gestion_read(request)['results'][-1] + + PREBUF.append(("Numéro de membre: {}\nNom: {}\nCode postal: {}").format( + numero, + member['nom'], + member['code_postal'])) + PREBUF.append(("Catégorie: {}").format(member['id_category'])) + + # Check category (validated or not !) + if member['id_category'] == 2: + continue + elif member['id_category'] == 10: + continue + + BUF = BUF + PREBUF ; PREBUF = [] # flush + BUF.append("=> MEMBRE VALIDE PAR SECRETARIAT <=") + + # Launch git tickets + request = { 'title' : "Création d'un compte courriel membre n°{}".format(numero), + 'labels' : "Nouveau membre", + 'confidential' : "yes", + 'description' : "Bonjour,\n Une demande de création de compte de" \ + + "courriel ou une redirection a été émise.\n\n" \ + + "Compte de courriel actuel : {} \n".format( + email) \ + + "Compte de courriel désiré : {} \n".format( + member['email']) \ + + "Redirection ('on' si oui, vide si non) : {} \n".format( + is_redir) + } + if not "id" in str(git_mail_ticket_create(request)): + BUF.append("Validation échouée : ticket git MAIL en erreur : {}".format( + git_mail_ticket_create(request) + )) + continue + else: + BUF.append("Ticket courriel ouvert.") + + if is_xmpp == "on": + request = { 'title' : "Création d'un compte XMPP membre n°{}".format(numero), + 'labels' : "Nouveau membre", + 'confidential' : "yes", + 'description' : "Bonjour,\n Une demande de création de compte" \ + + "XMPP a été émise.\n\n" \ + + "Compte de courriel actuel : {} \n".format( + email) \ + + "Compte XMPP désiré : {} \n".format( + member['email']) + } + if not "id" in str(git_xmpp_ticket_create(request)): + BUF.append("Validation échouée : ticket git MAIL en erreur : {}".format( + git_xmpp_ticket_create(request) + )) + continue + else: + BUF.append("Ticket XMPP ouvert.") + + # Launch welcoming mail + mailtextheaders = get_file_content_all(WELCOME_MAIL_HEADERS) + mailtext = get_file_content_all(WELCOME_MAIL) + + mailtextheaders = mailtextheaders.replace("COURRIEL_INSCRIPTION", email) + mailtext = mailtext.replace("NUMERO_MEMBRE", numero) + mailtext = mailtext.replace("COURRIEL_MEMBRE", member['email']) + mailtext = mailtext.replace("COURRIEL_INSCRIPTION", email) + mailtext = mailtext.replace("NOM_MEMBRE", member['nom']) + + sendmail(mailtextheaders, mailtext) + + # Register new member to be validated + try: + os.remove(registration.replace("attente", "valide")) + except: + pass + os.rename(registration, registration.replace("attente", "valide")) + +def main(): + setup_workdir() + new_registrations_worker() + validate_registrations_worker() + + # End of work + # Launch summary mail + mailheaders = get_file_content_all(SUMMARY_MAIL) + "\n" + mailtext = "" + + is_sendable = False; + for line in BUF: + mailtext += line + "\n" + is_sendable = True; + print(line) + + if is_sendable: + try: + os.remove("temp.txt") + except: + pass + sendmail(mailheaders, mailtext) + +## Bootstrap +if __name__ == '__main__': + main() diff --git a/controle_adhesion/sendmail.sh b/controle_adhesion/sendmail.sh new file mode 100755 index 0000000..5b4b749 --- /dev/null +++ b/controle_adhesion/sendmail.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Check_adhesion +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +set -e + +(cat temp.txt) | /usr/sbin/sendmail -i -- tresorier@a-lec.org \ No newline at end of file diff --git a/controle_cotisation/RECU_COTISATION.tex b/controle_cotisation/RECU_COTISATION.tex new file mode 100644 index 0000000..170c4f5 --- /dev/null +++ b/controle_cotisation/RECU_COTISATION.tex @@ -0,0 +1,117 @@ +\documentclass{article} + +\usepackage{graphicx} +\usepackage{tabto} +\usepackage{datetime} +\ddmmyyyydate +\usepackage[a4paper, total={7in, 12.5in}]{geometry} + +\renewcommand{\familydefault}{\sfdefault} + + +\title{ + + \begin{flushright} + \vspace*{2ex} + + \huge \bf Association Libre en Communs + \end{flushright} + + \vspace*{-6ex} + + \noindent\makebox[\textwidth]{ + \includegraphics[width=\paperwidth]{header.png} + } + + \vspace*{-9ex} + + \begin{flushright} + \huge Reçu de cotisation annuelle + \end{flushright} +} + +\date{} + +% -- + +\begin{document} + + \maketitle + \pagenumbering{gobble} + + \vspace*{2ex} + + \section*{Bénéficiaire des versements} + + \vspace*{2ex} + + \subparagraph{Dénomination} \tabto{5cm} LIBRE EN COMMUNS (RNA W941017425) + + \vspace*{-2ex} + + \subparagraph{Statut} \tabto{5cm} Association loi 1901 reconnue d'interêt général, à but non lucratif + + \vspace*{-2ex} + + \subparagraph{Adresse} \tabto{5cm} 13 RUE SULLY, 94210 SAINT-MAUR-DES-FOSSES + + \vspace*{2ex} + + \section*{Cotisant} + + \vspace*{2ex} + + \subparagraph{Nom ou dénomination} \tabto{5cm} NOM-COTISANT + + \vspace*{-2ex} + + \subparagraph{Statut} \tabto{5cm} STATUT-COTISANT + + \vspace*{-2ex} + + \subparagraph{Adresse} \tabto{5cm} ADRESSE-COTISANT + + \section*{} + + Le bénéficiaire rappelle que la cotisation n’est pas soumise à la TVA et qu’elle ne donne pas lieu à la délivrance d’une facture. Elle n’ouvre pas droit au bénéfice des dispositions des articles 200, 238 bis et 885-0 V bis A du code général des impôts. Ainsi, aucune réduction d'impôt ne pourra être obtenue de ce reçu. \newline \newline Le bénéficiaire reconnaît avoir reçu au titre de la cotisation annuelle de membre la somme suivante : + + \vspace*{2ex} + + \subparagraph{Somme (EUR)} \tabto{5cm} ***SOMME*** € + + \vspace*{-2ex} + + \subparagraph{Date du versement} \tabto{5cm} DATE-VERSEMENT + + \vspace*{-2ex} + + \subparagraph{Mode de versement} \tabto{5cm} MODE-VERSEMENT + + \vspace*{-3ex} + + \section*{} + + Le bénéficiaire, par la présente, accuse réception de votre règlement et vous reconnaît à jour de cotisation à raison de votre adhésion à notre association pour l'année civile ANNEE-CIVILE. + + \section*{} + + \begin{flushright} + Pour servir et faire valoir ce que de droit, + + \vspace*{1ex} + + Le \today\ à Saint-Maur des Fossés, + + Le Trésorier de Libre en Communs + + \vspace*{2ex} + + \includegraphics[width=1.3in]{tresorier.png} + + \end{flushright} + + \section*{} + + \center Délivré par l'association Libre en Communs -- https://www.a-lec.org -- contact@a-lec.org + +\end{document} diff --git a/controle_cotisation/check_cotisation.sh b/controle_cotisation/check_cotisation.sh new file mode 100755 index 0000000..7f9ba87 --- /dev/null +++ b/controle_cotisation/check_cotisation.sh @@ -0,0 +1,234 @@ +#!/bin/bash +# Check_cotisation +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +contains() { + [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] +} + +get_membre_nom() +{ +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT nom FROM membres m WHERE m.id = $1;") +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo -e $requete | cut -d ":" -f 3 | tr -d "\"}]" +} + +################################################################################ + +# CREER ENVIRONNEMENT DE TRAVAIL +PASSWORD=$(cat ~/.secret/gestion_api_password) +VALIDATION_D=$(cat /etc/gestion-tresorerie/validation.conf) +PRE_VALID_F="pre-valid" +RELANCE_F="relance" +VALID_F="valid" +POST_VALID_F="post-valid" +ENVOI=$((0)) + +SORTIE=$(mktemp /tmp/temporary-file.XXXXXXXX) + +echo "From: root@gestion.a-lec.org (Cron Daemon)" >> "$SORTIE" +echo "To: tresorier@a-lec.org" >> "$SORTIE" +echo "Subject: [Tresorerie] Mis-a-jour cotisations " >> "$SORTIE" +echo "MIME-Version: 1.0" >> "$SORTIE" +echo "Content-Type: text/plain; charset=UTF-8" >> "$SORTIE" +echo "Content-Transfer-Encoding: 8bit" >> "$SORTIE" +echo " " >> "$SORTIE" + +if [ ! -d "$VALIDATION_D" ]; then + mkdir -p "$VALIDATION_D" +fi +if [ ! -f "$VALIDATION_D/$PRE_VALID_F" ]; then + touch "$VALIDATION_D/$PRE_VALID_F" +fi +if [ ! -f "$VALIDATION_D/$VALID_F" ]; then + touch "$VALIDATION_D/$VALID_F" +fi +if [ ! -f "$VALIDATION_D/$POST_VALID_F" ]; then + touch "$VALIDATION_D/$POST_VALID_F" +fi +if [ ! -f "$VALIDATION_D/$RELANCE_F" ]; then + touch "$VALIDATION_D/$RELANCE_F" +fi + +# LANCER VALIDATION +# CONSTRUIRE L'IMAGE POST-VALIDATION (TROISIEME TOUR) +IMPAYE_L=$(./get_impayes.sh) # cotisations pas à jour +EXPIRE_L=$(./get_expires.sh) # cotisations expirées +RELANCE_L=$(cat $VALIDATION_D/$RELANCE_F) +VALID_L=$(cat $VALIDATION_D/$VALID_F) # DEUXIEME TOUR +POST_VALID_L=$(cat $VALIDATION_D/$POST_VALID_F) # TROISIEME TOUR +if [ ! -z "$VALID_L" ] +then + for adherent in $VALID_L + do + if ! contains "${IMPAYE_L}" "${adherent}" + then + if ! contains "${EXPIRE_L}" "${adherent}" + then + POST_VALID_L="$POST_VALID_L $adherent" + NOM_ADHERENT=$(get_membre_nom $adherent) + echo -e "VALIDATION FAITE DE $NOM_ADHERENT ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + ./valider_cotisation.sh "$adherent" >> "$SORTIE" + fi + fi + done + POST_VALID_L=$(echo $POST_VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + VALID_L=" " + echo "$POST_VALID_L" > "$VALIDATION_D/$POST_VALID_F" +fi + +# CONTROLER LES ADHERENTS VALIDES +if [ ! -z "$POST_VALID_L" ] +then + NEW_POST_VALID_L=" " + for adherent in $POST_VALID_L + do + if ! contains "${IMPAYE_L}" "${adherent}" + then + if ! contains "${EXPIRE_L}" "${adherent}" + then + NEW_POST_VALID_L="$NEW_POST_VALID_L $adherent" + fi + fi + done + POST_VALID_L=$(echo $NEW_POST_VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + echo "$POST_VALID_L" > "$VALIDATION_D/$POST_VALID_F" +fi + + +# CONSTRUIRE L'IMAGE DE VALIDATION (DEUXIEME TOUR) +PRE_VALID_L=$(cat $VALIDATION_D/$PRE_VALID_F) # PREMIER TOUR +if [ ! -z "$PRE_VALID_L" ] +then + for adherent in $PRE_VALID_L + do + if [ ! -z "$POST_VALID_L" ] + then + if ! contains "${POST_VALID_L}" "${adherent}" + then + VALID_L="$VALID_L $adherent" + echo -e "VALIDATION DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + fi + done + VALID_L=$(echo $VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + PRE_VALID_L=" " + echo "$VALID_L" > "$VALIDATION_D/$VALID_F" +fi + + +# CONSTRUIRE L'IMAGE DE PRE-VALIDATION (PREMIER TOUR) +A_JOUR_L=$(./get_payes.sh) # cotisations à jour +if [ ! -z "$A_JOUR_L" ] +then + for adherent in $A_JOUR_L + do + if [ ! -z "$VALID_L" ] + then + if ! contains "${VALID_L}" "${adherent}" + then + if [ ! -z "$POST_VALID_L" ] + then + if ! contains "${POST_VALID_L}" "${adherent}" + then + PRE_VALID_L="$PRE_VALID_L $adherent" + echo -e "PRE-VALIDATION DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + fi + fi + else + PRE_VALID_L="$PRE_VALID_L $adherent" + echo -e "PRE-VALIDATION DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + done + PRE_VALID_L=$(echo $PRE_VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + A_JOUR_L=" " + echo "$PRE_VALID_L" > "$VALIDATION_D/$PRE_VALID_F" +fi + +# ENVOYER LES RELANCES POUR IMPAYES OU EXPIRES +if [ ! -z "$IMPAYE_L" ] +then + for adherent in $IMPAYE_L + do + if [ ! -z "$RELANCE_L" ] + then + if ! contains "${RELANCE_L}" "${adherent}" + then + echo -e "LANCE OU RELANCE DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ret=$(./envoi_instruction_cotisation.sh $adherent) + if [ -z "$ret" ] + then + RELANCE_L="$RELANCE_L $adherent" + ENVOI=$((ENVOI + 1)) + else + echo -e " COURRIEL NON FONCTIONNEL" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + fi + else + echo -e "LANCE OU RELANCE DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ret=$(./envoi_instruction_cotisation.sh $adherent) + if [ -z "$ret" ] + then + RELANCE_L="$RELANCE_L $adherent" + ENVOI=$((ENVOI + 1)) + else + echo -e " COURRIEL NON FONCTIONNEL" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + fi + done + RELANCE_L=$(echo $RELANCE_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + echo "$RELANCE_L" > "$VALIDATION_D/$RELANCE_F" +fi + +if [ ! -z "$EXPIRE_L" ] +then + for adherent in $EXPIRE_L + do + if [ ! -z "$RELANCE_L" ] + then + if ! contains "${RELANCE_L}" "${adherent}" + then + echo -e "EXPIRATION DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + else + echo -e "EXPIRATION DE $(get_membre_nom $adherent) ($adherent)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + done + echo "$RELANCE_L" > "$VALIDATION_D/$RELANCE_F" +fi + +echo " " >> "$SORTIE" +echo "------------------------------------------------------------" >> "$SORTIE" +echo -e "Récapitulatif:" >> "$SORTIE" +echo -e "Adhérents impayés: $IMPAYE_L" >> "$SORTIE" +echo -e "Adhérents expirés: $EXPIRE_L" >> "$SORTIE" +echo -e "Adhérents relancés ou avertis: $RELANCE_L" >> "$SORTIE" +echo -e "Adhérents validés: $POST_VALID_L" >> "$SORTIE" +echo -e "Adhérents en validation: $VALID_L" >> "$SORTIE" +echo -e "Adhérents en pré-validation: $PRE_VALID_L" >> "$SORTIE" + +# ENVOI +if [ ! -z $1 ] && [ $1 == "debug" ] +then + echo DEBUG + cat "$SORTIE" +else + if [ $ENVOI -ge 1 ] + then + cat "$SORTIE" | /usr/sbin/sendmail -i -- tresorier@a-lec.org + fi +fi + +rm -rf "$SORTIE" + diff --git a/controle_cotisation/envoi_instruction_cotisation.sh b/controle_cotisation/envoi_instruction_cotisation.sh new file mode 100755 index 0000000..e0c725c --- /dev/null +++ b/controle_cotisation/envoi_instruction_cotisation.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# Check_don +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +PASSWORD=$(cat ~/.secret/gestion_api_password) +TOKEN=$(cat ~/.secret/git_api_password) + +contains() { + [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] +} + +# RECUPERATION DONNEES +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT * FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND m.id = $1;") +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 +#requete=$(echo -e $requete | cut -d ":" -f 3 | tr -d "\"}]") +requete=$(echo -e $requete | tr -d "{}\"[]" | cut -c 9-1000) +IFS="," read -a results <<< $requete + +# VERIFICATION EXISTENCE +if [ ${#results[@]} -eq $((0)) ] +then + echo " *** MEMBRE INEXISTANT ***" + exit 1 +fi + +statut=$(echo ${results[15]} | cut -d ":" -f 2) +siren=$(echo ${results[16]}| cut -d ":" -f 2) +nom=$(echo ${results[17]}| cut -d ":" -f 2) +courriel=$(echo ${results[18]}| cut -d ":" -f 2) +numero=$(echo ${results[13]}| cut -d ":" -f 2) +montant=$(echo ${results[5]}| cut -d ":" -f 2) + +if [ "$montant" == "null" ] +then + montant=2000 +fi + +montant=${montant::-2},${montant: -2:2} +date=$(echo ${results[6]} | cut -d ":" -f 2) +ANNEE_CIVILE=$(( $(echo ${results[7]} | cut -d ":" -f 2 | cut -d "-" -f 1) - 1)) + + +# Vérifier que le courriel est opérationnel + +requete=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" --request GET "https://git.a-lec.org/api/v4/projects/46/issues?not%5Blabels%5D=R%C3%A9solu&state=opened" | grep -e "Création de compte courriel membre n°${numero}") + +echo $requete + +if [ ! -z "$requete" ] +then + echo " COURRIEL NON FONCTIONNEL" + exit 0 +fi + +FILE=$(mktemp /tmp/temporary.XXXXXXXX) + +cat mail_instructions_cotisation.txt >> "$FILE" + +sed -i "s/ANNEE_CIVILE/$ANNEE_CIVILE/g" "$FILE" +sed -i "s/NUMERO_MEMBRE/$numero/" "$FILE" +sed -i "s/COURRIEL_COTISANT/$courriel/" "$FILE" +sed -i "s/NOM_COTISANT/$nom/" "$FILE" +sed -i "s/MONTANT_COTISATION/$montant/" "$FILE" + +# ENVOI +( cat "$FILE" ) | /usr/sbin/sendmail -i -- tresorier@a-lec.org "$courriel" +#cat "$FILE" + +rm -f "$FILE" + diff --git a/controle_cotisation/generer_cotisation.sh b/controle_cotisation/generer_cotisation.sh new file mode 100755 index 0000000..e5876e4 --- /dev/null +++ b/controle_cotisation/generer_cotisation.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# $1 : NOM-COTISANT +# $2 : STATUT-COTISANT +# $3 : ADRESSE-COTISANT +# $4 : SOMME +# $5 : DATE-VERSEMENT +# $6 : MODE-VERSEMENT +# $7 : ANNEE-CIVILE + +set -e + +#exec {BASH_XTRACEFD}> >(tail -n 1) # send set -x output to tail -n 1 +#PS4=':At line $LINENO; prior command exit status $?+' +#set -x + +if [ $# -ne 7 ]; then + + echo "Nombre d'arguments incorrect" + exit 1 +fi + +FILE=$(echo $1 | tr " " "_")_reçu_$(echo $5 | tr "/" ".").tex +NOM_COTISANT=$(echo $1 | tr "/" ".") +STATUT_COTISANT=$(echo $2 | tr "/" ".") +ADRESSE_COTISANT=$(echo $3 | tr "/" ".") +SOMME=$(echo $4 | tr "/" ".") +DATE_VERSEMENT=$(date -d$5 +%d/%m/%Y) +MODE_VERSEMENT=$(echo $6 | tr "/" ".") +ANNEE_CIVILE=$(echo $7) + +cat RECU_COTISATION.tex > "$FILE" + +sed -i "s/ANNEE-CIVILE/$ANNEE_CIVILE/" "$FILE" +sed -i "s/NOM-COTISANT/$NOM_COTISANT/" "$FILE" +sed -i "s/STATUT-COTISANT/$STATUT_COTISANT/" "$FILE" +sed -i "s/ADRESSE-COTISANT/$ADRESSE_COTISANT/" "$FILE" +sed -i "s/SOMME/$SOMME/" "$FILE" +sed -i "s|DATE-VERSEMENT|$DATE_VERSEMENT|" "$FILE" +sed -i "s/MODE-VERSEMENT/$MODE_VERSEMENT/" "$FILE" + +pdflatex "$FILE" + +rm -f *.aux *.log diff --git a/controle_cotisation/get_all.sh b/controle_cotisation/get_all.sh new file mode 100755 index 0000000..c89bc31 --- /dev/null +++ b/controle_cotisation/get_all.sh @@ -0,0 +1,21 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT * FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user + INNER JOIN services_fees sf ON sf.id = su.id_fee + LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id + LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction + WHERE m.id = 3 AND l.id_account = 481;') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete + +exit 0 + +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT * FROM +acc_transactions_lines;') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete diff --git a/controle_cotisation/get_expires.sh b/controle_cotisation/get_expires.sh new file mode 100755 index 0000000..d1098e0 --- /dev/null +++ b/controle_cotisation/get_expires.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete_expire=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.expiry_date < date() AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete_expire | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_cotisation/get_impayes.sh b/controle_cotisation/get_impayes.sh new file mode 100755 index 0000000..4891ca6 --- /dev/null +++ b/controle_cotisation/get_impayes.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete_impaye=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.paid = 0 AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete_impaye | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_cotisation/get_payes.sh b/controle_cotisation/get_payes.sh new file mode 100755 index 0000000..2763772 --- /dev/null +++ b/controle_cotisation/get_payes.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.paid = 1 AND su.expiry_date > date() AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_cotisation/header.png b/controle_cotisation/header.png new file mode 100644 index 0000000000000000000000000000000000000000..79457961bbb8f91bf83b817cc7b60b92b0414e10 GIT binary patch literal 86999 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 z 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 EA4sV78vp +To: +Subject: =?UTF-8?Q?=5bTr=c3=a9sorerie=5d_Re=c3=a7u_pour_votre_cotisation_de_?= + =?UTF-8?Q?membre?= +Mime-Version: 1.0 +Content-Type: multipart/mixed; boundary="------------3yxkFgv0AINs5nd0i6BJrWaV" + +This is a multi-part message in MIME format. +--------------3yxkFgv0AINs5nd0i6BJrWaV +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +Bonsoir, + +Veuillez trouver ci-joint votre reçu pour la cotisation annuelle pour l'année civile ANNEE-CIVILE. + +Librement, + +-- +Adrien Bourmault +Trésorier de Libre en Communs +GPG: 0980e827cb47fbb9 +- +Association Libre en Communs +--------------3yxkFgv0AINs5nd0i6BJrWaV +Content-Type: application/pdf; name="Recu_cotisation_ANNEE-CIVILE.pdf" +Content-Disposition: attachment; filename="Recu_cotisation_ANNEE-CIVILE.pdf" +Content-Transfer-Encoding: base64 + + + diff --git a/controle_cotisation/mail_instructions_cotisation.txt b/controle_cotisation/mail_instructions_cotisation.txt new file mode 100644 index 0000000..7ddc3e2 --- /dev/null +++ b/controle_cotisation/mail_instructions_cotisation.txt @@ -0,0 +1,47 @@ +Content-Language: fr +From: =?UTF-8?Q?Tr=c3=a9sorier_de_Libre_en_Communs?= +To: +Subject: =?UTF-8?Q?=5bTr=c3=a9sorerie=5d_-_modalit=c3=a9s_de_r=c3=a8glement_de_vo?= + =?UTF-8?Q?tre_cotisation_ANNEE_CIVILE?= +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +Bonjour NOM_COTISANT, + +Je reviens vers vous pour vous informer des modalités de règlement de votre +cotisation pour l'année civile ANNEE_CIVILE. Votre numéro de membre est le +NUMERO_MEMBRE et le montant de votre cotisation est MONTANT_COTISATION €. + +Les moyens de paiement acceptés sont: espèces, chèques et virement bancaire. +Vous avez normalement déjà formulé une préférence. Si toutefois vous souhaitez +changer de mode de paiement, merci de nous en informer en réponse à ce courriel. + + +Pour le paiement par chèque à l'ordre de Libre en Communs, ainsi que le +paiement en espèces, merci d'expédier votre courrier à l'adresse suivante: + +ASSOCIATION LIBRE EN COMMUNS +13 RUE SULLY +94210 SAINT MAUR DES FOSSÉS + + +Pour le paiement par virement bancaire, merci d'émettre votre virement à +destination de l'IBAN ci-dessous. +MERCI D'INDIQUER VOTRE NUMERO DE MEMBRE EN COMMENTAIRE OU REFERENCE DE VOTRE VIREMENT. + +IBAN: FR7610278061690002212870186 +BIC: CMCIFR2A +Domiciliation: CCM DU PLATEAU BRIARD + + +Vous remerciant encore de votre engagement, +Librement, +-- +Adrien Bourmault +Trésorier de Libre en Communs +GPG: 0980e827cb47fbb9 +- +Association Libre en Communs + + + diff --git a/controle_cotisation/manuel_valider_cotisation.sh b/controle_cotisation/manuel_valider_cotisation.sh new file mode 100755 index 0000000..9b49ee1 --- /dev/null +++ b/controle_cotisation/manuel_valider_cotisation.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# Validation_cotisation +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +PASSWORD=$(cat ~/.secret/gestion_api_password) + +############################################################################## +LISTE_PAYES=$(./get_payes.sh) + +# RECUPERATION DONNEES +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT * FROM services_users su INNER JOIN membres m ON m.id = su.id_user INNER JOIN services_fees sf ON sf.id = su.id_fee LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction WHERE m.numero = $1 AND l.id_account = 481;") +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 +#requete=$(echo -e $requete | cut -d ":" -f 3 | tr -d "\"}]") +requete=$(echo -e $requete | tr -d "{}\"[]" | cut -c 9-1000) +IFS="," read -a results <<< $requete + +# VERIFICATION EXISTENCE +if [ ${#results[@]} -eq $((0)) ] +then + echo "*** MEMBRE INEXISTANT ***" + exit 1 +fi + +id=$(echo ${results[1]} | cut -d ":" -f 2) +statut=$(echo ${results[15]} | cut -d ":" -f 2) +siren=$(echo ${results[16]}| cut -d ":" -f 2) +nom=$(echo ${results[17]}| cut -d ":" -f 2) +courriel=$(echo ${results[18]}| cut -d ":" -f 2) +adresse=$(echo "$(echo ${results[20]}| cut -d ":" -f 2), $(echo ${results[21]}| cut -d ":" -f 2) $(echo ${results[22]}| cut -d ":" -f 2) $(echo ${results[23]}| cut -d ":" -f 2)") +notes=$(echo ${results[25]}| cut -d ":" -f 2) +transaction=$(echo ${results[34]}| cut -d ":" -f 2) +montant=$(echo ${results[36]}| cut -d ":" -f 2) +montant=${montant::-2},${montant: -2:2} +reference=$(echo ${results[38]}| cut -d ":" -f 2) +date=$(echo ${results[6]} | cut -d ":" -f 2) +ANNEE_CIVILE=$(( $(echo ${results[7]} | cut -d ":" -f 2 | cut -d "-" -f 1) - 1)) + +# VERIFICATION PAIEMENT +for adherent in $LISTE_PAYES +do + if [ "$adherent" -eq "$id" ] + then + echo "AVERTISSEMENT: cotisation déjà validée" + fi +done + +# CONFIRMATION +echo -ne "Valider membre $nom numéro $1 (cotisation $montant € réference $reference) ? [y/n] " +read ans +if [[ $ans == y* ]]; then + echo "Validation..." +else + echo "Annulation." + exit 0 +fi + +# GENERATION + +if [ "$siren" = "null" ] +then + ./generer_cotisation.sh "$nom" "$statut" "$adresse" "$montant" "$date" "$reference" "$ANNEE_CIVILE" +else + ./generer_cotisation.sh "$nom (SIREN $siren)" "$statut" "$adresse" "$montant" "$date" "$reference" "$ANNEE_CIVILE" +fi + +FILE=$(echo "$nom" | tr " " "_")_reçu_$(echo "$date" | tr "/" ".").pdf + +# ENVOI +(cat mail.txt|sed "s/ANNEE-CIVILE/$ANNEE_CIVILE/g"|sed "s/COURRIEL-COTISANT/$courriel/g"; base64 "$FILE"; echo "--------------3yxkFgv0AINs5nd0i6BJrWaV--")|/usr/sbin/sendmail -i -- "$courriel" tresorier@a-lec.org + +exit 0 + diff --git a/controle_cotisation/recap_header.txt b/controle_cotisation/recap_header.txt new file mode 100644 index 0000000..13306a3 --- /dev/null +++ b/controle_cotisation/recap_header.txt @@ -0,0 +1,6 @@ +From: root@gestion.a-lec.org (Cron Daemon) +To: tresorier@a-lec.org +Subject: Gestion -- script cotisation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit diff --git a/controle_cotisation/valider_cotisation.sh b/controle_cotisation/valider_cotisation.sh new file mode 100755 index 0000000..f7be7a8 --- /dev/null +++ b/controle_cotisation/valider_cotisation.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# Validation_cotisation +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +PASSWORD=$(cat ~/.secret/gestion_api_password) + +############################################################################## + +# RECUPERATION DONNEES +results=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT *, l.reference true_reference FROM services_users su INNER JOIN membres m ON m.id = su.id_user INNER JOIN services_fees sf ON sf.id = su.id_fee LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction INNER JOIN acc_transactions tr ON tr.id = l.id_transaction WHERE m.id = $1 AND l.id_account = 481;") +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +# VERIFICATION EXISTENCE +if [ -z "$results" ] +then + echo " *** MEMBRE INEXISTANT ***" + exit 1 +fi + +statut=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['statut_juridique'])") +siren=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['siren_rna'])") +nom=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['nom'])") +courriel=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['email'])") +rue=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['adresse'])") +codepostal=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['code_postal'])") +ville=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['ville'])") +pays=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['pays'])") +adresse="$rue, $codepostal $ville, $pays" +notes=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['notes'])") +montant=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['amount'])") +montant=${montant::-2},${montant: -2:2} +reference=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['true_reference'])") +date=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['date'])") +ANNEE_CIVILE=$(echo $results | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['results'][-1]['date'])" | cut -d "-" -f 1) + +# GENERATION + +if [ "$siren" = "None" ] +then + ./generer_cotisation.sh "$nom" "$statut" "$adresse" "$montant" "$date" "$reference" "$ANNEE_CIVILE" > /dev/null +else + ./generer_cotisation.sh "$nom (SIREN $siren)" "$statut" "$adresse" "$montant" "$date" "$reference" "$ANNEE_CIVILE" > /dev/null +fi + +if [ "$reference" = "None" ] +then + echo " PAIEMENT INVALIDE !" + exit 2 +fi + +FILE=$(echo "$nom" | tr " " "_")_reçu_$(echo "$date" | tr "/" ".").pdf + +# ENVOI +(cat mail_cotisation.txt|sed "s/ANNEE-CIVILE/$ANNEE_CIVILE/g"|sed "s/COURRIEL-COTISANT/$courriel/g"; base64 "$FILE"; echo "--------------3yxkFgv0AINs5nd0i6BJrWaV--")|/usr/sbin/sendmail -i -- "$courriel" tresorier@a-lec.org > /dev/null + +exit 0 + diff --git a/controle_don/RECU_FISCAL.tex b/controle_don/RECU_FISCAL.tex new file mode 100644 index 0000000..c288014 --- /dev/null +++ b/controle_don/RECU_FISCAL.tex @@ -0,0 +1,122 @@ +\documentclass{article} + +\usepackage{graphicx} +\usepackage{tabto} +\usepackage{datetime} +\ddmmyyyydate +\usepackage[a4paper, total={7in, 12.5in}]{geometry} + +\renewcommand{\familydefault}{\sfdefault} + + +\title{ + + \begin{flushright} + \vspace*{2ex} + + \huge \bf Association Libre en Communs + \end{flushright} + + \vspace*{-6ex} + + \noindent\makebox[\textwidth]{ + \includegraphics[width=\paperwidth]{header.png} + } + + \vspace*{-9ex} + + \begin{flushright} + \huge Reçu fiscal au titre de dons + \end{flushright} +} + +\date{} + +% -- + +\begin{document} + + \maketitle + \pagenumbering{gobble} + + \vspace*{2ex} + + \section*{Bénéficiaire des versements} + + \vspace*{2ex} + + \subparagraph{Dénomination} \tabto{5cm} LIBRE EN COMMUNS (RNA W941017425) + + \vspace*{-2ex} + + \subparagraph{Statut} \tabto{5cm} Association loi 1901 reconnue d'interêt général, à but non lucratif + + \vspace*{-2ex} + + \subparagraph{Adresse} \tabto{5cm} 13 RUE SULLY, 94210 SAINT-MAUR-DES-FOSSES + + \vspace*{2ex} + + \section*{Donateur} + + \vspace*{2ex} + + \subparagraph{Nom ou dénomination} \tabto{5cm} NOM-DONATEUR + + \vspace*{-2ex} + + \subparagraph{Statut} \tabto{5cm} STATUT-DONATEUR + + \vspace*{-2ex} + + \subparagraph{Adresse} \tabto{5cm} ADRESSE-DONATEUR + + + \vspace*{7ex} + + \section*{} + + Le bénéficiaire certifie sur l’honneur que les dons et versements qu’il reçoit ouvrent droit à la réduction d’impôt prévue aux articles 200 et 238 du Code Général des Impôts. \newline \newline Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d’impôt : + + \vspace*{2ex} + + \subparagraph{Somme (EUR)} \tabto{5cm} ***SOMME*** € + + \vspace*{-2ex} + + \subparagraph{Date du versement} \tabto{5cm} DATE-VERSEMENT + + \vspace*{-2ex} + + \subparagraph{Forme} \tabto{5cm} FORME-DON + + \vspace*{-2ex} + + \subparagraph{Nature} \tabto{5cm} NATURE-DON + + \vspace*{-2ex} + + \subparagraph{Mode de versement} \tabto{5cm} MODE-VERSEMENT + + \section*{} + + \begin{flushright} + Pour servir et faire valoir ce que de droit, + + \vspace*{1ex} + + Le \today\ à Saint-Maur des Fossés, + + Le Trésorier de Libre en Communs + + \vspace*{2ex} + + \includegraphics[width=1.3in]{tresorier.png} + + \end{flushright} + + \section*{} + + \center Délivré par l'association Libre en Communs -- https://www.a-lec.org -- contact@a-lec.org + +\end{document} diff --git a/controle_don/check_don.sh b/controle_don/check_don.sh new file mode 100755 index 0000000..b82bc18 --- /dev/null +++ b/controle_don/check_don.sh @@ -0,0 +1,173 @@ +#!/bin/bash +# Check_don +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +set -e + +contains() +{ + [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] +} + +get_nom() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 1 +} + +get_prenom() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 2 +} + +get_adresse() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 3 +} + +get_code_postal() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 4 +} + +get_ville() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 5 +} + +get_courriel() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 6 +} + +get_somme() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 7 +} + +get_mode() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 8 +} + +################################################################################ + +# CREER ENVIRONNEMENT DE TRAVAIL +PASSWORD=$(cat ~/.secret/gestion_api_password) +VALIDATION_D=$(cat /etc/gestion-tresorerie/validation_don.conf) +PRE_VALID_F="pre-valid" +VALID_F="valid" +POST_VALID_F="post-valid" +ENVOI=$((0)) + +SORTIE=$(mktemp /tmp/temporary-file.XXXXXXXX) + +echo "From: root@gestion.a-lec.org (Cron Daemon)" >> "$SORTIE" +echo "To: tresorier@a-lec.org" >> "$SORTIE" +echo "Subject: [Tresorerie] Nouveau don" >> "$SORTIE" +echo "MIME-Version: 1.0" >> "$SORTIE" +echo "Content-Type: text/plain; charset=UTF-8" >> "$SORTIE" +echo "Content-Transfer-Encoding: 8bit" >> "$SORTIE" +echo " " >> "$SORTIE" + +if [ ! -d "$VALIDATION_D" ]; then + mkdir -p "$VALIDATION_D" +fi +if [ ! -f "$VALIDATION_D/$PRE_VALID_F" ]; then + echo " " > "$VALIDATION_D/$PRE_VALID_F" +fi +if [ ! -f "$VALIDATION_D/$VALID_F" ]; then + echo " " > "$VALIDATION_D/$VALID_F" +fi +if [ ! -f "$VALIDATION_D/$POST_VALID_F" ]; then + echo " " > "$VALIDATION_D/$POST_VALID_F" +fi + +POST_VALID_L=$(cat $VALIDATION_D/$POST_VALID_F) # TROISIEME TOUR +VALID_L=$(cat $VALIDATION_D/$VALID_F) # DEUXIEME TOUR +PRE_VALID_L=$(cat $VALIDATION_D/$PRE_VALID_F) # PREMIER TOUR +DONS_EN_ATTENTE=$(find $VALIDATION_D/*pre_don* -exec cat -v {} \; -exec echo " " \; | cut -d "|" -f 1) + +# LANCER VALIDATION +# CONSTRUIRE L'IMAGE POST-VALIDATION (TROISIEME TOUR) +if [ ! -z "$VALID_L" ] +then + for don in $VALID_L + do + POST_VALID_L="$POST_VALID_L $don" + echo -e "VALIDATION FAITE DE $(get_nom $don) ($don)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + ./valider_don.sh "$don" "$(get_nom $don) $(get_prenom $don)" "Personne physique" "$(get_adresse $don) $(get_code_postal $don) $(get_ville $don)" "$(get_somme $don)" "$(get_courriel $don)" >> "$SORTIE" + done + POST_VALID_L=$(echo $POST_VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + VALID_L=" " + echo "$POST_VALID_L" > "$VALIDATION_D/$POST_VALID_F" +fi + + +# CONSTRUIRE L'IMAGE DE VALIDATION (DEUXIEME TOUR) +if [ ! -z "$PRE_VALID_L" ] +then + for don in $PRE_VALID_L + do + if [ ! -z "$POST_VALID_L" ] && ! contains "${POST_VALID_L}" "${don}" + then + # RECUPERATION DONNEES + requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT * FROM acc_transactions tr INNER JOIN acc_transactions_lines l ON tr.id = l.id_transaction WHERE tr.notes = $don and id_account = 469") + requete=$(echo -e $requete | tr -d "{}\"[] " | cut -c 10-1000) + + if [ ! -z "$requete" ] + then + VALID_L="$VALID_L $don" + echo -e "VALIDATION DE $(get_nom $don), ($don)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + fi + fi + done + VALID_L=$(echo $VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + echo "$VALID_L" > "$VALIDATION_D/$VALID_F" +fi + +# CONSTRUIRE LIMAGE DE PRE-VALIDATION (PREMIER TOUR) +if [ ! -z "$DONS_EN_ATTENTE" ] +then + for don in $DONS_EN_ATTENTE + do + if [ ! -z "$PRE_VALID_L" ] && ! contains "${PRE_VALID_L}" "${don}" && [ ! -z "$VALID_L" ] && ! contains "${VALID_L}" "${don}" && [ ! -z "$POST_VALID_L" ] && ! contains "${POST_VALID_L}" "${don}" + then + PRE_VALID_L="$PRE_VALID_L $don" + echo -e "PRE-VALIDATION DE $(get_nom $don), $(get_somme $don) € par $(get_mode $don) ($don)" >> "$SORTIE" + ENVOI=$((ENVOI + 1)) + + # RECUPERATION DONNEES + requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT * FROM acc_transactions tr INNER JOIN acc_transactions_lines l ON tr.id = l.id_transaction WHERE tr.notes = $don and id_account = 469") + + requete=$(echo -e $requete | tr -d "{}\"[] " | cut -c 9-1000) + + if [ -z "$requete" ] + then + bash -c "./envoi_instructions_don.sh $don" + echo -e " COURRIEL INSTRUCTION TRANSMIS" >> "$SORTIE" + fi + fi + done + PRE_VALID_L=$(echo $PRE_VALID_L | tr " " "\n" | sort -u | uniq | tr "\n" " ") + DONS_EN_ATTENTE=" " + echo "$PRE_VALID_L" > "$VALIDATION_D/$PRE_VALID_F" +fi + +echo " " >> "$SORTIE" +echo "------------------------------------------------------------" >> "$SORTIE" +echo -e "Récapitulatif:" >> "$SORTIE" +echo -e "Dons réglés: $POST_VALID_L" >> "$SORTIE" +echo -e "Dons validés: $VALID_L" >> "$SORTIE" +echo -e "Dons en validation (attente paiement): $PRE_VALID_L" >> "$SORTIE" +echo -e "Dons en attente: $DONS_EN_ATTENTE" >> "$SORTIE" + +# ENVOI +if [ $ENVOI -ge 1 ] +then + (cat "$SORTIE") | /usr/sbin/sendmail -i -- tresorier@a-lec.org +fi + +rm -rf "$SORTIE" diff --git a/controle_don/envoi_instructions_don.sh b/controle_don/envoi_instructions_don.sh new file mode 100755 index 0000000..ce8040c --- /dev/null +++ b/controle_don/envoi_instructions_don.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# Check_don +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +contains() { + [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] +} + +get_nom() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 1 +} + +get_prenom() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 2 +} + +get_adresse() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 3 +} + +get_code_postal() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 4 +} + +get_ville() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 5 +} + +get_courriel() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 6 +} + +get_somme() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 7 +} + +get_mode() +{ + find /srv/validation_don.d/*pre_don* -exec cat -v {} \; -exec echo " " \; | grep "$1" | cut -d "|" -f 2 | cut -d ";" -f 8 +} + +################################################################################ + +FILE=$(mktemp /tmp/temporary.XXXXXXXX) + +courriel="$(get_courriel $1)" +nom="$(get_prenom $1) $(get_nom $1)" +somme="$(get_somme $1)" +mode="$(get_mode $1)" + +cat mail_instructions_don.txt >> "$FILE" + +sed -i "s/COURRIEL_DONNEUR/$courriel/" "$FILE" +sed -i "s/NOM_DONNEUR/$nom/" "$FILE" +sed -i "s/NUMERO_DON/$1/" "$FILE" +sed -i "s/MONTANT_DON/$somme/" "$FILE" +sed -i "s/MODE_DON/$mode/" "$FILE" + +# ENVOI +( cat "$FILE" ) | /usr/sbin/sendmail -i -- "$courriel" tresorier@a-lec.org +#cat "$FILE" + +rm -f "$FILE" diff --git a/controle_don/generer_don.sh b/controle_don/generer_don.sh new file mode 100755 index 0000000..7ea18d5 --- /dev/null +++ b/controle_don/generer_don.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# $1 : NOM-DONATEUR +# $2 : STATUT-DONATEUR +# $3 : ADRESSE-DONATEUR +# $4 : SOMME +# $5 : DATE-VERSEMENT +# $6 : FORME-DON +# $7 : NATURE-DON +# $8 : MODE-VERSEMENT + +set -e + +if [ $# -ne 8 ]; then + + echo "Nombre d'arguments incorrect" + exit 1 +fi + +FILE=$(echo "$1" | tr " " "_")_reçu_don_$(echo "$5" | tr "/" ".").pdf +NOM_DONATEUR=$1 +STATUT_DONATEUR=$2 +ADRESSE_DONATEUR=$3 +SOMME=$4 +DATE_VERSEMENT=$(date -d$5 +%d/%m/%Y) +FORME_DON=$6 +NATURE_DON=$7 +MODE_VERSEMENT=$8 + +cat RECU_FISCAL.tex > "$FILE" + +sed -i "s/NOM-DONATEUR/$NOM_DONATEUR/" "$FILE" +sed -i "s/STATUT-DONATEUR/$STATUT_DONATEUR/" "$FILE" +sed -i "s/ADRESSE-DONATEUR/$ADRESSE_DONATEUR/" "$FILE" +sed -i "s/SOMME/$SOMME/" "$FILE" +sed -i "s|DATE-VERSEMENT|$DATE_VERSEMENT|" "$FILE" +sed -i "s/FORME-DON/$FORME_DON/" "$FILE" +sed -i "s/NATURE-DON/$NATURE_DON/" "$FILE" +sed -i "s/MODE-VERSEMENT/$MODE_VERSEMENT/" "$FILE" + +pdflatex "$FILE" + +rm -f *.aux *.log diff --git a/controle_don/get_all.sh b/controle_don/get_all.sh new file mode 100755 index 0000000..c89bc31 --- /dev/null +++ b/controle_don/get_all.sh @@ -0,0 +1,21 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT * FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user + INNER JOIN services_fees sf ON sf.id = su.id_fee + LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id + LEFT JOIN acc_transactions_lines l ON l.id_transaction = tu.id_transaction + WHERE m.id = 3 AND l.id_account = 481;') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete + +exit 0 + +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT * FROM +acc_transactions_lines;') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete diff --git a/controle_don/get_expires.sh b/controle_don/get_expires.sh new file mode 100755 index 0000000..d1098e0 --- /dev/null +++ b/controle_don/get_expires.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete_expire=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.expiry_date < date() AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete_expire | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_don/get_impayes.sh b/controle_don/get_impayes.sh new file mode 100755 index 0000000..4891ca6 --- /dev/null +++ b/controle_don/get_impayes.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete_impaye=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.paid = 0 AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete_impaye | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_don/get_payes.sh b/controle_don/get_payes.sh new file mode 100755 index 0000000..2763772 --- /dev/null +++ b/controle_don/get_payes.sh @@ -0,0 +1,12 @@ +#!/bin/bash +PASSWORD=$(cat ~/.secret/gestion_api_password) +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d 'SELECT id_user FROM +services_users su +INNER JOIN membres m ON m.id = su.id_user +INNER JOIN services s ON s.id = su.id_service +LEFT JOIN services_fees sf ON sf.id = su.id_fee +INNER JOIN (SELECT id, MAX(date) FROM services_users GROUP BY id_user, id_service) AS su2 ON su2.id = su.id +WHERE su.id_service = 1 AND su.paid = 1 AND su.expiry_date > date() AND NOT (m.id_category = 10 OR m.id_category = 3 OR m.id_category = 2 OR m.id_category = 8);') +# Note: su.id_service = 1 parceque la cotisation correspond au service 1 + +echo $requete | tr "," "\n" | sed 's/[^[:digit:]]\+//g' | tr "\n" " " diff --git a/controle_don/header.png b/controle_don/header.png new file mode 100644 index 0000000000000000000000000000000000000000..79457961bbb8f91bf83b817cc7b60b92b0414e10 GIT binary patch literal 86999 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 z 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 EA4sV78vp +To: +Subject: =?UTF-8?Q?=5bTr=c3=a9sorerie=5d_Re=c3=a7u_pour_votre_don_pour_Libre_en_Communs?= +Mime-Version: 1.0 +Content-Type: multipart/mixed; boundary="------------3yxkFgv0AINs5nd0i6BJrWaV" + +This is a multi-part message in MIME format. +--------------3yxkFgv0AINs5nd0i6BJrWaV +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +Bonjour, + +Veuillez trouver ci-joint votre reçu au titre de votre don à l'association +Libre en Communs du DATE-DON. + +Librement, + +-- +Adrien Bourmault +Trésorier de Libre en Communs +GPG: 0980e827cb47fbb9 +- +Association Libre en Communs +--------------3yxkFgv0AINs5nd0i6BJrWaV +Content-Type: application/pdf; name="Recu_don_DATE-DON.pdf" +Content-Disposition: attachment; filename="Recu_don_DATE-DON.pdf" +Content-Transfer-Encoding: base64 + + + diff --git a/controle_don/mail_instructions_don.txt b/controle_don/mail_instructions_don.txt new file mode 100644 index 0000000..d97fd0d --- /dev/null +++ b/controle_don/mail_instructions_don.txt @@ -0,0 +1,48 @@ +Content-Language: fr +From: =?UTF-8?Q?Tr=c3=a9sorier_de_Libre_en_Communs?= +To: +Subject: =?UTF-8?Q?Libre_en_Communs_-_modalit=c3=a9s_de_r=c3=a8glement_de_vo?= + =?UTF-8?Q?tre_don?= +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +Bonjour NOM_DONNEUR et merci de votre générosité ! + +Suite à votre soumission de notre formulaire sur https://don.a-lec.org, +je reviens vers vous pour vous informer des modalités de règlement de +votre don numéro NUMERO_DON d'un montant de MONTANT_DON €. + +Les moyens de paiement acceptés sont: espèces, chèques et virement bancaire. +Vous avez indiqué régler par MODE_DON. Si toutefois vous souhaitez changer de +mode de paiement, merci de nous en informer en réponse à ce courriel. + + +Pour le paiement par chèque à l'ordre de Libre en Communs, ainsi que le paiement +en espèces, merci d'expédier votre courrier à l'adresse suivante: + +ASSOCIATION LIBRE EN COMMUNS +13 RUE SULLY +94210 SAINT MAUR DES FOSSÉS + + +Pour le paiement par virement bancaire, merci d'émettre votre virement à +destination de l'IBAN ci-dessous. MERCI D'INDIQUER VOTRE NUMERO DE DON EN +COMMENTAIRE OU REFERENCE DE VOTRE VIREMENT. + +IBAN: FR7610278061690002212870186 +BIC: CMCIFR2A +Domiciliation: CCM DU PLATEAU BRIARD + + +Vous remerciant encore de votre engagement, +Librement, + +-- +Adrien Bourmault +Trésorier de Libre en Communs +GPG: 0980e827cb47fbb9 +- +Association Libre en Communs + + + diff --git a/controle_don/recap_header.txt b/controle_don/recap_header.txt new file mode 100644 index 0000000..13306a3 --- /dev/null +++ b/controle_don/recap_header.txt @@ -0,0 +1,6 @@ +From: root@gestion.a-lec.org (Cron Daemon) +To: tresorier@a-lec.org +Subject: Gestion -- script cotisation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit diff --git a/controle_don/valider_don.sh b/controle_don/valider_don.sh new file mode 100755 index 0000000..fe4f069 --- /dev/null +++ b/controle_don/valider_don.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# Validation_don +# Copyright 2022 Adrien Bourmault +# Licence AGPL v3 + +set -e + +#$1 = numero de don +nom=$2 +statut=$3 +adresse=$4 +montant_declare=$5 +courriel=$6 + +PASSWORD=$(cat ~/.secret/gestion_api_password) + +############################################################################## + +# RECUPERATION DONNEES +requete=$(curl https://api666:$PASSWORD@gestion.a-lec.org/api/sql/ -s -d "SELECT * FROM acc_transactions tr INNER JOIN acc_transactions_lines l ON tr.id = l.id_transaction WHERE tr.notes = $1 and id_account = 469") + +requete=$(echo -e $requete | tr -d "{}\"[] " | cut -c 10-1000) + +if [ -z "$requete" ] +then + echo " DON NON REGLE !" + exit 2 +fi + +IFS="," read -a results <<< $requete + +notes=$(echo ${results[4]} | cut -d ":" -f 2) +reference=$(echo ${results[5]} | cut -d ":" -f 2) +date=$(echo ${results[6]} | cut -d ":" -f 2) +montant=$(echo ${results[15]} | cut -d ":" -f 2) +montant=${montant::-2},${montant: -2:2} + +# GENERATION + +if [ "$reference" = "null" ] +then + echo " PAIEMENT INVALIDE !" + exit 2 +fi + +forme="Déclaration de don manuel" +nature="Numéraire" +siren="null" + +echo "Nom ou dénomination: $nom" +echo "SIREN: $siren" +echo "Statut: $statut" +echo "Adresse: $adresse" +echo "Somme: $montant €" #OK +echo "Date de versement: $date" #OK +echo "Forme: $forme" #OK +echo "Nature: $nature" #OK +echo "Mode de versement: $reference" #OK +echo "Numéro du don lié: $notes" #OK + +if [ "$siren" = "null" ] +then + ./generer_don.sh "$nom" "$statut" "$adresse" "$montant" "$date" "$forme" "$nature" "$reference" > /dev/null +else + ./generer_don.sh "$nom (SIREN $siren)" "$statut" "$adresse" "$montant" "$date" "$forme" "$nature" "$reference" > /dev/null +fi + +FILE=$(echo "$nom" | tr " " "_")_reçu_don_$(echo "$date" | tr "/" ".").pdf +DATE_VERSEMENT=$(date -d"$date" +%d/%m/%Y) + +# ENVOI +(cat mail_don.txt | sed "s|DATE-DON|$(echo "$date" | tr "/" "-")|g" | sed "s/COURRIEL-DON/$courriel/g" ; base64 "$FILE"; echo "--------------3yxkFgv0AINs5nd0i6BJrWaV--") | /usr/sbin/sendmail -i -- "$courriel" tresorier@a-lec.org > /dev/null + +mv $FILE /srv/validation_don.d + +exit 0