Письма об оплате

#
Письма об оплате
Прошу прощения, если тема уже поднималась, но поиском не нашел.

Подскажите, как сделать так, чтобы пользователю приходило письмо только об оформлении заказа - но не об оплате?
Потому что при оплате наличными при получении - непонятно зачем ему это письмо? Он и так знает, что оплатил.
При оплате онлайн через ту же Робокассу - он фактически получает сразу 2 письма, отличающиеся только статусами: оплачено и не оплачено.

Т. е. данное письмо нужно не так часто. При оплате, например, по квитанции. Но здесь все равно обычно менеджер вручную пишет письмо не только о поступлении оплаты, но и о принятии заказа в обработку, номер накладной и пр.
Модератор
#
Re: Письма об оплате
Вам нужно вносить изменения в обработчик платежной системы. Добавлять метод из типового хэндлера:

   public function changedOrder($mode)
   {
      Core_Event::notify('Shop_Payment_System_Handler.onBeforeChangedOrder', $this, array($mode));

      if (in_array($mode, array('changeStatusPaid', 'edit')))
      {
         if ($this->_shopOrderBeforeAction->paid != $this->_shopOrder->paid)
         {
            $date_str = Core_Date::sql2datetime($this->_shopOrder->datetime);

            $this->adminMailSubject(
               Core::_('Shop_Order.confirm_admin_subject', $this->_shopOrder->invoice, $this->_shopOrder->Shop->name, $date_str)
            );

            $this->siteuserMailSubject(
               Core::_('Shop_Order.confirm_user_subject', $this->_shopOrder->invoice, $this->_shopOrder->Shop->name, $date_str)
            );

            // Установка XSL-шаблонов в соответствии с настройками в узле структуры
            $this->setXSLs();

            // Отправка писем клиенту и пользователю
            $this->send();
         }
      }

      Core_Event::notify('Shop_Payment_System_Handler.onAfterChangedOrder', $this, array($mode));

      return $this;
   }


и менять его логику.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Письма об оплате
Спасибо!

Если я правильно разобрался, можно ли приведенным вами кодом заменить след. код в обработчике, например, оплаты при получении?

   protected function _processOrder()
   {
      parent::_processOrder();

      // Установка XSL-шаблонов в соответствии с настройками в узле структуры
      $this->setXSLs();

      // Отправка писем клиенту и пользователю
      $this->send();

      return $this;
   }

Хотя я вот не уловил маленько про
      if (in_array($mode, array('changeStatusPaid', 'edit')))

changeStatusPaid - отвечает за отправку при смене статуса, удаляем.
edit - отвечает за отправку при любом редактировании? Тоже тогда удалить надо.
А что же отвечает за простую отправку при оформлении?
#
Re: Письма об оплате
ironwayru,
а вот так не пойдет?
protected function _processOrder()
   {
      parent::_processOrder();

      // Установка XSL-шаблонов в соответствии с настройками в узле структуры
      $this->setXSLs();
      if ($this->_shopOrder->paid ==0) {
         // Отправка писем клиенту и пользователю
         $this->send();
      }

      return $this;
}
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Письма об оплате
alexpimnev,
спасибо! Но почему-то не работает: "Parse Error, Unexpected <" при попытке изменения статуса оплаты.
Модератор
#
Re: Письма об оплате
ironwayru,

В firebug`е открывайте консоль и меняйте статус оплаты. Там будет зафиксирована ошибка со стеком.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Письма об оплате
alexander.egorov,
попробовал, но у нас полтергейст) Теперь ошибка не появляется вообще, в консоли также все ОК, но при этом письма об оплате приходят.
Раз код правильный, то видимо это у нас уже где-то проблема)
Модератор
#
Re: Письма об оплате
ironwayru писал(а):
Раз код правильный, то видимо это у нас уже где-то проблема)

Видимо.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Письма об оплате
Вобщем в обработчиках конкретных способов оплаты код почему-то у нас не работал, а вот в типовом обработчике по адресу - \modules\shop\payment\system\handler.php - на ура.
Но тут проблема, если лампочку оплаты поставить случайно и потом снять, письмо придет в этот момент)

Поэтому для полного отключения этих писем мы в этом файле просто изменили режим работы. (Идеал, конечно, это возможность регулирования писем на уровне способа оплаты, но это уже на будущее)
Вместо:
      if (in_array($mode, array('changeStatusPaid', 'edit')))

поставили:
      if (in_array($mode, array()))

Большое спасибо Александру за подсказку!
Авторизация