Форум русской поддержки Joomla!® CMS
03.12.2016, 13:43:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

печать почтовых бланков (наклеек на коробки, пакеты, письма)

 (Прочитано 336 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Doctor Death
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 113



« : 12.04.2016, 21:14:53 »

Надоело заполнять от руки коробки и пакеты, потратил пару дней и наваял маленький "хак" (просьба сильно ногами не пинать) для автоматической генерации наклеек для "Почты России"

в архиве три файла
pr.png - класть в /images (логотип почты росcии)
zipcode.TTF - класть в /images (шрифт для генерации индекса)
postlabel.php - класть в /administrator/components/com_jshopping/views/orders/tmpl/ (собственно сам ***код)
далее прописываем в саму систему
1. Для того чтобы получить ещё одну иконку с печатью в списке заказов идем в фаил /administrator/components/com_jshopping/views/orders/tmpl/list.php, в нем находим блок
Код:
           <a href = "javascript:void window.open('index.php?option=com_jshopping&controller=orders&task=printOrder&order_id=<?php echo $row->order_id?>&tmpl=component', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,width=800,height=600,directories=no,location=no');">
                <img border="0" src="components/com_jshopping/images/jshop_print.png" alt="printhtml" />
            </a>
после него добавляем его же, с немногими изменениями.
Код:
           <a href = "javascript:void window.open('index.php?option=com_jshopping&controller=orders&task=printPostlabel&order_id=<?php echo $row->order_id?>&tmpl=component', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,width=600,height=440,directories=no,location=no');">
                <img border="0" src="/components/com_jshopping/images/print.png" alt="printhtml" />
            </a>
2. Теперь правим /administrator/components/com_jshopping/controllers/orders.php найдем функцию  function show() (у меня это строка 150) и скопируем её целиком в конец файла
в скопированном блоке поправим имя самой функции на function postlabel() и $view->setLayout("show"); на $view->setLayout("postlabel");
Вот что должно получиться:
Код:
   function postlabel(){
        $order_id = JRequest::getInt("order_id");
        $jshopConfig = JSFactory::getConfig();

        $orders = JSFactory::getModel("orders");
        $order = JSFactory::getTable('order', 'jshop');
        $order->load($order_id);

$order->prepareOrderPrint('order_show');

        $id_vendor_cuser = getIdVendorForCUser();

$order->loadItemsNewDigitalProducts();
        $order_items = $order->getAllItems();

        if ($jshopConfig->admin_show_vendors){
            $tmp_order_vendors = $order->getVendors();
            $order_vendors = array();
            foreach($tmp_order_vendors as $v){
                $order_vendors[$v->id] = $v;
            }
        }

        $lists['status'] = JHTML::_('select.genericlist', $orders->getAllOrderStatus(),'order_status','class = "inputbox" size = "1" id = "order_status"','status_id','name', $order->order_status);

        $tmp_fields = $jshopConfig->getListFieldsRegister();
        $config_fields = $tmp_fields["address"];
        $count_filed_delivery = $jshopConfig->getEnableDeliveryFiledRegistration('address');

        $display_info_only_product = 0;
        if ($jshopConfig->admin_show_vendors && $id_vendor_cuser){
            if ($order->vendor_id!=$id_vendor_cuser) $display_info_only_product = 1;
        }

        $display_block_change_order_status = $order->order_created;
        if ($jshopConfig->admin_show_vendors && $id_vendor_cuser){
            if ($order->vendor_id!=$id_vendor_cuser) $display_block_change_order_status = 0;
            foreach($order_items as $k=>$v){
                if ($v->vendor_id!=$id_vendor_cuser){
                    unset($order_items[$k]);
                }
            }
        }

$stat_download = $order->getFilesStatDownloads(1);

        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onBeforeDisplayOrderAdmin', array(&$order, &$order_items, &$order_history));

        $print = JRequest::getInt("print");
        $order->prepareOrderPrint('order_show');
        $view = $this->getView("orders", 'html');
        $view->setLayout("postlabel");
        $view->assign('config', $jshopConfig);
        $view->assign('order', $order);
        $view->assign('order_history', $order->history);
        $view->assign('order_items', $order_items);
        $view->assign('lists', $lists);
        $view->assign('print', $print);
        $view->assign('config_fields', $config_fields);
        $view->assign('count_filed_delivery', $count_filed_delivery);
        $view->assign('display_info_only_product', $display_info_only_product);
        $view->assign('current_vendor_id', $id_vendor_cuser);
        $view->assign('display_block_change_order_status', $display_block_change_order_status);
        $view->_tmp_ext_discount = '';
        $view->_tmp_ext_shipping_package = '';
$view->assign('stat_download', $stat_download);
        if ($jshopConfig->admin_show_vendors){
            $view->assign('order_vendors', $order_vendors);
        }
        $dispatcher->trigger('onBeforeShowOrder', array(&$view));
        $view->displayShow();
    }
3. В том же файле /administrator/components/com_jshopping/controllers/orders.php в конец файла добавим функцию
Код:
   function printPostlabel(){
        JRequest::setVar("print", 1);
        $this->postlabel();
    }

Пару слов о параметрах
$name_f1 - первая строка "от кого"
$name_f2 - вторая строка "от кого"
$addres_f1 - первая строка "от куда"
$addres_f2 - вторая строка "от куда"
$addres_f3 - третья строка "от куда"
$index_f - индекс отправителя
$np1 - параметр на который ставиться чкбокс "наложенный платеж" и заполняется соответствующие поле прописной суммой, сравнивается с названием метода отправки
заголовок бланка берется из метода отправки
чекбоксы можно ставить перед печатью

p.s. если кто нибудь поможет оформить это в качестве плагина, буду благодарен


* Снимок.jpg (97.44 Кб, 594x500 - просмотрено 63 раз.)
* postlabel_v1.2.zip (17.95 Кб - загружено 17 раз.)
« Последнее редактирование: 15.04.2016, 15:39:50 от Doctor Death » Записан
Doctor Death
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 113



« Ответ #1 : 15.04.2016, 15:41:11 »

внес некоторые исправления в код
Записан
ArtFrank
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #2 : 02.10.2016, 21:03:29 »

Все сделал как описано выше, но ничего не изменилось? Где должен появиться бланк (кнопка его печати)?
Записан
Doctor Death
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 113



« Ответ #3 : 02.10.2016, 23:07:36 »

в списке заказов должна появиться вторая кнопка печати


* Снимок.JPG (106.71 Кб, 1574x484 - просмотрено 15 раз.)
Записан
ArtFrank
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #4 : 03.10.2016, 11:01:52 »

А если заказ был сделан без регистрации, кнопка тоже появится?
Записан
Doctor Death
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 113



« Ответ #5 : 03.10.2016, 11:23:54 »

это неважно
главное чтобы был заказ
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet