0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 561 Просмотров
*

Doctor Death

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

в архиве три файла
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. если кто нибудь поможет оформить это в качестве плагина, буду благодарен
« Последнее редактирование: 15.04.2016, 14:39:50 от Doctor Death »
*

Doctor Death

  • Осваиваюсь на форуме
  • 115
  • 1
внес некоторые исправления в код
*

ArtFrank

  • Захожу иногда
  • 21
  • 0
Все сделал как описано выше, но ничего не изменилось? Где должен появиться бланк (кнопка его печати)?
*

Doctor Death

  • Осваиваюсь на форуме
  • 115
  • 1
в списке заказов должна появиться вторая кнопка печати
*

ArtFrank

  • Захожу иногда
  • 21
  • 0
А если заказ был сделан без регистрации, кнопка тоже появится?
*

Doctor Death

  • Осваиваюсь на форуме
  • 115
  • 1
это неважно
главное чтобы был заказ
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить в тело письма (orderemail.php) зависимые переменные?

Автор Simple-t

Ответов: 9
Просмотров: 268
Последний ответ 23.03.2017, 01:18:02
от Simple-t
Сумма заказа в теме письма

Автор timson

Ответов: 7
Просмотров: 528
Последний ответ 30.05.2016, 10:22:46
от dmitry_stas
Отслеживание почтовых отправление! - Реально ли внедрить в JS если есть скрипт?

Автор aLLex177

Ответов: 35
Просмотров: 6567
Последний ответ 13.06.2015, 20:24:23
от vurazov
Генерация письма с заказом

Автор vaganov

Ответов: 1
Просмотров: 586
Последний ответ 30.04.2013, 10:13:27
от nevigen