Новости

  • Внимание! Вы попали на старый форум. Новый форум, посвященный проекту Shopker находится по адресу: forum.shopker.org

    Последние темы


Записки велосипедиста №3. Печать заказов из под админки (простая версия).

  • Добрейшего времени суток. Решил предложить один из самых простых вариантов для печати заказа из под админки. Чуть позже будет "продвинутая" система с плюшками, вроде печати нескольких заказов
    Attention/внимание/увага/piesardzība - решение простое, ничего не сломает. Но предупреждаю - оно колхозное.

    Шаг №1
    Открываем /assets/components/shopkeeper3/mgr/css/shk-style.css и вставляем в конец файла:

    @media print {           
        #modx-header, #modx-leftbar, #x-plain-bwrap, #ext-gen21, .amod-container-b, .modal-footer, .nav-tabs, .modal-header {
        display: none !important;
            
        }
        
        #modx-content {
        width: 100% !important;
        left: 0px !important;
        }
               
        .modal-content {
            border: none !important;
            box-shadow: none !important;
        }
    }
    

    Шаг №2
    Открываем /core/components/shopkeeper3/templates/home.tpl , находим строку 297 (перед </uib-tabset>) и вставляем код:

    <!-- печать заказа -->
                <uib-tab heading="Печать" onclick="window.print();">
                    
                    <div id="print_field">
                         <div style="page-break-after: always;">
                            <h1>Заказ {{data.order.id}}</h1>
                            <table class="table table-bordered">
                               <thead>
                                  <tr>
                                     <td style="width: 50%;">Данные заказчика</td>
                                     <td style="width: 50%;">Информация о заказе</td>
                                  </tr>
                               </thead>
                               <tbody>
                                  <tr>
                                     <td style="width: 50%;">
                                       <span ng-repeat="item in data.order.contacts">
                                            <b>{{item.label}}:</b>
                                            {{item.value}} <br>
                                        </span> 
                                     </td>
                                     <td style="width: 50%;">
                                        <b>Время добавления</b> {{data.order.date}}<br>
                                        <b>№ Заказа</b> {{data.order.id}}<br>
                                        <b>Способ оплаты</b> {{data.order.payment}}<br>
                                        <b>Способ доставки</b> {{data.order.delivery}}<br>
                                     </td>
                                  </tr>
                               </tbody>
                            </table>
            
                            <table class="table table-bordered">
                               <thead>
                                  <tr>
                                     <td><b>#</b></td>
                                     <td><b>ID товара</b></td>
                                     <td><b>Товар</b></td>
                                     <td><b>Параметры</b></td>
                                     <td class="text-right"><b>Количество</b></td>
                                     <td class="text-right"><b>Цена за единицу</b></td>
                                  </tr>
                               </thead>
                               <tbody>
                                   <tr ng-repeat="item in data.order.purchases">
                                            <td>{{$index+1}}</td>
                                            <td>{{item.p_id}}</td>
                                            <td>{{item.name}}</td>
                                            <td>
                                                <div ng-repeat="opt in item.options">{{ opt[0] }}</div>
                                            </td>
                                            <td>{{item.count}}</td>
                                            <td>{{item.price | number: 2}}</td>
                                        </tr>
                                  <tr>
                                     <td class="text-right" colspan="5"><b>{{data.order.delivery}}</b></td>
                                     <td class="text-right">{{data.order.delivery_price}} {{data.order.currency}}</td>
                                  </tr>
                                  <tr>
                                     <td class="text-right" colspan="5"><b>Итого</b></td>
                                     <td class="text-right">{{data.total_price | number: 2}} {{data.order.currency}}</td>
                                  </tr>
                               </tbody>
                            </table>
                         </div>
                      </div>
                    
                </uib-tab>
                <!-- печать заказа -->
    

    Получается вот такой результат:
    0_1488808041431_2.png
    0_1488808023904_1.png

  • А если заказов много, то этот вариант не подходит

  • Участник @JaGGer написал в Записки велосипедиста №3. Печать заказов из под админки (простая версия).:

    А если заказов много, то этот вариант не подходит

    Почему?

  • @Andchir Если товаров много, то и на документе A4 например не вмещаются все товары а новые страницы Chrome не создал

  • @JaGGer
    Теперь понятно, выше вы писали "если заказов много". Заказы и товары это разные вещи.

  • @Andchir Согласен! Прошу прощения, ошибся 😊

  • Немного доработал получаемый результат:

    Шаг №2
    Открываем /core/components/shopkeeper3/templates/home.tpl , находим строку 297 (перед </uib-tabset>) и вставляем код:

    <!-- печать заказа -->
                
                <uib-tab heading="Печать" onclick="window.print();">
                    
                    <div id="print_field">
                        <div style="page-break-after: always;">
                            <table class="table">
                                <tbody>
                                    <tr>
                                        <td style="width: 50%;">
                                            <img src="https://ваш_логотип/logo.png">
                                        </td>
                                        <td style="width: 50%;">
                                            <b><h4>Заказ №{{data.order.id}}</h4></b>
                                            <b>Телефон:</b> 8 ваш_телефон<br>
                                            <b>E-mail:</b> info@ваш_домен.ru<br>
                                            <b>Url:</b> https://ваш_URL.ru/
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                            <table class="table table-bordered">
                               <thead>
                                  <tr>
                                     <td style="width: 50%;">Данные заказчика</td>
                                     <td style="width: 50%;">Информация о заказе</td>
                                  </tr>
                               </thead>
                               <tbody>
                                  <tr>
                                     <td style="width: 50%;">
                                       <span ng-repeat="item in data.order.contacts">
                                            <b>{{item.label}}:</b>
                                            {{item.value}} <br>
                                        </span> 
                                     </td>
                                     <td style="width: 50%;">
                                        <b>Время добавления</b> {{data.order.date}}<br>
                                        <b>Заказ №</b> {{data.order.id}}<br>
                                        <b>Способ оплаты</b> {{data.order.payment}}<br>
                                        <b>Способ доставки</b> {{data.order.delivery}}<br>
                                     </td>
                                  </tr>
                               </tbody>
                            </table>
                            
                            <div class="alert alert-sm alert-warning" role="alert" ng-show="data.order.note">
                            <span class="glyphicon glyphicon-info-sign"> Подарочная карта/Накопительная скидка </span>
                            &nbsp;
                            {{data.order.note}}
                            </div>
                            <table class="table table-bordered">
                                <colgroup>
                                    <col width="5%">
                                    <col width="10%">
                                    <col width="25%">
                                    <col width="15%">
                                    <col width="10%">
                                    <col width="15%">
                                    <col width="20%">
                                </colgroup>
                                <thead>
                                    <tr>
                                       <td class="center"><b>#</b></td>
                                       <td class="center"><b>ID</b></td>
                                       <td><b>Товар</b></td>
                                       <td class="center"><b>Параметры</b></td>
                                       <td class="center"><b>Кол-во</b></td>
                                       <td class="center"><b>Цена за ед.</b></td>
                                       <td class="center"><b>Всего</b></td>
                                    </tr>
                                </thead>
                                <tbody class="page-break">
                                    <tr ng-repeat="item in data.order.purchases">
                                        <td class="center">{{$index+1}}</td>
                                        <td class="center">{{item.p_id}}</td>
                                        <td>{{item.name}}</td>
                                        <td class="center"><div ng-repeat="opt in item.options">{{ opt[0] }}</div></td>
                                        <td class="center">{{item.count}}</td>
                                        <td class="center">{{item.price | number: 2}} {{data.order.currency}}</td>
                                        <td class="center">{{item.price*item.count | number: 2}} {{data.order.currency}}</td>
                                    </tr>
                                    <tr>
                                       <td class="text-right" colspan="6"><b>{{data.order.delivery}}</b></td>
                                       <td  class="center">{{data.order.delivery_price}} {{data.order.currency}}</td>
                                    </tr>
                                    <tr>
                                       <td class="text-right" colspan="6"><b>Итого</b></td>
                                       <td  class="center">{{data.total_price | number: 2}} {{data.order.currency}}</td>
                                    </tr>
                               </tbody>
                            </table>
                         </div>
                      </div>
                    
                </uib-tab>
                
                <!-- печать заказа -->
    

    И получаем вот такой красивый вывод:

    ![alt text](0_1579139942401_Управление заказами (SHK 3) _ Scrap Panda Home.jpg image url)

  • Единственное что так и не победил пока, так это разбивку на постраничную печать, специально положил в корзину более 10 товаров и получил простынь, которую приходится печатать в 2 захода. ☹
    page-break-after: auto не помогает.
    Как найду решение, выложу.

 

Последние комментарии

  • @Hunter-38
    Нужно заново регистрироваться, т.к. там отдельный форум. Этот форум оставлен, потому что есть полезная информация по шопкиперу.

    Читать далее
  • H

    на новом форуме опять регистрация проходить или можно с этими данными?
    с этими меня не пустило

    Читать далее
  • H

    @Andchir перезалил, меню с мобилки норм
    только потерлись записи о Магазине, Контакты и тп..

    Читать далее