/**
  * 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;
 }
 private function __construct()
 {
     parent::__construct();
 }
Beispiel #3
0
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);
Beispiel #4
0
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;
}
Beispiel #6
0
<?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;
 }
Beispiel #9
0
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 ?
    }
}