Menu Content

Joomla Extensions

> Choose one to see more info

Back

How to disable VirtueMart order e-mails and invoices

Last revised:
Wednesday, 24 May 2017

Answer

Because VM Invoice can supply VirtueMart e-mails, you will maybe want to disable default VirtueMart order confirmation e-mails.

Unfortunatelly, the only way how to do this now is modifying VM source code.

If using VirtueMArt  1.x.x, try this istructions:

http://www.chillcreations.com/blog/22-joomla/302-no-virtuemart-order-confirmation-e-mail.html

Disabling VirtueMart 2.0.22 or 3.x and newer PDF Invoices

To prevent customer from getting also VM native invoices, you first need to create a dummy order status in VirtueMart -> Order Statuses called for example "No Invoice", and then assign it to the "Default Order Status to create an invoice" option in VirtueMart -> Configuration -> Checkout settings in VM2 or in VirtueMart -> Configuration -> E-mails in VM3. That way the invoice PDF won't be created.

If you don't want your customers to receive any e-mails from VirtueMart at all, set your "No Invoice" status created in previuos step also to the "Default Order Status to send email to shopper" option in VirtueMart -> Configuration -> Checkout setting/Emails.

If using VirtueMart 2.x.x older than 2.0.22 (EDIT: New, better working integration):

  1. open file JOOMLA_ROOT/components/com_virtuemart/helpers/shopfunctionsf.php

    Find line 243 (can differ depends on your version of VM)
    Important is, replace line

    $user= self::sendVmMail($view, $recipient,$noVendorMail);

    with

    //edied: ARTIO: disable initial e-mail to customer. send only to vendor.
    if ($viewName=='invoice' AND in_array($vars['orderDetails']['details']['BT']->order_status, array('P','U')))
     $user = null;
    else
     $user= self::sendVmMail($view, $recipient,$noVendorMail);

  2. Open file JOOMLA_ROOT /administrator/components/com_virtuemart/models/orders.php
    Find line 1290  (can differ depends on your version of VM)

    And replace

    // Send the email
    if (shopFunctionsF::renderMail('invoice', $order['details']['BT']->email, $vars, null,$vars['doVendor'])) {
    ...


    with

    // Send the email
    $res = shopFunctionsF::renderMail('invoice', $order['details']['BT']->email, $vars, null,$vars['doVendor']);
    if ($res===null) //edited: ARTIO: when sent to customer disabled, dont display message.
    return true;

    if ($res) {

This option will disable initial "pending order" E-mail. However, customer will get e-mails if you keep checked "notify customer" option when changing order status. If you want to disable e-mails also for other statuses, don't check „notify customer“ or edit condition in point 1 like:  


 … array('P','U' /* other statuses: */, 'P','S') ...

 

How to enabled sending of invoices from VM Invoice:

set up "Automatic" mode in Global configuration --> General configuration and also enabled "VM Invoice Autorun" plugin or set up cron task (described in VM Invoice documentation point 4.1).

 

 

Category

Tags for this item

User Login Empty