/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../../public/js/app/logger_concert");
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const path = require("path");
const fs = require("fs");
// CALCUL DE DATE
const moment = require('moment');
// ENVOIE MAIL GOOGLE MAIL
const nodemailer = require('nodemailer');
// CONNECTION BASE DE DONNÉES
const mysql = require('mysql2');
const mysql_promise = require('mysql2/promise');
// ADOBE PDF
const PDFServicesSdk = require('@adobe/pdfservices-node-sdk');
// FETCH (utile pour nodejs version < 18)
const fetch = require("node-fetch");
/////////////////////////////////////////////////
// GOOGLE SHEET PARAMETERS
/////////////////////////////////////////////////
const { GoogleSpreadsheet } = require('google-spreadsheet');
const GS_creds = require('../../inscriptionsafps-53b60452f63d.json');
const { error } = require("console");
// Fichier Google Sheet "afps_concert_annuel" (Mon Drive/inscriptions/base_donees)
// doc ID is the long id in the sheets URL
const GS_concert = new GoogleSpreadsheet(process.env.gsheet_concertannuel);
/////////////////////////////////////////////////
// APPELS DES FONCTIONS
/////////////////////////////////////////////////
const sleep = require("./../../modules/sleep");
const envoie_mail = require("./../../modules/envoie_mail");
const pdf = require("./../../modules/pdf");
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;
////////////////////////////////////////////////////
// CONNECTION DB
////////////////////////////////////////////////////
async function connect_DB_promise() {
return db_connection_promise = await mysql_promise.createConnection({
host: process.env.db_connection_host,
port: process.env.db_connection_port,
user: process.env.db_connection_user,
password: process.env.db_connection_password,
database: process.env.db_connection_database
});
}
/////////////////////////////////////////////////
// 5 - CLIC SUR VALIDER
/////////////////////////////////////////////////
const payer = async function (req, res) {
logger.info("======================================", { label: filename });
logger.info("======== FUNCTION payer (enregistrement BD + envoie vers Stripe) ==========", { label: filename });
logger.info("======================================", { label: filename });
logger.info("req.session.adherent_mail = " + req.session.adherent_mail , { numsession: req.session.id, label: filename});
logger.info("req.session.deja_inscrit_concert = " + req.session.deja_inscrit_concert , { numsession: req.session.id, label: filename});
let sql;
let table;
let champs;
let values;
let saison = "2025/2026";
moment.locale('fr');
let now = moment().format("YYYY-MM-DD HH:mm:ss");
var today = moment().format('L');
let commande_nbr_places_concertiste = 0;
let commande_nbr_places_encadrant_parent = 0;
let commande_nbr_places_encadrant_prof = 0;
let piano_commandes = 0;
let alto_commandes = 0;
let flute_commandes = 0;
let trompette_commandes = 0;
let harpe_commandes = 0;
let violon1_commandes = 0;
let violon2_commandes = 0;
let violoncelle1_commandes = 0;
let violoncelle2_commandes = 0;
var mail_objet;
var mail_html;
// FONCTION POUR AFFICHER LA PAGE EN CAS D'ERREUR
function affiche_page_admin() {
////////////////////////////////////////////////////
// AFFIHER LA PAGE /identifier
// AFFICHAGE DES ERREURS
// EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR :
// - SI IDENTIFIANT NON ADHÉRENT
// - SI RIEN SAISIE
////////////////////////////////////////////////////
if (req.session.err_mail_form_adhesion_1) {
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
// on supprime le contenu après affichage
req.session.err_mail_form_adhesion_1 = undefined;
req.session.err_mail_form_adhesion_2 = undefined;
req.session.err_mail_form_adhesion_3 = undefined;
}
res.render('concert/page_templates/admin');
};
/////////////////////////////////////////////////
// SI IDENTIFIANT PERDU
/////////////////////////////////////////////////
logger.info("req.session.identifiant : " + req.session.identifiant , { numsession: req.session.id, label: filename});
if (req.session.identifiant === undefined) {
logger.info("IDENTIFIANT PERDU", { numsession: req.session.id });
req.session.err_mail_form_adhesion_1 = "Session expirée, veuillez recommencer";
affiche_page_admin();
} else {
/////////////////////////////////////////////////
// AJOUT DANS LA BASE DE DONNÉES
/////////////////////////////////////////////////
if (req.session.deja_inscrit_concert == "non") {
logger.info("NOUVELLE INSCRIPTION AU CONCERT", { numsession: req.session.id, label: filename});
} else if (req.session.deja_inscrit_concert == "oui") {
logger.info("AJOUT DE BILLETS POUR UN ADHÉRENT DÉJÀ INSCRIT AU CONCERT", { numsession: req.session.id, label: filename});
}
// CONNECTION DB PROMISE
try {
//Connexion
let db_connection_promise = await connect_DB_promise();
//Queries
/////////////////////////////////////////////////
// AJOUT CONCERTISTES
for (let toto = 1; toto < 5; toto++) {
if (req.session["eleve_"+toto+"_nom"]) {
table = "ca_concertiste";
if (req.session.deja_inscrit_concert == "non") {
champs = "date_maj,saison,identifiant,concertiste_nom,concertiste_prenom,concertiste_age,concertiste_intrument,concertiste_cahier,concertiste_piece,concertiste_prof_nom,concertiste_prof_mail";
values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["eleve_"+toto+"_nom"] + '","' + req.session["eleve_"+toto+"_prenom"] + '",' + req.session["eleve_"+toto+"_age"] + ',"' + req.session["eleve_"+toto+"_instrument"] + '","' + req.session["eleve_"+toto+"_cahier"] + '","' + req.session["eleve_"+toto+"_piece"] + '","' + req.session["eleve_"+toto+"_prof_nom"] + '","' + req.session["eleve_"+toto+"_prof_mail"] + '"';
} else if (req.session.deja_inscrit_concert == "oui") {
champs = "date_maj,saison,identifiant,concertiste_nom,concertiste_prenom,concertiste_age,concertiste_intrument,concertiste_cahier,concertiste_piece,concertiste_prof_nom,concertiste_prof_mail,ajout";
values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["eleve_"+toto+"_nom"] + '","' + req.session["eleve_"+toto+"_prenom"] + '",' + req.session["eleve_"+toto+"_age"] + ',"' + req.session["eleve_"+toto+"_instrument"] + '","' + req.session["eleve_"+toto+"_cahier"] + '","' + req.session["eleve_"+toto+"_piece"] + '","' + req.session["eleve_"+toto+"_prof_nom"] + '","' + req.session["eleve_"+toto+"_prof_mail"] + '","' + now + '"';
}
sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')';
logger.info("REQUETE SQL ca_concertiste : " + sql , { numsession: req.session.id, label: filename});
const [results, fields] = await db_connection_promise.execute(sql);
logger.info("CONCERTISTES Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
// COMPTEUR DE PLACES
commande_nbr_places_concertiste += 1;
if (req.session["eleve_"+toto+"_instrument"] == "Piano") {
piano_commandes += 1;
}
if (req.session["eleve_"+toto+"_instrument"] == "Alto") {
alto_commandes += 1;
}
if (req.session["eleve_"+toto+"_instrument"] == "Flute") {
flute_commandes += 1;
}
if (req.session["eleve_"+toto+"_instrument"] == "Trompette") {
trompette_commandes += 1;
}
if (req.session["eleve_"+toto+"_instrument"] == "Harpe") {
harpe_commandes += 1;
}
if (req.session["eleve_"+toto+"_instrument"] == "Violon") {
switch (req.session["eleve_"+toto+"_cahier"]) {
case 'Cahier 1':
violon1_commandes += 1;
break;
case 'Cahier 2':
violon1_commandes += 1;
break;
case 'Cahier 3':
violon1_commandes += 1;
break;
case 'Cahier 4':
violon1_commandes += 1;
break;
case 'Cahier 5':
violon1_commandes += 1;
break;
case 'Cahier 6':
violon2_commandes += 1;
break;
case 'Cahier 7':
violon2_commandes += 1;
break;
case 'Cahier 8':
violon2_commandes += 1;
break;
case 'Cahier 9':
violon2_commandes += 1;
break;
case 'Cahier 10':
violon2_commandes += 1;
break;
default:
logger.info("Erreur détecté dans le switch req.session[eleve_+toto+_instrument] == Violon", { numsession: req.session.id, label: filename});
}
}
if (req.session["eleve_"+toto+"_instrument"] == "Violoncelle") {
switch (req.session["eleve_"+toto+"_cahier"]) {
case 'Cahier 1':
violoncelle1_commandes += 1;
break;
case 'Cahier 2':
violoncelle1_commandes += 1;
break;
case 'Cahier 3':
violoncelle1_commandes += 1;
break;
case 'Cahier 4':
violoncelle1_commandes += 1;
break;
case 'Cahier 5':
violoncelle2_commandes += 1;
break;
case 'Cahier 6':
violoncelle2_commandes += 1;
break;
case 'Cahier 7':
violoncelle2_commandes += 1;
break;
case 'Cahier 8':
violoncelle2_commandes += 1;
break;
case 'Cahier 9':
violoncelle2_commandes += 1;
break;
case 'Cahier 10':
violoncelle2_commandes += 1;
break;
default:
logger.info("Erreur détecté dans le switch req.session[eleve_+toto+_instrument] == Violoncelle", { numsession: req.session.id, label: filename});
}
}
}
}
/////////////////////////////////////////////////
// AJOUT ENCADRANTS
let compteur_encadrants = 0;
for (let toto = 1; toto < 5; toto++) {
if (req.session["encadrant_"+toto+"_nom"]) {
// SI PARENT, ne rien mettre dans instrument (évite qu'il y ait "undefined")
if (!req.session["encadrant_"+toto+"_prof_instrument"]) {req.session["encadrant_"+toto+"_prof_instrument"] = ''};
table = "ca_encadrant";
if (req.session.deja_inscrit_concert == "non") {
champs = "date_maj,saison,identifiant,encadrant_type,encadrant_nom,encadrant_prenom,encadrant_telephone_mobile,encadrant_mail,encadrant__prof_instrument";
values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["encadrant_"+toto+"_type"] + '","' + req.session["encadrant_"+toto+"_nom"] + '","' + req.session["encadrant_"+toto+"_prenom"] + '","' + req.session["encadrant_"+toto+"_telephone_mobile"] + '","' + req.session["encadrant_"+toto+"_mail"] + '","' + req.session["encadrant_"+toto+"_prof_instrument"] + '"';
} else if (req.session.deja_inscrit_concert == "oui") {
champs = "date_maj,saison,identifiant,encadrant_type,encadrant_nom,encadrant_prenom,encadrant_telephone_mobile,encadrant_mail,encadrant__prof_instrument, ajout";
values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["encadrant_"+toto+"_type"] + '","' + req.session["encadrant_"+toto+"_nom"] + '","' + req.session["encadrant_"+toto+"_prenom"] + '","' + req.session["encadrant_"+toto+"_telephone_mobile"] + '","' + req.session["encadrant_"+toto+"_mail"] + '","' + req.session["encadrant_"+toto+"_prof_instrument"] + '","' + now + '"';
}
sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')';
logger.info("REQUETE SQL ca_encadrant : " + sql , { numsession: req.session.id, label: filename});
const [results, fields] = await db_connection_promise.execute(sql);
// COMPTEUR DE PLACES
if (req.session["encadrant_"+toto+"_type"]=="Professeur") {
commande_nbr_places_encadrant_prof += 1;
};
if (req.session["encadrant_"+toto+"_type"]=="Parent") {
commande_nbr_places_encadrant_parent += 1;
};
compteur_encadrants++;
}
}
/////////////////////////////////////////////////
// AJOUT DB INFORMATIONS ADHÉRENTS
// SI C'EST SA PREMIÈRE INSCRIPTION
if (req.session.deja_inscrit_concert == "non") {
table = "ca_adherent";
sql = 'INSERT INTO ';
sql += table;
sql += ' (';
sql += 'date_inscription, ';
sql += 'date_maj, ';
sql += 'saison, ';
sql += 'identifiant, ';
sql += 'association_suzuki, ';
sql += 'adherent_nom, ';
sql += 'adherent_prenom, ';
sql += 'adherent_telephone_mobile, ';
sql += 'adherent_mail, ';
sql += 'hebergement_ville, ';
sql += 'hebergement_places, ';
sql += 'commande_nb_spectateur, ';
sql += 'comment, ';
sql += 'commande_nb_concertiste, ';
sql += 'commande_nb_encadr_prof, ';
sql += 'commande_nb_encadr_par, ';
sql += 'commande_cout_concertiste, ';
sql += 'commande_cout_spectateur, ';
sql += 'don, ';
sql += 'stripe_statut_paiement, ';
sql += 'montant_total';
sql += ') VALUES (';
sql += '"'+ now +'",';
sql += '"'+ now +'",';
sql += '"'+ saison +'",';
sql += '"'+ req.session.identifiant +'",';
sql += '"'+ req.session.association_suzuki +'",';
sql += '"'+ req.session.adherent_nom +'",';
sql += '"'+ req.session.adherent_prenom +'",';
sql += '"'+ req.session.adherent_telephone_mobile +'",';
sql += '"'+ req.session.adherent_mail +'",';
sql += '"'+ req.session.hebergement_ville +'",';
sql += ''+ req.session.hebergement_nb +',';
sql += ''+ req.session.spectateur_nb_place +',';
sql += '"'+ req.session.commentaire_adherent +'",';
sql += ''+ commande_nbr_places_concertiste +',';
sql += ''+ commande_nbr_places_encadrant_prof +',';
sql += ''+ commande_nbr_places_encadrant_parent +',';
sql += ''+ req.session.cout_concertiste +',';
sql += ''+ req.session.cout_spectateur +',';
sql += ''+ parseInt(req.session.don) +',';
if (req.session.montant_total > 0) {
sql += '"attente",';
} else {
sql += '"gratuit",';
}
sql += ''+ req.session.montant_total;
sql += ')';
logger.info("REQUETE SQL ca_adherent : " + sql , { numsession: req.session.id, label: filename});
const [results_insert_ca_adherent, fields_insert_ca_adherent] = await db_connection_promise.execute(sql);
logger.info("ADHÉRENTS Row ID added : " + results_insert_ca_adherent.insertId, { numsession: req.session.id, label: filename});
} else if (req.session.deja_inscrit_concert == "oui") {
// SI C'EST UN AJOUT DE BILLET
table = "ca_ajout";
sql = 'INSERT INTO ';
sql += table;
sql += ' (';
sql += 'date_maj, ';
sql += 'saison, ';
sql += 'identifiant, ';
sql += 'commande_nb_spectateur, ';
sql += 'commande_nb_concertiste, ';
sql += 'commande_nb_encadr_prof, ';
sql += 'commande_nb_encadr_par, ';
sql += 'commande_cout_concertiste, ';
sql += 'commande_cout_spectateur, ';
sql += 'don, ';
sql += 'stripe_statut_paiement, ';
sql += 'montant_total';
sql += ') VALUES (';
sql += '"'+ now +'",';
sql += '"'+ saison +'",';
sql += '"'+ req.session.identifiant +'",';
sql += ''+ req.session.spectateur_nb_place +',';
sql += ''+ commande_nbr_places_concertiste +',';
sql += ''+ commande_nbr_places_encadrant_prof +',';
sql += ''+ commande_nbr_places_encadrant_parent +',';
sql += ''+ req.session.cout_concertiste +',';
sql += ''+ req.session.cout_spectateur +',';
sql += ''+ parseInt(req.session.don) +',';
if (req.session.montant_total > 0) {
sql += '"attente",';
} else {
sql += '"gratuit",';
}
sql += ''+ req.session.montant_total;
sql += ')';
logger.info("REQUETE SQL ca_ajout : " + sql , { numsession: req.session.id, label: filename});
const [results_insert_ca_adherent, fields_insert_ca_adherent] = await db_connection_promise.execute(sql);
logger.info("ca_ajout Row ID added : " + results_insert_ca_adherent.insertId, { numsession: req.session.id, label: filename});
}
} catch (error) {
// Echec de connection à la BD
logger.error("Il y a un problème avec la connection à la base de données! : " + error, { numsession: req.session.id });
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système connexion base de données, veuillez recommencer, "' + error;
//await db_connection_promise.end();
affiche_page_admin();
}
}
logger.info("======================================");
logger.info("======== payer ==========");
logger.info("======================================");
let sql11;
let sql12;
let sql13;
let sql14;
var mail_objet;
var mail_html;
moment.locale('fr');
var today = moment().format('L');
var identifiant;
let compteur_piano = 0
let compteur_harpe = 0
let compteur_trompette = 0
let compteur_flute = 0
let compteur_alto = 0
let compteur_violon1 = 0
let compteur_violon2 = 0
let compteur_violoncelle1 = 0
let compteur_violoncelle2 = 0
// FONCTION POUR AFFICHER LA PAGE EN CAS D'ERREUR
function affiche_page_admin() {
////////////////////////////////////////////////////
// AFFIHER LA PAGE /identifier
// AFFICHAGE DES ERREURS
// EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR :
// - SI IDENTIFIANT NON ADHÉRENT
// - SI RIEN SAISIE
////////////////////////////////////////////////////
if (req.session.err_mail_form_adhesion_1) {
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
// on supprime le contenu après affichage
req.session.err_mail_form_adhesion_1 = undefined;
req.session.err_mail_form_adhesion_2 = undefined;
req.session.err_mail_form_adhesion_3 = undefined;
}
res.render('concert/page_templates/admin');
};
var customer_email = req.session.adherent_mail;
var payment_status = "paye";
var amount_total = req.session.montant_total;
identifiant = req.session.identifiant;
try {
//Connexion
let db_connection_promise = await connect_DB_promise();
console.log("req.session.deja_inscrit_concert = ",req.session.deja_inscrit_concert);
// SI MODE INSCRIPTION INITIALE
if (req.session.deja_inscrit_concert == "non") {
//Query
sql = 'UPDATE ';
sql += 'ca_adherent';
sql += ' SET ';
sql += 'stripe_retour = "paiement manuel", ';
sql += 'stripe_date = "' + now + '", ';
sql += 'stripe_statut_paiement = "paye"';
sql += ' WHERE identifiant = "' + identifiant + '"';
console.log("SQL 123 = ", sql);
const [results, fields] = await db_connection_promise.execute(sql);
logger.info("Row ca_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename});
//ca_concertiste
sql11 = 'SELECT saison, concertiste_nom, concertiste_prenom, concertiste_age, concertiste_intrument, concertiste_cahier, concertiste_piece, concertiste_prof_nom, concertiste_prof_mail, ajout FROM ca_concertiste where identifiant = "' + identifiant + '"';
//ca_encadrant
sql12 = 'SELECT saison, encadrant_type, encadrant_nom, encadrant_prenom, encadrant_telephone_mobile, encadrant_mail, encadrant__prof_instrument, ajout FROM ca_encadrant where identifiant = "' + identifiant + '"';
//Nombre de place commandées
sql13 = 'SELECT commande_nb_spectateur, commande_nb_concertiste, commande_nb_encadr_prof, commande_nb_encadr_par, commande_cout_concertiste, commande_cout_spectateur, don, montant_total, stripe_retour FROM ca_adherent where identifiant = "' + identifiant + '"';
//ca_adherent
sql14 = 'SELECT saison, date_inscription, date_maj, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail, hebergement_ville, hebergement_places, comment FROM ca_adherent where identifiant = "' + identifiant + '"';
}
// SI MODE INSCRIPTION AJOUT DE BILLET
// ON SÉLECTIONNE LES CONCERTISTES ET LES ENCADRANTS QUI ONT QUELQUE CHOSE DANS LA CHAMP "AJOUT"
if (req.session.deja_inscrit_concert == "oui") {
//Query
sql = 'UPDATE ';
sql += 'ca_ajout';
sql += ' SET ';
sql += 'stripe_statut_paiement = "paye"';
sql += ' WHERE identifiant = "' + identifiant + '"';
const [results, fields] = await db_connection_promise.execute(sql);
logger.info("Row ca_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename});
//ca_concertiste
sql11 = 'SELECT saison, concertiste_nom, concertiste_prenom, concertiste_age, concertiste_intrument, concertiste_cahier, concertiste_piece, concertiste_prof_nom, concertiste_prof_mail, ajout FROM ca_concertiste where identifiant = "' + identifiant + '" AND ajout IS NOT NULL';
//ca_encadrant
sql12 = 'SELECT saison, encadrant_type, encadrant_nom, encadrant_prenom, encadrant_telephone_mobile, encadrant_mail, encadrant__prof_instrument, ajout FROM ca_encadrant where identifiant = "' + identifiant + '" AND ajout IS NOT NULL';
//Nombre de place commandées
sql13 = 'SELECT commande_nb_spectateur, commande_nb_concertiste, commande_nb_encadr_prof, commande_nb_encadr_par, commande_cout_concertiste, commande_cout_spectateur, don, montant_total, stripe_retour FROM ca_ajout where identifiant = "' + identifiant + '"';
//ca_adherent
sql14 = 'SELECT saison, date_inscription, date_maj, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail FROM ca_adherent where identifiant = "' + identifiant + '"';
}
//ca_concertiste
const [results_ca_concertiste, fields_ca_concertiste] = await db_connection_promise.execute(sql11);
logger.info("Row ca_concertiste RECUP INFOS : " + results_ca_concertiste.length, { numsession: req.session.id, label: filename});
//ca_encadrant
const [results_ca_encadrant, fields_ca_encadrant] = await db_connection_promise.execute(sql12);
logger.info("Row ca_encadrant RECUP INFOS : " + results_ca_encadrant.length, { numsession: req.session.id, label: filename});
//Nombre de place commandées
const [results_nb_commande, fields_nb_commande] = await db_connection_promise.execute(sql13);
logger.info("Row results_nb_commande RECUP INFOS : " + results_nb_commande.length, { numsession: req.session.id, label: filename});
// RÉCUPÉRATION DES INFORMATIONS PARTICIPANTS POUR ENVOIE MAIL AVEC RÉCAP
//ca_adherent
const [results_ca_adherent, fields_ca_adherent] = await db_connection_promise.execute(sql14);
logger.info("Row ca_adherent RECUP INFOS: " + results_ca_adherent.length, { numsession: req.session.id, label: filename});
// ADRESSE ADHÉRENT adherent
sql = 'SELECT adherent_adresse_rue, adherent_adresse_codepostal, adherent_adresse_ville FROM adherent where identifiant = "' + identifiant + '"';
const [results_adherent, fields_adherent] = await db_connection_promise.execute(sql);
logger.info("Row adherent RECUP INFOS: " + results_adherent.length, { numsession: req.session.id, label: filename});
// AJOUT DÉCOMPTE DES PLACES
// SI PAIEMENT REUSSI
// !!! Au démarrage de la campagne les champs de la table doivent être à 0 (zéro) et non vide ou null
sql = 'UPDATE ';
sql += 'ca_decompte_place';
sql += ' SET ';
sql += 'date_maj = "' + now + '", ';
if (results_nb_commande[0].commande_nb_spectateur > 0) { sql += 'spectateur_commandes = spectateur_commandes + ' + results_nb_commande[0].commande_nb_spectateur + ', '; }
if (results_nb_commande[0].commande_nb_concertiste > 0) { sql += 'concertiste_commandes = concertiste_commandes + ' + results_nb_commande[0].commande_nb_concertiste + ', '; }
if (results_nb_commande[0].commande_nb_encadr_prof > 0) { sql += 'encadr_prof_commandes = encadr_prof_commandes + ' + results_nb_commande[0].commande_nb_encadr_prof + ', '; }
if (results_nb_commande[0].commande_nb_encadr_par > 0) { sql += 'encadr_parent_commandes = encadr_parent_commandes + ' + results_nb_commande[0].commande_nb_encadr_par + ', '; }
logger.info("A3 VANT LE IF results_ca_concertiste.length: ", { numsession: req.session.id, label: filename});
logger.info("results_ca_concertiste.length: " + results_ca_concertiste.length, { numsession: req.session.id, label: filename});
if (results_ca_concertiste.length > 0) {
for (let i = 0; i
Nous vous remercions chaleureusement pour votre don. Votre justificatif est joint à ce mail.
"; } mail_html += "RÉCAPITULATIF
'; mail_html += "Identifiant Suzuki : " + identifiant; if (results_ca_adherent[0].hebergement_places > 0) {mail_html += "
HÉBERGEMENT PROPOSÉ :
Ville : " + results_ca_adherent[0].hebergement_ville + ", nombre de personnes : " + results_ca_adherent[0].hebergement_places + "
" + results_ca_concertiste.length + " CONCERTISTE(S) :
"; mail_html += "Les concertistes s'engagent à être présents les 2 journées du 20 et 21 avril 2024.
"; for (let i = 0; i" + results_ca_encadrant.length + " ENCADRANT(S) :
"; mail_html += "Les encadrants s'engagent à être présents les 2 journées du 20 et 21 avril 2024.
"; for (let i = 0; i" + results_nb_commande[0].commande_nb_spectateur + " SPECTATEUR(S) RÉSERVÉ(S) :
"
mail_html += "Les billets spectateurs sont valables pour la date du 21 avril 2024.
TARIFS :
";
if (results_ca_concertiste.length > 0) {mail_html += "- concertiste(s) : " + results_nb_commande[0].commande_cout_concertiste + "€
"};
if (results_nb_commande[0].commande_nb_spectateur > 0) {mail_html += "- spectateur(s) : " + results_nb_commande[0].commande_cout_spectateur + "€"};
if (results_nb_commande[0].don > 0) {mail_html += "
- Votre don : " + results_nb_commande[0].don + "€"};
mail_html += "
Montant total : " + results_nb_commande[0].montant_total + "€";
mail_html += '
Association Française pour la pédagogie Suzuki
Marie Rossot - Pôle organisation du Concert national Unesco 2024
Association Française pour la Pédagogie Suzuki
Marie Rossot - Pôle organisation du Concert national Unesco 2024