fxGetVar($sqlTypeEvenement); if (intval($intTypeEvenement) != 0) { if (intval($intTypeEvenement) == 13) { $sqlAcheteurs = " SELECT a.*, " . intval($intEvenement) . " AS eve_id_membership FROM inscriptions_panier_acheteurs a WHERE a.sta_id = 3 AND a.eve_id <> " . intval($intEvenement) . " AND a.no_panier IN( SELECT no_panier FROM inscriptions_panier_produits_new p WHERE p.eve_id = " . intval($intEvenement) . " UNION SELECT no_panier FROM inscriptions_panier_epreuves_commandees ec WHERE ec.eve_id = " . intval($intEvenement) . " ) AND a.no_panier NOT IN( SELECT no_panier FROM rapport_finances_membership ) "; } else { $sqlAcheteurs = " SELECT * FROM inscriptions_panier_acheteurs a JOIN inscriptions_evenements e ON e.eve_id = a.eve_id WHERE a.sta_id = 3 AND a.eve_id = " . intval($intEvenement) . " AND a.no_panier IN( SELECT no_panier FROM inscriptions_panier_produits_new p WHERE p.eve_id = e.eve_id_membership UNION SELECT no_panier FROM inscriptions_panier_epreuves_commandees ec WHERE ec.eve_id = e.eve_id_membership ) "; } $tabAcheteurs = $objDatabase->fxGetResults($sqlAcheteurs); if ($tabAcheteurs != null) { foreach ($tabAcheteurs as $acheteur) { //$strOutput .= '
' . print_r($arrTotals, true) . ''; // insérer les totaux dans la table de jonction (NOTE: no_commande et no_panier onnt des INDEX UNIQUE donc, aucune chance de doublons) $sqlInsert = "INSERT INTO rapport_finances_membership SET no_commande = '" . $objDatabase->fxEscape($acheteur['no_commande']) . "', no_panier = '" . $objDatabase->fxEscape($acheteur['no_panier']) . "', eve_id = " . intval($acheteur['eve_id']) . ", eve_id_membership = " . intval($acheteur['eve_id_membership']) . ", ach_total = " . floatval($arrTotalsMembership['total']) . ", ach_taxe1 = " . floatval($arrTotalsMembership['taxes'][1]['montant']) . ", ach_taxe2 = " . floatval($arrTotalsMembership['taxes'][2]['montant']) . ", ach_taxe3 = " . floatval($arrTotalsMembership['taxes'][3]['montant']) . ", rabais_total = " . floatval($arrTotalsMembership['rabais_total']); $strOutput = $objDatabase->fxQuery($sqlInsert); // mettre à jour les totaux de la facture originale $arrTotalsOriginal = fxTotalPanier($acheteur['no_panier'], 'fr'); $sqlUpdate = "UPDATE inscriptions_panier_acheteurs SET ach_total = " . floatval(floatval($arrTotalsOriginal['total']) - floatval($arrTotalsMembership['total'])) . ", ach_taxe1 = " . floatval(floatval($arrTotalsOriginal['taxes'][1]['montant']) - floatval($arrTotalsMembership['taxes'][1]['montant'])) . ", ach_taxe2 = " . floatval(floatval($arrTotalsOriginal['taxes'][2]['montant']) - floatval($arrTotalsMembership['taxes'][2]['montant'])) . ", ach_taxe3 = " . floatval(floatval($arrTotalsOriginal['taxes'][3]['montant']) - floatval($arrTotalsMembership['taxes'][3]['montant'])) . ", rabais_total = " . floatval(floatval($arrTotalsOriginal['rabais_total']) - floatval($arrTotalsMembership['rabais_total'])) . " WHERE no_panier = '" . $objDatabase->fxEscape($acheteur['no_panier']) . "'"; //$strOutput .= $objDatabase->fxQuery($sqlUpdate); } } } return $strOutput; } function fxTotalPanierMembership($intEvenement, $intEvenementMembership, $strNoPanier) { global $objDatabase; $fltTotalTaxes = $fltTotalTaxesFrais = $fltMontantTaxable = $fltSousTotal = $fltSousTotal2 = $fltTotal = 0; // info événements $sqlEvenements = "SELECT * FROM inscriptions_panier_evenements WHERE eve_id = " . intval($intEvenement); $tabEvenements = $objDatabase->fxGetRow($sqlEvenements); // info épreuves $sqlEpreuves = "SELECT pec_id FROM inscriptions_panier_epreuves_commandees WHERE no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . " ORDER BY pec_id"; $tabEpreuves = $objDatabase->fxGetResults($sqlEpreuves); // Calculer le sous-total $sqlTotal = " SELECT (SELECT SUM(pec_prix) FROM inscriptions_panier_epreuves_commandees WHERE no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS prix_epreuves, (SELECT SUM(e.rab_montant) FROM inscriptions_panier_epreuves_commandees e, inscriptions_panier_rabais r WHERE r.pra_id = e.pra_id AND r.pra_depot = 0 AND e.no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS rabais_epreuves, (SELECT SUM(c.pec_prix - c.rab_montant) FROM inscriptions_panier_epreuves_commandees c, inscriptions_panier_epreuves e WHERE c.epr_id = e.epr_id AND e.epr_taxes_incluses = 0 AND c.no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS prix_epreuves_taxable, (SELECT SUM(pro_prix) FROM inscriptions_panier_produits_new WHERE no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS prix_produits, (SELECT SUM(p.rab_montant) FROM inscriptions_panier_produits_new p, inscriptions_panier_rabais r WHERE r.pra_id = p.pra_id AND r.pra_depot = 0 AND p.no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS rabais_produits, (SELECT SUM(pro_prix - rab_montant) FROM inscriptions_panier_produits_new WHERE pro_taxable = 1 AND no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND eve_id = " . intval($intEvenementMembership) . ") AS prix_produits_taxable, (SELECT SUM(r.rab_montant) FROM inscriptions_panier_rabais r, inscriptions_panier_rabais_acheteurs a WHERE r.pra_id = a.pra_id AND r.pra_depot = 0 AND a.no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND r.rab_pourcent = 0 AND r.rab_epreuves = '' AND r.rab_produits = '') AS rabais_panier_montant, (SELECT SUM(r.rab_pourcent) FROM inscriptions_panier_rabais r, inscriptions_panier_rabais_acheteurs a WHERE r.pra_id = a.pra_id AND r.pra_depot = 0 AND a.no_panier = '" . $objDatabase->fxEscape($strNoPanier) . "' AND r.rab_montant = 0 AND r.rab_epreuves = '' AND r.rab_produits = '') AS rabais_panier_pourcent FROM DUAL "; $tabTotal = $objDatabase->fxGetRow($sqlTotal); $fltRegistrationTotal = $tabTotal['prix_epreuves'] + $tabTotal['prix_produits']; // calculer les rabais $fltRabaisMontant = $tabTotal['rabais_panier_montant'] + $tabTotal['rabais_epreuves'] + $tabTotal['rabais_produits']; $intRabaisPourcent = $tabTotal['rabais_panier_pourcent']; if ($intRabaisPourcent > 100) $intRabaisPourcent = 100; // calculer le rabais % $fltRabaisPourcent = ($fltRegistrationTotal - $fltRabaisMontant) * ($intRabaisPourcent / 100); // calculer le total après rabais pourcent $fltRabaisTotal = $fltRabaisMontant + $fltRabaisPourcent; $fltRegistrationTotal -= ($fltRabaisTotal); if ($fltRegistrationTotal < 0) $fltRegistrationTotal = 0; $fltMontantTaxable = ($tabTotal['prix_epreuves_taxable'] + $tabTotal['prix_produits_taxable']) - ($fltRabaisPourcent + $tabTotal['rabais_panier_montant']); if ($fltMontantTaxable < 0) $fltMontantTaxable = 0; // calculer le sous total (registration + option) $fltSousTotal = $fltRegistrationTotal; // calculer les taxes $tabTaxes[1] = $tabTaxes[2] = $tabTaxes[3] = array('label_fr' => '', 'label_en' => '', 'montant' => 0, 'taux' => 0, 'numero' => ''); // récupérer les infos des taxes if ($tabEvenements['tt_id'] > 1) { $sqlTaux = "SELECT t.tau_nom_fr, t.tau_nom_en, t.tau_taux, t.tau_numero_client, t.tau_numero_ms1 FROM inscriptions_taux t, inscriptions_taux_types_taux ttt WHERE t.tau_id = ttt.tau_id AND ttt.tt_id = " . intval($tabEvenements['tt_id']) . " ORDER BY ttt.ttt_tri"; $tabTaux = $objDatabase->fxGetResults($sqlTaux); if ($tabTaux != null) { for ($intCtr = 1; $intCtr <= count($tabTaux); $intCtr++) { $fltMontantTaxes = round($fltMontantTaxable * ($tabTaux[$intCtr]['tau_taux'] / 100), 2); $tabTaxes[$intCtr] = array('label_fr' => $tabTaux[$intCtr]['tau_nom_fr'] . ' (' . $tabTaux[$intCtr]['tau_taux'] . '%)', 'label_en' => $tabTaux[$intCtr]['tau_nom_en'] . ' (' . $tabTaux[$intCtr]['tau_taux'] . '%)', 'montant' => $fltMontantTaxes, 'taux' => $tabTaux[$intCtr]['tau_taux'], 'numero' => $tabTaux[$intCtr]['tau_numero_client']); $fltTotalTaxes += $fltMontantTaxes; } } else { fxcreer_log("Il y a eu une erreur lors de la récupération des taxes:\n" . $sqlTaux); } } // calculer le total après taxes $fltSousTotal2 = $fltSousTotal + $fltTotalTaxes; // calculer le total avec frais d'administration $fltTotal = $fltSousTotal2; // affiche le sous-total, les taxes, rabais et le total complet $tabRetour['taxes'] = $tabTaxes; $tabRetour['total_taxes'] = $fltTotalTaxes; $tabRetour['total'] = abs($fltTotal); $tabRetour['stotal'] = $fltSousTotal; $tabRetour['stotal2'] = $fltSousTotal2; $tabRetour['rabais_total'] = $fltRabaisTotal; if ($tabEpreuves != null) $tabRetour['pec_id'] = implode(',', array_map(function($tab) { return $tab['pec_id']; }, $tabEpreuves)); else $tabRetour['pec_id'] = 0; $tabRetour['eve_id'] = $tabEvenements['eve_id']; $tabRetour['eve_id_membership'] = $intEvenementMembership; return $tabRetour; } function fxGetTermes($intEvenement, $strNoPanier, $blnMembership, $strLangue) { $strSuffixe = $strTermesText = $strTermesHTML = $strTermesModal = ''; $arrRetour = $arrTermesModalButtons = $arr_epreuves_id = array(); // faire un tableau avec tout les epr_id (sl) $epreuves = fxListPanier($strNoPanier); foreach ($epreuves[3] as $key => $value) { $arr_epreuves_id[$key]= $value['epr_id'] ; } $tabEvenement = fxGetEvenements(fxGetEvenementsUrl($intEvenement), $strLangue); if ($blnMembership) { $strSuffixe = '_mem'; $tabEvenement = fxGetEvenements(fxGetEvenementsUrl($tabEvenement['general']['eve_id_membership']), $strLangue); } if ($tabEvenement['general']['eve_waiver_' . $strLangue] != '') { $strTermesText .= '
' . afficheTexte('terme_waiver', 0, 1, 1) . ' :
'; $strTermesText .= $tabEvenement['general']['eve_waiver_' . $strLangue] . '' . afficheTexte('terme_politique_achat', 0, 1, 1) . ' :
'; $strTermesText .= $tabEvenement['general']['eve_policy_' . $strLangue] . '' . afficheTexte('terme_location_politique_achat', 0, 1, 1) . ' :
'; $strTermesText .= $tabEvenement['general']['eve_policy2_' . $strLangue] . '' . $tabEvenement['general'][$mem_waive.'_titre_' . $strLangue] . ' :
'; $strTermesText .= $tabEvenement['general'][$mem_waive . '_' . $strLangue] . '