09 Октябрь, 2017

Joomla 3.5 и Virtuemart - отправка письма покупателю сразу после покупки

По какой-то причине разработчики 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" в список статусов при которых письма отправляются.

Вот и все)

15 Май, 2017

Bitrix debug

1) Отключаем в .htaccess auto_prepend_file /bitrix/modules/security/tools/start.php

2) Включаем логи в Битрикс /bitrix/.settings.php

  'exception_handling' =>
  array (
    'value' =>
    array (
      'debug' => true,
      'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE & ~E_DEPRECATED,
      'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING,
      'ignore_silence' => true,
      'assertion_throws_exception' => false,
      'assertion_error_type' => 256,
      'log' => array (
        'settings' => array (
          'file' => 'bitrix/modules/error.log',
          'log_size' => 1000000,
        ),
    ),
    ),
    'readonly' => true,
  ),

3) Или в php.ini

display_errors display_startup_errors error_log

4) Отладка выгрузки 1С

init.php

AddEventHandler("main", "OnEndBufferContent", "ChangeMyContent");
function ChangeMyContent($content)
{
    if (strpos($_SERVER['REQUEST_URI'],'/bitrix/admin/1c_exchange.php')!==false) {
        $codabra = date("Y-m-d H:i:s")."\n";
        $codabra.= $content."\n";
        $codabra.= $_SERVER['REQUEST_URI']."\n";
        $codabra.= "------------------------------\n";
        file_put_contents($_SERVER["DOCUMENT_ROOT"].'/schmex.log', $codabra, FILE_APPEND);
    }
}
Home