[Помощь] Реквизиты в зависимости от статуса заказа

artefakt777

Постоялец
Регистрация
15 Июл 2012
Сообщения
532
Реакции
140
Нужно, чтобы при смене статуса, клиенту отсылалось письмо-подтверждение с реквизитами банка. Проблема в том, что таких письма 3 и все с разными реквизитами.

Пользую VM Email Manager, есть мысль вставить реквизиты в описание статуса и создать 3 статуса заказа с одним кодом. Но вот с одинаковым кодом статусы не создаются.
Собственно, как создать несколько статусов заказа с одним кодом или другое решение данного вопроса.
 
1. Укажи версии
2. Я правильно понимаю, что некоторым категориями покупалетелй или на некоторый группы товаров нужно отправлять свои 1 из 3 реквизитов?
Т.е. менеджер получает заказ, и выбирает какие из 3х реквизитов отправить покупателю?
Или же в одном заказе может быть несколько реквизитов?!
 
Joomla! 2.5.27 + VM 2.6.10
После получения заказа, менеджер заходит в Заказы и покупатели=> Заказы и меняет статус Заказа,например на подтвержден (Код C)
Далее через VM Email Manager клиенту приходит email о смене статуса заказа, по средствам переменной [ORDER_STATUS]. Есть мысль добавить к статусу заказа описание и вывести их переменной [ORDER_STATUS_DESCRIPTION].
В описание заказа и будут находиться реквизиты.
Реквизиты имеются 3-х разных банков и да, менеджер получает заказ, и выбирает какие из 3х реквизитов отправить покупателю.
 
\administrator\components\com_virtuemart\models\orders.php
Notifies the customer that the Order Status has been changed
function notifyCustomer
и
\components\com_virtuemart\helpers\shopfunctionsf.php
function renderMail

Если не ошибаюсь, ты немного шарил в php, мозг у тебя есть. По идее немного дописать эти 2 функции и сможешь выбирать что именно отправлять клиенту

Смысл такой - вставляем в редактировании заказа селект, в котором можно выбрать один из 3х реквизитов
Это дело отправляется на функцию notifyCustomer, если стоит соответствующий чекбокс в изменении статуса.
notifyCustomer в строке "// Send the email" в первой переменной передает - какой шаблон использовать для отправки:
shopFunctionsF::renderMail('invoice'
Вместо invoice делаем 3 подобных с разными реквизитами, хотя там немного глубже нужно копнуть.

З.Ы. мне говорили, что я легких путей никогда не ищу, но - попробуй :D
Может есть решение намного проще)
 
php ток начал ковырять, сам пока не напишу. Вижу путь попроще- сделать возможность создавать несколько статусов заказа с одним кодом, добавить статусы типа "Заказ подтвержден" (1Банк), "Заказ подтвержден" (2Банк), "Заказ подтвержден" (3Банк), где в описании статуса забиты реквизиты. как вот эту блокировку создания одинаковых статусов убрать?
 
\administrator\components\com_virtuemart\tables\orderstates.php
комментируем две строки
//vmError(JText::_('COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS'));
//return false;
 
В описании статуса заказа стираются все html теги коме пробела, где это можно поправить?
 
гугл в помощь блин)
Для просмотра ссылки Войди или Зарегистрируйся
к сожалению это решение для первого вирта, во втором ни файла, ни таких строк не нашел. Так понимаю надо где-то в orderstats.php костыль вставить.

Код:
<?php
/**
*
* Order status table
*
* @package    VirtueMart
* @subpackage Order status
* @author Oscar van Eijk
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* @version $Id: orderstates.php 6475 2012-09-21 11:54:21Z Milbo $
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');

if(!class_exists('VmTable'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmtable.php');

/**
 * Order status table class
 * The class is is used to manage the order statuses in the shop.
 *
 * @package    VirtueMart
 * @author Oscar van Eijk
 * @author Max Milbers
 */
class TableOrderstates extends VmTable {

    /** @var int Primary key */
    var $virtuemart_orderstate_id            = 0;
    /** @var int Vendor ID if the status is vendor specific */
    var $virtuemart_vendor_id                    = null;
    /** @var boolean */
    /** @var char Order status Code */
    var $order_status_code            = '';
    /** @var string Order status name*/
    var $order_status_name            = null;
    /** @var string Order status description */
    var $order_status_description    = null;
    /** @var string Order status description 
    *  Default ='A' : available
    **/
    var $order_stock_handle = 'A';
    /** @var int Order in which the order status is listed */
    var $ordering                    = 0;
    /** @var int published or unpublished */
    var $published = 1;


    /**
    * @param $db Class constructor; connect to the database
    */
    function __construct(&$db){

        parent::__construct('#__virtuemart_orderstates', 'virtuemart_orderstate_id', $db);

        $this->setObligatoryKeys('order_status_code');
        $this->setObligatoryKeys('order_status_name');
        $this->setObligatoryKeys('order_stock_handle');
        $this->setLoggable();

    }

    /**
    * Validates the order status record fields.
    *
    * @return boolean True if the table buffer is contains valid data, false otherwise.
    */
    function check(){

        $db = JFactory::getDBO();
        $q = 'SELECT count(*),virtuemart_orderstate_id FROM `#__virtuemart_orderstates` ';
        $q .= 'WHERE `order_status_code`="' .  $this->order_status_code . '"';
        $db->setQuery($q);

        $row = $db->loadRow();
        if(is_array($row)){
            if($row[0]>0){
                if($row[1] != $this->virtuemart_orderstate_id){
                    vmError(JText::_('COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS'));
                    return false;
                }
            }
        }

        return parent::check();
    }
}

//No CLosing Tag
 
Назад
Сверху