app/template/admin/Order/edit.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_edit'] %}
  10. {% block title %}{{ 'admin.order.order_registration'|trans }}{% endblock %}
  11. {% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %}
  12. {% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %}
  13. {% form_theme searchCustomerModalForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %}
  14. {% form_theme searchProductModalForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %}
  15. {% block javascript %}
  16.     <script src="https://yubinbango.github.io/yubinbango/yubinbango.js" charset="UTF-8"></script>
  17.     <script>
  18.         $(function() {
  19.             // 項目数が多く、入力している項目によってEnter押下時に期待する動作が変わるので、いったん禁止
  20.             $('input').on('keydown', function(e) {
  21.                 if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) {
  22.                     return false;
  23.                 } else {
  24.                     return true;
  25.                 }
  26.             });
  27.             // 会員検索
  28.             $('#searchCustomerModalButton').on('click', function() {
  29.                 var list = $('#searchCustomerModalList');
  30.                 list.children().remove();
  31.                 $.ajax({
  32.                     url: '{{ url('admin_order_search_customer_html') }}',
  33.                     type: 'POST',
  34.                     dataType: 'html',
  35.                     data: {'search_word': $('#admin_search_customer_multi').val()}
  36.                 }).done(function(data) {
  37.                     $('#searchCustomerModalList').html(data);
  38.                 }).fail(function(data) {
  39.                     alert('search customer failed.');
  40.                 });
  41.             });
  42.             // 商品検索
  43.             $('#searchProductModalButton').on('click', function() {
  44.                 var list = $('#searchProductModalList');
  45.                 list.children().remove();
  46.                 $.ajax({
  47.                     url: '{{ url('admin_order_search_product') }}',
  48.                     type: 'POST',
  49.                     dataType: 'html',
  50.                     data: {
  51.                         'id': $('#admin_search_product_id').val(),
  52.                         'category_id': $('#admin_search_product_category_id').val()
  53.                     }
  54.                 }).done(function(data) {
  55.                     $('#searchProductModalList').html(data);
  56.                 }).fail(function(data) {
  57.                     alert('search product failed.');
  58.                 });
  59.             });
  60.             // その他明細
  61.             $('#addOrderItemType').on('show.bs.modal', function(e) {
  62.                 var list = $('#searchOrderItemTypeList');
  63.                 list.children().remove();
  64.                 $.ajax({
  65.                     url: '{{ url('admin_order_search_order_item_type') }}',
  66.                     type: 'POST',
  67.                     dataType: 'html'
  68.                 }).done(function(data) {
  69.                     $('#searchOrderItemTypeList').html(data);
  70.                 }).fail(function(data) {
  71.                     alert('search order item type failed.');
  72.                 });
  73.             });
  74.             // ページング処理
  75.             $(document).on('click', '#searchProductModalList ul.pagination li.page-item a.page-link', function(e) {
  76.                 e.preventDefault();
  77.                 var list = $('#searchProductModalList');
  78.                 list.children().remove();
  79.                 var url = $(this).attr('href');
  80.                 $.ajax({
  81.                     url: url,
  82.                     type: 'GET',
  83.                     dataType: 'html'
  84.                 }).done(function(data) {
  85.                     $('#searchProductModalList').html(data);
  86.                 }).fail(function(data) {
  87.                     alert('search product failed.');
  88.                 });
  89.             });
  90.             // 商品追加
  91.             $collectionHolder = $('#table-form-field');
  92.             index = $collectionHolder.find('tbody > tr').length;
  93.             formIdPrefix = '#order_OrderItems_';
  94.             if (index > 0) {
  95.                 let row = '#' + $collectionHolder.find('tbody > tr').last().data("row");
  96.                 index = row.replace(formIdPrefix, '');
  97.             }
  98.             $(document).on('click', '.delete', function(e) {
  99.                 // 商品削除
  100.                 $(this).parents('tr').remove();
  101.                 index--;
  102.                 $("#calculate").trigger('click');
  103.             });
  104.             // 計算結果の更新が押されたらページ内リンクさせる
  105.             $('.btn').click(function() {
  106.                 var data = $(this).data();
  107.                 if (data.link) {
  108.                     $('#form1').attr('action', '#' + data.link).submit();
  109.                     return false;
  110.                 }
  111.             });
  112.             // 注文者情報をコピー
  113.             $('.copy-customer').on('click', function() {
  114.                 $('#order_Shipping_name_name01').val($('#order_name_name01').val());
  115.                 $('#order_Shipping_name_name02').val($('#order_name_name02').val());
  116.                 $('#order_Shipping_kana_kana01').val($('#order_kana_kana01').val());
  117.                 $('#order_Shipping_kana_kana02').val($('#order_kana_kana02').val());
  118.                 $('#order_Shipping_postal_code').val($('#order_postal_code').val());
  119.                 $('#order_Shipping_address_pref').val($('#order_address_pref').val());
  120.                 $('#order_Shipping_address_addr01').val($('#order_address_addr01').val());
  121.                 $('#order_Shipping_address_addr02').val($('#order_address_addr02').val());
  122.                 $('#order_Shipping_email').val($('#order_email').val());
  123.                 $('#order_Shipping_phone_number').val($('#order_phone_number').val());
  124.                 $('#order_Shipping_company_name').val($('#order_company_name').val());
  125.             });
  126.             // PDF出力(単一)
  127.             $('.pdf-print').click(function() {
  128.                 window.open(this.href, 'newwin', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=700, height=700');
  129.                 return false;
  130.             });
  131.             // お届け時間の初期表示
  132.             $('#order_Shipping_Delivery').change();
  133.             // Address type dynamic validation for Order form
  134.             const orderAddressTypeRadios = document.querySelectorAll('input[name*="[address_type]"]');
  135.             const orderPostalCodeField = document.querySelector('input[name*="[postal_code]"]');
  136.             const orderPrefectureField = document.querySelector('select[name*="[pref]"]');
  137.             function toggleOrderAddressValidation() {
  138.                 const selectedType = document.querySelector('input[name*="[address_type]"]:checked');
  139.                 if (selectedType && selectedType.value === '0') { // Domestic
  140.                     if (orderPostalCodeField) { orderPostalCodeField.setAttribute('required', 'required'); }
  141.                     if (orderPrefectureField) { orderPrefectureField.setAttribute('required', 'required'); }
  142.                 } else if (selectedType && selectedType.value === '1') { // Overseas
  143.                     if (orderPostalCodeField) { orderPostalCodeField.removeAttribute('required'); }
  144.                     if (orderPrefectureField) { orderPrefectureField.removeAttribute('required'); }
  145.                 }
  146.             }
  147.             orderAddressTypeRadios.forEach(radio => { radio.addEventListener('change', toggleOrderAddressValidation); });
  148.             toggleOrderAddressValidation();
  149.             // Address type dynamic validation for Shipping form
  150.             const shippingAddressTypeRadios = document.querySelectorAll('input[name*="[Shipping][address_type]"]');
  151.             const shippingPostalCodeField = document.querySelector('input[name*="[Shipping][postal_code]"]');
  152.             const shippingPrefectureField = document.querySelector('select[name*="[Shipping][address][pref]"]');
  153.             function toggleShippingAddressValidation() {
  154.                 const selectedType = document.querySelector('input[name*="[Shipping][address_type]"]:checked');
  155.                 if (selectedType && selectedType.value === '0') { // Domestic
  156.                     if (shippingPostalCodeField) { shippingPostalCodeField.setAttribute('required', 'required'); }
  157.                     if (shippingPrefectureField) { shippingPrefectureField.setAttribute('required', 'required'); }
  158.                 } else if (selectedType && selectedType.value === '1') { // Overseas
  159.                     if (shippingPostalCodeField) { shippingPostalCodeField.removeAttribute('required'); }
  160.                     if (shippingPrefectureField) { shippingPrefectureField.removeAttribute('required'); }
  161.                 }
  162.             }
  163.             shippingAddressTypeRadios.forEach(radio => { radio.addEventListener('change', toggleShippingAddressValidation); });
  164.             toggleShippingAddressValidation();
  165.             var confirmFormChange = function(form, target, modal) {
  166.                 var returnLink = form.find('input[type="hidden"][name*="return_link"]'),
  167.                     saveBtn = modal.find('a[data-action="save"]'),
  168.                     cancelBtn = modal.find('a[data-action="cancel"]');
  169.                 modal.on('hidden.bs.modal', function() {
  170.                     returnLink.val('');
  171.                 });
  172.                 saveBtn.on('click', function() {
  173.                     returnLink.val($(this).data('return-link'));
  174.                     $(this).addClass('disabled');
  175.                     $('#form1').append('<input type="hidden" name="mode" value="register">');
  176.                     form.submit();
  177.                 });
  178.                 target.on('click', function() {
  179.                     modal.find('.modal-body .screen-name').text($(this).attr('title'));
  180.                     modal.modal('show');
  181.                     saveBtn.data('return-link', $(this).attr('href'));
  182.                     cancelBtn.attr('href', $(this).attr('href'));
  183.                     return false;
  184.                 });
  185.             };
  186.             confirmFormChange($('#form1'), $('a[data-action="confirm"]'), $('#confirmFormChangeModal'))
  187.             // 配送業者選択時にお届け時間を設定
  188.             var times = {{ shippingDeliveryTimes|raw }};
  189.             $('#order_Shipping_Delivery').change(function() {
  190.                 var deliveryId = $(this).val();
  191.                 var $shippingDeliveryTime = $('#order_Shipping_DeliveryTime');
  192.                 $shippingDeliveryTime.find('option').remove();
  193.                 $shippingDeliveryTime.append($('<option></option>').val('').text('{{ 'admin.common.select__unspecified'|trans }}'));
  194.                 if (typeof(times[deliveryId]) !== 'undefined') {
  195.                     for (var timeId in times[deliveryId]) {
  196.                         timeValue = times[deliveryId][timeId];
  197.                         $shippingDeliveryTime.append($('<option></option>')
  198.                             .val(timeId)
  199.                             .text(timeValue));
  200.                     }
  201.                 }
  202.             });
  203.         });
  204.         {# ポイント機能が有効かつ会員の場合のみポイントの割引金額を変更する #}
  205.         {% if BaseInfo.isOptionPoint and Order.Customer is not null %}
  206.             // 再計算時のポイントの割引金額の更新
  207.             function updatePointItem() {
  208.                 // ポイント換算レート
  209.                 var pointConversionRate = {{ BaseInfo.point_conversion_rate }};
  210.                 // 利用ポイント
  211.                 var usePoint = $('#order_use_point').val();
  212.                 // 利用ポイントが数値以外の時は割引金額を更新しない
  213.                 if (isNaN(usePoint)) return;
  214.                 // 割引金額を計算
  215.                 var discountPrice = (-1) * pointConversionRate * usePoint;
  216.                 // ポイント明細の金額の要素を取得
  217.                 var $pointPrice = $('.pointPrice');
  218.                 // ポイント明細の金額の要素がある場合はポイントの更新
  219.                 if ($pointPrice.length) {
  220.                     $pointPrice.val(discountPrice);
  221.                 }
  222.             }
  223.         {% endif %}
  224.     </script>
  225.     <style>
  226.         /* Fix address_type radio button min-width */
  227.         input[name*="[address_type]"] {
  228.             min-width: unset !important;
  229.         }
  230.         input[name*="[Shipping][address_type]"] {
  231.             min-width: unset !important;
  232.         }
  233.     </style>
  234. {% endblock javascript %}
  235. {% block main %}
  236.     {# 決済処理中/購入処理中ステータスは登録・更新等の操作を無効にする #}
  237.     {% set action_disabled = false %}
  238.     {% if Order.OrderStatus is not empty and Order.OrderStatus.id in [
  239.         constant('Eccube\\Entity\\Master\\OrderStatus::PROCESSING'), constant('Eccube\\Entity\\Master\\OrderStatus::PENDING')] -%}
  240.         {% set action_disabled = true %}
  241.     {%- endif %}
  242.     <!-- 移動確認モーダル-->
  243.     <div class="modal fade" id="confirmFormChangeModal" tabindex="-1" role="dialog"
  244.          aria-labelledby="confirmFormChangeModal" aria-hidden="true">
  245.         <div class="modal-dialog" role="document">
  246.             <div class="modal-content">
  247.                 <div class="modal-header">
  248.                     <h5 class="modal-title">{{ 'admin.common.move_to_confirm_title'|trans }}</h5>
  249.                     <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close">
  250.                     </button>
  251.                 </div>
  252.                 <div class="modal-body">
  253.                     <p class="screen-name"></p>
  254.                 </div>
  255.                 <div class="modal-footer">
  256.                     <a class="btn btn-ec-conversion" data-action="save" href="javascript:void(0)">
  257.                         {{ 'admin.common.move_to_confirm_save_and_move'|trans }}
  258.                     </a>
  259.                     <a class="btn btn-ec-sub" data-action="cancel" href="javascript:void(0)">
  260.                         {{ 'admin.common.move_to_confirm_move_only'|trans }}
  261.                     </a>
  262.                 </div>
  263.             </div>
  264.         </div>
  265.     </div>
  266.     <form name="form1" id="form1" method="post" action="?"{% if BaseInfo.isOptionPoint and Order.Customer is not null %} onsubmit="updatePointItem()"{% endif %}>
  267.         <input type="hidden" name="mode" value="">
  268.         {{ form_widget(form._token) }}
  269.         {{ form_widget(form.return_link) }}
  270.         <div class="c-contentsArea__cols">
  271.             <div class="c-contentsArea__primaryCol">
  272.                 <div class="c-primaryCol">
  273.                     <div class="card rounded border-0 mb-4">
  274.                         <div class="card-header">
  275.                             <div class="row">
  276.                                 <div class="col-8">
  277.                                     <div class="d-inline-block" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.order_info'|trans }}"><span class="card-title">{{ 'admin.order.order_info'|trans }}</span><i class="fa fa-question-circle fa-lg ms-1"></i></div>
  278.                                 </div>
  279.                                 <div class="col-4 text-end"><a data-bs-toggle="collapse" href="#orderOverview" aria-expanded="false" aria-controls="orderOverview"><i class="fa fa-angle-up fa-lg"></i></a></div>
  280.                             </div>
  281.                         </div>
  282.                         <div class="collapse show ec-cardCollapse" id="orderOverview">
  283.                             <div class="card-body">
  284.                                 <div class="row">
  285.                                     <div class="col-6">
  286.                                         <div class="row mb-3">
  287.                                             <div class="col-3" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.order_no'|trans }}">{{ 'admin.order.order_no'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></div>
  288.                                             <div class="col">{{ Order.order_no }}</div>
  289.                                         </div>
  290.                                         <div class="row mb-3">
  291.                                             <label class="col-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.order_status'|trans }}">{{ 'admin.order.order_status'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  292.                                             <div class="col">
  293.                                                 {% if Order.id is not empty %}
  294.                                                     {{ form_widget(form.OrderStatus) }}
  295.                                                     {{ form_errors(form.OrderStatus) }}
  296.                                                 {% endif %}
  297.                                             </div>
  298.                                         </div>
  299.                                         <div class="row mb-3">
  300.                                             <label class="col-3 col-form-label">{{ 'admin.common.payment_method'|trans }}</label>
  301.                                             <div class="col">
  302.                                                 {{ form_widget(form.Payment) }}
  303.                                                 {{ form_errors(form.Payment) }}
  304.                                                 <p class="form-text fw-bold text-danger mb-0">{{ 'admin.order.change_payment_method_message'|trans }}</p>
  305.                                             </div>
  306.                                         </div>
  307.                                     </div>
  308.                                     <div class="col-6">
  309.                                         <div class="row mb-3">
  310.                                             <div class="col-3"><i class="fa fa-inbox fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.order_date'|trans }}</div>
  311.                                             <div class="col">{{ Order.order_date ? Order.order_date|date_sec : '' }}</div>
  312.                                         </div>
  313.                                         <div class="row mb-3">
  314.                                             <div class="col-3"><i class="fa fa-money fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.payment_date'|trans }}</div>
  315.                                             <div class="col">{{ Order.payment_date ? Order.payment_date|date_sec : '' }}</div>
  316.                                         </div>
  317.                                         {% if not Order.isMultiple %}
  318.                                             <div class="row mb-3">
  319.                                                 <div class="col-3"><i class="fa fa-truck fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.shipping_date'|trans }}</div>
  320.                                                 <div class="col">
  321.                                                     {{ Order.Shippings[0].shipping_date|date_sec }}
  322.                                                 </div>
  323.                                             </div>
  324.                                         {% endif %}
  325.                                         <div class="row mb-3">
  326.                                             <div class="col-3"><i class="fa fa-refresh fa-fw me-1" aria-hidden="true"></i>{{ 'admin.common.update_date'|trans }}</div>
  327.                                             <div class="col">{{ Order.update_date ? Order.update_date|date_sec : '' }}</div>
  328.                                         </div>
  329.                                         <div class="row mb-3">
  330.                                             <div class="col-3"><i class="fa fa-mobile fa-fw me-1" aria-hidden="true"></i>{{ 'admin.common.device_type'|trans }}</div>
  331.                                             <div class="col">{{ Order.device_type }}</div>
  332.                                         </div>
  333.                                         <div class="row mb-3">
  334.                                             <div class="col-3"><i class="fa fa-commenting fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.message'|trans }}</div>
  335.                                             <div class="col">{{ Order.message ? Order.message|nl2br : '' }}</div>
  336.                                         </div>
  337.                                     </div>
  338.                                 </div>
  339.                                 {# エンティティ拡張の自動出力 #}
  340.                                 {% for f in form|filter(f => f.vars.eccube_form_options.auto_render) %}
  341.                                     {% if f.vars.eccube_form_options.form_theme %}
  342.                                         {% form_theme f f.vars.eccube_form_options.form_theme %}
  343.                                         {{ form_row(f) }}
  344.                                     {% else %}
  345.                                         <div class="row">
  346.                                             <div class="col-6">
  347.                                                 <div class="row mb-3">
  348.                                                     <div class="col-3">
  349.                                                         <span>{{ f.vars.label|trans }}</span>
  350.                                                     </div>
  351.                                                     <div class="col">
  352.                                                         {{ form_widget(f) }}
  353.                                                         {{ form_errors(f) }}
  354.                                                     </div>
  355.                                                 </div>
  356.                                             </div>
  357.                                         </div>
  358.                                     {% endif %}
  359.                                 {% endfor %}
  360.                             </div>
  361.                         </div>
  362.                     </div><!-- .card.rounded -->
  363.                     <div class="card rounded border-0 mb-4">
  364.                         <div class="card-header">
  365.                             <div class="row">
  366.                                 <div class="col-2">
  367.                                     <div class="d-inline-block"><span class="card-title">{{ 'admin.order.orderer'|trans }}</span></div>
  368.                                 </div>
  369.                                 <div class="col">{% if id %}<span class="me-5">{% if form.Customer.vars.value is empty %}{{ 'admin.order.non_member'|trans }}{% else %}<a href="{{ url('admin_customer_edit', {'id': form.Customer.vars.value}) }}">{{ form.Customer.vars.value }}</a>{% endif %}</span>{{ Order.full_name }} ({{ Order.full_name_kana }}) 〒{{ Order.postal_code }} {{ Order.pref }}{{ Order.addr01 }}{{ Order.addr02 }} {{ Order.email }}{% endif %}</div>
  370.                                 <div class="col-1 text-end"><a class="d-block" data-bs-toggle="collapse" href="#ordererInfo" aria-expanded="false" aria-controls="ordererInfo"><i class="fa {{ id ? 'fa-angle-down' : 'fa-angle-up' }} fa-lg"></i></a></div>
  371.                             </div>
  372.                         </div>
  373.                         <div class="collapse {{ id ? '' : 'show' }} ec-cardCollapse h-adr" id="ordererInfo">
  374.                             <span class="p-country-name" style="display:none;">Japan</span>
  375.                             <div class="card-body">
  376.                                 {% if Order.id is empty %}
  377.                                     <div class="row mb-3">
  378.                                         <div class="col-auto">
  379.                                             <a class="btn btn-ec-regular px-3" data-bs-toggle="modal" data-bs-target="#searchCustomerModal">{{ 'admin.order.search_from_customer'|trans }}</a>
  380.                                         </div>
  381.                                     </div>
  382.                                     <!-- 会員検索モーダル -->
  383.                                     <div class="modal fade" id="searchCustomerModal" tabindex="-1" role="dialog" aria-labelledby="searchCustomerModal" aria-hidden="true">
  384.                                         <div class="modal-dialog modal-lg" role="document">
  385.                                             <div class="modal-content">
  386.                                                 <div class="modal-header">
  387.                                                     <h5 class="modal-title fw-bold">{{ 'admin.order.search_customer_title'|trans }}</h5>
  388.                                                     <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  389.                                                 </div>
  390.                                                 <div class="modal-body">
  391.                                                     {{ form_widget(searchCustomerModalForm.multi, { attr : {'class': 'mb-2searchCustomerModal', placeholder : 'admin.customer.multi_search_label' }}) }}
  392.                                                     <button type="button" id="searchCustomerModalButton" class="btn btn-ec-conversion px-5 mb-4 mt-2">{{ 'admin.common.search'|trans }}</button>
  393.                                                     <div class="mb-3" id="searchCustomerModalList"></div>
  394.                                                 </div>
  395.                                             </div>
  396.                                         </div>
  397.                                     </div>
  398.                                 {% endif %}
  399.                                 <div class="row">
  400.                                     <div class="col-6">
  401.                                         <div class="row">
  402.                                             <label class="col-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.customer_id'|trans }}">{{ 'admin.customer.customer_id'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  403.                                             <div class="col">
  404.                                                 <p id="order_CustomerId">{% if form.Customer.vars.value is empty %}{{ 'admin.order.non_member'|trans }}{% else %}<a href="{{ url('admin_customer_edit', {'id': form.Customer.vars.value}) }}">{{ form.Customer.vars.value }}</a>{% endif %}</p>
  405.                                                 {{ form_widget(form.Customer) }}
  406.                                                 {{ form_errors(form.Customer) }}
  407.                                             </div>
  408.                                         </div>
  409.                                         <div class="row mb-3">
  410.                                             <label class="col-3 col-form-label">{{ 'admin.common.name'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  411.                                             <div class="col">
  412.                                                 <div class="row">
  413.                                                     <div class="col">
  414.                                                         {{ form_widget(form.name.name01) }}
  415.                                                         {{ form_errors(form.name.name01) }}
  416.                                                     </div>
  417.                                                     <div class="col">
  418.                                                         {{ form_widget(form.name.name02) }}
  419.                                                         {{ form_errors(form.name.name02) }}
  420.                                                     </div>
  421.                                                 </div>
  422.                                             </div>
  423.                                         </div>
  424.                                         <div class="row mb-3">
  425.                                             <label class="col-3 col-form-label">{{ 'admin.common.kana'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  426.                                             <div class="col">
  427.                                                 <div class="row">
  428.                                                     <div class="col">
  429.                                                         {{ form_widget(form.kana.kana01) }}
  430.                                                         {{ form_errors(form.kana.kana01) }}
  431.                                                     </div>
  432.                                                     <div class="col">
  433.                                                         {{ form_widget(form.kana.kana02) }}
  434.                                                         {{ form_errors(form.kana.kana02) }}
  435.                                                     </div>
  436.                                                 </div>
  437.                                             </div>
  438.                                         </div>
  439.                                         <div class="row mb-3">
  440.                                             <label class="col-3 col-form-label">{{ 'admin.common.address'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  441.                                             <div class="col">
  442.                                                 <div class="row mb-3">
  443.                                                     <div class="col">
  444.                                                         {{ form_widget(form.address_type) }}
  445.                                                         {{ form_errors(form.address_type) }}
  446.                                                     </div>
  447.                                                 </div>
  448.                                                 <div class="row mb-3">
  449.                                                     <div class="col row align-items-center">
  450.                                                         <span class="col-auto">{{ 'admin.common.postal_symbol'|trans }}</span>
  451.                                                         <span class="col-auto ps-0">{{ form_widget(form.postal_code) }}</span>
  452.                                                         {{ form_errors(form.postal_code) }}
  453.                                                     </div>
  454.                                                 </div>
  455.                                                 <div class="row mb-3">
  456.                                                     <div class="col">
  457.                                                         {{ form_widget(form.address.pref) }}
  458.                                                         {{ form_errors(form.address.pref) }}
  459.                                                     </div>
  460.                                                 </div>
  461.                                                 <div class="row mb-3">
  462.                                                     <div class="col">
  463.                                                         {{ form_widget(form.address.addr01) }}
  464.                                                         {{ form_errors(form.address.addr01) }}
  465.                                                     </div>
  466.                                                 </div>
  467.                                                 <div class="row">
  468.                                                     <div class="col">
  469.                                                         {{ form_widget(form.address.addr02) }}
  470.                                                         {{ form_errors(form.address.addr02) }}
  471.                                                     </div>
  472.                                                 </div>
  473.                                             </div>
  474.                                         </div>
  475.                                     </div>
  476.                                     <div class="col-6">
  477.                                         <div class="row mb-3">
  478.                                             <label class="col-3 col-form-label">{{ 'admin.common.mail_address'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  479.                                             <div class="col">
  480.                                                 {{ form_widget(form.email) }}
  481.                                                 {{ form_errors(form.email) }}
  482.                                             </div>
  483.                                         </div>
  484.                                         <div class="row mb-3">
  485.                                             <label class="col-3 col-form-label">{{ 'admin.common.phone_number'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  486.                                             <div class="col">
  487.                                                 {{ form_widget(form.phone_number) }}
  488.                                                 {{ form_errors(form.phone_number) }}
  489.                                             </div>
  490.                                         </div>
  491.                                         <div class="row mb-3">
  492.                                             <label class="col-3 col-form-label">{{ 'admin.common.company_name'|trans }}</label>
  493.                                             <div class="col">
  494.                                                 {{ form_widget(form.company_name) }}
  495.                                                 {{ form_errors(form.company_name) }}
  496.                                             </div>
  497.                                         </div>
  498.                                         <div class="row mb-3">
  499.                                             <label class="col-3 col-form-label">{{ 'admin.order.message'|trans }}</label>
  500.                                             <div class="col">
  501.                                                 {{ form_widget(form.message, { attr : {'rows': 8 }}) }}
  502.                                                 {{ form_errors(form.message) }}
  503.                                             </div>
  504.                                         </div>
  505.                                     </div>
  506.                                 </div>
  507.                             </div>
  508.                         </div>
  509.                     </div><!-- .card.rounded -->
  510.                     <div class="card rounded border-0 mb-4">
  511.                         <div class="card-header">
  512.                             <div class="row">
  513.                                 <div class="col-8">
  514.                                     <div class="d-inline-block" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.shipping_info'|trans }}"><span class="card-title">{{ 'admin.order.shipping_info'|trans }}</span><i class="fa fa-question-circle fa-lg ms-1"></i></div>
  515.                                 </div>
  516.                                 <div class="col-4 text-end"><a data-bs-toggle="collapse" href="#shippingInfo" aria-expanded="false" aria-controls="shippingInfo"><i class="fa fa-angle-up fa-lg"></i></a></div>
  517.                             </div>
  518.                         </div>
  519.                         <div class="collapse show ec-cardCollapse" id="shippingInfo">
  520.                             <div class="card-body">
  521.                                 {% if Order.isMultiple %}
  522.                                     {# 複数配送の場合は配送先の表示のみ #}
  523.                                     <div class="mb-3">
  524.                                         <a id="shipping-add" class="btn btn-ec-regular" data-action="confirm" title="{{ 'admin.common.move_to_confirm_message'|trans({'%name%' : 'admin.order.shipping_registration'|trans
  525.                                            }) }}" href="{{ path("admin_shipping_edit", {id: Order.id}) }}">{{ 'admin.order.edit_multiple_shipping'|trans }}</a>
  526.                                         <span class="ml-3">{{ 'admin.order.edit_multiple_shipping_description'|trans }}</span>
  527.                                     </div>
  528.                                     {% for shipping in Order.Shippings %}
  529.                                         <div class="col">
  530.                                             <span class="me-5">{{ 'admin.order.delivery'|trans }}({{ loop.index }})</span>
  531.                                             {% set shipping_name = shipping.full_name ~ '(' ~ shipping.full_name_kana ~ ')' ~ (shipping.company_name is not null ? ' ' ~ shipping.company_name : '') %}
  532.                                             {% set shipping_addr = 'admin.common.postal_symbol'|trans ~ shipping.postal_code ~ ' ' ~ shipping.pref ~ shipping.addr01 ~ shipping.addr02 %}
  533.                                             {% set shipping_date = shipping.shipping_date is not null ? shipping.shipping_date|date_day : '' %}
  534.                                             {{ shipping_name }} {{ shipping_addr }} {{ shipping.phone_number }} {{ shipping_date }}
  535.                                         </div>
  536.                                     {% endfor %}
  537.                                 {% else %}
  538.                                     {# 単数配送の場合は配送先の編集が可能 #}
  539.                                     <div class="row mb-3">
  540.                                         <div class="col-6">
  541.                                             <button type="button" class="btn btn-ec-regular copy-customer">{{ 'admin.order.copy_orderer'|trans }}</button>
  542.                                             {% if Order.id is not empty %}
  543.                                                 <a class="btn btn-ec-regular pdf-print" href="{{ url('admin_order_export_pdf') }}?ids[]={{ Order.Shippings[0].id }}">{{ 'admin.order.output_delivery_note'|trans }}</a>
  544.                                             {% endif %}
  545.                                         </div>
  546.                                         {% if Order.id is not empty %}
  547.                                             <div class="col-6 text-end">
  548.                                                 <a id="shipping-add" class="btn btn-ec-regular w-25" data-action="confirm" title="{{ 'admin.common.move_to_confirm_message'|trans({'%name%' : 'admin.order.shipping_registration'|trans
  549.                                            }) }}" href="{{ path("admin_shipping_edit", {id: Order.id}) }}">{{ 'admin.order.add_shipping'|trans }}</a>
  550.                                             </div>
  551.                                         {% endif %}
  552.                                     </div>
  553.                                     <div class="row h-adr">
  554.                                         <span class="p-country-name" style="display:none;">Japan</span>
  555.                                         <div class="col-6">
  556.                                             <div class="row mb-3">
  557.                                                 <label class="col-3 col-form-label">{{ 'admin.common.name'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  558.                                                 <div class="col">
  559.                                                     <div class="row">
  560.                                                         <div class="col">
  561.                                                             {{ form_widget(form.Shipping.name.name01) }}
  562.                                                             {{ form_errors(form.Shipping.name.name01) }}
  563.                                                         </div>
  564.                                                         <div class="col">
  565.                                                             {{ form_widget(form.Shipping.name.name02) }}
  566.                                                             {{ form_errors(form.Shipping.name.name02) }}
  567.                                                         </div>
  568.                                                     </div>
  569.                                                 </div>
  570.                                             </div>
  571.                                             <div class="row mb-3">
  572.                                                 <label class="col-3 col-form-label">{{ 'admin.common.kana'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  573.                                                 <div class="col">
  574.                                                     <div class="row">
  575.                                                         <div class="col">
  576.                                                             {{ form_widget(form.Shipping.kana.kana01) }}
  577.                                                             {{ form_errors(form.Shipping.kana.kana01) }}
  578.                                                         </div>
  579.                                                         <div class="col">
  580.                                                             {{ form_widget(form.Shipping.kana.kana02) }}
  581.                                                             {{ form_errors(form.Shipping.kana.kana02) }}
  582.                                                         </div>
  583.                                                     </div>
  584.                                                 </div>
  585.                                             </div>
  586.                                             <div class="row mb-3">
  587.                                                 <label class="col-3 col-form-label">{{ 'admin.common.address'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  588.                                                 <div class="col">
  589.                                                     <div class="row mb-3">
  590.                                                         <div class="col">
  591.                                                             {{ form_widget(form.Shipping.address_type) }}
  592.                                                             {{ form_errors(form.Shipping.address_type) }}
  593.                                                         </div>
  594.                                                     </div>
  595.                                                     <div class="row mb-3">
  596.                                                         <div class="col row align-items-center">
  597.                                                             <span class="col-auto">{{ 'admin.common.postal_symbol'|trans }}</span>
  598.                                                             <span class="col-auto ps-0">{{ form_widget(form.Shipping.postal_code) }}</span>
  599.                                                             {{ form_errors(form.Shipping.postal_code) }}
  600.                                                         </div>
  601.                                                     </div>
  602.                                                     <div class="row mb-3">
  603.                                                         <div class="col">
  604.                                                             {{ form_widget(form.Shipping.address.pref) }}
  605.                                                             {{ form_errors(form.Shipping.address.pref) }}
  606.                                                         </div>
  607.                                                     </div>
  608.                                                     <div class="row mb-3">
  609.                                                         <div class="col">
  610.                                                             {{ form_widget(form.Shipping.address.addr01) }}
  611.                                                             {{ form_errors(form.Shipping.address.addr01) }}
  612.                                                         </div>
  613.                                                     </div>
  614.                                                     <div class="row">
  615.                                                         <div class="col">
  616.                                                             {{ form_widget(form.Shipping.address.addr02) }}
  617.                                                             {{ form_errors(form.Shipping.address.addr02) }}
  618.                                                         </div>
  619.                                                     </div>
  620.                                                 </div>
  621.                                             </div>
  622.                                         </div>
  623.                                         <div class="col-6">
  624.                                             <div class="row mb-3">
  625.                                                 <label class="col-3 col-form-label">{{ 'admin.common.phone_number'|trans }}<span class="badge bg-primary ms-1">{{ 'admin.common.required'|trans }}</span></label>
  626.                                                 <div class="col">
  627.                                                     {{ form_widget(form.Shipping.phone_number) }}
  628.                                                     {{ form_errors(form.Shipping.phone_number) }}
  629.                                                 </div>
  630.                                             </div>
  631.                                             <div class="row mb-3">
  632.                                                 <label class="col-3 col-form-label">{{ 'admin.common.company_name'|trans }}</label>
  633.                                                 <div class="col">
  634.                                                     {{ form_widget(form.Shipping.company_name) }}
  635.                                                     {{ form_errors(form.Shipping.company_name) }}
  636.                                                 </div>
  637.                                             </div>
  638.                                         </div>
  639.                                         <div class="col-12">
  640.                                             <hr>
  641.                                         </div>
  642.                                         <div class="col-6">
  643.                                             <div class="row mb-3">
  644.                                                 <label class="col-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.shipping_info.tracking_number'|trans }}">{{ 'admin.order.tracking_number'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  645.                                                 <div class="col">
  646.                                                     {{ form_widget(form.Shipping.tracking_number) }}
  647.                                                     {{ form_errors(form.Shipping.tracking_number) }}
  648.                                                 </div>
  649.                                             </div>
  650.                                             <div class="row mb-3">
  651.                                                 <label class="col-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.shipping_info.delivery_provider'|trans }}">{{ 'admin.order.delivery_provider'|trans }}<span class="badge bg-primary ms-1"></span><i class="fa fa-question-circle fa-lg ms-1"></i></label>
  652.                                                 <div class="col">
  653.                                                     {{ form_widget(form.Shipping.Delivery) }}
  654.                                                     {{ form_errors(form.Shipping.Delivery) }}
  655.                                                 </div>
  656.                                             </div>
  657.                                             <div class="row mb-3">
  658.                                                 <label class="col-3 col-form-label" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.shipping_info.shop_memo'|trans }}">{{ 'admin.order.shop_memo_for_shipped'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></label>
  659.                                                 <div class="col">
  660.                                                     {{ form_widget(form.Shipping.note) }}
  661.                                                     {{ form_errors(form.Shipping.note) }}
  662.                                                 </div>
  663.                                             </div>
  664.                                         </div>
  665.                                         <div class="col-6">
  666.                                             <div class="row mb-3">
  667.                                                 <label class="col-3 col-form-label"><i class="fa fa-calendar-check-o fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.delivery_date'|trans }}</label>
  668.                                                 <div class="col">
  669.                                                     {{ form_widget(form.Shipping.shipping_delivery_date) }}
  670.                                                     {{ form_errors(form.Shipping.shipping_delivery_date) }}
  671.                                                 </div>
  672.                                             </div>
  673.                                             <div class="row mb-3">
  674.                                                 <label class="col-3 col-form-label"><i class="fa fa-clock-o fa-fw me-1" aria-hidden="true"></i>{{ 'admin.order.delivery_time'|trans }}</label>
  675.                                                 <div class="col">
  676.                                                     {{ form_widget(form.Shipping.DeliveryTime) }}
  677.                                                     {{ form_errors(form.Shipping.DeliveryTime) }}
  678.                                                 </div>
  679.                                             </div>
  680.                                         </div>
  681.                                     </div>
  682.                                 {% endif %}
  683.                             </div>
  684.                         </div>
  685.                     </div><!-- .card.rounded -->
  686.                     <div id="order-product" class="card rounded border-0 mb-4">
  687.                         <div class="card-header">
  688.                             <div class="row">
  689.                                 <div class="col-8">
  690.                                     <div class="d-inline-block" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.product_info'|trans }}"><span class="card-title">{{ 'admin.order.product_info'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></span></div>
  691.                                 </div>
  692.                                 <div class="col-4 text-end"><a data-bs-toggle="collapse" href="#orderItem" aria-expanded="false" aria-controls="orderItem"><i class="fa fa-angle-up fa-lg"></i></a></div>
  693.                             </div>
  694.                         </div>
  695.                         <div class="collapse show ec-cardCollapse" id="orderItem">
  696.                             <div class="card-body">
  697.                                 <div class="row justify-content-between mb-2">
  698.                                     <div class="col-6">
  699.                                         {# 複数配送の場合は商品追加できない #}
  700.                                         {% if not Order.isMultiple %}
  701.                                             <a class="btn btn-ec-regular me-2 add" data-bs-toggle="modal" data-bs-target="#addProduct">{{ 'admin.order.add_product_item'|trans }}</a>
  702.                                             <div class="modal fade" id="addProduct" tabindex="-1" role="dialog" aria-labelledby="addProduct" aria-hidden="true">
  703.                                                 <div class="modal-dialog modal-lg" role="document">
  704.                                                     <div class="modal-content">
  705.                                                         <div class="modal-header">
  706.                                                             <h5 class="modal-title">{{ 'admin.order.add_product_item'|trans }}</h5>
  707.                                                             <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  708.                                                         </div>
  709.                                                         <div class="modal-body">
  710.                                                             {{ form_widget(searchProductModalForm.id, { attr : {'class': 'mb-3', 'placeholder': 'admin.product.multi_search_label' }}) }}
  711.                                                             {{ form_widget(searchProductModalForm.category_id) }}
  712.                                                             <button type="button" id="searchProductModalButton" class="btn btn-ec-conversion px-5 mb-4 mt-2">{{ 'admin.common.search'|trans }}</button>
  713.                                                             <div id="searchProductModalList"></div>
  714.                                                         </div>
  715.                                                     </div>
  716.                                                 </div>
  717.                                             </div>
  718.                                         {% endif %}
  719.                                         <a class="btn btn-ec-regular me-2" data-bs-toggle="modal" data-bs-target="#addOrderItemType">{{ 'admin.order.add_other_item'|trans }}</a>
  720.                                         <div class="modal fade" id="addOrderItemType" tabindex="-1" role="dialog" aria-labelledby="addOrderItemType" aria-hidden="true">
  721.                                             <div class="modal-dialog modal-lg" role="document">
  722.                                                 <div class="modal-content">
  723.                                                     <div class="modal-header">
  724.                                                         <h5 class="modal-title">{{ 'admin.order.add_other_item'|trans }}</h5>
  725.                                                         <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  726.                                                     </div>
  727.                                                     <div class="modal-body">
  728.                                                         <div id="searchOrderItemTypeList"></div>
  729.                                                     </div>
  730.                                                 </div>
  731.                                             </div>
  732.                                         </div>
  733.                                         {{ form_errors(form.OrderItemsErrors) }}
  734.                                     </div>
  735.                                     <div class="col-5 text-end">
  736.                                         <button type="submit" class="btn btn-ec-regular me-2" name="mode" value="calc" data-link="order-product" id="calculate"{{ action_disabled ? ' disabled="disabled"' }}>{{ 'admin.order.update_calculation_results'|trans }}</button>
  737.                                     </div>
  738.                                 </div>
  739.                                 <table id="table-form-field" class="table table-striped table-sm mb-0"
  740.                                        data-prototype="{% apply escape %}{{ include('@admin/Order/order_item_prototype.twig', {'orderItemForm': form.OrderItems.vars.prototype}) }}{% endapply %}">
  741.                                     <thead class="table-active">
  742.                                     <tr class="text-nowrap">
  743.                                         <th class="pt-2 pb-2 ps-3">商品名・アーティスト・商品コード</th>
  744.                                         <th class="pt-2 pb-2">
  745.                                             <div class="col-8">{{ 'admin.order.amount'|trans }}</div>
  746.                                         </th>
  747.                                         <th class="pt-2 pb-2">
  748.                                             <div class="col-8">{{ 'admin.order.quantity'|trans }}</div>
  749.                                         </th>
  750.                                         <th class="pt-2 pb-2">
  751.                                             <div class="col-8">{{ 'admin.order.tax_rate'|trans }}</div>
  752.                                         </th>
  753.                                         <th class="pt-2 pb-2">
  754.                                             <div class="col-8">{{ 'admin.order.tax_type'|trans }}</div>
  755.                                         </th>
  756.                                         <th class="pt-2 pb-2">
  757.                                             <div class="col-8">{{ 'admin.order.subtotal'|trans }}</div>
  758.                                         </th>
  759.                                         <th class="pt-2 pb-2 pe-3"></th>
  760.                                     </tr>
  761.                                     </thead>
  762.                                     <tbody>
  763.                                     {% for orderItemForm in form.OrderItems %}
  764.                                         {% set OrderItem = orderItemForm.vars.data %}
  765.                                         <tr data-row="{{ orderItemForm.vars.id }}">
  766.                                             {# hidden values #}
  767.                                             {{ form_widget(orderItemForm.ProductClass) }}
  768.                                             {{ form_widget(orderItemForm.order_item_type) }}
  769.                                             {{ form_widget(orderItemForm.point_rate) }}
  770.                                             {{ form_widget(orderItemForm.tax_type) }}
  771.                                             <!-- 商品名 -->
  772.                                             <td class="align-middle w-25 ps-3">
  773.                                                 <p class="mb-0 fw-bold">
  774.                                                     {# 商品とポイント値引きは名前変更できない #}
  775.                                                     {% if OrderItem.isProduct or OrderItem.isPoint %}
  776.                                                         {% if OrderItem.isProduct %}
  777.                                                             <a href="{{ url('admin_product_product_edit', {id: OrderItem.ProductClass.Product.id}) }}" target="_blank">
  778.                                                                 {{ OrderItem.product_name }}
  779.                                                             </a>
  780.                                                         {% else %}
  781.                                                             {{ OrderItem.product_name }}
  782.                                                         {% endif %}
  783.                                                         {% if OrderItem.isProduct and OrderItem.ProductClass.Product.artist_name is not empty %}
  784.                                                             <br>
  785.                                                             <small class="text-muted">{{ OrderItem.ProductClass.Product.artist_name }}</small>
  786.                                                         {% endif %}
  787.                                                         {{ form_widget(orderItemForm.product_name, { 'type': 'hidden' }) }}
  788.                                                     {% else %}
  789.                                                         {{ form_widget(orderItemForm.product_name) }}
  790.                                                     {% endif %}
  791.                                                 </p>
  792.                                                 <span>
  793.                                                     {{ OrderItem.product_code }}
  794.                                                     {% if OrderItem.class_category_name1 is not empty %}
  795.                                                         / (
  796.                                                         {{ OrderItem.class_name1 }}:
  797.                                                         {{ OrderItem.class_category_name1 }}
  798.                                                         {% if OrderItem.class_category_name2 is not empty %}
  799.                                                             /
  800.                                                             {{ OrderItem.class_name2 }}:
  801.                                                             {{ OrderItem.class_category_name2 }}
  802.                                                         {% endif %}
  803.                                                         )
  804.                                                     {% endif %}
  805.                                                 </span>
  806.                                                 {{ form_errors(orderItemForm.product_name) }}
  807.                                             </td>
  808.                                             <!-- 金額 -->
  809.                                             <td class="align-middle">
  810.                                                 <div class="col mt-3">
  811.                                                     {# ポイント値引きは価格変更できない #}
  812.                                                     {% if OrderItem.isPoint %}
  813.                                                         {{ form_widget(orderItemForm.price, {'attr': { 'readonly': 'readonly', 'class': 'pointPrice' } }) }}
  814.                                                     {% else %}
  815.                                                         {{ form_widget(orderItemForm.price) }}
  816.                                                     {% endif %}
  817.                                                     <div class="text-end small">({{ OrderItem.TaxDisplayType }})</div>
  818.                                                     {{ form_errors(orderItemForm.price) }}
  819.                                                 </div>
  820.                                             </td>
  821.                                             <!-- 数量 -->
  822.                                             <td class="align-middle">
  823.                                                 <div class="col-12 col-xl-8">
  824.                                                     {# 複数配送の場合は商品の個数を変更できない、ポイントの場合も個数を変更できない #}
  825.                                                     {% if (Order.isMultiple and OrderItem.isProduct) or OrderItem.isPoint %}
  826.                                                         {{ form_widget(orderItemForm.quantity, { 'attr': { 'readonly': 'readonly' } }) }}
  827.                                                     {% else %}
  828.                                                         {{ form_widget(orderItemForm.quantity) }}
  829.                                                     {% endif %}
  830.                                                     {{ form_errors(orderItemForm.quantity) }}
  831.                                                 </div>
  832.                                             </td>
  833.                                             <!-- 税率 -->
  834.                                             <td class="align-middle">
  835.                                                 <div class="col-12 col-xl-8">
  836.                                                     {# 複数配送・ポイント明細・不課税明細は商品の税率を変更できない #}
  837.                                                     {% if (Order.isMultiple and OrderItem.isProduct) or OrderItem.isPoint or OrderItem.TaxType.id == constant('Eccube\\Entity\\Master\\TaxType::NON_TAXABLE') %}
  838.                                                         {{ form_widget(orderItemForm.tax_rate, { 'attr': { 'readonly': 'readonly' } }) }}
  839.                                                     {% else %}
  840.                                                         {{ form_widget(orderItemForm.tax_rate) }}
  841.                                                     {% endif %}
  842.                                                     {{ form_errors(orderItemForm.tax_rate) }}
  843.                                                 </div>
  844.                                             </td>
  845.                                             <!-- 課税区分 -->
  846.                                             <td class="align-middle">
  847.                                                 <div class="col">
  848.                                                     {{ OrderItem.tax_type }}
  849.                                                 </div>
  850.                                             </td>
  851.                                             <!-- 小計 -->
  852.                                             <td class="align-middle">
  853.                                                 <div class="col">
  854.                                                     <span>{{ OrderItem.total_price|price }}</span>
  855.                                                 </div>
  856.                                             </td>
  857.                                             <td class="align-middle text-end pe-3">
  858.                                                 <div class="row justify-content-end">
  859.                                                     {# 複数配送の場合は商品を削除できない #}
  860.                                                     {% if (Order.isMultiple and OrderItem.isProduct) or OrderItem.isPoint %}
  861.                                                         <div class="col-auto text-center">
  862.                                                             <div class="d-inline-block me-3" data-bs-toggle="tooltip"
  863.                                                                  data-bs-placement="top" title="{{ 'admin.common.delete'|trans }}">
  864.                                                                 <a class="btn btn-ec-actionIcon disabled">
  865.                                                                     <i class="fa fa-close fa-lg text-secondary" aria-hidden="true"></i>
  866.                                                                 </a>
  867.                                                             </div>
  868.                                                         </div>
  869.                                                     {% else %}
  870.                                                         <div class="col-auto text-center">
  871.                                                             <div class="d-inline-block me-3" data-bs-toggle="tooltip"
  872.                                                                  data-bs-placement="top" title="{{ 'admin.common.delete'|trans }}">
  873.                                                                 <a class="btn btn-ec-actionIcon" data-bs-toggle="modal" data-bs-target="#delete_{{ orderItemForm.vars.id }}">
  874.                                                                     <i class="fa fa-close fa-lg text-secondary" aria-hidden="true"></i>
  875.                                                                 </a>
  876.                                                             </div>
  877.                                                             <!-- 明細の削除確認モーダル -->
  878.                                                             <div class="modal fade" id="delete_{{ orderItemForm.vars.id }}" tabindex="-1" role="dialog" aria-labelledby="delete_{{ orderItemForm.vars.id }}" aria-hidden="true">
  879.                                                                 <div class="modal-dialog" role="document">
  880.                                                                     <div class="modal-content">
  881.                                                                         <div class="modal-header">
  882.                                                                             <h5 class="modal-title fw-bold">{{ 'admin.common.delete_modal__title'|trans }}</h5>
  883.                                                                             <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close">
  884.                                                                             </button>
  885.                                                                         </div>
  886.                                                                         <div class="modal-body text-start">
  887.                                                                             <p class="text-start">{{ 'admin.order.delete_item__confirm_message'|trans({ '%name%' : OrderItem.product_name }) }}</p>
  888.                                                                         </div>
  889.                                                                         <div class="modal-footer">
  890.                                                                             <button class="btn btn-ec-sub" type="button" data-bs-dismiss="modal">{{ 'admin.common.cancel'|trans }}</button>
  891.                                                                             <a href="#order-product" class="btn delete btn-ec-delete">{{ 'admin.common.delete'|trans }}</a>
  892.                                                                         </div>
  893.                                                                     </div>
  894.                                                                 </div>
  895.                                                             </div>
  896.                                                         </div>
  897.                                                     {% endif %}
  898.                                                 </div>
  899.                                             </td>
  900.                                         </tr>
  901.                                     {% endfor %}
  902.                                     </tbody>
  903.                                 </table>
  904.                                 <hr class="mt-0">
  905.                                 <!-- 小計 -->
  906.                                 <div class="row justify-content-end mb-3">
  907.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.subtotal'|trans }}</span></div>
  908.                                     <div class="col-2 text-end"><span class="h4 align-middle fw-normal">{{ Order.subtotal|price }}</span></div>
  909.                                 </div>
  910.                                 <!-- 送料 -->
  911.                                 <div class="row justify-content-end mb-3">
  912.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.delivery_fee'|trans }}</span></div>
  913.                                     <div class="col-2 text-end"><span class="h4 align-middle fw-normal">{{ Order.delivery_fee_total|price }}</span></div>
  914.                                 </div>
  915.                                 <!-- 手数料 -->
  916.                                 <div class="row justify-content-end mb-3">
  917.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.common.charge'|trans }}</span></div>
  918.                                     <div class="col-2 text-end"><span class="h4 align-middle fw-normal">{{ Order.charge|price }}</span></div>
  919.                                 </div>
  920.                                 <!-- 値引き -->
  921.                                 <div class="row justify-content-end mb-3">
  922.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.discount'|trans }}</span></div>
  923.                                     <div class="col-2 text-end"><span class="h4 align-middle text-danger fw-normal">{{ Order.taxable_discount|price }}</span></div>
  924.                                 </div>
  925.                                 <hr>
  926.                                 <!-- 合計 -->
  927.                                 <div class="row justify-content-end mb-3">
  928.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.total'|trans }}</span></div>
  929.                                     <div class="col-2 text-end"><span class="h4 align-middle fw-normal">{{ Order.taxable_total|price }}</span></div>
  930.                                 </div>
  931.                                 {% for item in Order.tax_free_discount_items %}
  932.                                 <div class="row justify-content-end mb-3">
  933.                                     <div class="col-auto"><span class="align-middle">{{ item.product_name }}</span></div>
  934.                                     <div class="col-2 text-end"><span class="h4 align-middle text-danger fw-normal">{{ item.total_price|price }}</span></div>
  935.                                 </div>
  936.                                 {% endfor %}
  937.                                 <!-- お支払い合計 -->
  938.                                 <div class="row justify-content-end mb-3">
  939.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.payment_total'|trans }}</span></div>
  940.                                     <div class="col-2 text-end"><span class="h4 align-middle fw-normal">{{ Order.payment_total|price }}</span></div>
  941.                                 </div>
  942.                                 <hr>
  943.                                 <!-- 消費税額 -->
  944.                                 {% for rate, total in Order.total_by_tax_rate %}
  945.                                     <div class="row justify-content-end mb-3">
  946.                                         <div class="col-auto"><span class="align-middle">{{ 'common.tax_rate_target'|trans({ '%rate%': rate }) }}</span></div>
  947.                                         <div class="col-2 text-end"><span class="align-middle fw-normal">{{ total|price }}</span>({{ 'common.tax_amount'|trans }} {{ Order.tax_by_tax_rate[rate]|price }})</div>
  948.                                     </div>
  949.                                 {% endfor %}
  950.                                 <hr>
  951.                                 <!-- 加算ポイント -->
  952.                                 <div class="row justify-content-end mb-3">
  953.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.add_point'|trans }}</span></div>
  954.                                     <div class="col-2 text-end">
  955.                                         <span class="h4 align-middle fw-normal">
  956.                                             {{ form.vars.value.addpoint|number_format }}
  957.                                         </span>
  958.                                     </div>
  959.                                 </div>
  960.                                 <!-- 利用ポイント -->
  961.                                 <div class="row justify-content-end mb-3">
  962.                                     <div class="col-auto"><span class="align-middle">{{ 'admin.order.use_point'|trans }}</span></div>
  963.                                     <div class="col-2 text-end">
  964.                                         <span class="h4 align-middle fw-normal">
  965.                                             {# ポイント機能が有効かつ会員の場合のみポイントを編集可能とする #}
  966.                                             {% if BaseInfo.isOptionPoint and Order.Customer is not null %}
  967.                                                 {{ form_widget(form.use_point) }}
  968.                                             {% else %}
  969.                                                 {{ form_widget(form.use_point, {'attr': { 'readonly': 'readonly' } }) }}
  970.                                             {% endif %}
  971.                                             {{ form_errors(form.use_point) }}
  972.                                         </span>
  973.                                     </div>
  974.                                 </div>
  975.                             </div>
  976.                         </div>
  977.                     </div><!-- .card.rounded -->
  978.                     <!-- ショップ用メモ欄 -->
  979.                     <div class="card rounded border-0 mb-4">
  980.                         <div class="card-header">
  981.                             <div class="row">
  982.                                 <div class="col-8">
  983.                                     <div class="d-inline-block" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.shop_memo'|trans }}"><span class="card-title">{{ 'admin.common.shop_memo'|trans }}<i class="fa fa-question-circle fa-lg ms-1"></i></span></div>
  984.                                 </div>
  985.                                 <div class="col-4 text-end"><a data-bs-toggle="collapse" href="#freeArea" aria-expanded="false" aria-controls="freeArea"><i class="fa fa-angle-up fa-lg"></i></a></div>
  986.                             </div>
  987.                         </div>
  988.                         <div class="collapse show ec-cardCollapse" id="freeArea">
  989.                             <div class="card-body">
  990.                                 {{ form_widget(form.note, {'attr': {'rows': 8}}) }}
  991.                             </div>
  992.                         </div>
  993.                     </div><!-- .card.rounded -->
  994.                     <!-- メール送信履歴 -->
  995.                     {% if id is not null %}
  996.                         <div class="card rounded border-0 mb-4">
  997.                             <div class="card-header">
  998.                                 <div class="row">
  999.                                     <div class="col-8">
  1000.                                         <div class="d-inline-block" data-bs-toggle="tooltip" data-bs-placement="top" title="{{ 'tooltip.order.mail_history'|trans }}"><span class="card-title">{{ 'admin.order.mail_history'|trans }}</span><i class="fa fa-question-circle fa-lg ms-1"></i></div>
  1001.                                     </div>
  1002.                                     <div class="col-4 text-end"><a data-bs-toggle="collapse" href="#mailHistory" aria-expanded="false" aria-controls="mailHistory"><i class="fa fa-angle-up fa-lg"></i></a></div>
  1003.                                 </div>
  1004.                             </div>
  1005.                             <div class="collapse show ec-cardCollapse" id="mailHistory">
  1006.                                 <div class="card-body">
  1007.                                     <table class="table table-striped">
  1008.                                         <thead class="table-active">
  1009.                                         <tr>
  1010.                                             <th class="pt-2 pb-2 ps-3">{{ 'admin.order.mail_send_date'|trans }}</th>
  1011.                                             <th class="pt-2 pb-2 pe-3">{{ 'admin.order.mail_subject'|trans }}</th>
  1012.                                         </tr>
  1013.                                         </thead>
  1014.                                         <tbody>
  1015.                                         {% for MailHistory in Order.MailHistories %}
  1016.                                             <tr>
  1017.                                                 <td class="ps-3">{{ MailHistory.send_date|date_min }}</td>
  1018.                                                 <td class="pe-3">
  1019.                                                     <a class="text-primary" data-bs-toggle="modal" data-bs-target="#mail2-{{ loop.index }}">{{ MailHistory.mail_subject }}</a>
  1020.                                                     <div class="modal fade" id="mail2-{{ loop.index }}" tabindex="-1" role="dialog" aria-labelledby="mail2-{{ loop.index }}" aria-hidden="true">
  1021.                                                         <div class="modal-dialog" role="document">
  1022.                                                             <div class="modal-content">
  1023.                                                                 <div class="modal-header">
  1024.                                                                     <h5 class="modal-title">{{ MailHistory.mail_subject }}</h5>
  1025.                                                                     <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
  1026.                                                                 </div>
  1027.                                                                 <div class="modal-body">
  1028.                                                                     <p>
  1029.                                                                         {% if MailHistory.mail_html_body|length > 0 %}
  1030.                                                                             {{ MailHistory.mail_html_body|raw|purify }}
  1031.                                                                         {% else %}
  1032.                                                                             {{ MailHistory.mail_body|nl2br }}
  1033.                                                                         {% endif %}
  1034.                                                                     </p>
  1035.                                                                 </div>
  1036.                                                                 <div class="modal-footer">
  1037.                                                                     <button class="btn btn-ec-regular" type="button" data-bs-dismiss="modal">{{ 'admin.common.close'|trans }}</button>
  1038.                                                                 </div>
  1039.                                                             </div>
  1040.                                                         </div>
  1041.                                                     </div>
  1042.                                                 </td>
  1043.                                             </tr>
  1044.                                         {% endfor %}
  1045.                                         </tbody>
  1046.                                     </table>
  1047.                                     <div class="text-center">
  1048.                                         <a class="btn btn-ec-regular" data-action="confirm" title="{{ 'admin.common.move_to_confirm_message'|trans({
  1049.                                                '%name%' : 'admin.order.mail'|trans
  1050.                                            }) }}" href="{{ path('admin_order_mail', { id : Order.id }) }}">{{ 'admin.order.mail_create'|trans }}</a>
  1051.                                     </div>
  1052.                                 </div>
  1053.                             </div>
  1054.                         </div><!-- .card.rounded -->
  1055.                     {% endif %}
  1056.                 </div>
  1057.             </div>
  1058.         </div>
  1059.         <!-- コンバージョンエリア -->
  1060.         <div class="c-conversionArea">
  1061.             <div class="c-conversionArea__container">
  1062.                 <div class="row justify-content-between align-items-center">
  1063.                     <div class="col-6">
  1064.                         <div class="c-conversionArea__leftBlockItem">
  1065.                             <a class="c-baseLink" href="{{ url('admin_order', { 'resume': 1 }) }}"><i class="fa fa-backward" aria-hidden="true"></i><span>{{ 'admin.order.order_list'|trans }}</span></a>
  1066.                         </div>
  1067.                     </div>
  1068.                     <div class="col-6">
  1069.                         <div class="row align-items-center justify-content-end">
  1070.                             <div class="col-auto">
  1071.                                 <button type="submit" class="btn btn-ec-conversion px-5" name="mode" value="register"{{ action_disabled ? ' disabled="disabled"' }}>{{ 'admin.common.registration'|trans }}</button>
  1072.                             </div>
  1073.                         </div>
  1074.                     </div>
  1075.                 </div>
  1076.             </div>
  1077.         </div>
  1078.     </form>
  1079. {% endblock %}