#!/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"