function action_client_supprimer_commande_dist()
{
    // Le client demande à supprimer sa commande (depuis la page d'annulation)
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $id_commande = $securiser_action();
    // suppression de la commande
    if ($id_commande = intval($id_commande)) {
        sql_delete('spip_commandes', 'id_commande=' . $id_commande);
        sql_delete('spip_commandes_details', 'id_commande=' . $id_commande);
    }
    // le paiement n'a pas été fait. Il faut supprimer le panier
    include_spip('inc/paniers');
    // Si on trouve un panier pour le visiteur actuel
    if ($id_panier = paniers_id_panier_encours()) {
        // On le supprime
        $action = charger_fonction('supprimer_panier', 'action/');
        $action($id_panier);
    }
}
function action_passer_commande_dist($arg = null)
{
    if (is_null($arg)) {
        //spip_log('test secu',"vacarme_securite");
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    // validation de la commande par le client. Fonction reprise de zcommerce_pipelines.php
    // On recupere d'abord toutes les informations dont on va avoir besoin
    // principal visiteur connecte
    $id_auteur = intval($arg);
    // On cree la commande ici
    include_spip('inc/commandes');
    $id_commande = creer_commande_encours();
    // on complète les infos dans la table spip_commandes_details ajoutées à la création de commande
    // par panier2commande_pipelines
    // récupération du panier
    include_spip('inc/paniers');
    $id_panier = paniers_id_panier_encours();
    $items = sql_allfetsel("id_objet,objet,numero", "spip_paniers_liens", "id_panier={$id_panier}");
    // on met à jour la colonne numéro pour les abonnements commandés
    foreach ($items as $item) {
        $id_objet = $item['id_objet'];
        $numero = $item['numero'];
        $objet = $item['objet'];
        if ($objet == 'abonnement') {
            sql_updateq("spip_commandes_details", array("numero" => $numero), "id_commande={$id_commande} AND id_objet={$id_objet} AND objet='abonnement'");
        }
    }
    // On cherche l'adresse principale du visiteur
    $id_adresse = sql_getfetsel('id_adresse', 'spip_adresses_liens', array('objet = ' . sql_quote('auteur'), 'id_objet = ' . intval($id_auteur), 'type = ' . sql_quote('principale')));
    $adresse = sql_fetsel('*', 'spip_adresses', 'id_adresse = ' . $id_adresse);
    unset($adresse['id_adresse']);
    // On copie cette adresse comme celle de facturation
    $id_adresse_facturation = sql_insertq('spip_adresses', $adresse);
    sql_insertq('spip_adresses_liens', array('id_adresse' => $id_adresse_facturation, 'objet' => 'commande', 'id_objet' => $id_commande, 'type' => 'facturation'));
    // On copie cette adresse comme celle de livraison
    $id_adresse_livraison = sql_insertq('spip_adresses', $adresse);
    sql_insertq('spip_adresses_liens', array('id_adresse' => $id_adresse_livraison, 'objet' => 'commande', 'id_objet' => $id_commande, 'type' => 'livraison'));
    // envoi aux plugins
    pipeline('post_insertion', array('args' => array('table' => 'spip_commandes', 'id_objet' => $id_commande, 'action' => 'passer_commande'), 'data' => array('id_auteur' => $id_auteur)));
}
function formulaires_paiements_alternatifs_traiter_dist($options = array(), $retour)
{
    $retours = array();
    $id_auteur = $options['id_auteur'];
    $reference = $options['commande_numero'];
    $id_commande = intval($options['id_commande']);
    $paiement = $options['type_paiement'];
    $statut_nouveau = 'attente';
    // la commande est mise en attente de réception du règlement
    // paiement cheque ou virement ?
    if ($paiement) {
        sql_updateq('spip_commandes', array('paiement' => $paiement), 'id_commande=' . $id_commande);
    }
    $action = charger_fonction('instituer_commande', 'action');
    if ($action) {
        $action($id_commande . "-" . $statut_nouveau);
        $retours['message_ok'] = _T('vacarme_commande:message_ok_formulaire_paiement');
        if ($retour) {
            $retour = parametre_url($retour, 'r', '2', '&');
        }
        $retours['redirect'] = $retour;
        // suppression du panier
        include_spip('inc/paniers');
        // Si on trouve un panier pour le visiteur actuel
        if ($id_panier = paniers_id_panier_encours()) {
            // On le supprime
            $supprimer = charger_fonction('supprimer_panier', 'action/');
            $supprimer($id_panier);
        }
    } else {
        $retours['message_erreur'] = _T('vacarme_commande:message_erreur_formulaire_paiement', array('numero_commande' => $reference));
        if ($retour) {
            $retour = parametre_url($retour, 'r', '0', '&');
        }
        $retours['redirect'] = $retour;
    }
    return $retours;
}