app/template/admin/Order/index.twig line 1

Open in your IDE?
  1. {#
  2. This file is part of EC-CUBE
  3. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  4. http://www.ec-cube.co.jp/
  5. For the full copyright and license information, please view the LICENSE
  6. file that was distributed with this source code.
  7. #}
  8. {% extends '@admin/default_frame.twig' %}
  9. {% set menus = ['order', 'order_master'] %}
  10. {% block title %}{{ 'admin.order.order_list'|trans }}{% endblock %}
  11. {% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %}
  12. {% form_theme searchForm '@admin/Form/bootstrap_4_layout.html.twig' %}
  13. {% block javascript %}
  14.     <script>
  15.         $(function() {
  16.             toggleBtnBulk('input[id^="check_"]', '.btn-bulk-wrapper');
  17.             $('input[id^="check_"]').on('change', function() {
  18.                 $('#toggle_check_all').prop('checked', false);
  19.                 toggleBtnBulk('input[id^="check_"]', '.btn-bulk-wrapper');
  20.             });
  21.             // 登録チェックボックス
  22.             $('#toggle_check_all').on('change', function() {
  23.                 var checked = $(this).prop('checked');
  24.                 if (checked) {
  25.                     $('input[id^="check_"]').prop('checked', true);
  26.                 } else {
  27.                     $('input[id^="check_"]').prop('checked', false);
  28.                 }
  29.                 toggleBtnBulk('input[id^="check_"]', '.btn-bulk-wrapper');
  30.             });
  31.             $('#btn_bulk_delete').on('click', function(event) {
  32.                 event.preventDefault();
  33.                 $('#form_bulk').attr('action', "{{ url('admin_order_bulk_delete') }}").submit();
  34.                 return false;
  35.             });
  36.             // bulkSendMultiMail
  37.             $('#bulkSendMultiMail').on('click', function(event) {
  38.                 $('#form_bulk').attr('action', "{{ url('admin_order_mail_cust') }}");
  39.                 $('#form_bulk').submit();
  40.                 return false;
  41.             });
  42.             // PDF出力(複数)
  43.             $('#bulkExportPdf').on('click', function(event) {
  44.                 window.open('', 'newwin', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=700, height=700');
  45.                 $('#form_bulk').attr('action', "{{ url('admin_order_export_pdf') }}");
  46.                 $('#form_bulk').attr('target', 'newwin');
  47.                 $('#form_bulk').submit();
  48.                 return false;
  49.             });
  50.             // PDF出力(単一)
  51.             $('.pdf-print').click(function() {
  52.                 window.open(this.href, 'newwin', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=700, height=700');
  53.                 return false;
  54.             });
  55.             // 送り状番号
  56.             var updateTrackingNumber = function(id, url, tracking_number, callback) {
  57.                 $.ajax({
  58.                     type: 'PUT',
  59.                     url: url,
  60.                     data: {'tracking_number': tracking_number}
  61.                 }).done(function(data, textStatus, jqXHR) {
  62.                     if (data['status'] == 'OK') {
  63.                         $('#tracking_number_' + id).val(data['tracking_number']);
  64.                         if (typeof callback == 'function') {
  65.                             callback();
  66.                         }
  67.                     } else {
  68.                         alert('Update failed.');
  69.                     }
  70.                     return true;
  71.                 }).fail(function(jqXHR, textStatus, errorThrown) {
  72.                     var response = JSON.parse(jqXHR.responseText);
  73.                     var messages = '';
  74.                     for (var i = 0; i < response.messages.length; i++) {
  75.                         messages += response.messages[i] + "\n";
  76.                     }
  77.                     alert(messages);
  78.                     return false;
  79.                 });
  80.             };
  81.             $('button.update_tracking_number').prop('disabled', true);
  82.             // フォームに変更があったら更新ボタンを有効にする
  83.             $('input.update_tracking_number').on('keyup', function(event) {
  84.                 var $tracking_number = $(this);
  85.                 var $button = $("button[data-target='#" + $tracking_number.attr('id') + "']");
  86.                 $button.prop('disabled', false);
  87.                 $button.children('i')
  88.                     .removeClass('text-secondary')
  89.                     .addClass('text-success');
  90.             });
  91.             // enter キーで更新し、次のフォームへフォーカスを移動する
  92.             $('input.update_tracking_number').on('keypress', function(event) {
  93.                 var $tracking_number = $(this);
  94.                 var $button = $("button[data-target='#" + $tracking_number.attr('id') + "']");
  95.                 var code = event.which ? event.which : event.keyCode;
  96.                 if (code == 13) { // on press to enter
  97.                     var index = $('input.update_tracking_number').index(this);
  98.                     var callback = function() {
  99.                         $button.prop('disabled', true);
  100.                         $button.children('i')
  101.                             .removeClass('text-success')
  102.                             .addClass('text-secondary');
  103.                         $('input.update_tracking_number:gt(' + index + '):first').focus();
  104.                     };
  105.                     updateTrackingNumber($tracking_number.data('shipping_id'), $tracking_number.data('url'), $tracking_number.val(), callback);
  106.                     event.preventDefault();
  107.                 }
  108.             });
  109.             // 更新ボタンの制御
  110.             $('button.update_tracking_number').on('click', function(event) {
  111.                 event.preventDefault();
  112.                 var $button = $(this);
  113.                 var $target = $($(this).data('target'));
  114.                 var tracking_number = $target.val();
  115.                 var callback = function() {
  116.                     $button.prop('disabled', true);
  117.                     $button.children('i')
  118.                         .removeClass('text-success')
  119.                         .addClass('text-secondary');
  120.                 };
  121.         updateTrackingNumber($target.data('shipping_id'), $target.data('url'), tracking_number, callback);
  122.     });
  123.     // 完了ボタン
  124.     $('#bulkChangeComplete').on('click', function() {
  125.         location.href = '{{ url('admin_order', { 'resume': 1 }) }}';
  126.     });
  127. });
  128. </script>
  129. {{ include('@admin/Order/confirmationModal_js.twig') }}
  130. {% endblock javascript %}
  131. {% block main %}
  132.     <!--検索条件設定テーブルここから-->
  133.     <div class="c-outsideBlock">
  134.         <form name="search_form" id="search_form" method="POST" action="{{ url('admin_order') }}">
  135.             <div class="c-outsideBlock__contents">
  136.                 <div class="row">
  137.                     <div class="col-12">
  138.                         {{ form_widget(searchForm._token) }}
  139.                         <div>
  140.                             <label class="col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.multi_search_label'|trans }}">{{ 'admin.order.multi_search_label'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  141.                             {{ form_widget(searchForm.multi) }}
  142.                             {{ form_errors(searchForm.multi) }}
  143.                         </div>
  144.                         <div class="row">
  145.                             <div class="mb-3 col-12">
  146.                                 <label class="col-form-label"  data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.order_search_status'|trans }}">{{ 'admin.order.order_status'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  147.                                 <div id="admin_search_order_status">
  148.                                     {% set statusForm = searchForm.status %}
  149.                                     <!-- 各対応状況の件数を表示する -->
  150.                                     {% for status_id, child in statusForm.children %}
  151.                                         <div class="form-check form-check-inline">
  152.                                             <input type="checkbox"
  153.                                                    id="{{ child.vars.id }}"
  154.                                                    name="{{ child.vars.full_name }}"
  155.                                                    class="form-check-input"
  156.                                                    value="{{ child.vars.value }}"{{ child.vars.checked ? ' checked="checked"' }}>
  157.                                             <label class="form-check-label" for="{{ child.vars.id }}">{{ child.vars.label }}</label>
  158.                                             {%- if statusForm.vars.order_count[status_id].display -%}
  159.                                                 (<a href="{{ url('admin_order', { 'order_status_id': status_id }) }}">{{ statusForm.vars.order_count[status_id].count }}</a>)
  160.                                             {%- endif %}
  161.                                         </div>
  162.                                     {% endfor %}
  163.                                 </div>
  164.                                 {{ form_errors(searchForm.status) }}
  165.                             </div>
  166.                         </div>
  167.                         <div class="d-inline-block mb-3 collapsed" data-bs-toggle="collapse" href="#searchDetail" aria-expanded="false" aria-controls="searchDetail">
  168.                             <a>
  169.                                 <i class="fa fw-bold me-1 fa-plus-square-o">
  170.                                     <span class="fw-bold">{{ 'admin.common.search_detail'|trans }}</span>
  171.                                 </i>
  172.                             </a>
  173.                         </div>
  174.                     </div>
  175.                 </div>
  176.             </div>
  177.             <div class="c-subContents ec-collapse collapse{{ has_errors ? ' show' }}" id="searchDetail">
  178.                 <div class="row">
  179.                     <div class="col">
  180.                         <label class="col-form-label">{{ 'admin.order.orderer_name'|trans }}</label>
  181.                         {{ form_widget(searchForm.name) }}
  182.                         {{ form_errors(searchForm.name) }}
  183.                     </div>
  184.                     <div class="col">
  185.                         <div class="row">
  186.                             <div class="col-12">
  187.                                 <p class="col-form-label">{{ 'admin.common.payment_method'|trans }}</p>
  188.                                 {{ form_widget(searchForm.payment, { 'label_attr': { 'class': 'checkbox-inline'}}) }}
  189.                                 {{ form_errors(searchForm.payment) }}
  190.                             </div>
  191.                         </div>
  192.                     </div>
  193.                 </div>
  194.                 <div class="row">
  195.                     <div class="col">
  196.                         <label class="col-form-label">{{ 'admin.order.orderer_kana'|trans }}</label>
  197.                         {{ form_widget(searchForm.kana) }}
  198.                         {{ form_errors(searchForm.kana) }}
  199.                     </div>
  200.                     <div class="col">
  201.                         <label class="col-form-label">{{ 'admin.order.order_date'|trans }}</label>
  202.                         <div class="row align-items-center">
  203.                             <div class="col">
  204.                                 {{ form_widget(searchForm.order_datetime_start) }}
  205.                                 {{ form_errors(searchForm.order_datetime_start) }}
  206.                             </div>
  207.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  208.                             <div class="col">
  209.                                 {{ form_widget(searchForm.order_datetime_end) }}
  210.                                 {{ form_errors(searchForm.order_datetime_end) }}
  211.                             </div>
  212.                         </div>
  213.                     </div>
  214.                 </div>
  215.                 <div class="row">
  216.                     <div class="col">
  217.                         <label class="col-form-label">{{ 'admin.order.orderer_company_name'|trans }}</label>
  218.                         {{ form_widget(searchForm.company_name) }}
  219.                         {{ form_errors(searchForm.company_name) }}
  220.                     </div>
  221.                     <div class="col">
  222.                         <label class="col-form-label">{{ 'admin.order.payment_date'|trans }}</label>
  223.                         <div class="row align-items-center">
  224.                             <div class="col">
  225.                                 {{ form_widget(searchForm.payment_datetime_start) }}
  226.                                 {{ form_errors(searchForm.payment_datetime_start) }}
  227.                             </div>
  228.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  229.                             <div class="col">
  230.                                 {{ form_widget(searchForm.payment_datetime_end) }}
  231.                                 {{ form_errors(searchForm.payment_datetime_end) }}
  232.                             </div>
  233.                         </div>
  234.                     </div>
  235.                 </div>
  236.                 <div class="row">
  237.                     <div class="col">
  238.                         <label class="col-form-label">{{ 'admin.common.mail_address'|trans }}</label>
  239.                         {{ form_widget(searchForm.email) }}
  240.                         {{ form_errors(searchForm.email) }}
  241.                     </div>
  242.                     <div class="col">
  243.                         <label class="col-form-label">{{ 'admin.common.update_date'|trans }}</label>
  244.                         <div class="row align-items-center">
  245.                             <div class="col">
  246.                                 {{ form_widget(searchForm.update_datetime_start) }}
  247.                                 {{ form_errors(searchForm.update_datetime_start) }}
  248.                             </div>
  249.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  250.                             <div class="col">
  251.                                 {{ form_widget(searchForm.update_datetime_end) }}
  252.                                 {{ form_errors(searchForm.update_datetime_end) }}
  253.                             </div>
  254.                         </div>
  255.                     </div>
  256.                 </div>
  257.                 <div class="row">
  258.                     <div class="col">
  259.                         <label class="col-form-label">{{ 'admin.common.phone_number'|trans }}</label>
  260.                         {{ form_widget(searchForm.phone_number) }}
  261.                         {{ form_errors(searchForm.phone_number) }}
  262.                     </div>
  263.                     <div class="col">
  264.                         <label class="col-form-label">{{ 'admin.common.create_date'|trans }}</label>
  265.                         <div class="row align-items-center">
  266.                             <div class="col">
  267.                                 {{ form_widget(searchForm.create_datetime_start) }}
  268.                                 {{ form_errors(searchForm.create_datetime_start) }}
  269.                             </div>
  270.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  271.                             <div class="col">
  272.                                 {{ form_widget(searchForm.create_datetime_end) }}
  273.                                 {{ form_errors(searchForm.create_datetime_end) }}
  274.                             </div>
  275.                         </div>
  276.                     </div>
  277.                 </div>
  278.                 <div class="row">
  279.                     <div class="col">
  280.                         <label class="col-form-label">{{ 'admin.order.order_no'|trans }}</label>
  281.                         {{ form_widget(searchForm.order_no) }}
  282.                         {{ form_errors(searchForm.order_no) }}
  283.                     </div>
  284.                     <div class="col">
  285.                         <label class="col-form-label">{{ 'admin.order.delivery_date'|trans }}</label>
  286.                         <div class="row align-items-center">
  287.                             <div class="col">
  288.                                 <div class="input-group">
  289.                                     {{ form_widget(searchForm.shipping_delivery_datetime_start) }}
  290.                                     {{ form_errors(searchForm.shipping_delivery_datetime_start) }}
  291.                                 </div>
  292.                             </div>
  293.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  294.                             <div class="col">
  295.                                 <div class="input-group">
  296.                                     {{ form_widget(searchForm.shipping_delivery_datetime_end) }}
  297.                                     {{ form_errors(searchForm.shipping_delivery_datetime_end) }}
  298.                                 </div>
  299.                             </div>
  300.                         </div>
  301.                     </div>
  302.                 </div>
  303.                 <div class="row">
  304.                     <div class="col">
  305.                         <div class="row">
  306.                             <div class="col-12">
  307.                                 <p class="col-form-label">{{ 'admin.order.tracking_number'|trans }}</p>
  308.                                 {{ form_widget(searchForm.tracking_number) }}
  309.                                 {{ form_errors(searchForm.tracking_number) }}
  310.                             </div>
  311.                         </div>
  312.                     </div>
  313.                     <div class="col">
  314.                         <label class="col-form-label">{{ 'admin.order.shipping_date'|trans }}</label>
  315.                         <div class="row align-items-center">
  316.                             <div class="col">
  317.                                 <div class="input-group">
  318.                                     {{ form_widget(searchForm.shipping_datetime_start) }}
  319.                                     {{ form_errors(searchForm.shipping_datetime_start) }}
  320.                                 </div>
  321.                             </div>
  322.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  323.                             <div class="col">
  324.                                 <div class="input-group">
  325.                                     {{ form_widget(searchForm.shipping_datetime_end) }}
  326.                                     {{ form_errors(searchForm.shipping_datetime_end) }}
  327.                                 </div>
  328.                             </div>
  329.                         </div>
  330.                     </div>
  331.                 </div>
  332.                 <div class="row">
  333.                     <div class="col">
  334.                         <label class="col-form-label">{{ 'admin.order.purchase_product_id'|trans }}</label>
  335.                         {{ form_widget(searchForm.buy_product_id) }}
  336.                         {{ form_errors(searchForm.buy_product_id) }}
  337.                     </div>
  338.                     <div class="col">
  339.                         <label class="col-form-label">{{ 'admin.order.purchase_product'|trans }}</label>
  340.                         {{ form_widget(searchForm.buy_product_name) }}
  341.                         {{ form_errors(searchForm.buy_product_name) }}
  342.                     </div>
  343.                 </div>
  344.                 <div class="row">
  345.                     <div class="col">
  346.                         <label class="col-form-label">{{ 'admin.order.purchase_product_artist'|trans }}</label>
  347.                         {{ form_widget(searchForm.buy_product_artist) }}
  348.                         {{ form_errors(searchForm.buy_product_artist) }}
  349.                     </div>
  350.                     <div class="col">
  351.                         <label class="col-form-label">{{ 'admin.order.purchase_product_code'|trans }}</label>
  352.                         {{ form_widget(searchForm.buy_product_code) }}
  353.                         {{ form_errors(searchForm.buy_product_code) }}
  354.                     </div>
  355.                 </div>
  356.                 <div class="row">
  357.                     <div class="col col-md-6">
  358.                         <label class="col-form-label">{{ 'admin.order.purchase_price'|trans }}</label>
  359.                         <div class="row align-items-center">
  360.                             <div class="col">
  361.                                 <div class="input-group">
  362.                                     {{ form_widget(searchForm.payment_total_start) }}
  363.                                     {{ form_errors(searchForm.payment_total_start) }}
  364.                                 </div>
  365.                             </div>
  366.                             <div class="col-auto text-center">{{ 'admin.common.separator__range'|trans }}</div>
  367.                             <div class="col">
  368.                                 <div class="input-group">
  369.                                     {{ form_widget(searchForm.payment_total_end) }}
  370.                                     {{ form_errors(searchForm.payment_total_end) }}
  371.                                 </div>
  372.                             </div>
  373.                         </div>
  374.                     </div>
  375.                 </div>
  376.                 <div class="row mb-2">
  377.                     <div class="col">
  378.                         <div class="row">
  379.                             <div class="col-12">
  380.                                 <p class="col-form-label">{{ 'admin.customer.black_status'|trans }}</p>
  381.                                 {{ form_widget(searchForm.BlackStatus,  { 'label_attr': { 'class': 'checkbox-inline' }}) }}
  382.                                 {{ form_errors(searchForm.BlackStatus) }}
  383.                             </div>
  384.                         </div>
  385.                     </div>
  386.                     <div class="col">
  387.                         <div class="row">
  388.                             <div class="col-12">
  389.                                 <p class="col-form-label">{{ 'admin.order.shipping_mail'|trans }}</p>
  390.                                 {{ form_widget(searchForm.shipping_mail,  { 'label_attr': { 'class': 'checkbox-inline' }}) }}
  391.                                 {{ form_errors(searchForm.shipping_mail) }}
  392.                             </div>
  393.                         </div>
  394.                     </div>
  395.                 </div>
  396.                 {# エンティティ拡張の自動出力 #}
  397.                 {% for f in searchForm|filter(f => f.vars.eccube_form_options.auto_render) %}
  398.                     {# TODO 1項目1行になるのを改善 #}
  399.                     <div class="row mb-2">
  400.                         {% if f.vars.eccube_form_options.form_theme %}
  401.                             {% form_theme f f.vars.eccube_form_options.form_theme %}
  402.                             {{ form_row(f) }}
  403.                         {% else %}
  404.                             <div class="col">
  405.                                 <div class="mb-3">
  406.                                     <label>{{ f.vars.label|trans }}</label>
  407.                                     {{ form_widget(f) }}
  408.                                     {{ form_errors(f) }}
  409.                                 </div>
  410.                             </div>
  411.                         {% endif %}
  412.                     </div>
  413.                 {% endfor %}
  414.             </div>
  415.             <div class="c-outsideBlock__contents">
  416.                 <div class="row">
  417.                     <div class="mb-4">
  418.                         <div class="col-12">
  419.                             <button class="btn btn-ec-conversion px-5" type="submit" id="search_submit">{{ 'admin.common.search'|trans }}</button>
  420.                             {% if pagination %}
  421.                                 <span class="fw-bold ms-2" id="search_total_count">{{ 'admin.common.search_result'|trans({"%count%":pagination.totalItemCount})|raw }}</span>
  422.                             {% endif %}
  423.                         </div>
  424.                     </div>
  425.                 </div>
  426.             </div>
  427.             <div class="c-outsideBlock__contents mb-5">
  428.                 {{ include('@admin/search_items.twig', { 'form': searchForm }, ignore_missing = true) }}
  429.             </div>
  430.             {{ form_widget(searchForm.sortkey, {'attr': {'class': 'js-listSort-key'}}) }}
  431.             {{ form_widget(searchForm.sorttype, {'attr': {'class': 'js-listSort-type'}}) }}
  432.         </form>
  433.     </div>
  434.     <!--検索条件設定テーブルここまで-->
  435.     <div class="c-contentsArea__cols">
  436.         <div class="c-contentsArea__primaryCol">
  437.             <div class="c-primaryCol">
  438.                 {% if pagination and pagination.totalItemCount %}
  439.                     <form id="form_bulk" method="POST" action="">
  440.                         <input type="hidden" name="{{ constant('Eccube\\Common\\Constant::TOKEN_NAME') }}" value="{{ csrf_token(constant('Eccube\\Common\\Constant::TOKEN_NAME')) }}">
  441.                         <div class="row justify-content-between mb-2">
  442.                             <div class="col-7">
  443.                                 <div class="row justify-content-between">
  444.                                     <div class="col-auto d-none btn-bulk-wrapper">
  445.                                         <label class="me-2" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.bulk_actions'|trans }}">{{ 'admin.common.bulk_actions'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  446.                                         {# <button id="bulkSendMail" type="button" class="btn btn-ec-regular me-2" data-type="mail" data-bulk-update="true">
  447.                                             {{ 'admin.order.send_mail'|trans }}
  448.                                         </button> #}
  449.                                         <button type="button" id="bulkSendMultiMail" class="btn btn-ec-regular me-2">{{ 'admin.order.send_mail'|trans }}</button>
  450.                                         <button type="button" id="bulkExportPdf" class="btn btn-ec-regular me-2">{{ 'admin.order.output_delivery_note_short'|trans }}</button>
  451.                                         {# TODO 削除処理は将来バージョンで対応 <button type="button" class="btn btn-ec-delete" data-bs-toggle="modal" data-bs-target="#bulkDeleteModal">{{ 'admin.common.delete'|trans }}</button> #}
  452.                                     </div>
  453.                                     <div class="col d-none btn-bulk-wrapper">
  454.                                         <div class="d-inline-block me-2">
  455.                                             <select class="form-select" id="option_bulk_status">
  456.                                                 <option value="" selected>{{ 'admin.order.change_status'|trans }}</option>
  457.                                                 {% for status in OrderStatuses %}
  458.                                                     <option value="{{ status.id }}">{{ status.name }}</option>
  459.                                                 {% endfor %}
  460.                                             </select>
  461.                                         </div>
  462.                                         <button type="button" id="btn_bulk_status" class="btn btn-ec-regular me-2 progressModal" data-type="status" data-bulk-update="true" data-submit="bulk">
  463.                                             {{ 'admin.common.decision'|trans }}
  464.                                         </button>
  465.                                     </div>
  466.                                 </div>
  467.                             </div>
  468.                             <div class="col-5 text-end">
  469.                                 <div class="d-inline-block align-bottom">
  470.                                     <select class="form-select" onchange="location = this.value;">
  471.                                         {% for pageMax in pageMaxis %}
  472.                                             <option {% if pageMax.name == page_count %} selected {% endif %}
  473.                                                     value="{{ path('admin_order_page', {'page_no': 1, 'page_count': pageMax.name}) }}">
  474.                                                 {{ 'admin.common.count'|trans({ '%count%': pageMax.name }) }}</option>
  475.                                         {% endfor %}
  476.                                     </select>
  477.                                 </div>
  478.                                 <div class="d-inline-block">
  479.                                     <div class="btn-group" role="group">
  480.                                         <div class="btn-group" role="group">
  481.                                             <button type="button" class="btn btn-ec-regular" data-bs-toggle="dropdown" id="csvDownloadDropDown">
  482.                                                 <i class="fa fa-cloud-download me-1 text-secondary"></i>
  483.                                                 <span>{{ 'admin.common.csv_download'|trans }}</span>
  484.                                             </button>
  485.                                             <div class="dropdown-menu">
  486.                                                 <a class="dropdown-item" href="{{ url('admin_order_export_order') }}" id="orderCsvDownload">
  487.                                                     {{ 'admin.order.order_csv'|trans }}
  488.                                                 </a>
  489.                                                 <a class="dropdown-item" href="{{ url('admin_order_export_shipping') }}" id="shippingCsvDownload">
  490.                                                     {{ 'admin.order.shipping_csv'|trans }}
  491.                                                 </a>
  492.                                             </div>
  493.                                         </div>
  494.                                         <div class="btn-group" role="group">
  495.                                             <button type="button" class="btn btn-ec-regular" data-bs-toggle="dropdown" id="csvSettingDropDown">
  496.                                                 <i class="fa fa-cog me-1 text-secondary"></i>
  497.                                                 <span>{{ 'admin.setting.shop.csv_setting'|trans }}</span>
  498.                                             </button>
  499.                                             <div class="dropdown-menu">
  500.                                                 <a class="dropdown-item" href="{{ url('admin_setting_shop_csv', { id : constant('\\Eccube\\Entity\\Master\\CsvType::CSV_TYPE_ORDER') }) }}" id="orderCsvSetting">
  501.                                                     {{ 'admin.order.order_csv'|trans }}
  502.                                                 </a>
  503.                                                 <a class="dropdown-item" href="{{ url('admin_setting_shop_csv', { id : constant('\\Eccube\\Entity\\Master\\CsvType::CSV_TYPE_SHIPPING') }) }}" id="shippingCsvSetting">
  504.                                                     {{ 'admin.order.shipping_csv'|trans }}
  505.                                                 </a>
  506.                                             </div>
  507.                                         </div>
  508.                                     </div>
  509.                                 </div>
  510.                             </div>
  511.                         </div>
  512.                         <div class="card rounded border-0 mb-4 d-block">
  513.                             <div class="card-body p-0">
  514.                                 <table class="table table-sm" id="search_result">
  515.                                     <thead>
  516.                                     <tr>
  517.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle ps-3">
  518.                                             <input type="checkbox" id="toggle_check_all" name="filter" value="open">
  519.                                         </th>
  520.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.common.id'|trans }}<a href="#" class="js-listSort" data-sortkey="orderer"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>{{ 'admin.order.orderer'|trans }}<a href="#" class="js-listSort" data-sortkey="order"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  521.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle text-nowrap">{{ 'admin.common.payment_method'|trans }}<a href="#" class="js-listSort" data-sortkey="payment_method"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  522.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.order.order_status'|trans }}<a href="#" class="js-listSort" data-sortkey="order_status"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  523.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">
  524.                                             <div class="d-flex align-items-center justify-content-center">
  525.                                                 <span>
  526.                                                     {{ 'admin.order.purchase_price'|trans }}(円)
  527.                                                     <br />
  528.                                                     {{ 'admin.product.product_code'|trans }}
  529.                                                 </span>
  530.                                                 <a href="#" class="js-listSort" data-sortkey="purchase_price"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  531.                                             </div>
  532.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.order.message_short'|trans }}</th>
  533.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle text-nowrap">{{ 'admin.order.shipping_status'|trans }}<a href="#" class="js-listSort" data-sortkey="shipping_status"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  534.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.order.tracking_number'|trans }}<a href="#" class="js-listSort" data-sortkey="tracking_number"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  535.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.order.delivery'|trans }}<a href="#" class="js-listSort" data-sortkey="delivery"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  536.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.common.create_date'|trans }}<a href="#" class="js-listSort" data-sortkey="create_date"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  537.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle">{{ 'admin.common.update_date'|trans }}<a href="#" class="js-listSort" data-sortkey="update_date"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></th>
  538.                                         <th class="border-top-0 pt-2 pb-2 text-center align-middle pe-3"></th>
  539.                                     </tr>
  540.                                     </thead>
  541.                                     <tbody>
  542.                                     {% for Order in pagination %}
  543.                                         {% for Shipping in Order.Shippings %}
  544.                                             <tr>
  545.                                                 <td class="align-middle text-center ps-3">
  546.                                                     <input type="checkbox" id="check_{{ Shipping.id }}" data-id="{{ Shipping.id }}" name="ids[]" value="{{ Shipping.id }}"
  547.                                                            data-preview-notify-mail-url="{{ url('admin_shipping_preview_notify_mail', { id: Shipping.id}) }}"
  548.                                                            data-notify-mail-url="{{ url('admin_shipping_notify_mail', { id: Shipping.id}) }}"
  549.                                                            data-update-status-url="{{ url('admin_shipping_update_order_status', { id: Shipping.id}) }}"
  550.                                                     />
  551.                                                 </td>
  552.                                                 <td class="align-middle text-start">
  553.                                                     <a class="action-edit" href="{{ url('admin_order_edit', { id : Order.id }) }}">{{ Order.order_no }}<br>{{ Order.name01 ~ Order.name02 }}<br>{{ Order.order_date|date_min }}</a>
  554.                                                 </td>
  555.                                                 <td class="align-middle text-center">
  556.                                                     {{ Order.payment_method }}
  557.                                                 </td>
  558.                                                 <td class="align-middle text-center">
  559.                                                     <span class="badge badge-ec-blue" style="background-color: #fff; color: {{ Order.OrderStatusColor }}; border-color: {{ Order.OrderStatusColor }}">{{ Order.OrderStatus }}</span>
  560.                                                 </td>
  561.                                                 <td class="align-middle text-end">
  562.                                                     {{ Order.payment_total|price }}<br>
  563.                                                     {{ Order.payment_date ? Order.payment_date|date_day : 'admin.order.not_payment'|trans }}
  564.                                                     <br/>
  565.                                                     {% for OrderItem in Order.ProductOrderItems %}
  566.                                                         {% if OrderItem.isProduct %}
  567.                                                             <span style="white-space:nowrap;">{{ OrderItem.product_code }}{% if not loop.last %}/</br>{% endif %}</span> 
  568.                                                         {% endif %}
  569.                                                     {% endfor %}
  570.                                                 </td>
  571.                                                 <td class="align-middle text-center">
  572.                                                     {% if Order.message is not empty %}
  573.                                                         <a class="btn btn-ec-actionIcon" href="{{ url('admin_order_edit', { id : Order.id }) }}#order_message" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ Order.message }}" aria-describedby="tooltip819464">
  574.                                                             <i class="fa fa-commenting fa-lg text-secondary" aria-hidden="true"></i>
  575.                                                         </a>
  576.                                                     {% elseif Order.note is not empty %}
  577.                                                         <a class="btn btn-ec-actionIcon" href="{{ url('admin_order_edit', { id : Order.id }) }}#order_note" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ Order.note }}" aria-describedby="tooltip819464">
  578.                                                             <i class="fa fa-commenting fa-lg text-secondary" aria-hidden="true"></i>
  579.                                                         </a>
  580.                                                     {% endif %}
  581.                                                 </td>
  582.                                                 <td class="align-middle text-center">
  583.                                                     {% if Order.is_multiple %}
  584.                                                         <a href="{{ url('admin_shipping_edit', { id: Order.id }) }}">
  585.                                                             {% if Shipping.shipping_date %}
  586.                                                                 {{ Shipping.shipping_date|date_day }}
  587.                                                             {% else %}
  588.                                                                 {{ 'admin.order.unshipped'|trans }}
  589.                                                             {% endif %}
  590.                                                         </a>
  591.                                                     {% else %}
  592.                                                         {{ Shipping.shipping_date ? Shipping.shipping_date|date_day : 'admin.order.unshipped'|trans }}
  593.                                                     {% endif %}
  594.                                                     {% if Shipping.mail_send_date %}
  595.                                                         {% set send_mail_date = Shipping.mail_send_date|date_min %}
  596.                                                         <i class="fa fa-envelope fa-lg text-secondary" aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'admin.order.shipping_mail__completed'|trans({'%date%': send_mail_date}) }}"></i>
  597.                                                     {% endif %}
  598.                                                 </td>
  599.                                                 <td class="align-middle text-center">
  600.                                                     <div class="input-group input-group-sm">
  601.                                                         <input type="text" id="tracking_number_{{ Shipping.id }}" class="form-control update_tracking_number" placeholder="{{ 'admin.order.tracking_number'|trans }}" value="{{ Shipping.trackingNumber }}" data-shipping_id="{{ Shipping.id }}" data-url="{{ url('admin_shipping_update_tracking_number', { id : Shipping.id }) }}" tabindex="{{ loop.index }}"/>
  602.                                                         <span class="input-group-btn">
  603.                                                     <button type="button" class="btn btn-default update_tracking_number" data-target="#tracking_number_{{ Shipping.id }}">
  604.                                                         <i class="fa fa-check fa-lg text-secondary" aria-hidden="true"></i>
  605.                                                     </button>
  606.                                                 </span>
  607.                                                     </div>
  608.                                                 </td>
  609.                                                 <td class="align-middle text-center">
  610.                                                     {{ Shipping.name01 ~ Shipping.name02 }}<br>
  611.                                                     {% if Shipping.Pref %}{{ Shipping.Pref.name }}{% endif %}
  612.                                                 </td>
  613.                                                 <td class="align-middle text-center">
  614.                                                     {{ Order.create_date|date_min }}
  615.                                                 </td>
  616.                                                 <td class="align-middle text-center">
  617.                                                     {{ Order.update_date|date_min }}
  618.                                                 </td>
  619.                                                 <td class="align-middle pe-3">
  620.                                                     <div class="text-end">
  621.                                                         <div class="px-1 d-inline-block">
  622.                                                             <a class="btn btn-ec-actionIcon confirmationModal"
  623.                                                                data-type="mail" data-bulk-update="false"
  624.                                                                data-preview-notify-mail-url="{{ url('admin_shipping_preview_notify_mail', { id: Shipping.id}) }}"
  625.                                                                data-notify-mail-url="{{ url('admin_shipping_notify_mail', { id: Shipping.id}) }}"
  626.                                                                data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'admin.order.shipping_mail_send'|trans }}">
  627.                                                                 <i class="fa fa-send fa-lg text-secondary" aria-hidden="true"></i>
  628.                                                             </a>
  629.                                                         </div>
  630.                                                         <div class="px-1 d-inline-block">
  631.                                                             <a class="btn btn-ec-actionIcon pdf-print" href="{{ url('admin_order_export_pdf') }}?ids[]={{ Shipping.id }}" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'admin.order.output_delivery_note_short'|trans }}">
  632.                                                                 <i class="fa fa-table fa-lg text-secondary" aria-hidden="true"></i>
  633.                                                             </a>
  634.                                                         </div>
  635.                                                         <div class="px-1 d-inline-block">
  636.                                                             <a class="btn btn-ec-actionIcon confirmationModal" href="javascript:;"
  637.                                                                data-id="{{ Shipping.id }}" data-type="status" data-bulk-update="false"
  638.                                                                data-update-status-id="{{ constant('Eccube\\Entity\\Master\\OrderStatus::DELIVERED') }}"
  639.                                                                data-update-status-url="{{ url('admin_shipping_update_order_status', { id: Shipping.id}) }}"
  640.                                                                data-preview-notify-mail-url="{{ url('admin_shipping_preview_notify_mail', { id: Shipping.id}) }}"
  641.                                                                data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'admin.order.to_shipped'|trans }}">
  642.                                                                 <i class="fa fa-check fa-lg text-secondary" aria-hidden="true"></i>
  643.                                                             </a>
  644.                                                         </div>
  645.                                                     </div>
  646.                                                 </td>
  647.                                             </tr>
  648.                                         {% endfor %}
  649.                                     {% endfor %}
  650.                                     </tbody>
  651.                                 </table>
  652.                                 <div class="row justify-content-md-center"></div>
  653.                             </div>
  654.                             <div class="row justify-content-md-center pb-4 mb-4">
  655.                                 {% if pagination.totalItemCount > 0 %}
  656.                                     {% include "@admin/pager.twig" with { 'pages' : pagination.paginationData, 'routes' : 'admin_order_page' } %}
  657.                                 {% endif %}
  658.                             </div>
  659.                         </div>
  660.                     </form>
  661.                     {# 検索条件エラー時 #}
  662.                 {% elseif has_errors %}
  663.                     <div class="card rounded border-0">
  664.                         <div class="card-body p-4">
  665.                             <div class="text-center text-muted mb-4 h5">{{ 'admin.common.search_invalid_condition'|trans }}</div>
  666.                             <div class="text-center text-muted">{{ 'admin.common.search_try_change_condition'|trans }}</div>
  667.                         </div>
  668.                     </div>
  669.                     {# 検索結果なし #}
  670.                 {% else %}
  671.                     <div class="card rounded border-0">
  672.                         <div class="card-body p-4">
  673.                             <div class="text-center text-muted mb-4 h5">{{ 'admin.common.search_no_result'|trans }}</div>
  674.                             <div class="text-center text-muted">{{ 'admin.common.search_try_change_condition'|trans }}</div>
  675.                             <div class="text-center text-muted">{{ 'admin.common.search_try_advanced_search'|trans }}</div>
  676.                         </div>
  677.                     </div>
  678.                 {% endif %}
  679.                 <!-- 出荷済にする確認モーダル -->
  680.                 <div class="modal fade" id="sentUpdateModal" tabindex="-1" role="dialog" aria-labelledby="sentUpdateModal" aria-hidden="true" data-bs-keyboard="false" data-bs-backdrop="static">
  681.                     <div class="modal-dialog modal-lg" role="document">
  682.                         <div class="modal-content">
  683.                             <div class="modal-header">
  684.                                 <h5 class="modal-title fw-bold"><!--confirmationModal_js.twig--></h5>
  685.                                 <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  686.                             </div>
  687.                             <div class="modal-body">
  688.                                 <p class="modal-message"></p>
  689.                                 <ul id="bulkErrors"></ul>
  690.                                 <div id="bulk-options">
  691.                                     <div class="fw-bold mb-2 notificationMail">{{ 'admin.order.to_shipped__confirm_send_mail'|trans }}</div>
  692.                                     <div class="form-check form-check-inline">
  693.                                         <input class="form-check-input" type="checkbox" id="notificationMail">
  694.                                         <label class="form-check-label notificationMail">
  695.                                             {{ 'admin.order.to_shipped__confirm_send_mail_in_same_time'|trans }}
  696.                                         </label>
  697.                                     </div>
  698.                                     <div>
  699.                                         <div class="d-inline-block" data-bs-toggle="collapse" href="#viewEmail" aria-expanded="false" aria-controls="viewEmail"><a><i class="fa fa-plus-square-o fw-bold me-1"></i><span class="fw-bold">{{ 'admin.order.bulk_action__confirm_view_mail_body'|trans }}</span></a></div>
  700.                                         <div class="collapse bg-light p-4 ec-collapse bg-ec-formGray" id="viewEmail" style="word-wrap: break-word; word-break:break-all">
  701.                                             <pre></pre>
  702.                                         </div>
  703.                                     </div>
  704.                                 </div>
  705.                                 <div class="progress" style="display: none">
  706.                                     <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
  707.                                 </div>
  708.                             </div>
  709.                             <div class="modal-footer">
  710.                                 <button class="btn btn-ec-sub" type="button" data-bs-dismiss="modal">{{ 'admin.common.cancel'|trans }}</button>
  711.                                 <button id="bulkChange" class="btn btn-ec-conversion" type="button"><!--confirmationModal_js.twig--></button>
  712.                                 <button id="bulkChangeComplete" class="btn btn-ec-regular" style="display: none" type="button">{{ 'admin.common.close'|trans }}</button>
  713.                             </div>
  714.                         </div>
  715.                     </div>
  716.                 </div>
  717.                 <!-- 一括削除の確認モーダル -->
  718.                 <div class="modal fade" id="bulkDeleteModal" tabindex="-1" role="dialog" aria-labelledby="discontinuance" aria-hidden="true" data-bs-keyboard="false" data-bs-backdrop="static">
  719.                     <div class="modal-dialog" role="document">
  720.                         <div class="modal-content">
  721.                             <div class="modal-header">
  722.                                 <h5 class="modal-title fw-bold">{{ 'admin.order.delete__confirm_title'|trans }}</h5>
  723.                                 <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  724.                             </div>
  725.                             <div class="modal-body text-start">
  726.                                 <p class="text-start">{{ 'admin.order.delete__confirm_message'|trans }}</p>
  727.                                 <ul id="bulkErrors"></ul>
  728.                                 <div class="progress" style="display: none">
  729.                                     <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
  730.                                 </div>
  731.                             </div>
  732.                             <div class="modal-footer">
  733.                                 <button class="btn btn-ec-sub" type="button" data-bs-dismiss="modal">{{ 'admin.common.cancel'|trans }}</button>
  734.                                 <button class="btn btn-ec-delete" type="button" id="btn_bulk_delete">{{ 'admin.common.delete' | trans }}</button>
  735.                             </div>
  736.                         </div>
  737.                     </div>
  738.                 </div>
  739.             </div>
  740.         </div>
  741.     </div>
  742. {% endblock %}