Saisir une commande dans le backend Virtuemart Imprimer
Samedi, 05 Novembre 2011 18:02

Créer une commande à partir du backend virtuemart

Si comme moi vous cherchiez depuis longtemps à passer une commande depuis le backend (la partie administrateur du site) de virtuermart, alors voilà le code que j'ai développé.

Attention, ce code peut sans doute être amélioré ou optimisé car je ne suis pas un informaticien de formation, je ne pourrais pas être tenu pour responsable de l'utilisation que vous en ferez.

Dans le fichier administrator\components\com_virtuemart\toolbar.virtuemart.php ligne 91, supprimez 'order.order_list', dans la ligne suivante

$noNewItem = array( 'order.order_list',	'reportbasic.waiting_list',	'store.shipping_module_list' );

Ensuite, créez un nouveau fichier administrator\components\com_virtuemart\html\order.order_form.php et copier coller le code suivant dedans:

if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
*
* @version $Id: order.order_form.php 2011-11-05 20:18:00Z Arnaud LUQUES TORRES $
*/
 
 
mm_showMyFileName( __FILE__ );
global $db;
 
$IP_address = getenv("REMOTE_ADDR");//récupère l'adresse IP de l'utilisateur
 
$dbu = new ps_db();
$my = & JFactory::getUser();
$id= $my->id; //récupère l'id de l'utilisateur
 
//crée la nouvelle commande
$q = "INSERT INTO `jos_vm_orders` (`user_id`, `vendor_id`,`cdate`, `ip_address`, `order_currency`) values ('$id','1',UNIX_TIMESTAMP(),'$IP_address','EUR')";
$dbu->query($q);
 
//Récupère le numéro de la nouvelle commande
$q = "SELECT * FROM `jos_vm_orders` WHERE `order_number` IS NULL AND`order_total`='0' ORDER BY order_id DESC LIMIT 1";
$dbu->query($q);
$created_order=$dbu->f("order_id");
 
//Insert le moyen de paiement par chèque (ici 4 = chèque) à modifier selon vos moyens de paiement
$q="INSERT INTO `jos_vm_order_payment` (`order_id`,`payment_method_id`) values ('$created_order','4')";
$dbu->query($q);
 
//Insert un utilisateur (celui qui génère la commande)
$q="INSERT INTO `jos_vm_order_user_info` (`order_id`, `user_id`, `address_type`) values ('$created_order','$id','BT')";
$dbu->query($q);
 
//le script ci dessous permet d'accéder directement à la nouvelle commande après avoir appuyer sur le bouton Nouveau dans le backend
?>
<script type="text/javascript">
window.location="http://www.malhom.com/administrator/index.php?page=order.order_print&limitstart=0&keyword=&order_id=<?php echo $created_order ?>&option=com_virtuemart";
</script><?php
?>
<script type="text/javascript">// <![CDATA[
     window.location="http://www.malhom.com/administrator/index.php?page=order.order_print&limitstart=0&keyword=&order_id=&option=com_virtuemart";
// ]]></script>

Et voilà, maintenant vous avez un bouton +(Nouveau) dans la liste des commandes qui vous permet de créer une commande vierge depuis le backend de virtuemart.

Il se peut que vous n'ayez pas le champ "IP_adress" dans la table jos_vm_orders, dans ce cas supprimer ce paramètre de la requête.

Une fois que vous êtes sur la page de la nouvelle commande (il est possible que vous ne puissiez pas modifier tout ou partie de la commande si vous n'avez pas fait certaines modifications au préalable, dans ce cas, faîtes une recherche sur internet):

sélectionnez un utilisateur et mettez à jour en cliquant sur le bouton juste à côté,

sélectionnez un moyen de paiement et mettez à jour en cliquant sur le bouton juste à côté,

sélectionnez un mode de livraison et mettez à jour en cliquant sur le bouton juste à côté,

insérer vos articles dans la commande,

Mettez à jour le statut de votre commande.

Contactez moi si vous avez des questions ou pour dire merci tout simplement.

Mise à jour le Samedi, 05 Novembre 2011 18:36