/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const path = require("path");
// CALCUL DE DATE
const moment = require('moment');
// CONNECTION BASE DE DONNÉES
const mysql_promise = require('mysql2/promise');
// STRIPE
const stripe = require('stripe')(process.env.STRIPE_STN_PRIVATE_KEY);

/////////////////////////////////////////////////
// APPELS DES MODULES PERSOS
/////////////////////////////////////////////////
// loggings
const logger = require("../../public/js/app/logger_stagenat");
// DB
const { connect_DB_promise } = require('../../modules/db/databaseconnect');

////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;

/////////////////////////////////////////////////
// APPELS DES FONCTIONS
/////////////////////////////////////////////////
const envoie_mail = require("./../../modules/envoie_mail");

/////////////////////////////////////////////////
// GOOGLE SHEET PARAMETERS
/////////////////////////////////////////////////
const { GoogleSpreadsheet } = require('google-spreadsheet');
const GS_creds_stagean = require('../../inscriptionsafps-53b60452f63d.json');
const { error, log } = require("console");
const GS_stagean = new GoogleSpreadsheet(process.env.gsheet_stagenat);


/////////////////////////////////////////////////
// PAGE 4 - RETOUR PAIEMENT REUSSI
// DOMAIN/stagenational/paiement_reussi?id={CHECKOUT_SESSION_ID}
//
//
/////////////////////////////////////////////////

const SN_accompte_reussi = async function(req, res){

    logger.info("======================================", { label: filename });
    logger.info("======== FUNCTION SN_accompte_reussi (STAGE) ==========", { label: filename });
    logger.info("======================================", { label: filename });

    // VARIABLES
    let compteur_ado;
    let CB_retour;
    let stripe_retour;
    let pasdecodesecret;

    // DATE
    moment().format();
    moment.locale('fr');
    let now = moment().format("YYYY-MM-DD HH:mm:ss");


    if (req.session.montant_accompte < 100) {
        logger.info("req.session.montant_accompte : " + req.session.montant_accompte, { numsession: req.session.id, label: filename});
    } else {
        //////////////////////////////////////////////////////////////////////////////
        // RETOUR STRIPE
        let id = req.query.id;
        const session_stripe = await stripe.checkout.sessions.retrieve(id);
        let customer_email = session_stripe.customer_email;
        req.session.adherent_mail = customer_email;
        let payment_status = session_stripe.payment_status;
        let amount_total = session_stripe.amount_total/100;
        let stripe_customer = session_stripe.customer;
        let stripe_payment_intent = session_stripe.payment_intent;
        let payment_method_types = session_stripe.payment_method_types;
        let stripe_status = session_stripe.status;
        let identifiant = session_stripe.metadata.identifiant;
        if (session_stripe.metadata.code_secret) {
            req.session.code_secret = session_stripe.metadata.code_secret;
            pasdecodesecret = "non";
        } else {
            pasdecodesecret = "oui";
        }
        logger.info("pasdecodesecret : " + pasdecodesecret, { numsession: req.session.id, label: filename});
        req.session.identifiant = identifiant;
        compteur_ado = session_stripe.metadata.compteur_ado;
        CB_retour = "identifiant_adherent:"+identifiant+",payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session_stripe.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
        stripe_retour = session_stripe.id;
        logger.info("customer_email : " + customer_email, { numsession: req.session.id, label: filename});
        logger.info("payment_status : " + payment_status, { numsession: req.session.id, label: filename});
    }
 
    logger.info("req.session.code_secret : " + req.session.code_secret, { numsession: req.session.id, label: filename});

    //////////////////////////////////////////////////////////////////////////////
    // MAJ infos paiements DB
    // CODE_SECRET MAJ utilisé
    /////////////////////////////////////////////////

    // une vérification pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
    logger.info("req.session.participant_ajoute : " + req.session.participant_ajoute, { numsession: req.session.id, label: filename});

    if (req.session.participant_ajoute === "oui") {
        req.session.err_mail_form_adhesion_1 = "Votre session est terminée, veuiller redémarrer votre navigateur.";
        res.redirect('/stagenational/identifier');
    } else {

        //Query MAJ infos paiements DB
        
        try {
            let db_connection_promise = await connect_DB_promise();

            // Query MAJ stn_adherent
            let sql = 'UPDATE ';
            sql += 'stn_adherent';
            sql += ' SET ';
            if (req.session.montant_accompte < 100) { 
                sql += 'statut_paiement_acompte = "sans_acompte", ';
            } else {
                sql += 'stripe_retour = "' + CB_retour + '", ';
                sql += 'statut_paiement_acompte = "paye", ';
            }
            sql += 'statut_reservation = "confirme"';
            sql += ' WHERE identifiant = "' + req.session.identifiant + '" AND statut_suppression = 0';

            //logger.info("sql UPDATE stn_adherent : " + sql, { numsession: req.session.id, label: filename});

            const [results, fields] = await db_connection_promise.execute(sql);
            logger.info("Row stn_adherent UPDATE payé: " + results.changedRows, { numsession: req.session.id, label: filename});

            // Query MAJ Compteur ado stn_stage
            
            let sql1 = 'UPDATE ';
            sql1 += 'stn_stage';
            sql1 += ' SET ';
            if (req.session.montant_accompte < 100) { 
                sql1 += 'campado_nb_reservation = campado_nb_reservation + ' + req.session.compteur_ado + '';
            } else {
                sql1 += 'campado_nb_reservation = campado_nb_reservation + ' + compteur_ado + '';
            }
            
            const [results1, fields1] = await db_connection_promise.execute(sql1);
            logger.info("Row stn_stage UPDATE compteur ado: " + results1.changedRows, { numsession: req.session.id, label: filename});
            
            // Query Récupération des infos pour copie dans Google Sheet + envoie du mail
            // adhérent
            let sql2 = 'select * from  ';
            sql2 += 'stn_adherent';
            sql2 += ' WHERE identifiant = "' + req.session.identifiant + '" AND statut_suppression = 0';
            const [results2, fields2] = await db_connection_promise.execute(sql2);
            logger.info("Row stn_adherent SELECT : " + results2.length, { numsession: req.session.id, label: filename});

            // participants
            let sql3 = 'SELECT stn_adherent.identifiant, stn_adherent.association_suzuki, stn_adherent.saison, stn_adherent.date_maj, stn_adherent.adherent_nom, stn_adherent.adherent_prenom, stn_adherent.adherent_telephone, stn_adherent.adherent_mail, stn_adherent.stn_hebergement, stn_adherent.cout_hebergement, stn_participant.ID_participant, stn_participant.stn_part_nom, stn_participant.stn_part_prenom, stn_participant.prise_charge_famille, stn_participant.stn_part_date_naiss, stn_participant.stn_part_age, stn_participant.stn_part_profilage, stn_participant.stn_role, stn_participant.stn_profil, stn_participant.stn_transport, stn_participant.stn_arret, stn_participant.instrument, stn_participant.instrument_ensemble, stn_participant.instrument_collectif, stn_participant.cahier, stn_participant.piece, stn_participant.prof_nom, stn_participant.prof_mail, stn_participant.concert_solo_piece, stn_participant.concert_solo_cahier, stn_participant.cours_individuel, stn_participant.decouverte_alto, stn_participant.option_choral, stn_participant.option_rythmique, stn_participant.option_eveil, stn_participant.option_collectif, stn_participant.option_ensemble, stn_participant.option_particulier, stn_participant.cout_hebergement, stn_participant.cout_transport, stn_participant.cours_cout, stn_participant.eveil_cout, stn_participant.dalcroze_cout, stn_participant.collectif_cout, stn_participant.ensemble_cout, stn_participant.particulier_cout, stn_participant.observation_cout, stn_participant.coursindividuel_cout, stn_participant.decouvrealto_cout, stn_participant.chant_cout FROM stn_participant JOIN stn_adherent ON stn_participant.identifiant = stn_adherent.identifiant WHERE stn_participant.identifiant = "' + req.session.identifiant + '" AND stn_participant.statut_suppression = 0';
            const [results3, fields3] = await db_connection_promise.execute(sql3);
            logger.info("Row stn_participant SELECT nombre de participants : " + results3.length, { numsession: req.session.id, label: filename});


            // QUERY MAJ CODE SECRET = "utilise"
            if (pasdecodesecret === "oui") {
                logger.info("PAS DE CODE SECRET", { numsession: req.session.id, label: filename});
            } else {
                let sql_codesecret = 'UPDATE ';
                sql_codesecret += 'code';
                sql_codesecret += ' SET ';
                sql_codesecret += 'date_suppression = "' + now +'", ';
                sql_codesecret += 'statut = "utilise"';
                sql_codesecret += ' WHERE code = "' + req.session.code_secret + '"';
                logger.info("sql_codesecret : " + sql_codesecret, { numsession: req.session.id, label: filename});
                const [resultscodesecret, fieldscodesecret] = await db_connection_promise.execute(sql_codesecret);
                await db_connection_promise.end();
                logger.info("Row code secret update : " + resultscodesecret.changedRows, { numsession: req.session.id, label: filename});
            }

            //////////////////////////////////////////////////////////////////////////////
            // PRÉPARATION PAGE PAIEMENT RÉUSSI
            
            res.locals.identifiant = req.session.identifiant;
            res.locals.association_suzuki = results2[0].association_suzuki;
            
            if (results2[0].stn_hebergement == 'flocons verts partagé') {
                res.locals.hebergement = "Centre les Flocons Verts - hébergement partagé";
            }
            if (results2[0].stn_hebergement == 'flocons verts non partagé') {
                res.locals.hebergement = "Centre les Flocons Verts - hébergement non partagé";
                res.locals.cout_total_hebergement = results2[0].cout_hebergement;
            }
            if (results2[0].stn_hebergement == 'independant') {
                res.locals.hebergement = "indépendant";
            }
            
            for (let toto = 0; toto<(results3.length); toto++) {

                if (results3[toto].prise_charge_famille === "undefined") {results3[toto].prise_charge_famille = ""};
                if (results3[toto].instrument_ensemble === "undefined") {results3[toto].instrument_ensemble = ""};
                if (results3[toto].instrument_collectif === "undefined") {results3[toto].instrument_collectif = ""};


                res.locals[`personne_${toto}_numero`] = toto + 1;
                res.locals[`personne_${toto}_nom`] = results3[toto].stn_part_nom;

                if (results3[toto].prise_charge_famille) {
                    res.locals[`personne_${toto}_prise_charge_nom`] = results3[toto].prise_charge_famille;
                }

                res.locals[`personne_${toto}_prenom`] = results3[toto].stn_part_prenom;

                logger.info(`Participant prénom : ${results3[toto].stn_part_prenom}`, { 
                    numsession: req.session.id, 
                    label: filename
                });

                res.locals[`personne_${toto}_profilage`] = results3[toto].stn_part_profilage;
                
                // AFFICHER ACTIVITÉ
                if (results3[toto].stn_role === 'accompagnant_activite_enfant') {
                    res.locals[`personne_${toto}_role`] = "Accompagnant enfant avec activité";
                } else if (results3[toto].stn_role === 'accompagnant') {
                    res.locals[`personne_${toto}_role`] = "accompagnant sans activité";
                } else if (results3[toto].stn_role === 'accompagnant_activite_adulte') {
                    res.locals[`personne_${toto}_role`] = "accompagnant adulte avec activité";
                } else if (results3[toto].stn_role === 'instrumentiste_camp') {
                    res.locals[`personne_${toto}_role`] = "instrumentiste";
                } else if (results3[toto].stn_role === 'prof_invite') {
                    res.locals[`personne_${toto}_role`] = "professeur invité";
                } else {
                    res.locals[`personne_${toto}_role`] = results3[toto].stn_role;
                }
                
                if (results3[toto].stn_profil === 'professeur') {
                    res.locals[`personne_${toto}_profil`] = "professeur";
                } else if (results3[toto].stn_profil === 'non_professeur') {
                    res.locals[`personne_${toto}_profil`] = "accompagnant";
                } else if (results3[toto].stn_profil === 'Camp ado') {
                    res.locals[`personne_${toto}_profil`] = "Camp ado";
                }

                // AFFICHER MODE DE TRANSPORT
                if (results3[toto].stn_transport === 'independant') {
                    res.locals[`personne_${toto}_transport_mode`] = "indépendant";
                } else {
                    res.locals[`personne_${toto}_transport_mode`] = "car";
                }
                
                if (results3[toto].stn_arret === 'arret_7_quai_lassagne_lyon') {
                    res.locals[`personne_${toto}_transport_arret`] = "7 quai Lassagne Lyon";
                } else if (results3[toto].stn_arret === 'arret_partdieu_lyon') {
                    res.locals[`personne_${toto}_transport_arret`] = "Gare Part Dieu Lyon";
                }

                // AFFICHER INSTRUMENT
                res.locals[`personne_${toto}_instrument`] = results3[toto].instrument;
                res.locals[`personne_${toto}_instrument_ensemble`] = results3[toto].instrument_ensemble;
                res.locals[`personne_${toto}_instrument_collectif`] = results3[toto].instrument_collectif;
                res.locals[`personne_${toto}_cahier`] = results3[toto].cahier;
                res.locals[`personne_${toto}_option_concertsolo_cahier`] = results3[toto].concert_solo_cahier;
                res.locals[`personne_${toto}_option_concertsolo_piece`] = results3[toto].concert_solo_piece;
                res.locals[`personne_${toto}_option_decouvrealto`] = results3[toto].decouverte_alto;

                // OPTIONS
                res.locals[`personne_${toto}_dalcroze`] = results3[toto].option_rythmique;
                res.locals[`personne_${toto}_choral`] = results3[toto].option_choral;
                res.locals[`personne_${toto}_eveil`] = results3[toto].option_eveil;
                res.locals[`personne_${toto}_collectif`] = results3[toto].option_collectif;
                res.locals[`personne_${toto}_ensemble`] = results3[toto].option_ensemble;
                res.locals[`personne_${toto}_particulier`] = results3[toto].option_particulier;

                // AFFICHER COUT
                res.locals[`personne_${toto}_cout_hebergement`] = results3[toto].cout_hebergement;
                res.locals[`personne_${toto}_cout_transport`] = results3[toto].cout_transport;
                res.locals[`personne_${toto}_eveil_cout`] = results3[toto].eveil_cout;
                res.locals[`personne_${toto}_collectif_cout`] = results3[toto].collectif_cout;
                res.locals[`personne_${toto}_ensemble_cout`] = results3[toto].ensemble_cout;
                res.locals[`personne_${toto}_particulier_cout`] = results3[toto].particulier_cout;
                res.locals[`personne_${toto}_dalcroze_cout`] = results3[toto].dalcroze_cout;
                res.locals[`personne_${toto}_chant_cout`] = results3[toto].chant_cout;
                res.locals[`personne_${toto}_observation_cout`] = results3[toto].observation_cout;
                res.locals[`personne_${toto}_cours_cout`] = results3[toto].cours_cout;
                res.locals[`personne_${toto}_coursindividuel_cout`] = results3[toto].coursindividuel_cout;
                res.locals[`personne_${toto}_option_decouvrealto_cout`] = results3[toto].decouvrealto_cout;


            }
            res.locals.cout_total = results2[0].cout_total;
            res.locals.frais_dossier = results2[0].frais_dossier;
            res.locals.remise = results2[0].remise_famille_nombreuse;
            res.locals.accompte_frais_bancaire = results2[0].frais_bancaire;
            res.locals.montant_accompte = results2[0].acompte_initial;



            //////////////////////////////////////////////////////////////////////////////
            // AJOUT INFOS DANS GOOGLE SHEET

            try {
                await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
                await GS_stagean.loadInfo();
                let GS_stagean_Adherents = GS_stagean.sheetsByTitle['Adherents'];
                let GS_stagean_Paiements = GS_stagean.sheetsByTitle['Paiements'];
                let GS_stagean_Car = GS_stagean.sheetsByTitle['Car'];
                let GS_stagean_Flocons_verts = GS_stagean.sheetsByTitle['Flocons_verts'];
                let GS_stagean_CampAdo = GS_stagean.sheetsByTitle['CampAdo'];
                let GS_stagean_professeurs = GS_stagean.sheetsByTitle['Professeurs'];
                let GS_stagean_Inscription_cours = GS_stagean.sheetsByTitle['Inscription_cours'];
                
                logger.info("identifiant stocké from stripe avant insert GS : " + req.session.identifiant, { numsession: req.session.id, label: filename});

                await GS_stagean_Adherents.addRows (
                    [
                        {
                            ID_adherent: results2[0].ID_adherent,
                            saison: results2[0].saison,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            association_suzuki: results2[0].association_suzuki,
                            adherent_nom: results2[0].adherent_nom.toUpperCase(),
                            adherent_prenom: results2[0].adherent_prenom,
                            adherent_mail: results2[0].adherent_mail,
                            adherent_telephone: "'" + results2[0].adherent_telephone,
                            adherent_adresse_rue: results2[0].adherent_adresse_rue,
                            adherent_adresse_complement: results2[0].adherent_adresse_complement,
                            adherent_adresse_codepostal: results2[0].adherent_adresse_codepostal,
                            adherent_adresse_ville: results2[0].adherent_adresse_ville,
                            adherent_adresse_pays: results2[0].adherent_adresse_pays,
                            commentaire: results2[0].stn_commentaire
                        }
                    ]
                );

                if (results2[0].cout_total > 0) {
                    await GS_stagean_Paiements.addRows (
                        [
                            {
                                ID_adherent: results2[0].ID_adherent,
                                date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                                identifiant: req.session.identifiant,
                                adherent_nom: results2[0].adherent_nom.toUpperCase(),
                                adherent_prenom: results2[0].adherent_prenom,
                                adherent_mail: results2[0].adherent_mail,
                                cout_hebergement: results2[0].cout_hebergement,
                                cout_transport: results2[0].cout_transport,
                                cout_cours: results2[0].cout_cours,
                                cout_coursparticulier: results2[0].cout_coursparticulier,
                                cout_decouvertealto: results2[0].cout_decouvertealto,
                                cout_chantchoral: results2[0].cout_chantchoral,
                                cout_dalcroze: results2[0].cout_dalcroze,
                                cout_eveil: results2[0].cout_eveil,
                                cout_cours_collectif: results2[0].cout_total_collectif,
                                cout_atelier_ensemble: results2[0].cout_total_ensemble,
                                cout_cour_part_acc: results2[0].cout_total_particulier,
                                cout_option_surplace: results2[0].cout_option_surplace,
                                cout_observation: results2[0].cout_observation,
                                remise_famille_nombreuse: results2[0].remise_famille_nombreuse,
                                frais_dossier: results2[0].frais_dossier,
                                frais_bancaire: parseFloat(results2[0].frais_bancaire),
                                acompte_initial: parseFloat(results2[0].acompte_initial),
                                statut_paiement_acompte: results2[0].statut_paiement_acompte,
                                cout_total: parseFloat(results2[0].cout_total)
                            }
                        ]
                    );
                }

                let ajout_gs_Car = [];
                let car_trouve = "";
                for (let i = 0; i < results3.length; i++) {
                    if (results3[i].stn_transport === "car") {
                        ajout_gs_Car.push({
                            ID_participant: results3[i].ID_participant,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            participant_nom: results3[i].stn_part_nom.toUpperCase(),
                            participant_prenom: results3[i].stn_part_prenom,
                            participant_profilage: results3[i].stn_part_profilage,
                            adherent_mail: results3[i].adherent_mail,
                            adherent_telephone: "'" + results3[i].adherent_telephone,
                            arret: results3[i].stn_arret
                        });
                        car_trouve = "oui";
                    }
                
                }
                if (car_trouve === "oui") { await GS_stagean_Car.addRows(ajout_gs_Car);}

                let ajout_gs_Flocons_verts = [];
                let fv_trouve = "";
                for (let i = 0; i < results3.length; i++) {
                    if (results3[i].stn_hebergement === "flocons verts partagé" || results3[i].stn_hebergement === "flocons verts non partagé") {
                        if (results3[i].stn_profil === "undefined") {results3[i].stn_profil = ""};
                        //calcul tranche âge correspondantes aux pré-requis des Flocons verts
                        let fv_tranche_age = "";
                        let fv_type_hebergement = "";
                        if (results3[i].stn_hebergement  === "flocons verts partagé") {fv_type_hebergement = "partagé"};
                        if (results3[i].stn_hebergement  === "flocons verts non partagé") {fv_type_hebergement = "non partagé"};
                        if (results3[i].stn_part_age < 11) {fv_tranche_age = "- 11 ans"};
                        if (results3[i].stn_part_age > 10) {fv_tranche_age = "+ 11 ans"};
                        ajout_gs_Flocons_verts.push({
                            ID_participant: results3[i].ID_participant,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            participant_nom: results3[i].stn_part_nom.toUpperCase(),
                            participant_prenom: results3[i].stn_part_prenom,
                            participant_age: results3[i].stn_part_age,
                            participant_tranche_age: "'" + fv_tranche_age,
                            adherent_mail: results3[i].adherent_mail,
                            adherent_telephone: "'" + results3[i].adherent_telephone,
                            role: results3[i].stn_role,
                            profil: results3[i].stn_profil,
                            type_hebergement: fv_type_hebergement
                        });
                        fv_trouve = "oui";
                    }
                }
                if (fv_trouve === "oui") { await GS_stagean_Flocons_verts.addRows(ajout_gs_Flocons_verts);}
                
                let ajout_gs_CampAdo = [];
                let campado_trouve;
                for (let i = 0; i < results3.length; i++) {
                    if (results3[i].stn_profil === "Camp ado") {
                        ajout_gs_CampAdo.push({
                            ID_participant: results3[i].ID_participant,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            participant_nom: results3[i].stn_part_nom.toUpperCase(),
                            participant_prenom: results3[i].stn_part_prenom,
                            participant_age: results3[i].stn_part_age,
                            adherent_mail: results3[i].adherent_mail,
                            adherent_telephone: "'" + results3[i].adherent_telephone
                        });
                        campado_trouve = "oui";
                    }
                }
                if (campado_trouve === "oui") { await GS_stagean_CampAdo.addRows(ajout_gs_CampAdo);}

                let ajout_gs_professeurs = [];
                let professeurs_trouve = "";
                for (let i = 0; i < results3.length; i++) {
                    if (results3[i].stn_role === "observateur" || results3[i].stn_role === "prof_invite") {
                        if (results3[i].stn_profil === "undefined") {results3[i].stn_profil = ""};
                        ajout_gs_professeurs.push({
                            ID_participant: results3[i].ID_participant,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            participant_nom: results3[i].stn_part_nom.toUpperCase(),
                            participant_prenom: results3[i].stn_part_prenom,
                            participant_profilage: results3[i].stn_part_profilage,
                            adherent_mail: results3[i].adherent_mail,
                            adherent_telephone: "'" + results3[i].adherent_telephone,
                            role: results3[i].stn_role,
                            profil: results3[i].stn_profil
                        });
                        professeurs_trouve = "oui";
                    }
                
                }
                if (professeurs_trouve === "oui") { await GS_stagean_professeurs.addRows(ajout_gs_professeurs);}


                let ajout_gs_Inscription_cours = [];
                let cours_trouve = "";
                for (let i = 0; i < results3.length; i++) {
                    if (results3[i].stn_role !== "accompagnant" && results3[i].stn_role !== "observateur" && results3[i].stn_role !== "prof_invite") {
                        if (results3[i].stn_profil === "undefined") {results3[i].stn_profil = ""};
                        if (results3[i].instrument === "undefined") {results3[i].instrument = ""};
                        if (results3[i].instrument_ensemble === "undefined") {results3[i].instrument_ensemble = ""};
                        if (results3[i].instrument_collectif === "undefined") {results3[i].instrument_collectif = ""};
                        if (results3[i].cahier === "undefined") {results3[i].cahier = ""};
                        if (results3[i].piece === "undefined") {results3[i].piece = ""};
                        if (results3[i].prof_nom === "undefined") {results3[i].prof_nom = ""};
                        if (results3[i].prof_mail === "undefined") {results3[i].prof_mail = ""};
                        if (results3[i].concert_solo_piece === "undefined") {results3[i].concert_solo_piece = ""};
                        if (results3[i].concert_solo_cahier === "undefined") {results3[i].concert_solo_cahier = ""};
                        if (results3[i].cours_individuel === "undefined") {results3[i].cours_individuel = ""};
                        if (results3[i].cours_individuel === "non") {results3[i].cours_individuel = ""};
                        if (results3[i].decouverte_alto === "undefined") {results3[i].decouverte_alto = ""};
                        if (results3[i].decouverte_alto === "non") {results3[i].decouverte_alto = ""};
                        if (results3[i].option_choral === "undefined") {results3[i].option_choral = ""};
                        if (results3[i].option_rythmique === "undefined") {results3[i].option_rythmique = ""};
                        if (results3[i].option_eveil === "undefined") {results3[i].option_eveil = ""};
                        if (results3[i].option_collectif === "undefined") {results3[i].option_collectif = ""};
                        if (results3[i].option_ensemble === "undefined") {results3[i].option_ensemble = ""};
                        if (results3[i].option_particulier === "undefined") {results3[i].option_particulier = ""};
                        if (results3[i].prise_charge_famille === "undefined") {results3[i].prise_charge_famille = ""};
                        logger.info(`option ensemble pour participant ${i} : ${results3[i].option_ensemble}`);
                        
                        ajout_gs_Inscription_cours.push({
                            ID_participant: results3[i].ID_participant,
                            date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
                            identifiant: req.session.identifiant,
                            participant_nom: results3[i].stn_part_nom.toUpperCase(),
                            participant_prenom: results3[i].stn_part_prenom,
                            participant_age: results3[i].stn_part_age,
                            adherent_mail: results3[i].adherent_mail,
                            adherent_telephone: "'" + results3[i].adherent_telephone,
                            prise_charge_famille: results3[i].prise_charge_famille,
                            role: results3[i].stn_role,
                            profil: results3[i].stn_profil,
                            instrument: results3[i].instrument,
                            instrument_ensemble: results3[i].instrument_ensemble,
                            instrument_collectif: results3[i].instrument_collectif,
                            cahier: results3[i].cahier,
                            piece: results3[i].piece,
                            prof_nom: results3[i].prof_nom,
                            prof_mail: results3[i].prof_mail,
                            concert_solo_piece: results3[i].concert_solo_piece,
                            concert_solo_cahier: results3[i].concert_solo_cahier,
                            cours_individuel: results3[i].cours_individuel,
                            decouverte_alto: results3[i].decouverte_alto,
                            option_choral: results3[i].option_choral,
                            option_rythmique: results3[i].option_rythmique,
                            option_eveil: results3[i].option_eveil,
                            option_cours_collectif: results3[i].option_collectif,
                            option_musique_ensemble: results3[i].option_ensemble,
                            option_cours_particulier: results3[i].option_particulier
                        });
                        cours_trouve = "oui";
                    }
                }
                if (cours_trouve === "oui") { await GS_stagean_Inscription_cours.addRows(ajout_gs_Inscription_cours);}
                

                logger.info("AJOUT GOOGLESHEET FIN", { numsession: req.session.id, label: filename});
                


            } catch (error) {
                // Echec de connection à la GOOGLE SHEET
                logger.error("Il y a un problème avec la connection à Google sheet : " + error, { numsession: req.session.id, label: filename});
                req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
                res.redirect('/stagenational/identifier');
            }


            //////////////////////////////////////////////////////////////////////////////
            // ENVOIE CONFIRMATION PAR MAIL

            let mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - FACTURE STAGE ANNUEL 2026 - ";
            mail_objet += results2[0].adherent_nom;

            let mail_html = "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'>Cher adhérent,</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'>Félicitations ! Vous êtes désormais inscrit au stage national de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) qui se tiendra du 23 au 28 août 2026.<br><br>En validant l'inscription, vous êtes engagé à payer la totalité du stage avant le 30 juin 2026 selon les modes de paiement décrits ci-dessous.</p>";
            
            mail_html += "<br>";
            mail_html += '<p style="color:#E73058;font-size: 13pt; font-family: Arial; text-decoration: none;"><strong>FACTURE</strong></p>';
            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût total : </strong>";
            mail_html += results2[0].cout_total + "€";
            mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Montant de l'acompte versé :</strong> ";
            mail_html += results2[0].acompte_initial + "€";
            mail_html += "</p>";
            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #E73058; text-decoration: none;'><strong>RESTE À PAYER :</strong> ";
            mail_html += (Math.round((results2[0].cout_total - results2[0].acompte_initial) * 100) / 100) + "€";
            mail_html += "</p>";
            mail_html += `
            <ul>
                <li style='font-size: 11pt; font-family: Arial; color: #E73058; text-decoration: none;'>
                    <strong>Modes de paiement :</strong>
                    <ul style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>
                        <li style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>Virement bancaire : en 1 fois uniquement.
                            <ul style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>
                                <li  style='font-size: 11pt; font-family: Arial; color: #000;'>
                                    Références bancaires de l'AFPS : CRÉDIT AGRICOLE DE SAVOIE, IBAN : FR76 1810 6000 4496 7630 3576 718, BIC: AGRIFRPP881
                                </li>
                            </ul>
                        </li>
                        <li style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>Chèque : en 1 à 3 chèques à l’ordre de l’AFPS. A envoyer en 1 seule fois. (encaissement au plus tard: juin, juillet, août)
                            <ul style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>
                                <li  style='font-size: 11pt; font-family: Arial; color: #000;'>
                                    Adresse pour envoyer les chèques : Anne PAGES / AFPS, 30, rue des Tattes, 74 500 PUBLIER
                                </li>
                            </ul>
                        </li>
                        <li style='font-size: 11pt; font-family: Arial; color: #000; margin-top: 5px;'>Chèques vacances ANCV (papier) : à l’ordre de “Ternélia, les flocons verts”. Les ANCV dématérialisés ne sont pas acceptés. Veuillez indiquer le montant qui sera payé en ANCV. (Attention : pour que les chèques soient utilisables, il faut aussi joindre la partie détachable du chèque.)
                        </li>
                    </ul>
                </li>
            </ul>`;

            mail_html += `<br><p style='font-size: 11pt; font-family: Arial; text-decoration: none;'><strong>DÉTAILS :</strong>`;

            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Identifiant Suzuki : </strong>";
            mail_html += req.session.identifiant;
            mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Association Suzuki : </strong>";
            mail_html += results2[0].association_suzuki;
            mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Mode d'hébergement : </strong>";
            mail_html += res.locals.hebergement;
            mail_html += "</p><br>";
            for (let toto = 0; toto<(results3.length); toto++) {
                if (results3[toto].stn_part_nom) {
                    mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #07475A; text-decoration: underline;'><strong>PARTICIPANT ";
                    mail_html += toto + 1;
                    mail_html += "</strong></p>";
                    mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Nom : </strong>";
                    mail_html += results3[toto].stn_part_nom;
                    mail_html += " ";
                    mail_html += results3[toto].stn_part_prenom;
                    if (results3[toto].prise_charge_famille) {
                        mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#E73058'>Prise en charge par une autre famille : </strong>";
                        mail_html += results3[toto].prise_charge_famille;
                    }
                    mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Profile âge : </strong>";
                    mail_html += results3[toto].stn_part_profilage;
                    mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Catégorie : </strong>";

                    if (results3[toto].stn_role == 'accompagnant_activite_adulte') {
                        mail_html += "accompagnant adulte avec activité";
                    } else if (results3[toto].stn_role == 'accompagnant') {
                        mail_html += "accompagnant sans activité";
                    } else if (results3[toto].stn_role == 'accompagnant_activite_enfant') {
                        mail_html += "Accompagnant enfant avec activité";
                    } else if (results3[toto].stn_role == 'instrumentiste_camp') {
                        mail_html += "instrumentiste";
                    } else if (results3[toto].stn_role == 'prof_invite') {
                        mail_html += "professeur invité";
                    } else {
                        mail_html += results3[toto].stn_role;
                    }

                    if (results3[toto].stn_profil == 'professeur') {
                        mail_html += " - professeur";
                    }
                    if (results3[toto].stn_profil == 'non_professeur') {
                        mail_html += " - accompagnant";
                    }
                    if (results3[toto].stn_profil == 'Camp ado') {
                        mail_html += " - Camp ado";
                    }


                    mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Mode de transport : </strong>";
                    mail_html += res.locals["personne_"+toto+"_transport_mode"];

                    if (results3[toto].stn_arret == 'arret_7_quai_lassagne_lyon') {
                        mail_html += " - 7 quai Lassagne Lyon";
                    }
                    if (results3[toto].stn_arret == 'arret_partdieu_lyon') {
                        mail_html += " - Gare Part Dieu Lyon";
                    }

                    mail_html += "</p>";
                    if (results3[toto].instrument) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument : </strong>";
                        mail_html += results3[toto].instrument;
                        mail_html += " ";
                        mail_html += results3[toto].cahier;
                        mail_html += "</p>";
                    }
                    if (results3[toto].instrument_ensemble) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument option atelier musique d'ensemble: </strong>";
                        mail_html += results3[toto].instrument_ensemble;
                        mail_html += "</p>";
                    }
                    if (results3[toto].instrument_collectif) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument option atelier cours collectif: </strong>";
                        mail_html += results3[toto].instrument_collectif;
                        mail_html += "</p>";
                    }
                    if (results3[toto].cours_individuel === "cours individuel") {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Option cours particulier :</strong> oui</p>";
                    }
                    if (results3[toto].decouverte_alto === "decouvertealto") {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Option découverte alto : </strong>oui</p>";
                    }
                    if (results3[toto].concert_solo_cahier && (results3[toto].concert_solo_cahier.startsWith("Cahier") || results3[toto].concert_solo_cahier.startsWith("Hors"))) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Option concert solo :</strong> ";
                        mail_html += results3[toto].concert_solo_piece;
                        mail_html += " - ";
                        mail_html += results3[toto].concert_solo_cahier;
                        mail_html += "</p>";
                    }
                    if (results3[toto].option_choral === "chant choral") {
                        //mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option chant choral :</strong> ${results3[toto].chant_cout} </p>`;
                        if (results3[toto].chant_cout > 0) {
                            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût option chant choral : </strong>";
                            mail_html += results3[toto].chant_cout;
                            mail_html += "€</p>";
                        } else {
                            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût option chant choral : </strong> Offert</p>";
                        }
                    }
                    
                    if (results3[toto].option_rythmique === "rythmique Dalcroze") {
                        mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option rythmique Dalcroze :</strong> ${results3[toto].dalcroze_cout}</p>`;
                    }
                    if (results3[toto].option_eveil === "éveil musical") {
                        mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option éveil musical :</strong> ${results3[toto].eveil_cout}</p>`;
                    }
                    if (results3[toto].option_collectif === "Cours collectif Suzuki") {
                        mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option Cours collectif Suzuki :</strong> ${results3[toto].collectif_cout}</p>`;
                    }
                    if (results3[toto].option_ensemble === "Atelier musique d'ensemble") {
                        mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option Atelier musique d'ensemble :</strong> ${results3[toto].ensemble_cout}</p>`;
                    }
                    if (results3[toto].option_particulier === "Cours particulier") {
                        mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Cours particuliers :</strong> ${results3[toto].particulier_cout}</p>`;
                    }


                    if (results3[toto].cout_hebergement > 0 && res.locals.hebergement == "Centre les Flocons Verts - hébergement partagé") {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût hébergement :</strong> ";
                        mail_html += results3[toto].cout_hebergement;
                        mail_html += "€</p>";
                    }
                    if (results3[toto].cout_transport > 0) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût transport :</strong> ";
                        mail_html += results3[toto].cout_transport;
                        mail_html += "€</p>";
                    }
                    if (results3[toto].cours_cout > 0) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût cours : </strong>";
                        mail_html += results3[toto].cours_cout;
                        mail_html += "€</p>";
                    }
                    if (results3[toto].coursindividuel_cout > 0) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Option cours particulier : </strong>";
                        mail_html += results3[toto].coursindividuel_cout;
                        mail_html += "€</p>";
                    }
                    if (results3[toto].decouvrealto_cout > 0) {
                        mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût option découverte de l'alto : </strong>";
                        mail_html += results3[toto].decouvrealto_cout;
                        mail_html += "€</p>";
                    }
                    
                    if (results3[toto].observation_cout > 0) {
                        mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût observation :</strong> ";
                        mail_html += results3[toto].observation_cout;
                        mail_html += "€</p>";
                    }
                    mail_html += "<br>";
                }
            }

            mail_html += "<br>";
            
            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Le coût total comprend : </strong>les frais de dossier, les Frais bancaires de l'acompte, l’hébergement, le transport et les cours :</p>";
            if (res.locals.hebergement == "Centre les Flocons Verts - hébergement non partagé") {
                mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût hébergement avec supplément "non partagé" :</strong> ${results2[0].cout_hebergement}€</p>`;
            }
            if (results2[0].frais_dossier > 0) {
                mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Frais de dossier :</strong> ";
                mail_html += results2[0].frais_dossier + "€";
            }
            mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Frais bancaire de l'acompte :</strong> ";
            mail_html += results2[0].frais_bancaire + "€";
            
            if (results2[0].remise_famille_nombreuse > 0) {
                mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Remise famille nombreuse :</strong> ";
                mail_html += results2[0].remise_famille_nombreuse + "€";
            }

            mail_html += `<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût total :</strong> ${results2[0].cout_total}€</p>`;

            mail_html += "</p><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Montant de l'acompte versé :</strong> ";
            mail_html += results2[0].acompte_initial + "€";
            mail_html += "</p>";
            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #E73058; text-decoration: none;'><strong>RESTE À PAYER :</strong> ";
            mail_html += (Math.round((results2[0].cout_total - results2[0].acompte_initial) * 100) / 100) + "€";
            mail_html += "</p>";
            mail_html += "<br><p style='font-size: 11pt; font-family: Arial; text-decoration: none;'>En pièce jointe vous trouverez la brochure détaillée du stage.";
            
            if (results2[0].cout_option_surplace > 0) {
                mail_html += "<br><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût activité Dalcroze adulte à payer sur place :</strong> ";
                mail_html += results2[0].cout_option_surplace;
                mail_html += "€</p>";
            }
        
            mail_html += "<p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'><br>Nous vous remercions pour votre intérêt et vous souhaitons un très bon stage !</p><br><p style='font-size: 11pt; font-family: Arial; color: #454343; text-decoration: none;'>Association Française pour la Pédagogie Suzuki<br>Anne-Laure SAUVEGRAIN<br>Pôle organisation du stage<br>Siret association : 507 569 952 00033</p>";

            
            let OUTPUT = path.resolve(__dirname, "../../pdf/stage_national/documents/")+"/stage_national_tarifs_2026.pdf";
            let attachment_name = "stage_national_tarifs_2026.pdf"

            let mailOptions = {
            from: 'afps.inscription@gmail.com',
            to: req.session.adherent_mail,
            subject: mail_objet,
            html: mail_html,
            attachments: [{
                filename: attachment_name,
                path: OUTPUT
            }],
            };
            envoie_mail.envoie_mail(mailOptions);

            //////////////////////////////////////////////////////////////////////////////
            // un tag pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
            //////////////////////////////////////////////////////////////////////////////
            req.session.participant_ajoute = "oui";

            //////////////////////////////////////////////////////////////////////////////
            // AFFICHAGE PAGE PAIEMENT RÉUSSI
            //////////////////////////////////////////////////////////////////////////////
            res.render('stagenat/page_templates/paiement_reussi.ejs');


        } 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, label: filename});
            req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
            res.redirect('/stagenational/identifier');
        }
    }

}

/////////////////////////////////////////////////
// RETOUR PAIEMENT ECHOUE
// CLICK SUR BOUTON RECOMMENCER
const SN_accompte_annule = async function(req, res) {



    logger.info("======================================");
    logger.info("======== FUNCTION SN_acompte_echoue (STAGE) ==========");
    logger.info("======================================");
    
    //////////////////////////////////////////////////////////////////////////////
    // RETOUR STRIPE
    let id = req.query.id;
    console.log(`STRIP ID = ${id}`);
    
    const session_stripe = await stripe.checkout.sessions.retrieve(id);
    let customer_email = session_stripe.customer_email;
    let payment_status = session_stripe.payment_status;
    let amount_total = session_stripe.amount_total/100;
    let stripe_customer = session_stripe.customer;
    let stripe_payment_intent = session_stripe.payment_intent;
    let payment_method_types = session_stripe.payment_method_types;
    let stripe_status = session_stripe.status;
    let identifiant = session_stripe.metadata.identifiant;
    let CB_retour = "identifiant_adherent:"+identifiant+",payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session_stripe.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
    let stripe_retour = session_stripe.id;
    logger.info("payment_status : " + payment_status, { numsession: req.session.id });

    
    //////////////////////////////////////////////////////////////////////////////
    // MAJ annulé DB

    try {
        //Connexion
        let db_connection_promise = await connect_DB_promise();

        /// Vérifier que le paiement n'existe pas déjà
        /// pour ne pas faire le traitement 2 fois en cas de rafraichissement de la page
        let sql0 = 'select identifiant from ca_adherent where stripe_retour = "' + stripe_retour + '"';
        const [results0, fields0] = await db_connection_promise.execute(sql0);
        logger.info("Row ca_adherent stripe_retour : " + results0.length, { numsession: req.session.id, label: filename});

        if (results0.length < 1) {
            //Query MAJ stn_adherent
            let sql = 'UPDATE ';
            sql += 'stn_adherent';
            sql += ' SET ';
        
            sql += 'identifiant = concat(identifiant, ID_adherent), ';
            sql += 'stripe_retour = "' + CB_retour + '", ';
            sql += 'statut_paiement_acompte = "non paye", ';

            sql += 'statut_reservation = "annule", ';
            sql += 'statut_suppression = 1';
            sql += ' WHERE identifiant = "' + identifiant + '" AND statut_suppression = 0';

            logger.info("sql UPDATE stn_adherent : " + sql, { numsession: req.session.id, label: filename});

            const [results, fields] = await db_connection_promise.execute(sql);
            logger.info("Row stn_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename});

            //Query MAJ stn_participant
            let sql1 = 'UPDATE ';
            sql1 += 'stn_participant';
            sql1 += ' SET ';
            sql1 += 'identifiant = concat(identifiant, ID_participant), ';
            sql1 += 'statut_suppression = 1';
            sql1 += ' WHERE identifiant = "' + identifiant + '" AND statut_suppression = 0';

            logger.info("sql UPDATE stn_participant : " + sql1, { numsession: req.session.id, label: filename});

            const [results1, fields1] = await db_connection_promise.execute(sql1);
            logger.info("Row stn_participant UPDATE suppression: " + results1.changedRows, { numsession: req.session.id, label: filename});


            //////////////////////////////////////////////////////////////////////////////
            // AFFICHAGE DE LA PAGE ANNULÉ
            res.locals.identifiant = identifiant;
            res.render('stagenat/page_templates/paiement_annule');
        }
        
    } catch (error) {
        // Echec de connection à la BD
        logger.error("Il y a un problème système : " + error, { numsession: req.session.id });
        req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
        //await db_connection_promise.end();
        res.redirect('/stagenational/identifier');
    }

   

}



/////////////////////////////////////////////////
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
/////////////////////////////////////////////////

module.exports = {
    SN_accompte_reussi,
    SN_accompte_annule
}