templates/product/view.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% set menuMode = 'catalog' %}
  3. {% set title = product.name %}
  4. {% set optimalAvailability = priceCalculator.getOptimalAvailability(product) %}
  5. {% block main %}
  6.   <div class="container-fluid">
  7.     <div class="row">
  8.       <div class="col-md-6">
  9.         <div class="card">
  10.           <div class="card-header">Общие сведения</div>
  11.           <div class="card-body">
  12.             <table class="table table-sm table-bordered">
  13.               <thead>
  14.                 <tr>
  15.                   <th>Параметр</th>
  16.                   <th>Значение</th>
  17.                 </tr>
  18.               </thead>
  19.               <tbody>
  20.                 <tr>
  21.                   <td>ID</td>
  22.                   <td>{{ product.id }}</td>
  23.                 </tr>
  24.                 <tr>
  25.                   <td>Название</td>
  26.                   <td>{{ product.name }}</td>
  27.                 </tr>
  28.                 <tr>
  29.                   <td>Кол-во поставщиков</td>
  30.                   <td>{{ product.availabilities|length }}</td>
  31.                 </tr>
  32.                 <tr>
  33.                   <td>Дата привязки к сайту</td>
  34.                   {% if product.connection is not null %}
  35.                     <td>{{ product.connection.dateConnected|date('d.m.Y H:i:s') }}</td>
  36.                   {% else %}
  37.                     <td>-</td>
  38.                   {% endif %}
  39.                 </tr>
  40.               </tbody>
  41.             </table>
  42.           </div>
  43.         </div>
  44.       </div>
  45.       <div class="col-md-6">
  46.         <div class="card">
  47.           <div class="card-header">Привязка к сайту</div>
  48.           <div class="card-body">
  49.             {% if product.connection is null %}
  50.               <div class="alert alert-warning" role="alert">
  51.                 Привязка товара к сайту отсутствует
  52.               </div>
  53.             {% endif %}
  54.             <form method="POST" action="{{ path('product_connect', {id: product.id}) }}">
  55.               <div class="row">
  56.                 <div class="col-md-12">
  57.                   <div class="mb-3">
  58.                     <label for="insales_product_id" class="form-label">ID товара на сайте</label>
  59.                     <input type="number" name="insales_product_id" class="form-control" id="insales_product_id" required value="{{ product.connection.insalesProductId|default('') }}">
  60.                   </div>
  61.                 </div>
  62.                 <div class="col-md-6">
  63.                   <div class="mb-3">
  64.                     <label for="insales_variant_id" class="form-label">ID варианта</label>
  65.                     <input type="number" disabled name="insales_variant_id" class="form-control" id="insales_variant_id" value="{{ product.connection.insalesVariantId|default('') }}">
  66.                   </div>
  67.                 </div>
  68.                 <div class="col-md-6">
  69.                   <div class="mb-3">
  70.                     <label for="insales_sku" class="form-label">SKU</label>
  71.                     <input type="number" disabled name="insales_sku" class="form-control" id="insales_sku" value="{{ product.connection.insalesSku|default('') }}">
  72.                   </div>
  73.                 </div>
  74.                 {% if product.connection is not null %}
  75.                   <div class="col-md-8">
  76.                     <div class="d-grid gap-2">
  77.                       <button class="btn btn-primary" type="submit">Перепривязать</button>
  78.                     </div>
  79.                   </div>
  80.                   <div class="col-md-4">
  81.                     <div class="d-grid gap-2">
  82.                       <a class="btn btn-danger" href="{{ path('product_connect', {id: product.id}) }}">Удалить привязку</a>
  83.                     </div>
  84.                   </div>
  85.                 {% else %}
  86.                   <div class="col-md-12">
  87.                     <div class="d-grid gap-2">
  88.                       <button class="btn btn-primary" type="submit">Привязать</button>
  89.                     </div>
  90.                   </div>
  91.                 {% endif %}
  92.               </div>
  93.             </form>
  94.           </div>
  95.         </div>
  96.       </div>
  97.       <div class="col-md-12">
  98.         <div class="card mt-3">
  99.           <div class="card-header">Наличие у поставщиков</div>
  100.           <div class="card-body">
  101.             <table class="table table-sm table-bordered">
  102.               <thead>
  103.                 <tr>
  104.                   <th>ID</th>
  105.                   <th>Артикул</th>
  106.                   <th>Наименование</th>
  107.                   <th>Партномер</th>
  108.                   <th>Цена закупки</th>
  109.                   <th>Цена продажи</th>
  110.                   <th>Финальная цена</th>
  111.                   <th>Остаток</th>
  112.                   <th>Управление</th>
  113.                 </tr>
  114.               </thead>
  115.               <tbody>
  116.                 {% for availability in product.availabilities %}
  117.                   {% set calculatedPrice = priceCalculator.calculatePriceForAvailability(availability) %}
  118.                   <tr class="{% if availability == optimalAvailability %}table-success{% endif %} {% if availability.stock == 0 %}table-secondary{% endif %}">
  119.                     <td>{{ availability.provider.name }}</td>
  120.                     <td>{{ availability.providerArticle }}</td>
  121.                     <td>{{ availability.providerName }}</td>
  122.                     <td>{{ availability.providerPartnumber }}</td>
  123.                     <td>{{ availability.priceRub }}</td>
  124.                     <td>{{ availability.priceSale }}</td>
  125.                     <td>{{ calculatedPrice }}</td>
  126.                     <td>{{ availability.stock }}</td>
  127.                     <td>
  128.                       <a href="#" class="js-move-availability" data-url="{{ path('product_move_availability', {id: availability.id}) }}">Перенести</a>
  129.                       <br/>
  130.                       <a href="{{ path('product_remove_availability', {id: availability.id}) }}" onclick="return confirm('Вы точно хотите отвязать?');">Отвязать</a>
  131.                     </td>
  132.                   </tr>
  133.                 {% endfor %}
  134.               </tbody>
  135.             </table>
  136.           </div>
  137.         </div>
  138.       </div>
  139.     </div>
  140.   </div>
  141. {% endblock %}
  142. {% block javascripts %}
  143.   {{ parent() }}
  144.   <script>
  145.     (function() {
  146.       const $btnMoveAvailability = $('.js-move-availability');
  147.       $btnMoveAvailability.on('click', function() {
  148.         let $el = $(this);
  149.         let url = $el.attr('data-url');
  150.         let id = prompt('Введите ID товара куда нужно перенести');
  151.         if (id) {
  152.           url += `?to=${id}`;
  153.           window.open(url, '_blank').focus();
  154.         }
  155.       });
  156.     })();
  157.   </script>
  158. {% endblock %}