function lister_declinaisons($critere, $order)
{
    $declinaison = new Declinaison();
    $query = "select * from {$declinaison->table} order by {$critere} {$order}";
    $resul = $declinaison->query($query);
    while ($resul && ($row = $declinaison->fetch_object($resul))) {
        $declinaisondesc = new Declinaisondesc();
        $declinaisondesc->charger($row->id);
        $fond = "ligne_" . ($i++ % 2 ? "claire" : "fonce") . "_rub";
        ?>
		<ul class="<?php 
        echo $fond;
        ?>
">
			<li style="width:770px;"><span id="titredecli_<?php 
        echo $row->id;
        ?>
" class="texte_edit"><?php 
        echo $declinaisondesc->titre;
        ?>
</span></li>
			<li style="width:37px;"><a href="<?php 
        echo "declinaison_modifier.php?id={$row->id}";
        ?>
"><?php 
        echo trad('editer', 'admin');
        ?>
</a></li>
			<li style="width:71px;">
			 <div class="bloc_classement">
			    <div class="classement"><a href="declinaison_modifier.php?id=<?php 
        echo $row->id;
        ?>
&action=modclassement&type=M"><img src="gfx/up.gif" border="0" /></a></div>
			    <div class="classement"><span id="classementdecli_<?php 
        echo $row->id;
        ?>
" class="classement_edit"><?php 
        echo $row->classement;
        ?>
</span></div>
			    <div class="classement"><a href="declinaison_modifier.php?id=<?php 
        echo $row->id;
        ?>
&action=modclassement&type=D"><img src="gfx/dn.gif" border="0" /></a></div>
			 </div>
			</li>
			<li style="width:37px; text-align:center;"><a onclick="return suppr_declinaison(<?php 
        echo $row->id;
        ?>
);" href="<?php 
        echo "declinaison_modifier.php?id={$row->id}&action=supprimer";
        ?>
"><img src="gfx/supprimer.gif" width="9" height="9" border="0" /></a></li>
		</ul>
		<?php 
    }
}
Exemple #2
0
function boucleDecval($texte, $args)
{
    $article = lireTag($args, "article", "int");
    $declinaison = lireTag($args, "declinaison", "int");
    $ref = lireTag($args, "ref", "string");
    if ($article == "") {
        return "";
    }
    $res = "";
    $tdeclinaison = new Declinaison();
    $tdeclinaisondesc = new Declinaisondesc();
    $tdeclidisp = new Declidisp();
    $tdeclidispdesc = new Declidispdesc();
    foreach ($_SESSION['navig']->panier->tabarticle[$article]->perso as $tperso) {
        if ($declinaison != "" && $declinaison != $tperso->declinaison) {
            continue;
        }
        $tdeclinaison->charger($tperso->declinaison);
        $tdeclinaisondesc->charger($tdeclinaison->id);
        // recup valeur declidisp ou string
        if ($tdeclinaison->isDeclidisp($tperso->declinaison)) {
            $tdeclidisp->charger($tperso->valeur);
            $tdeclidispdesc->charger_declidisp($tdeclidisp->id);
            $valeur = $tdeclidispdesc->titre;
        } else {
            $valeur = $tperso->valeur;
        }
        $temp = str_replace("#DECLITITRE", "{$tdeclinaisondesc->titre}", $texte);
        $temp = str_replace("#DECLINAISON", "{$tdeclinaison->id}", $temp);
        $temp = str_replace("#REF", "{$ref}", $temp);
        $temp = str_replace("#ARTICLE", "{$article}", $temp);
        $temp = str_replace("#VALEUR", "{$valeur}", $temp);
        $temp = str_replace("#DECLIDISP", "{$tdeclidisp->id}", $temp);
        $res .= $temp;
    }
    return $res;
}
function ajouter($lang, $ref, $prix, $ecotaxe, $promo, $prix2, $rubrique, $nouveaute, $perso, $poids, $stock, $tva, $ligne, $titre, $chapo, $description, $postscriptum)
{
    $ref = str_replace(" ", "", $ref);
    $ref = str_replace("/", "", $ref);
    $ref = str_replace("+", "", $ref);
    $ref = str_replace(".", "-", $ref);
    $ref = str_replace(",", "-", $ref);
    $ref = str_replace(";", "-", $ref);
    $ref = str_replace("'", "", $ref);
    $ref = str_replace("\n", "", $ref);
    $ref = str_replace("\"", "", $ref);
    $produit = new Produit();
    $produit->charger($ref);
    if ($produit->id) {
        redirige("produit_modifier.php?rubrique={$rubrique}&existe=1");
    }
    $produit = new Produit();
    $prix = str_replace(",", ".", $prix);
    $produit->ref = $ref;
    $produit->datemodif = date("Y-m-d H:i:s");
    $produit->prix = $prix;
    $produit->prix2 = $prix2;
    if ($produit->prix2 == "") {
        $produit->prix2 = $prix;
    }
    $produit->ecotaxe = $ecotaxe;
    $produit->rubrique = $rubrique;
    if ($promo == "on") {
        $produit->promo = 1;
    } else {
        $produit->promo = 0;
    }
    if ($nouveaute == "on") {
        $produit->nouveaute = 1;
    } else {
        $produit->nouveaute = 0;
    }
    if ($ligne == "on") {
        $produit->ligne = 1;
    } else {
        $produit->ligne = 0;
    }
    $produit->perso = $perso;
    $produit->poids = $poids;
    $produit->stock = $stock;
    $produit->tva = str_replace(",", ".", $tva);
    $lastid = $produit->add();
    $produit->id = $lastid;
    $produitdesc = new Produitdesc();
    $produitdesc->chapo = $chapo;
    $produitdesc->description = $description;
    $produitdesc->postscriptum = $postscriptum;
    $produitdesc->produit = $lastid;
    $produitdesc->lang = $lang;
    $produitdesc->titre = $titre;
    $produitdesc->chapo = str_replace("\n", "<br />", $produitdesc->chapo);
    $produitdesc->add();
    $rubcaracteristique = new Rubcaracteristique();
    $caracteristiquedesc = new Caracteristiquedesc();
    $caracval = new Caracval();
    $query = "select * from {$rubcaracteristique->table} where rubrique='" . $produit->rubrique . "'";
    $resul = mysql_query($query);
    while ($row = mysql_fetch_object($resul)) {
        $caracval = new Caracval();
        $deb = "caract";
        $deb2 = "typecaract";
        $val = $row->caracteristique;
        $var = $deb . $val;
        $var2 = $deb2 . $val;
        global ${$var};
        global ${$var2};
        $query2 = "delete from {$caracval->table} where produit='" . $produit->id . "' and caracteristique='" . $row->caracteristique . "'";
        $resul2 = mysql_query($query2);
        if (${$var} != "") {
            if (${$var2} == "c") {
                foreach (${$var} as $selectval) {
                    $caracval->produit = $lastid;
                    $caracval->caracteristique = $row->caracteristique;
                    $caracval->caracdisp = $selectval;
                    $caracval->add();
                }
            } else {
                $caracval->produit = $lastid;
                $caracval->caracteristique = $row->caracteristique;
                $caracval->valeur = ${$var};
                $caracval->add();
            }
        }
    }
    $rubdeclinaison = new Rubdeclinaison();
    $declinaisondesc = new Declinaisondesc();
    $declidisp = new Declidisp();
    $declidispdesc = new Declidispdesc();
    $query = "select * from {$rubdeclinaison->table} where rubrique='" . $rubrique . "'";
    $resul = mysql_query($query);
    while ($row = mysql_fetch_object($resul)) {
        $declinaisondesc->charger($row->declinaison);
        $query2 = "select * from {$declidisp->table} where declinaison='{$row->declinaison}'";
        $resul2 = mysql_query($query2);
        $nbres = mysql_num_rows($resul2);
        while ($row2 = mysql_fetch_object($resul2)) {
            $stock = new Stock();
            $stock->declidisp = $row2->id;
            $stock->produit = $lastid;
            $stock->valeur = 0;
            $stock->surplus = 0;
            $stock->add();
        }
    }
    $produitdesc->reecrire();
    ActionsModules::instance()->appel_module("ajoutprod", $produit);
    redirige($_SERVER['PHP_SELF'] . "?ref=" . $produit->ref . "&rubrique=" . $produit->rubrique . "&lang=" . $lang);
}
 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);
         }
     }
 }
function ajouter($lang, $id, $titre, $chapo, $description, $tabdisp, $ajoutrub)
{
    $json = new Services_JSON();
    $tabdisp = stripslashes($tabdisp);
    $tabdisp = $json->decode($tabdisp);
    $declinaison = new Declinaison();
    $declinaison->charger($id);
    if ($declinaison->id) {
        return;
    }
    $declinaison = new Declinaison();
    $query = "select max(classement) as maxClassement from {$declinaison->table}";
    $resul = $declinaison->query($query);
    $maxClassement = $resul ? $declinaison->get_result($resul, 0, "maxClassement") : 0;
    $declinaison->id = $id;
    $declinaison->classement = $maxClassement + 1;
    $lastid = $declinaison->add();
    $declinaison->id = $lastid;
    $declinaisondesc = new Declinaisondesc();
    $declinaisondesc->chapo = $chapo;
    $declinaisondesc->description = $description;
    $declinaisondesc->declinaison = $lastid;
    $declinaisondesc->lang = $lang;
    $declinaisondesc->titre = $titre;
    $declinaisondesc->chapo = str_replace("\n", "<br/>", $declinaisondesc->chapo);
    $declinaisondesc->description = str_replace("\n", "<br/>", $declinaisondesc->description);
    $declinaisondesc->add();
    $declidisp = new Declidisp();
    $declidispdesc = new Declidispdesc();
    for ($i = 0; $i < count($tabdisp); $i++) {
        $declidisp->declinaison = $lastid;
        $lastidc = $declidisp->add();
        $declidispdesc->declidisp = $lastidc;
        $declidispdesc->lang = $lang;
        $declidispdesc->titre = $tabdisp[$i]->texte;
        $declidispdesc->add();
    }
    if (intval($ajoutrub) == 1) {
        $rubrique = new Rubrique();
        $query = "select * from {$rubrique->table}";
        $resul = $rubrique->query($query);
        while ($resul && ($row = $rubrique->fetch_object($resul))) {
            $rubdeclinaison = new Rubdeclinaison();
            $rubdeclinaison->rubrique = $row->id;
            $rubdeclinaison->declinaison = $lastid;
            $rubdeclinaison->add();
        }
    }
    ActionsModules::instance()->appel_module("ajdeclinaison", $declinaison);
    redirige($_SERVER['PHP_SELF'] . "?id=" . $lastid);
}
/*      This program is free software; you can redistribute it and/or modify         */
/*      it under the terms of the GNU General Public License as published by         */
/*      the Free Software Foundation; either version 3 of the License                */
/*                                                                                   */
/*      This program is distributed in the hope that it will be useful,              */
/*      but WITHOUT ANY WARRANTY; without even the implied warranty of               */
/*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                */
/*      GNU General Public License for more details.                                 */
/*                                                                                   */
/*      You should have received a copy of the GNU General Public License            */
/*	    along with this program. If not, see <http://www.gnu.org/licenses/>.         */
/*                                                                                   */
/*************************************************************************************/
require_once __DIR__ . "/../pre.php";
require_once __DIR__ . "/../auth.php";
require_once __DIR__ . "/../../fonctions/divers.php";
if (!est_autorise("acces_configuration")) {
    exit;
}
header('Content-Type: text/html; charset=utf-8');
$data = explode('_', $_POST['id']);
$modif = $data[0];
$id = intval($data[1]);
if ($modif == "titredecli") {
    $objdesc = new Declinaisondesc();
    if ($objdesc->charger($id)) {
        $objdesc->titre = $_POST['value'];
        $objdesc->maj();
        echo $objdesc->titre;
    }
}
 public function ajouter($titre, $ajoutrub)
 {
     $this->classement = $this->getMaxRank() + 1;
     $this->id = $this->add();
     $declinaisondesc = new Declinaisondesc();
     $declinaisondesc->titre = $titre;
     $declinaisondesc->declinaison = $this->id;
     $declinaisondesc->lang = ActionsAdminLang::instance()->get_id_langue_courante();
     $declinaisondesc->id = $declinaisondesc->add();
     if (intval($ajoutrub) == 1) {
         $query = "select id from " . Rubrique::TABLE;
         foreach ($this->query_liste($query) as $row) {
             $rubdeclinaison = new Rubdeclinaison();
             $rubdeclinaison->rubrique = $row->id;
             $rubdeclinaison->declinaison = $this->id;
             $rubdeclinaison->add();
         }
     }
     ActionsModules::instance()->appel_module("ajdeclinaison", new Declinaison($this->id));
     redirige("declinaison_modifier.php?id=" . $this->id . "&lang=" . ActionsAdminLang::instance()->get_id_langue_courante());
 }
?>
    
                                            </tbody>
                                        </table>
                                    </div>
                                    <div class="span6">
                                        <table class="table table-striped">
                                            <caption>
                                                <h3><?php 
echo trad('GESTION_DECLINAISONS', 'admin');
?>
</h3>
                                            </caption>
                                        </table>
                                        <?php 
$declinaisondesc = new Declinaisondesc();
$declidispdesc = new Declidispdesc();
$query = "select rd.declinaison from " . Rubdeclinaison::TABLE . " rd left join " . Declinaison::TABLE . " d on rd.declinaison=d.id where rd.rubrique=" . $produit->rubrique . " order by d.classement";
foreach ($produit->query_liste($query) as $row) {
    $declinaisondesc->charger($row->declinaison);
    $query2 = "select d.* from " . Declidisp::TABLE . " d left join " . Declidispdesc::TABLE . " dd on dd.declidisp=d.id where dd.lang=" . $lang . " and declinaison=" . $row->declinaison . " order by dd.classement";
    $resul2 = $produit->query($query2);
    ?>
                                            <table class="table table-striped">
                                                <thead>
                                                    <tr>
                                                        <th><?php 
    echo $declinaisondesc->titre;
    ?>
</th>
                                                        <th><?php 
Exemple #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 ?
    }
}