Заказы - check_box Лист доставки и кнопка Печатать Есть решение

здравствуйте

вот код, который отвечает за вывод кнопки Печатать в админ панели в заказах http://bit.ly/1ljX5Bl, кнопка работает только для заказов, у которые есть адрес доставки (мне нужно настроить, когда статус у заказа - самовывоз и нет адреса доставки)

<!-- printable docs -->
            {if count($printable_docs)}
            <br>
            <ul class="menu-v compactt js-printable-docs">
                {foreach $printable_docs as $plugin_id => $printable_doc}
                    <li>
                        <label>
                            <input type="checkbox" checked="true" value="{$printable_doc.url|escape}" data-name="{$plugin_id}" data-target="_printform_{$plugin_id}_{$order.id}">
                            {$printable_doc.name|escape}
                        </label>
                    </li>
                {/foreach}
            </ul>
            <input type="button" value="[`Print`]" class="js-printable-docs">
            <br><br>
            {/if}

и вот js-код, который проверяет наличие адреса доставки и открывает вкладку с формой распечатки

$(':button.js-printable-docs').click(function () {
            $('#s-content .js-printable-docs :checkbox').each(function () {
                var $this = $(this);
                var checked = $this.is(':checked');
                $.storage.set('shop/order/print/' + $this.data('name'), checked);
                if (checked) {
                    window.open($(this).val(), $(this).data('target').replace(/\./, '_'));
                }
            });
            return false;
        });

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

Шаблон html, возможно, будет так:

<!-- printable docs -->                       
            <input type="button" value="[`Print`]" class="js-printable-docs">
            <br><br>

т.е. выводить кнопку по-умолчанию, подскажите как заставить отрабатывать js-скрипт, чтобы открывалась печатная форма (в ней адрес доставки не важен, форма вида http://bit.ly/1Si9NKX)?

Спасибо

1 ответ

  • 1
    Vitaliy pp 11 ноября 2015 09:11 # Решение

    разобрался, нужно было добавить функции отвечающие за вывод кнопки и чекбокса в плагин доставки (у меня файлик pickupShipping.class.php) и скопировать шаблон формы в папку

    public function getPrintForms(waOrder $order = null)
        {
            return array(
                'delivery_list' => array(
                    'name'        => _wd('shipping_courier', 'Packing list'),
                    'description' => _wd('shipping_courier', 'Order summary for courier shipping'),
                ),
            );
        }
    
        public function displayPrintForm($id, waOrder $order, $params = array())
        {
            if ($id = 'delivery_list') {
                $view = wa()->getView();
                $main_contact_info = array();
                foreach (array('email', 'phone',) as $f) {
                    if (($v = $order->contact->get($f, 'top,html'))) {
                        $main_contact_info[] = array(
                            'id'    => $f,
                            'name'  => waContactFields::get($f)->getName(),
                            'value' => is_array($v) ? implode(', ', $v) : $v,
                        );
                    }
                }
    
                $formatter = new waContactAddressSeveralLinesFormatter();
                $shipping_address = array();
                foreach (waContactFields::get('address')->getFields() as $k => $v) {
                    if (isset($order->params['shipping_address.'.$k])) {
                        $shipping_address[$k] = $order->params['shipping_address.'.$k];
                    }
                }
    
                $shipping_address_text = array();
                foreach (array('country_name', 'region_name', 'zip', 'city', 'street') as $k) {
                    if (!empty($order->shipping_address[$k])) {
                        $shipping_address_text[] = $order->shipping_address[$k];
                    }
                }
    
                $shipping_address_text = implode(', ', $shipping_address_text);
                $map = '';
                if ($shipping_address_text) {
                    $map_adapter = $this->getSettings('map');
                    if (!$map_adapter) {
                        $map_adapter = 'google';
                    }
                    try {
                        $map = wa()->getMap($map_adapter)->getHTML($shipping_address_text, array(
                            'width' => '100%', 'height' => '350pt', 'zoom' => 16
                        ));
                    } catch (waException $e) {
                        $map = '';
                    }
                }
                $view->assign('map', $map);
    
                $shipping_address = $formatter->format(array('data' => $shipping_address));
                $shipping_address = $shipping_address['value'];
    
                $view->assign(compact('shipping_address_text', 'shipping_address', 'main_contact_info', 'order', 'params'));
                $view->assign('p', $this);
                return $view->fetch($this->path.'/templates/form.html');
            } else {
                throw new waException('Print form not found');
            }
        }

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите