/** * Cette classe est un singleton * @return ActionsAdminModules une instance de ActionsAdminModules */ public static function instance() { if (self::$instance === false) { self::$instance = new ActionsDevises(); } return self::$instance; }
if (strstr($_SERVER['REQUEST_URI'], "index.php") && $_SERVER['REQUEST_METHOD'] == "GET") { $redir_url = urlfond(); if (!empty($_SERVER['QUERY_STRING'])) { $redir_url .= "?" . $_SERVER['QUERY_STRING']; } header("HTTP/1.1 301 Moved Permanently"); redirige($redir_url); } // URL précédente if (isset($_SERVER['HTTP_REFERER'])) { $_SESSION["navig"]->urlprec = $_SERVER['HTTP_REFERER']; } // Langue ActionsLang::instance()->set_id_langue_courante($lang); // Devise ActionsDevises::instance()->set_id_devise_courante($devise); // fonctions à éxecuter avant le moteur ActionsModules::instance()->appel_module("demarrage"); // Actions switch ($action) { case 'ajouter': ajouter($ref, $quantite, $append, $nouveau, $parent); break; case 'supprimer': supprimer($article); break; case 'modifier': modifier($article, $quantite); break; case 'connexion': connexion($email, $motdepasse, $urlok, $urlerr);
function boucleDevise($texte, $args) { // récupération des arguments $produit = lireTag($args, "produit", "int"); $id = lireTag($args, "id", "int_list"); $somme = lireTag($args, "somme", "float"); $exclusion = lireTag($args, "exclusion", "int_list"); $search = ""; $limit = ""; $res = ""; if ($somme == "") { $somme = 0; } $prod = new Produit(); if (!empty($produit)) { $prod->charger_id($produit); } if ($id != "") { $search .= " and id in({$id})"; } if ($exclusion != "") { $search .= " and id not in({$exclusion})"; } $url = preg_replace('/[\\&\\?]*devise=[0-9]+/', '', url_page_courante()); $url .= strstr($url, '?') == false ? '?' : '&'; $devise = new Devise(); $query = "select * from {$devise->table} where 1 {$search} {$limit}"; $resul = CacheBase::getCache()->query($query); //FIX : test d'existence de la session if (!isset($_SESSION["navig"])) { $_SESSION["navig"] = new Navigation(); } if (!empty($resul)) { foreach ($resul as $row) { $devise->charger($row->id); $prix = $prix2 = $convert = 0; if (!empty($prod->id)) { $prix = $prod->prix * $devise->taux; $prix2 = $prod->prix2 * $devise->taux; } if (!empty($somme)) { $convert = $somme * $devise->taux; } $total = $_SESSION['navig']->panier->total(1) * $devise->taux; $temp = str_replace("#ID", $devise->id, $texte); $temp = str_replace("#PRIX2", formatter_somme($prix2), $temp); $temp = str_replace("#PRIX", formatter_somme($prix), $temp); $temp = str_replace("#TOTAL", formatter_somme($total), $temp); $temp = str_replace("#CONVERT", formatter_somme($convert), $temp); $temp = str_replace("#NOM", $devise->nom, $temp); $temp = str_replace("#CODE", $devise->code, $temp); $temp = str_replace("#TAUX", $devise->taux, $temp); $temp = str_replace("#HTMLSYMBOLE", htmlentities($devise->symbole, ENT_COMPAT, 'UTF-8', false), $temp); $temp = str_replace("#SYMBOLE", $devise->symbole, $temp); $temp = str_replace("#DEFAUT", $devise->defaut, $temp); $temp = str_replace("#COURANTE", $devise->id == ActionsDevises::instance()->get_id_devise_courante() ? "1" : "0", $temp); $temp = str_replace('#URL', $url . 'devise=' . $devise->id, $temp); $res .= $temp; } } return $res; }
function substitutions($texte) { global $fond, $action; $texte = str_replace("#FOND", $fond, $texte); $texte = str_replace("#ACTION", $action, $texte); $texte = str_replace("#URLPREC", $_SESSION['navig']->urlprec, $texte); $texte = str_replace("#URLPAGERET", $_SESSION['navig']->urlpageret, $texte); $texte = str_replace("#URLPANIER", urlfond("panier"), $texte); $texte = str_replace("#URLCOMMANDER", urlfond("commande"), $texte); $texte = str_replace("#URLNOUVEAU", urlfond("nouveau"), $texte); // Supprimer l'éventuel paramètre de déconnexion, en, préservant les éventuels autres. $selfurl = supprimer_deconnexion(url_page_courante()); $parametres = parse_url($selfurl, PHP_URL_QUERY); $texte = str_replace("#URLCOURANTEPARAM", $parametres, $texte); $texte = str_replace("#URLCOURANTE", escape_ampersand($selfurl), $texte); $texte = str_replace("#URLDECONNEXION", escape_ampersand($selfurl . ($parametres != '' ? "&" : "?") . "action=deconnexion"), $texte); $texte = str_replace("#URLRECHERCHE", urlfond("recherche"), $texte); $texte = str_replace("#URLADRESSE", urlfond("adresse"), $texte); $texte = str_replace("#URLPAIEMENT", urlfond("commande"), $texte); $texte = str_replace("#URLSOMMAIRE", urlfond(), $texte); $texte = str_replace("#URLCOMPTEMODIFIER", urlfond("compte_modifier"), $texte); $texte = str_replace("#URLCOMPTE", urlfond("moncompte"), $texte); // Substitutions "langue" $texte = ActionsLang::instance()->substitutions(ActionsLang::instance()->get_langue_courante(), $texte); // Substitutions "devises" $texte = ActionsDevises::instance()->substitutions(ActionsDevises::instance()->get_devise_courante(), $texte); if (strstr($texte, "#VARIABLE")) { $texte = substitvariable($texte); } if (strstr($texte, "#MESSAGE_")) { $texte = substitmessage($texte); } if (strstr($texte, "#RUBRIQUE_")) { $texte = substitrubriques($texte); } if (strstr($texte, "#PRODUIT_")) { $texte = substitproduits($texte); } if (strstr($texte, "#PANIER_")) { $texte = substitpanier($texte); } if (strstr($texte, "#CLIENT_")) { $texte = substitclient($texte); } if (strstr($texte, "#PAGE_")) { $texte = substitpage($texte); } if (strstr($texte, "#ADRESSE_")) { $texte = substitadresse($texte); } if (strstr($texte, "#COMMANDE_")) { $texte = substitcommande($texte); } if (strstr($texte, "#IMAGE_")) { $texte = substitimage($texte); } if (strstr($texte, "#CARACTERISTIQUE_")) { $texte = substitcaracteristique($texte); } if (strstr($texte, "#DECLINAISON_")) { $texte = substitdeclinaison($texte); } if (strstr($texte, "#DOSSIER_")) { $texte = substitdossier($texte); } if (strstr($texte, "#CONTENU_")) { $texte = substitcontenu($texte); } if (strstr($texte, "#PARRAIN_")) { $texte = substitparrain($texte); } if (strstr($texte, "#PROMO_")) { $texte = substitpromo($texte); } // Traduction du template $texte = substitlang($texte); if (isset($_GET['errconnex']) && $_GET['errconnex'] == "1") { $texte = preg_replace("/\\#ERRCONNEX\\[([^]]*)\\]/", "\\1", $texte); } else { $texte = preg_replace("/\\#ERRCONNEX\\[([^]]*)\\]/", "", $texte); } // URL d'un fond, forme: #URLFOND(nom-du-fond) if (preg_match_all("`\\#URLFOND\\(([^\\),]+)(:?,([^\\),]+))*\\)`", $texte, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $url = urlfond($match[1], isset($match[2]) ? $match[3] : false, true); $texte = str_replace($match[0], $url, $texte); } } // Ajout d'un paramètre à une URL, forme: #AJOUT_PARAMETRE(url,liste-de-paramètres) if (preg_match_all("`\\#AJOUTER_PARAMETRE\\(([^\\),]+)(:?,([^\\),]+))*\\)`", $texte, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $url = $match[1]; if (isset($match[2])) { if (strstr($url, '?') !== false) { $url .= "&" . $match[3]; } else { $url .= "?" . $match[3]; } } $texte = str_replace($match[0], $url, $texte); } } $texte = str_replace("index.php", "", $texte); return $texte; }
<?php require_once "auth.php"; $rsspass = new Variable("rsspass"); $version = new Variable("version"); $devise = ActionsDevises::instance()->get_devise_courante(); ?> <!DOCTYPE html> <html lang="fr"> <head> <?php require_once "title.php"; ?> </head> <?php require_once "../lib/magpierss/extlib/Snoopy.class.inc"; ?> <body> <?php ActionsAdminModules::instance()->inclure_module_admin("accueil_top"); $menu = "accueil"; $breadcrumbs = Breadcrumb::getInstance()->getHomeList(); require_once "entete.php"; ?> <div class="row-fluid"> <div class="span12"> <h3>DASHBOARD</h3>
public function createOrder($facturation_raison, $facturation_entreprise, $facturation_nom, $facturation_prenom, $facturation_adresse1, $facturation_adresse2, $facturation_adresse3, $facturation_cpostal, $facturation_ville, $facturation_tel, $facturation_pays, $livraison_raison, $livraison_entreprise, $livraison_nom, $livraison_prenom, $livraison_adresse1, $livraison_adresse2, $livraison_adresse3, $livraison_cpostal, $livraison_ville, $livraison_tel, $livraison_pays, $type_paiement, $type_transport, $fraisport, $remise, $client_selected, $ref_client, $email, \Panier $panier, $applyClientDiscount, $callMail, $callPayment) { $client = new Client(); if ($client_selected == 1) { $clientOK = $client->charger_ref($ref_client); } else { if ($email != '' && $client->charger_mail($email)) { $existeDeja = 1; } elseif ($email != '' && !filter_var($email, FILTER_VALIDATE_EMAIL)) { $badFormat = 1; } else { $client->email = $email; $client->raison = $facturation_raison; $client->entreprise = $facturation_entreprise; $client->prenom = $facturation_prenom; $client->nom = $facturation_nom; $client->adresse1 = $facturation_adresse1; $client->adresse2 = $facturation_adresse2; $client->adresse3 = $facturation_adresse3; $client->cpostal = $facturation_cpostal; $client->ville = $facturation_ville; $client->tel = $facturation_tel; $client->pays = $facturation_pays; $pass = genpass(8); $client->motdepasse = $pass; } } $facturationAddress = new Venteadr(); $facturationAddress->raison = $facturation_raison; $facturationAddress->entreprise = $facturation_entreprise; $facturationAddress->prenom = $facturation_prenom; $facturationAddress->nom = $facturation_nom; $facturationAddress->adresse1 = $facturation_adresse1; $facturationAddress->adresse2 = $facturation_adresse2; $facturationAddress->adresse3 = $facturation_adresse3; $facturationAddress->cpostal = $facturation_cpostal; $facturationAddress->ville = $facturation_ville; $facturationAddress->tel = $facturation_tel; $facturationAddress->pays = $facturation_pays; $livraisonAddress = new Venteadr(); $livraisonAddress->raison = $livraison_raison; $livraisonAddress->entreprise = $livraison_entreprise; $livraisonAddress->prenom = $livraison_prenom; $livraisonAddress->nom = $livraison_nom; $livraisonAddress->adresse1 = $livraison_adresse1; $livraisonAddress->adresse2 = $livraison_adresse2; $livraisonAddress->adresse3 = $livraison_adresse3; $livraisonAddress->cpostal = $livraison_cpostal; $livraisonAddress->ville = $livraison_ville; $livraisonAddress->tel = $livraison_tel; $livraisonAddress->pays = $livraison_pays; $order = new Commande(); $order->date = date("Y-m-d H:i:s"); $order->livraison = "L" . date("ymdHis") . strtoupper(ereg_caracspec(substr($client->prenom, 0, 3))); $order->transport = $type_transport; $order->paiement = $type_paiement; $order->statut = Commande::NONPAYE; $order->transaction = genid($order->id, 6); $module_paiement = new Modules(); $module_paiement->charger_id($type_paiement); if ($facturationAddress->raison != "" && $facturationAddress->prenom != "" && $facturationAddress->nom != "" && $facturationAddress->adresse1 != "" && $facturationAddress->cpostal != "" && $facturationAddress->ville != "" && $facturationAddress->pays != "" && $livraisonAddress->raison != "" && $livraisonAddress->prenom != "" && $livraisonAddress->nom != "" && $livraisonAddress->adresse1 != "" && $livraisonAddress->cpostal != "" && $livraisonAddress->ville != "" && $livraisonAddress->pays != "" && $order->transport != "" && is_numeric($fraisport) && $fraisport >= 0 && is_numeric($remise) && $remise >= 0 && $module_paiement->actif && $order->paiement != "" && $panier->nbart > 0 && ($clientOK || $client_selected != 1 && !$existeDeja && !$badFormat) && $email != '') { $facturationAddress->id = $facturationAddress->add(); $livraisonAddress->id = $livraisonAddress->add(); if (!$client->id) { $client->crypter(); $client->id = $client->add(); $client->ref = date("ymdHi") . genid($client->id, 6); $client->maj(); ClientAdmin::getInstance()->sendMailCreation($client, $pass); } $devise = ActionsDevises::instance()->get_devise_courante(); $order->adrfact = $facturationAddress->id; $order->adrlivr = $livraisonAddress->id; $order->client = $client->id; $order->devise = $devise->id; $order->taux = $devise->taux; $order->lang = ActionsLang::instance()->get_id_langue_courante(); $order->id = $order->add(); $order->ref = "C" . date("ymdHi") . genid($order->id, 6); $order->maj(); $total = 0; foreach ($panier->tabarticle as $pos => $article) { $venteprod = new Venteprod(); $dectexte = "\n"; $stock = new Stock(); foreach ($article->perso as $perso) { $declinaison = new Declinaison(); $declinaisondesc = new Declinaisondesc(); if (is_numeric($perso->valeur) && ActionsModules::instance()->instancier($module_paiement->nom)->defalqcmd) { // diminution des stocks de déclinaison si on est sur un module de paiement qui défalque de suite $stock->charger($perso->valeur, $article->produit->id); $stock->valeur -= $article->quantite; $stock->maj(); } $declinaison->charger($perso->declinaison); $declinaisondesc->charger($declinaison->id); // recup valeur declidisp ou string if ($declinaison->isDeclidisp($perso->declinaison)) { $declidisp = new Declidisp(); $declidispdesc = new Declidispdesc(); $declidisp->charger($perso->valeur); $declidispdesc->charger_declidisp($declidisp->id); $dectexte .= "- " . $declinaisondesc->titre . " : " . $declidispdesc->titre . "\n"; } else { $dectexte .= "- " . $declinaisondesc->titre . " : " . $perso->valeur . "\n"; } } // diminution des stocks classiques si on est sur un module de paiement qui défalque de suite $produit = new Produit($article->produit->ref); if (ActionsModules::instance()->instancier($module_paiement->nom)->defalqcmd) { $produit->stock -= $article->quantite; $produit->maj(); } $venteprod->quantite = $article->quantite; $venteprod->prixu = $article->produit->prix; $venteprod->ref = $article->produit->ref; $venteprod->titre = $article->produitdesc->titre . " " . $dectexte; $venteprod->chapo = $article->produitdesc->chapo; $venteprod->description = $article->produitdesc->description; $venteprod->tva = $article->produit->tva; $venteprod->commande = $order->id; $venteprod->id = $venteprod->add(); $correspondanceParent[] = $venteprod->id; // ajout dans ventedeclisp des declidisp associées au venteprod foreach ($article->perso as $perso) { $declinaison = new Declinaison(); $declinaison->charger($perso->declinaison); // si declidisp (pas un champs libre) if ($declinaison->isDeclidisp($perso->declinaison)) { $vdec = new Ventedeclidisp(); $vdec->venteprod = $venteprod->id; $vdec->declidisp = $perso->valeur; $vdec->add(); } } ActionsModules::instance()->appel_module("apresVenteprodAdmin", $venteprod, $pos); $total += $venteprod->prixu * $venteprod->quantite; } foreach ($correspondanceParent as $id_panier => $id_venteprod) { if ($panier->tabarticle[$id_panier]->parent >= 0) { $venteprod->charger($id_venteprod); $venteprod->parent = $correspondanceParent[$panier->tabarticle[$id_panier]->parent]; $venteprod->maj(); } } if ($client->pourcentage > 0 && $applyClientDiscount) { $order->remise = $total * $client->pourcentage / 100; } $order->remise += $remise; if ($order->remise > $total) { $order->remise = $total; } $order->port = $fraisport; $order->maj(); ActionsModules::instance()->appel_module("aprescommandeadmin", $order); if ($callMail) { ActionsModules::instance()->instancier($module_paiement->nom)->mail($order); } if ($callPayment) { ActionsModules::instance()->instancier($module_paiement->nom)->paiement($order); } else { self::getInstance($order->id)->redirect(); } } else { if ($existeDeja) { throw new TheliaAdminException("error creating order", TheliaAdminException::EMAIL_ALREADY_EXISTS); } if ($badFormat) { throw new TheliaAdminException("error creating order", TheliaAdminException::EMAIL_FORMAT_ERROR); } else { throw new TheliaAdminException("error creating order", TheliaAdminException::ORDER_ADD_ERROR); } } }
public function substitmail($corps, $commande) { ActionsModules::instance()->appel_module("preSubstitmail", $corps, $commande); $nomsite = Variable::lire("nomsite"); $jour = substr($commande->date, 8, 2); $mois = substr($commande->date, 5, 2); $annee = substr($commande->date, 0, 4); $heure = substr($commande->date, 11, 2); $minute = substr($commande->date, 14, 2); $seconde = substr($commande->date, 17, 2); $client = new Client($commande->client); $paiement = new Modules($commande->paiement); $paiementdesc = new Modulesdesc($paiement->nom, $commande->lang); $transport = new Modules($commande->transport); $transportdesc = new Modulesdesc($transport->nom, $commande->lang); $total = $commande->total(); $totcmdport = $commande->port + $total; $adresse = new Venteadr($commande->adrlivr); $raisondesc = new Raisondesc(); $raisondesc->charger($adresse->raison, $commande->lang); $nom = $adresse->nom; $prenom = $adresse->prenom; $entreprise = $adresse->entreprise; $adresse1 = $adresse->adresse1; $adresse2 = $adresse->adresse2; $adresse3 = $adresse->adresse3; $cpostal = $adresse->cpostal; $ville = $adresse->ville; $pays = new Paysdesc($adresse->pays, $commande->lang); $corps = str_replace("__COMMANDE_REF__", $commande->ref, $corps); $corps = str_replace("__COMMANDE_DATE__", $jour . "/" . $mois . "/" . $annee, $corps); $corps = str_replace("__COMMANDE_HEURE__", $heure . ":" . $minute, $corps); $corps = str_replace("__COMMANDE_TRANSACTION__", $commande->transaction, $corps); $corps = str_replace("__COMMANDE_PAIEMENT__", $paiementdesc->titre, $corps); $corps = str_replace("__COMMANDE_TOTALPORT__", $totcmdport - $commande->remise, $corps); $corps = str_replace("__COMMANDE_TOTAL__", $total, $corps); $corps = str_replace("__COMMANDE_PORT__", $commande->port, $corps); $corps = str_replace("__COMMANDE_REMISE__", $commande->remise, $corps); $corps = str_replace("__COMMANDE_TRANSPORT__", $transportdesc->titre, $corps); $corps = str_replace("__COMMANDE_TRANSPORTCHAPO__", $transportdesc->chapo, $corps); $corps = str_replace("__COMMANDE_LIVRRAISON__", $raisondesc->court, $corps); $corps = str_replace("__COMMANDE_LIVRNOM__", $nom, $corps); $corps = str_replace("__COMMANDE_LIVRPRENOM__", $prenom, $corps); $corps = str_replace("__COMMANDE_LIVRENTREPRISE__", $entreprise, $corps); $corps = str_replace("__COMMANDE_LIVRADRESSE1__", $adresse1, $corps); $corps = str_replace("__COMMANDE_LIVRADRESSE2__", $adresse2, $corps); $corps = str_replace("__COMMANDE_LIVRADRESSE3__", $adresse3, $corps); $corps = str_replace("__COMMANDE_LIVRCPOSTAL__", $cpostal, $corps); $corps = str_replace("__COMMANDE_LIVRVILLE__", $ville, $corps); $corps = str_replace("__COMMANDE_LIVRPAYS__", $pays->titre, $corps); $corps = str_replace("__COMMANDE_LIVRTEL__", $adresse->tel, $corps); $corps = str_replace("__NOMSITE__", $nomsite, $corps); $corps = str_replace("__URLSITE__", urlfond(), $corps); $adresse = new Venteadr($commande->adrfact); $raisondesc = new Raisondesc(); $raisondesc->charger($adresse->raison); $pays = new Paysdesc(); $pays->charger($adresse->pays); $corps = str_replace("__CLIENT_REF__", $client->ref, $corps); $corps = str_replace("__CLIENT_RAISON__", $raisondesc->court, $corps); $corps = str_replace("__CLIENT_ENTREPRISE__", $client->entreprise, $corps); $corps = str_replace("__CLIENT_SIRET__", $client->siret, $corps); $corps = str_replace("__CLIENT_FACTNOM__", $adresse->nom, $corps); $corps = str_replace("__CLIENT_FACTPRENOM__", $adresse->prenom, $corps); $corps = str_replace("__CLIENT_ADRESSE1__", $adresse->adresse1, $corps); $corps = str_replace("__CLIENT_ADRESSE2__", $adresse->adresse2, $corps); $corps = str_replace("__CLIENT_ADRESSE3__", $adresse->adresse3, $corps); $corps = str_replace("__CLIENT_CPOSTAL__", $adresse->cpostal, $corps); $corps = str_replace("__CLIENT_VILLE__", $adresse->ville, $corps); $corps = str_replace("__CLIENT_PAYS__", $pays->titre, $corps); $corps = str_replace("__CLIENT_EMAIL__", $client->email, $corps); $corps = str_replace("__CLIENT_TELFIXE__", $client->telfixe, $corps); $corps = str_replace("__CLIENT_TELPORT__", $client->telport, $corps); $pattern = '{<VENTEPROD>((?:(?:(?!<VENTEPROD[^>]*>|</VENTEPROD>).)++|<VENTEPROD[^>]*>(?1)</VENTEPROD>)*)</VENTEPROD>}si'; if (preg_match($pattern, $corps, $cut)) { $corps = str_replace("<VENTEPROD>", "", $corps); $corps = str_replace("</VENTEPROD>", "", $corps); $res = ""; $venteprod = new Venteprod(); $query = "select * from {$venteprod->table} where commande=\"" . $commande->id . "\""; $resul = $venteprod->query($query); while ($resul && ($row = $venteprod->fetch_object($resul))) { $temp = str_replace("__VENTEPROD_TITRE__", $row->titre, $cut[1]); $temp = str_replace("__VENTEPROD_REF__", $row->ref, $temp); $temp = str_replace("__VENTEPROD_CHAPO__", $row->chapo, $temp); $temp = str_replace("__VENTEPROD_QUANTITE__", $row->quantite, $temp); $temp = str_replace("__VENTEPROD_PRIXU__", $row->prixu, $temp); $temp = str_replace("__VENTEPROD_TOTAL__", $row->prixu * $row->quantite, $temp); ActionsModules::instance()->appel_module("substitutionsventeprodmailcommande", $temp, $row); $res .= $temp; } $corps = str_replace($cut[1], $res, $corps); } // Substitutions mail "devise" $devise = new Devise($commande->devise); ActionsDevises::instance()->subsititutions_mail($devise, $corps); ActionsModules::instance()->appel_module("substitutionsmailcommande", $corps, $commande); return $corps; }
function paiement($type_paiement) { if (!$_SESSION['navig']->client->id || $_SESSION['navig']->panier->nbart < 1) { redirige(urlfond()); } $total = 0; $nbart = 0; $poids = 0; $unitetr = 0; ActionsModules::instance()->appel_module("avantcommande"); $modules = new Modules(); $modules->charger_id($type_paiement); if (!$modules->actif) { return 0; } try { $modpaiement = ActionsModules::instance()->instancier($modules->nom); $commande = new Commande(); $commande->transport = $_SESSION['navig']->commande->transport; $commande->client = $_SESSION['navig']->client->id; $commande->remise = 0; $devise = ActionsDevises::instance()->get_devise_courante(); $commande->devise = $devise->id; $commande->taux = $devise->taux; $client = new Client(); $client->charger_id($_SESSION['navig']->client->id); $adr = new Venteadr(); $adr->raison = $client->raison; $adr->entreprise = $client->entreprise; $adr->nom = $client->nom; $adr->prenom = $client->prenom; $adr->adresse1 = $client->adresse1; $adr->adresse2 = $client->adresse2; $adr->adresse3 = $client->adresse3; $adr->cpostal = $client->cpostal; $adr->ville = $client->ville; $adr->tel = $client->telfixe . " " . $client->telport; $adr->pays = $client->pays; $adrcli = $adr->add(); $commande->adrfact = $adrcli; $adr = new Venteadr(); $livraison = new Adresse(); if ($livraison->charger($_SESSION['navig']->adresse)) { $adr->raison = $livraison->raison; $adr->entreprise = $livraison->entreprise; $adr->nom = $livraison->nom; $adr->prenom = $livraison->prenom; $adr->adresse1 = $livraison->adresse1; $adr->adresse2 = $livraison->adresse2; $adr->adresse3 = $livraison->adresse3; $adr->cpostal = $livraison->cpostal; $adr->ville = $livraison->ville; $adr->tel = $livraison->tel; $adr->pays = $livraison->pays; } else { $adr->raison = $client->raison; $adr->entreprise = $client->entreprise; $adr->nom = $client->nom; $adr->prenom = $client->prenom; $adr->adresse1 = $client->adresse1; $adr->adresse2 = $client->adresse2; $adr->adresse3 = $client->adresse3; $adr->cpostal = $client->cpostal; $adr->ville = $client->ville; $adr->tel = $client->telfixe . " " . $client->telport; $adr->pays = $client->pays; } $adrlivr = $adr->add(); $commande->adrlivr = $adrlivr; $commande->facture = 0; $commande->statut = Commande::NONPAYE; $commande->paiement = $type_paiement; $commande->lang = ActionsLang::instance()->get_id_langue_courante(); $commande->id = $commande->add(); $pays = new Pays(); $pays->charger($adr->pays); $correspondanceParent = array(null); foreach ($_SESSION['navig']->panier->tabarticle as $pos => &$article) { $venteprod = new Venteprod(); $dectexte = "\n"; $produit = new Produit(); $stock = new Stock(); foreach ($article->perso as $perso) { $declinaison = new Declinaison(); $declinaisondesc = new Declinaisondesc(); if (is_numeric($perso->valeur) && $modpaiement->defalqcmd) { // diminution des stocks de déclinaison si on est sur un module de paiement qui défalque de suite $stock->charger($perso->valeur, $article->produit->id); $stock->valeur -= $article->quantite; $stock->maj(); } $declinaison->charger($perso->declinaison); $declinaisondesc->charger($declinaison->id); // recup valeur declidisp ou string if ($declinaison->isDeclidisp($perso->declinaison)) { $declidisp = new Declidisp(); $declidispdesc = new Declidispdesc(); $declidisp->charger($perso->valeur); $declidispdesc->charger_declidisp($declidisp->id); $dectexte .= "- " . $declinaisondesc->titre . " : " . $declidispdesc->titre . "\n"; } else { $dectexte .= "- " . $declinaisondesc->titre . " : " . $perso->valeur . "\n"; } } // diminution des stocks classiques si on est sur un module de paiement qui défalque de suite $produit = new Produit($article->produit->ref); if ($modpaiement->defalqcmd) { $produit->stock -= $article->quantite; $produit->maj(); } /* Gestion TVA */ $prix = $article->produit->prix; $prix2 = $article->produit->prix2; $tva = $article->produit->tva; if ($pays->tva != "" && (!$pays->tva || $pays->tva && $_SESSION['navig']->client->intracom != "" && !$pays->boutique)) { $prix = round($prix / (1 + $tva / 100), 2); $prix2 = round($prix2 / (1 + $tva / 100), 2); $tva = 0; } $venteprod->quantite = $article->quantite; if (!$article->produit->promo) { $venteprod->prixu = $prix; } else { $venteprod->prixu = $prix2; } $venteprod->ref = $article->produit->ref; $venteprod->titre = $article->produitdesc->titre . " " . $dectexte; $venteprod->chapo = $article->produitdesc->chapo; $venteprod->description = $article->produitdesc->description; $venteprod->tva = $tva; $venteprod->commande = $commande->id; $venteprod->id = $venteprod->add(); $correspondanceParent[] = $venteprod->id; // ajout dans ventedeclisp des declidisp associées au venteprod foreach ($article->perso as $perso) { $declinaison = new Declinaison(); $declinaison->charger($perso->declinaison); // si declidisp (pas un champs libre) if ($declinaison->isDeclidisp($perso->declinaison)) { $vdec = new Ventedeclidisp(); $vdec->venteprod = $venteprod->id; $vdec->declidisp = $perso->valeur; $vdec->add(); } } ActionsModules::instance()->appel_module("apresVenteprod", $venteprod, $pos); $total += $venteprod->prixu * $venteprod->quantite; $nbart++; $poids += $article->produit->poids; } foreach ($correspondanceParent as $id_panier => $id_venteprod) { if ($_SESSION['navig']->panier->tabarticle[$id_panier]->parent >= 0) { $venteprod->charger($id_venteprod); $venteprod->parent = $correspondanceParent[$_SESSION['navig']->panier->tabarticle[$id_panier]->parent]; $venteprod->maj(); } } $pays = new Pays($_SESSION['navig']->client->pays); if ($_SESSION['navig']->client->pourcentage > 0) { $commande->remise = $total * $_SESSION['navig']->client->pourcentage / 100; } $total -= $commande->remise; if ($_SESSION['navig']->promo->id != "") { $commande->remise += calc_remise($total); $_SESSION['navig']->promo->utilise = 1; if (!empty($commande->remise)) { $commande->remise = round($commande->remise, 2); } $commande->maj(); $temppromo = new Promo(); $temppromo->charger_id($_SESSION['navig']->promo->id); $temppromo->utilise++; $temppromo->maj(); $promoutil = new Promoutil(); $promoutil->commande = $commande->id; $promoutil->promo = $temppromo->id; $promoutil->code = $temppromo->code; $promoutil->type = $temppromo->type; $promoutil->valeur = $temppromo->valeur; $promoutil->add(); } if ($commande->remise > $total) { $commande->remise = $total; } $commande->port = port(); if (intval($commande->port) <= 0) { $commande->port = 0; } $_SESSION['navig']->promo = new Promo(); $_SESSION['navig']->commande = $commande; $commande->transaction = genid($commande->id, 6); $commande->maj(); $total = $_SESSION['navig']->panier->total(1, $_SESSION['navig']->commande->remise) + $_SESSION['navig']->commande->port; if ($total < $_SESSION['navig']->commande->port) { $total = $_SESSION['navig']->commande->port; } $_SESSION['navig']->commande->total = $total; ActionsModules::instance()->appel_module("aprescommande", $commande); // Appeler la méthode mail du plugin de paiement... $modpaiement->mail($commande); // ... et la méthode paiement $modpaiement->paiement($commande); } catch (Exception $e) { // FIXME: Echec de commande -> cas à traiter ? } }