1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Virtuemart", создана пользователем artefakt777, 24 янв 2015.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. artefakt777

    artefakt777

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

    Пользую VM Email Manager, есть мысль вставить реквизиты в описание статуса и создать 3 статуса заказа с одним кодом. Но вот с одинаковым кодом статусы не создаются.
    Собственно, как создать несколько статусов заказа с одним кодом или другое решение данного вопроса.
     
  2. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    1. Укажи версии
    2. Я правильно понимаю, что некоторым категориями покупалетелй или на некоторый группы товаров нужно отправлять свои 1 из 3 реквизитов?
    Т.е. менеджер получает заказ, и выбирает какие из 3х реквизитов отправить покупателю?
    Или же в одном заказе может быть несколько реквизитов?!
     
  3. artefakt777

    artefakt777

    Регистр.:
    15 июл 2012
    Сообщения:
    474
    Симпатии:
    119
    Joomla! 2.5.27 + VM 2.6.10
    После получения заказа, менеджер заходит в Заказы и покупатели=> Заказы и меняет статус Заказа,например на подтвержден (Код C)
    Далее через VM Email Manager клиенту приходит email о смене статуса заказа, по средствам переменной [ORDER_STATUS]. Есть мысль добавить к статусу заказа описание и вывести их переменной [ORDER_STATUS_DESCRIPTION].
    В описание заказа и будут находиться реквизиты.
    Реквизиты имеются 3-х разных банков и да, менеджер получает заказ, и выбирает какие из 3х реквизитов отправить покупателю.
     
  4. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    \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
    Может есть решение намного проще)
     
    artefakt777 нравится это.
  5. artefakt777

    artefakt777

    Регистр.:
    15 июл 2012
    Сообщения:
    474
    Симпатии:
    119
    php ток начал ковырять, сам пока не напишу. Вижу путь попроще- сделать возможность создавать несколько статусов заказа с одним кодом, добавить статусы типа "Заказ подтвержден" (1Банк), "Заказ подтвержден" (2Банк), "Заказ подтвержден" (3Банк), где в описании статуса забиты реквизиты. как вот эту блокировку создания одинаковых статусов убрать?
     
  6. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    \administrator\components\com_virtuemart\tables\orderstates.php
    комментируем две строки
    //vmError(JText::_('COM_VIRTUEMART_ORDER_STATUS_CODE_EXISTS'));
    //return false;
     
    artefakt777 нравится это.
  7. artefakt777

    artefakt777

    Регистр.:
    15 июл 2012
    Сообщения:
    474
    Симпатии:
    119
    В описании статуса заказа стираются все html теги коме пробела, где это можно поправить?
     
  8. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    artefakt777 нравится это.
  9. artefakt777

    artefakt777

    Регистр.:
    15 июл 2012
    Сообщения:
    474
    Симпатии:
    119
    к сожалению это решение для первого вирта, во втором ни файла, ни таких строк не нашел. Так понимаю надо где-то в 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