По какой-то причине разработчики Virtuemart решили что письмо покупателю сразу после сделанного заказа отправлять не нужно. Письма шлются только после смены статуса заказа администратором магазина в админке. Да, это немного странное решение и как я понял не настраиваемое из коробки.

Так как решать вопрос надо было быстро то не обошлось без вмешательства в код Virtuemart:

administrator/components/com_virtuemart/models/orders.php

// Send the email
//$res = shopFunctionsF::renderMail('invoice', $order['details']['BT']->email, $vars, null,$vars['doVendor'],$this->useDefaultEmailOrderStatus);
$sendMail = false;
if (!$this->useDefaultEmailOrderStatus and isset($vars['newOrderData']['customer_notified']) and $vars['newOrderData']['customer_notified']==1) {
    $sendMail = true;
} else {
    $orderstatusForShopperEmail = VmConfig::get('email_os_s',array('U','C','S','R','X'));
    if (!is_array($orderstatusForShopperEmail)) $orderstatusForShopperEmail = array($orderstatusForShopperEmail);

    //TODO: Фикс для того чтобы письма отправлялись покупателю сразу после заказа
    $orderstatusForShopperEmail[] = 'P';

    if ( in_array((string) $vars['orderDetails']['details']['BT']->order_status,$orderstatusForShopperEmail) ) {
        $sendMail = true;
        vmdebug('renderMail by default orderstati');
    }
}

Решение в виде одной строки сразу после коммента. Это мы добавляем статус "Pending" в список статусов при которых письма отправляются.

Вот и все)

Предыдущая запись Следующая запись