Lorsqu'on achète un produit sur une boutique virtuemart un email contenant un bon de commande est envoyé juste avant de passer au paiement.
Certain trouve cela logique car en effet c'est un bon de commande (donc pas forcément réglé). Mais le comportement le plus courant sur internet est d'envoyer une "confirmation de commande" après avoir reçu le paiement.
Voici donc comment faire pour modifier ce comportement.
Dans le fichier: administrator/components/com_virtuemart/classes/ps_checkout.php
trouvez la ligne suivante:
et remplacez-la par celle-ciCode PHP:$this->email_receipt($order_id);
Vous venez simplement de désactiver l'envoie du mail comportant le bon de commande.Code PHP://$this->email_receipt($order_id);
Il faut maintenant le réactiver mais au bon endroit cette fois.
Dans le fichier: administrator/components/com_virtuemart/classes/ps_order.php
Remplacez le code
Par celui:Code PHP:if( empty($d['order_item_id']) ) {
// When the order is set to "confirmed", we can capture
// the Payment with authorize.net
if( $curr_order_status=="P" && $d["order_status"]=="C") {
Toujours dans le même fichierCode PHP:$sendRecapMail=false;
if( empty($d['order_item_id']) ) {
// When the order is set to "confirmed", we can capture
// the Payment with authorize.net
/*
* J'ai modifie la condition car le status lors d'un paiement par CB avec atos sips etait P-C et non pas P.
*/
//if( $curr_order_status=="P" && $d["order_status"]=="C") {
if( ($curr_order_status=="P" || $curr_order_status=="P-C")&& $d["order_status"]=="C") {
$sendRecapMail=true;
Remplacez le code suivant:
Par celui-ciCode PHP:while ($db->next_record()) {
$item_id = $db->f("order_item_id");
$fields =array( 'order_status'=> $d["order_status"],
'mdate'=> $timestamp );
$dbu->buildQuery('UPDATE', '#__{vm}_order_item', $fields, "WHERE order_item_id='" .(int)$item_id . "'");
$dbu->query();
}
Code PHP:while ($db->next_record()) {
$item_id = $db->f("order_item_id");
$fields =array( 'order_status'=> $d["order_status"],
'mdate'=> $timestamp );
$dbu->buildQuery('UPDATE', '#__{vm}_order_item', $fields, "WHERE order_item_id='" .(int)$item_id . "'");
$dbu->query();
if($sendRecapMail==true) {
//on envoi le mail de confirmation avec le recap de la commande.
require_once( CLASSPATH.'ps_checkout.php');
$ps_checkout = new ps_checkout;
$ps_checkout->email_receipt($d['order_id']);
}
}


Répondre en citant

).
Liens sociaux