templates/MDS/VenuesBundle/reservations/edit-reservations-simple.html.twig line 1

Open in your IDE?
  1. {% extends 'MDS/VenuesBundle/base-reservations.html.twig' %}
  2. {% block pagetitleinterno %}
  3.     <div class="page-title" style="margin-left:280px">
  4.         <h4 class="text-mint_cream"><i class="icon-list position-left text-mint_cream"></i> <span class="text-semibold text-mint_cream">{% trans %}Venues{% endtrans %}</span> - {% trans %}Reservation{% endtrans %}</h4>
  5.     </div>
  6. {% endblock %}
  7. {% block breadcrumbs %}
  8.     <ul class="breadcrumb">
  9.         <li><a href="/venues/list"><i class="icon-home2 position-left text-mint_cream"></i>{% trans %}Home{% endtrans %}</a></li>
  10.         <li class="active"><i class="icon-plus-circle2 position-left text-mint_cream"></i>{% trans %}Edit Reservations{% endtrans %}</li>
  11.     </ul>
  12. {% endblock %}
  13. {% block contentReservation %}
  14. <div class="row settings-page" id="client-client-subpage">
  15.     <div class="panel panel-default">
  16.         {# === HEADER: título + acciones === #}
  17.         <div class="panel-heading clearfix">
  18.             <h5 class="panel-title pull-left" style="padding-top:7px;">
  19.                 <i class="icon-pencil text-vivid_sky_blue"></i>
  20.                 {% trans %}Editar Expediente{% endtrans %}
  21.             </h5>
  22.             <div class="pull-right btn-group" role="toolbar">
  23.                 {# WEB Cotización #}
  24.                 <div class="btn-group">
  25.                     <button class="btn bg-btn-lavender_gray dropdown-toggle btn-gl"
  26.                             type="button"
  27.                             id="dropdownMenuCotizacion"
  28.                             data-toggle="dropdown"
  29.                             aria-haspopup="true"
  30.                             aria-expanded="false">
  31.                         {% trans %}WEB Cotización{% endtrans %} <span class="caret"></span>
  32.                     </button>
  33.                     <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuCotizacion" role="menu" style="left: 0; right: auto;">
  34.                         <li>
  35.                             <a href="{{ urlCotizacion }}" target="_blank">
  36.                                 {% trans %}Ver web{% endtrans %}
  37.                             </a>
  38.                         </li>
  39.                         <li>
  40.                             <a href="#" onclick="copyProposalLink('{{ urlCotizacion }}'); return false;">
  41.                                 {% trans %}Copiar URL{% endtrans %}
  42.                             </a>
  43.                         </li>
  44.                         {# NUEVA COTIZACION WEB #}
  45.                         <li>
  46.                             <a href="{{ urlCotizacionNew }}" target="_blank">
  47.                                 {% trans %}NUEVO: Ver web{% endtrans %}
  48.                             </a>
  49.                         </li>
  50.                         <li>
  51.                             <a href="#" onclick="copyProposalLink('{{ urlCotizacionNew }}'); return false;">
  52.                                 {% trans %}NUEVO: Copiar URL{% endtrans %}
  53.                             </a>
  54.                         </li>
  55.                         <li>
  56.                             <a href="#"
  57.                                data-mailcontent="{{ msgMailToClient|escape('html_attr') }}"
  58.                                onclick="copyEmail(this.getAttribute('data-mailcontent')); return false;">
  59.                                 {% trans %}NUEVO: Copiar Email para el Cliente{% endtrans %}
  60.                             </a>
  61.                         </li>
  62.                         {# OBSERVACIONES WEB #}
  63.                         <li class="divider" role="separator"></li>
  64.                         <li>
  65.                             <a href="#" data-toggle="modal" data-target="#modalWebObservations">
  66.                                 <i class="fa fa-comments-o" aria-hidden="true"></i> {% trans %}Ver observaciones web{% endtrans %}
  67.                             </a>
  68.                         </li>
  69.                     </ul>
  70.                 </div>
  71.                 {% if aveFile is defined and aveFile is not empty %}
  72.                     <a href="/avexpress/fileedit/{{ aveFile.id }}" target="_blank" class="btn bg-btn-green_av btn-gl text-white -align-left">{% trans %}Expediente AV{% endtrans %}</a>
  73.                 {% endif %}
  74.                 {% if htFile is defined and htFile is not empty %}
  75.                     <a href="/higotrigo/ht/file/{{ htFile.id }}/edit" target="_blank" class="btn bg-btn-orange_cat btn-gl">{% trans %}Expediente Catering{% endtrans %}</a>
  76.                 {% endif %}
  77.                 {% if viewContract %}
  78.                     {% set contactMissing = (reserva.clientContact is empty) and (reserva.contactUnregistered is empty or reserva.nameContactUnregistered is empty) %}
  79.                     {% if contactMissing %}
  80.                         <div class="btn-group" style="display: inline-block; cursor: not-allowed;" data-toggle="tooltip" data-placement="bottom" title="{% trans %}No se pueden gestionar contratos porque el cliente no tiene un contacto asociado ni se han especificado los datos de contacto no registrado (Email y Nombre) en la reserva.{% endtrans %}">
  81.                             <button class="btn bg-btn-lavender_gray dropdown-toggle btn-gl disabled" type="button" style="pointer-events: none;" disabled="disabled">
  82.                                 {% trans %}Contratos{% endtrans %}
  83.                                 <span class="caret"></span>
  84.                             </button>
  85.                         </div>
  86.                     {% else %}
  87.                         <div class="btn-group">
  88.                             <button class="btn bg-btn-lavender_gray dropdown-toggle btn-gl" type="button" id="dropdownMenuContrato" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  89.                                 {% trans %}Contratos{% endtrans %}
  90.                                 <span class="caret"></span>
  91.                             </button>
  92.                             <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuContrato" role="menu" style="min-width: 250px;">
  93.                                 {% for contract in reservationContracts %}
  94.                                     <li class="dropdown-header" style="font-weight: bold; color: #333; background: #f9f9f9; padding: 10px;">
  95.                                         {{ contract.model.title|default('Contrato ' ~ loop.index) }}
  96.                                         {% if contract.isSigned %}
  97.                                             <span class="badge pull-right" style="background-color: #27ae60; color: #fff; font-size: 10px; margin-top: 1px;">
  98.                                                 <i class="icon-checkmark3" style="font-size: 9px;"></i> {% trans %}Firmado{% endtrans %}
  99.                                             </span>
  100.                                         {% endif %}
  101.                                     </li>
  102.                                     <li>
  103.                                         <a href="/venues/contract/{{ contract.id }}" target="_blank">
  104.                                             <i class="icon-pencil"></i> {% trans %}Versión Editable{% endtrans %}
  105.                                         </a>
  106.                                     </li>
  107.                                     {% if not loop.last %}<li class="divider"></li>{% endif %}
  108.                                 {% endfor %}
  109.                                 <li class="divider" style="margin: 4px 0;"></li>
  110.                                 <li>
  111.                                     <a href="#" id="btn-open-signed-contracts" style="color: #101230; font-weight: 600; padding: 8px 15px; background: #f8fafc;">
  112.                                         <i class="icon-file-check position-left" style="color: #27ae60;"></i> {% trans %}Contratos Firmados del Expediente{% endtrans %}
  113.                                     </a>
  114.                                 </li>
  115.                             </ul>
  116.                         </div>
  117.                     {% endif %}
  118.                 {% endif %}
  119.                 {# Acciones principales #}
  120.                 {% if clientId != 0 %}
  121.                     <a href="/venues/payment/{{ id }}" class="btn bg-btn-limerick btn-gl">
  122.                         {% trans %}Pagos y Proformas de Depósito{% endtrans %} <i class="icon-coin-euro position-right"></i>
  123.                     </a>
  124.                     <a href="/venues/selinvoice/{{ id }}" class="btn bg-btn-vivid_sky_blue btn-gl">
  125.                         {% trans %}Facturación{% endtrans %} <i class="icon-eye8 position-right"></i>
  126.                     </a>
  127.                 {% endif %}
  128.                 {% if is_granted('ROLE_ADMIN') %}
  129.                     <a href="/venues/summary/prices/{{ id }}" class="btn bg-btn-rich_black btn-gl">
  130.                         {% trans %}Resumen Económico{% endtrans %} <i class="icon-balance position-right"></i>
  131.                     </a>
  132.                 {% endif %}
  133.                 <a href="#" class="btn bg-btn-vivid_sky_blue btn-gl" data-toggle="modal" data-target="#tracingsModal" style="color: white;">
  134.                     <i class="icon-history position-left"></i> Seguimientos <span class="badge" style="background-color: rgba(0,0,0,0.2); color: white;">{{ tracings|length }}</span>
  135.                 </a>
  136.                 <a href="/venues/delete/{{ id }}" class="btn bg-btn-trash btn-gl" onclick="return confirm('¿Deseas CANCELAR esta reserva por completo?');">
  137.                     {% trans %}Cancelar Reserva{% endtrans %} <i class="icon-cancel-circle2 position-right"></i>
  138.                 </a>
  139.             </div>
  140.         </div>
  141.         {# === BODY === #}
  142.         <div class="panel-body">
  143.             <div class="row settings-page">
  144.                 {# flashbags #}
  145.                 {% for flashMessage in app.session.flashbag.get('mensajereservation') %}
  146.                     <div class="hidden alertFlashMensaje" data-mensaje="{{ flashMessage|raw }}"></div>
  147.                 {% endfor %}
  148.                 {% for flashMessage in app.session.flashbag.get('mensajereservationerror') %}
  149.                     <div class="hidden alertFlashMensajeError" data-mensajeerror="{{ flashMessage|raw }}"></div>
  150.                 {% endfor %}
  151.                 {% for flashMessage in app.session.flashbag.get('mensaje') %}
  152.                     <div class="hidden alertFlashMensaje" data-mensaje="{{ flashMessage|raw }}"></div>
  153.                 {% endfor %}
  154.                 {% for flashMessage in app.session.flashbag.get('mensajeerror') %}
  155.                     <div class="hidden alertFlashMensajeError" data-mensajeerror="{{ flashMessage|raw }}"></div>
  156.                 {% endfor %}
  157.                 <div class="col-xs-12">
  158.                     <div class="margen-15"></div>
  159.                     {# FORMULARIO PRINCIPAL DE EDICIÓN DE RESERVA #}
  160.                     <div class="panel panel-default">
  161.                         <div class="panel-body">
  162.                             <style>
  163.                                 .stepper {
  164.                                     display: flex;
  165.                                     justify-content: space-between;
  166.                                     align-items: center;
  167.                                     padding: 20px;
  168.                                     border-radius: 10px;
  169.                                     color: white;
  170.                                     margin-bottom: 30px;
  171.                                 }
  172.                                 .step { text-align: center; position: relative; flex: 1; }
  173.                                 .step:not(:last-child)::after {
  174.                                     content: "";
  175.                                     position: absolute;
  176.                                     top: 24px;
  177.                                     right: -50%;
  178.                                     height: 4px;
  179.                                     width: 100%;
  180.                                     background: #d3d3d3;
  181.                                     z-index: 0;
  182.                                     transition: background-color 0.5s ease;
  183.                                 }
  184.                                 .step.completed:not(:last-child)::after { background: #32aaf0; }
  185.                                 .step .icon {
  186.                                     background: #fff;
  187.                                     border-radius: 50%;
  188.                                     padding: 15px;
  189.                                     font-size: 24px;
  190.                                     z-index: 1;
  191.                                     position: relative;
  192.                                     display: inline-block;
  193.                                     font-family: 'icomoon';
  194.                                     color: #101230;
  195.                                     transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  196.                                     cursor: pointer;
  197.                                     box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  198.                                 }
  199.                                 .step.completed .icon,
  200.                                 .step.active .icon {
  201.                                     background: #32aaf0;
  202.                                     color: #fafffd;
  203.                                 }
  204.                                 .step.active .icon {
  205.                                     transform: scale(1.15);
  206.                                     box-shadow: 0 0 15px rgba(50, 170, 240, 0.4);
  207.                                 }
  208.                                 .step span {
  209.                                     display: block;
  210.                                     margin-top: 8px;
  211.                                     font-weight: bold;
  212.                                     font-size: 14px;
  213.                                     color: #d3d3d3;
  214.                                     transition: color 0.4s ease, transform 0.4s ease;
  215.                                 }
  216.                                 .step.completed span { color: #101230; }
  217.                                 .step.active span {
  218.                                     color: #32aaf0;
  219.                                     transform: translateY(2px);
  220.                                 }
  221.                             </style>
  222.                             {% set pasos = ['Iniciado', 'Cotizado', 'Bloqueo', 'Confirmed', 'Invoiced'] %}
  223.                             {% set iconos = {
  224.                                 'Iniciado': 'icon-play',
  225.                                 'Cotizado': 'icon-coin-euro',
  226.                                 'Bloqueo': 'icon-lock',
  227.                                 'Confirmed': 'icon-checkmark-circle',
  228.                                 'Invoiced': 'icon-file-text'
  229.                             } %}
  230.                             {% set estadoActual = reserva.status %}
  231.                             {% set estadoIndex = -1 %}
  232.                             {% for i in 0..pasos|length - 1 %}
  233.                                 {% if pasos[i] == reserva.status %}
  234.                                     {% set estadoIndex = i %}
  235.                                 {% endif %}
  236.                             {% endfor %}
  237.                             <div class="stepper" id="estado-stepper" data-estado-index="{{ estadoIndex }}">
  238.                                 {% for paso in pasos %}
  239.                                     {% set index = loop.index0 %}
  240.                                     {% set clase = '' %}
  241.                                     {% if index < estadoIndex %}
  242.                                         {% set clase = 'completed' %}
  243.                                     {% elseif index == estadoIndex %}
  244.                                         {% set clase = 'active' %}
  245.                                     {% endif %}
  246.                                     {% set claseDeshabilitado = (paso == 'Iniciado') ? 'disabled' : '' %}
  247.                                     <div class="step {{ claseDeshabilitado }}" data-step-index="{{ index }}" data-step-type="{{ clase }}">
  248.                                         <div class="icon {{ iconos[paso] }}"></div>
  249.                                         <span>{{ paso|upper }}</span>
  250.                                     </div>
  251.                                 {% endfor %}
  252.                             </div>
  253.                             {% trans_default_domain 'messages' %}
  254.                             {{ form_start(form, {
  255.                                 'action': path('reservations_update', {'id': id}),
  256.                                 'attr': {
  257.                                     'class': 'form-horizontal',
  258.                                     'role': 'form',
  259.                                     'autocomplete': 'off'
  260.                                 }
  261.                             }) }}
  262.                                 <div class="form-group">
  263.                                     <label class="col-sm-3 control-label">{% trans %}Venues ID{% endtrans %}</label>
  264.                                     <div class="col-sm-9">
  265.                                         <b><p class="form-control-static">
  266.                                             #{{ id }} —> {% trans %}Created by Agent{% endtrans %}: {{ createdBy }} ({{ reserva.createdAt|date('d/m/Y') }})
  267.                                         </p></b>
  268.                                     </div>
  269.                                 </div>
  270.                                 <div class="form-group">
  271.                                     {{ form_label(form.title, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  272.                                     <div class="col-sm-6">
  273.                                         {{ form_widget(form.title, {'attr': {'class': 'form-control'}}) }}
  274.                                         {{ form_errors(form.title) }}
  275.                                     </div>
  276.                                     <div class="col-sm-3">
  277.                                         <div class="checkbox" style="margin:0">
  278.                                             <label>
  279.                                                 {{ form_widget(form.sucoe, {'attr': {'class': 'switchery-info'}}) }}
  280.                                                 {{ form_label(form.sucoe) }}
  281.                                             </label>
  282.                                         </div>
  283.                                     </div>
  284.                                 </div>
  285.                                 <div class="form-group">
  286.                                     {{ form_label(form.client, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  287.                                     <div class="col-sm-5">
  288.                                         {{ form_widget(form.client, {'attr': {'class': 'form-control select2'}}) }}
  289.                                         {{ form_errors(form.client) }}
  290.                                     </div>
  291.                                     <div class="col-sm-1">
  292.                                         <a href="/client/add" class="btn bg-btn-vivid_sky_blue btn-gl" target="_blank">
  293.                                             {% trans %}Add Client{% endtrans %} <i class="icon-user-plus position-right"></i>
  294.                                         </a>
  295.                                     </div>
  296.                                 </div>
  297.                                 <div class="form-group">
  298.                                     <label for="client_contact" class="col-sm-3 control-label">{% trans %}Contacto{% endtrans %}</label>
  299.                                     <div class="col-sm-9">
  300.                                         <div class="InputClientContactSpinner">
  301.                                             {{ form_widget(form.clientContact) }}
  302.                                             <select class="form-control select2" id="ui_client_contact_selector"
  303.                                                     onchange="document.getElementById('{{ form.clientContact.vars.id }}').value = this.value;">
  304.                                                 <option value="" selected="selected">{% trans %}Seleccione un contacto{% endtrans %}</option>
  305.                                                 {% for contact in clientsContact %}
  306.                                                     <option value="{{ contact.id }}" {% if contact.id == form.clientContact.vars.value %}selected{% endif %}>
  307.                                                         {{ contact.name }} {{ contact.lastName }} ({{ contact.email }})
  308.                                                     </option>
  309.                                                 {% endfor %}
  310.                                             </select>
  311.                                         </div>
  312.                                         <span class="help-block">{{ form_errors(form.clientContact) }}</span>
  313.                                     </div>
  314.                                 </div>
  315.                                 <div class="form-group">
  316.                                     <label class="col-sm-3 control-label">{% trans %}Contacto No Registrado{% endtrans %}</label>
  317.                                     <div class="col-sm-9">
  318.                                         <div class="row">
  319.                                             <div class="col-sm-4">
  320.                                                 {{ form_widget(form.contactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Correo electrónico'}}) }}
  321.                                                 {{ form_errors(form.contactUnregistered) }}
  322.                                             </div>
  323.                                             <div class="col-sm-4">
  324.                                                 {{ form_widget(form.nameContactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Nombre y apellido'}}) }}
  325.                                                 {{ form_errors(form.nameContactUnregistered) }}
  326.                                             </div>
  327.                                             <div class="col-sm-4">
  328.                                                 {{ form_widget(form.phoneContactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Teléfono'}}) }}
  329.                                                 {{ form_errors(form.nameContactUnregistered) }}
  330.                                             </div>
  331.                                         </div>
  332.                                     </div>
  333.                                 </div>
  334.                                 <div class="form-group">
  335.                                     {{ form_label(form.status, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  336.                                     <div class="col-sm-3">
  337.                                         {{ form_widget(form.status, {'attr': {'class': 'form-control select2'}}) }}
  338.                                         {{ form_errors(form.status) }}
  339.                                     </div>
  340.                                 </div>
  341.                                 <div class="form-group">
  342.                                     {{ form_label( form.dateStart, null, {'label_attr': {'class': 'col-sm-3 control-label'}} ) }}
  343.                                     <div class="col-sm-2">
  344.                                         {{ form_widget(form.dateStart, { 'attr': { 'class': 'form-control', 'placeholder': 'Fecha de Inicio' }, 'disabled': true }) }}
  345.                                         {{ form_errors(form.dateStart) }}
  346.                                     </div>
  347.                                     {{ form_label( form.dateEnd, null, {'label_attr': {'class': 'col-sm-2 control-label text-right'}} ) }}
  348.                                     <div class="col-sm-2">
  349.                                         {{ form_widget(form.dateEnd, { 'attr': { 'class': 'form-control', 'placeholder': 'Fecha de Fin' }, 'disabled': true }) }}
  350.                                         {{ form_errors(form.dateEnd) }}
  351.                                     </div>
  352.                                     <div class="col-sm-3">
  353.                                         <button type="button" class="btn bg-btn-vivid_sky_blue btn-gl" data-toggle="modal" data-target="#modalReschedule">
  354.                                             {% trans %}Reprogramar las fechas del evento{% endtrans %} <i class="icon-calendar position-right"></i>
  355.                                         </button>
  356.                                     </div>
  357.                                 </div>
  358.                                 <div class="form-group">
  359.                                     <label class="col-sm-3 control-label">
  360.                                         {{ form_label(form.daysBlock) }} / {{ form_label(form.days) }}
  361.                                     </label>
  362.                                     <div class="col-sm-3">
  363.                                         {% set daysBlockAttrs = {'class': 'form-control'} %}
  364.                                         {% if form.status.vars.value == 'Bloqueo' %}
  365.                                             {% set daysBlockAttrs = daysBlockAttrs|merge({'disabled': 'disabled'}) %}
  366.                                         {% endif %}
  367.                                         {{ form_widget(form.daysBlock, {'attr': daysBlockAttrs}) }}
  368.                                         {{ form_errors(form.daysBlock) }}
  369.                                     </div>
  370.                                     <div class="col-sm-6">
  371.                                         {{ form_widget(form.days, {'attr': {'class': 'form-control', 'id': 'days', 'placeholder': 'Fecha límite bloqueo'}}) }}
  372.                                         {{ form_errors(form.days) }}
  373.                                     </div>
  374.                                 </div>
  375.                                 <div class="form-group">
  376.                                     {% if form.status.vars.value == 'Bloqueo' %}
  377.                                         {{ form_label(form.dateNextMailAlert, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  378.                                         <div class="col-sm-3">
  379.                                             {{ form_widget(form.dateNextMailAlert, {'attr': {'class': 'form-control'}}) }}
  380.                                         </div>
  381.                                     {% else %}
  382.                                         <div style="display:none;">
  383.                                             {{ form_widget(form.dateNextMailAlert) }}
  384.                                         </div>
  385.                                     {% endif %}
  386.                                 </div>
  387.                                 {{ form_widget(form.priority) }}
  388.                                 {{ form_widget(form.contract) }}
  389.                                 <div class="form-group">
  390.                                     {{ form_label(form.comHtGp, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  391.                                     <div class="col-sm-1">
  392.                                         {{ form_widget(form.comHtGp, {
  393.                                             'attr': {
  394.                                                 'class': 'form-control',
  395.                                                 'placeholder': '14 (Por defecto)'
  396.                                             }
  397.                                         }) }}
  398.                                         {{ form_errors(form.comHtGp) }}
  399.                                     </div>
  400.                                 </div>
  401.                                 <div class="form-group">
  402.                                     {{ form_label(form.description, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  403.                                     <div class="col-sm-9">
  404.                                         {{ form_widget(form.description) }}
  405.                                         {{ form_errors(form.description) }}
  406.                                     </div>
  407.                                 </div>
  408.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;"></div>
  409.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;">
  410.                                     <div class="form-group form-group-material">
  411.                                         <div class="text-center">
  412.                                             {{ form_widget(form.save, {'attr': {'class': 'btn bg-btn-limerick btn-block'}}) }}
  413.                                         </div>
  414.                                     </div>
  415.                                 </div>
  416.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;"></div>
  417.                             {{ form_end(form) }}
  418.                         </div>
  419.                     </div>
  420.                     {# FORMULARIO: AÑADIR SALA INDIVIDUAL #}
  421.                     <div class="panel panel-default">
  422.                         <div class="panel-body">
  423.                             <div class="row">
  424.                                 <div class="col-xs-12 text-center">
  425.                                     <h3><strong>{% trans %}RESERVA DE SALAS{% endtrans %}</strong></h3>
  426.                                 </div>
  427.                                 <div class="col-xs-12">
  428.                                     <legend class="border text-vivid_sky_blue">{% trans %}Salas, Montaje y Desmontaje (Cargar día a día){% endtrans %}</legend>
  429.                                 </div>
  430.                             </div>
  431.                             <form name="mds_venuesbundle_revervation_form2"
  432.                                   method="post"
  433.                                   action="/venues/createsimplelounge/{{ id }}"
  434.                                   class="form-inline"
  435.                                   role="form"
  436.                                   autocomplete="off">
  437.                                 <div class="row" style="margin-bottom:10px">
  438.                                     <div class="col-sm-2">
  439.                                         <div class="form-group">
  440.                                             <label for="reservation_sala_salasPrecargadas" class="control-label">
  441.                                                 {% trans %}Salas Precargadas{% endtrans %} *
  442.                                             </label>
  443.                                             <select id="reservation_sala_salasPrecargadas"
  444.                                                     name="reservation_sala[salaPrecargadas]"
  445.                                                     class="form-control select2" required>
  446.                                                 <option value="">{% trans %}Seleccione una sala{% endtrans %}</option>
  447.                                                 {% for loungePre in loungesPre %}
  448.                                                     <option value="{{ loungePre.id }}">{{ loungePre.name|capitalize }}</option>
  449.                                                 {% endfor %}
  450.                                             </select>
  451.                                         </div>
  452.                                     </div>
  453.                                     <div class="col-sm-2">
  454.                                         <div class="form-group">
  455.                                             <label for="reservation_sala_date" class="control-label">{% trans %}Date{% endtrans %} *</label>
  456.                                             <input type="date" id="reservation_sala_date"
  457.                                                    name="reservation_sala[dateStart]"
  458.                                                    class="form-control" required>
  459.                                         </div>
  460.                                     </div>
  461.                                     <div class="col-sm-2">
  462.                                         <div class="form-group">
  463.                                             <label for="reservation_sala_type" class="control-label">{% trans %}Type{% endtrans %}</label>
  464.                                             <select id="reservation_sala_type" name="reservation_sala[type]" class="form-control" style="padding:0px;text-align-last: center;">
  465.                                                 <option value="" selected>Día de Evento</option>
  466.                                                 <option value="Montaje">Montaje</option>
  467.                                                 <option value="Desmontaje">Desmontaje</option>
  468.                                             </select>
  469.                                         </div>
  470.                                     </div>
  471.                                     <input type="hidden" name="reservation_sala[servicePrice]" id="reservation_sala_price" value="0">
  472.                                     <div class="col-sm-1">
  473.                                         <div class="form-group">
  474.                                             <label for="reservation_sala_hourStart" class="control-label">{% trans %}Inicio{% endtrans %} *</label>
  475.                                             <input type="text" class="form-control"
  476.                                                    name="reservation_sala[hourStart]" id="reservation_sala_hourStart"
  477.                                                    placeholder="00:00" required>
  478.                                         </div>
  479.                                     </div>
  480.                                     <div class="col-sm-1">
  481.                                         <div class="form-group">
  482.                                             <label for="reservation_sala_hourEnd" class="control-label">{% trans %}Fin{% endtrans %} *</label>
  483.                                             <input type="text" class="form-control"
  484.                                                    name="reservation_sala[hourEnd]" id="reservation_sala_hourEnd"
  485.                                                    placeholder="00:00" required>
  486.                                         </div>
  487.                                     </div>
  488.                                     <div class="col-sm-1">
  489.                                         <div class="form-group">
  490.                                             <label for="reservation_sala_pax" class="control-label">{% trans %}Pax{% endtrans %}</label>
  491.                                             <input type="text" class="form-control" name="reservation_sala[pax]" id="reservation_sala_pax" required>
  492.                                         </div>
  493.                                     </div>
  494.                                     <div class="col-sm-1">
  495.                                         <div class="form-group">
  496.                                             <label for="reservation_sala_servicePrice" class="control-label">{% trans %}Precio{% endtrans %}</label>
  497.                                             <input type="number"
  498.                                                    step="any"
  499.                                                    class="form-control"
  500.                                                    name="reservation_sala[servicePrice]"
  501.                                                    id="reservation_sala_servicePrice"
  502.                                                    required>
  503.                                         </div>
  504.                                     </div>
  505.                                     <div class="col-sm-1">
  506.                                         <div class="form-group">
  507.                                             <label for="reservation_sala_idQuote" class="control-label">{% trans %}# Opción{% endtrans %}</label>
  508.                                             <input type="number" class="form-control"
  509.                                                    name="reservation_sala[idQuote]" id="reservation_sala_idQuote">
  510.                                         </div>
  511.                                     </div>
  512.                                     <div class="col-sm-1">
  513.                                         <div class="form-group">
  514.                                             <label class="control-label" style="display:block">&nbsp;</label>
  515.                                             <div class="input-group">
  516.                                                 <span class="group-btn">
  517.                                                     <button type="submit" id="reservation_sala_save" name="reservation_sala[save]" class="btn bg-btn-limerick">
  518.                                                       {% trans %}Add{% endtrans %}
  519.                                                     </button>
  520.                                                 </span>
  521.                                             </div>
  522.                                         </div>
  523.                                     </div>
  524.                                 </div>
  525.                             </form>
  526.                         </div>
  527.                     </div>
  528.                     {# SECCIÓN COTIZADO Y GRID DE OPCIONES #}
  529.                     {% if numeroItems > 0 %}
  530.                         <div class="panel panel-default">
  531.                             <div class="panel-body">
  532.                                 <div class="row">
  533.                                     <div class="col-xs-12">
  534.                                         <strong class="text-vivid_sky_blue">
  535.                                             <legend class="border">
  536.                                                 <div class="row">
  537.                                                     <div class="col-xs-10">
  538.                                                         <h3>{% trans %}COTIZADO{% endtrans %}</h3>
  539.                                                     </div>
  540.                                                     <div class="col-xs-2">
  541.                                                         {% set firstLevel = arrayLoungesInFile|first %}
  542.                                                         {% set firstItem = firstLevel|first %}
  543.                                                         <label for="reservation_idWebLanguage" class="control-label">{% trans %}Idioma web{% endtrans %}</label>
  544.                                                         <select id="reservation_idWebLanguage" class="form-control" onchange="changeLanguageWeb(this.value)">
  545.                                                             {% for language, value in languagesWeb %}
  546.                                                                 <option value="{{ value }}" {% if firstItem.language is null or firstItem.language == value %}selected{% endif %}>
  547.                                                                     {{ language }}
  548.                                                                 </option>
  549.                                                             {% endfor %}
  550.                                                         </select>
  551.                                                     </div>
  552.                                                 </div>
  553.                                             </legend>
  554.                                         </strong>
  555.                                     </div>
  556.                                 </div>
  557.                                 <form name="mds_venuesbundle_loungrid"
  558.                                       method="post"
  559.                                       action="/venues/updateloungegrid"
  560.                                       class="form-horizontal"
  561.                                       role="form"
  562.                                       autocomplete="off">
  563.                                     <input type="hidden" name="reservationId" value="{{ id }}">
  564.                                     <input type="hidden" name="reservation_global_lounge[language]" id="reservation_global_lounge_language_hidden" value="{{ firstItem.language }}">
  565.                                     {% for keyRank, itemRankQuote in arrayLoungesByDay %}
  566.                                         <!-- CARD MINIMALISTA DE LA OPCIÓN -->
  567.                                         <div class="develup-card" style="background: #ffffff; border: 1px solid #ded9e2; border-radius: 8px !important; padding: 30px; margin-bottom: 45px; box-shadow: 0 4px 12px rgba(16, 18, 48, 0.04);">
  568.                                             <!-- Cabecera interna de la Opción -->
  569.                                             <div class="row" style="margin-bottom: 25px; padding-bottom: 15px; border-bottom: 1px solid #ded9e2;">
  570.                                                 <div class="col-sm-6">
  571.                                                     <h3 class="text-limerick" style="font-size: 22px; font-weight: 700; margin: 0; letter-spacing: -0.5px;">
  572.                                                         {% trans %}Opción{% endtrans %} <span class="text-limerick" style="font-weight: 700;"># {{ keyRank }}</span>
  573.                                                     </h3>
  574.                                                 </div>
  575.                                                 <div class="col-sm-6 text-right">
  576.                                                     <a class="btn bg-btn-limerick btn-sm" href="/venues/checkquote/{{ id }}/{{ keyRank }}" onclick="return confirm('{% trans %}¿Deseas eliminar todas las otras cotizaciones?{% endtrans %}');" style="border-radius: 8px !important; font-weight: bold;">
  577.                                                         <i class="icon-check"></i> {% trans %}Aprobar{% endtrans %}
  578.                                                     </a>
  579.                                                     <a class="btn bg-btn-trash btn-sm" href="/venues/deletequote/{{ id }}/{{ keyRank }}" onclick="return confirm('{% trans %}¿Deseas eliminar la cotización?{% endtrans %}');" style="border-radius: 8px !important; margin-left: 5px;">
  580.                                                         <i class="icon-trash"></i>
  581.                                                     </a>
  582.                                                 </div>
  583.                                             </div>
  584.                                             <!-- Contenido de la Opción -->
  585.                                             <div style="padding: 0 5px;">
  586.                                                 {% for key, itemDay in itemRankQuote %}
  587.                                                     <!-- Encabezado de Día -->
  588.                                                     <div class="row" style="margin-top: 25px; margin-bottom: 15px;">
  589.                                                         <div class="col-sm-6">
  590.                                                             <h4 class="text-vivid_sky_blue" style="margin: 0; font-weight: 600; font-size: 15px; display: inline-flex; align-items: center; gap: 6px;">
  591.                                                                 <i class="icon-calendar"></i> {{ key|slice(6,2) }}/{{ key|slice(4,2) }}/{{ key|slice(0,4) }}
  592.                                                             </h4>
  593.                                                         </div>
  594.                                                         <div class="col-sm-6 text-right">
  595.                                                             <a href="/venues/duplicateday/{{ id }}/{{ key|slice(6,2) }}-{{ key|slice(4,2) }}-{{ key|slice(0,4) }}/{{ keyRank }}" class="btn bg-btn-vivid_sky_blue btn-xs" style="border-radius: 8px !important; font-weight: bold; padding: 4px 10px;">
  596.                                                                 <i class="icon-docs"></i> {% trans %}Duplicar Día{% endtrans %}
  597.                                                             </a>
  598.                                                         </div>
  599.                                                     </div>
  600.                                                     <!-- Tabla de Edición de Salas -->
  601.                                                     <div class="table-responsive" style="margin-bottom: 20px;">
  602.                                                         <table class="table" style="margin-bottom: 0;">
  603.                                                             <thead>
  604.                                                                 <tr class="text-rich_black" style="border-bottom: 1px solid #ded9e2; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">
  605.                                                                     <th style="width: 15%; padding-bottom: 8px;">{% trans %}Fecha{% endtrans %}</th>
  606.                                                                     <th style="width: 25%; padding-bottom: 8px;">{% trans %}Sala{% endtrans %}</th>
  607.                                                                     <th style="width: 12%; padding-bottom: 8px;">{% trans %}Precio{% endtrans %}</th>
  608.                                                                     <th style="width: 18%; padding-bottom: 8px;">{% trans %}IVA{% endtrans %}</th>
  609.                                                                     <th style="width: 12%; text-align: center; padding-bottom: 8px;">
  610.                                                                         {% set hasMontaje = false %}
  611.                                                                         {% for item in itemDay %}
  612.                                                                             {% if item.type is not null %}
  613.                                                                                 {% set hasMontaje = true %}
  614.                                                                             {% endif %}
  615.                                                                         {% endfor %}
  616.                                                                         {% if hasMontaje %}{% trans %}Tipo{% endtrans %}{% else %}{% trans %}Personas{% endtrans %}{% endif %}
  617.                                                                     </th>
  618.                                                                     <th style="width: 8%; text-align: center; padding-bottom: 8px;">{% trans %}Inicio{% endtrans %}</th>
  619.                                                                     <th style="width: 8%; text-align: center; padding-bottom: 8px;">{% trans %}Fin{% endtrans %}</th>
  620.                                                                     <th style="width: 2%; padding-bottom: 8px;"></th>
  621.                                                                 </tr>
  622.                                                             </thead>
  623.                                                             <tbody>
  624.                                                                 {% for item in itemDay %}
  625.                                                                     {% set ymd = key|slice(0,4) ~ key|slice(4,2) ~ key|slice(6,2) %}
  626.                                                                     <tr style="border-bottom: 1px dotted #ded9e2;">
  627.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  628.                                                                             <input type="date"
  629.                                                                                    class="form-control input-sm text-rich_black"
  630.                                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][newDate]"
  631.                                                                                    id="newDate_{{ item.id }}"
  632.                                                                                    value="{{ key|slice(0,4) }}-{{ key|slice(4,2) }}-{{ key|slice(6,2) }}" style="border-radius: 8px !important;">
  633.                                                                         </td>
  634.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  635.                                                                             <input type="text" class="form-control input-sm text-rich_black"
  636.                                                                                    id="loungeName_{{ item.id }}"
  637.                                                                                    value="{{ item.loungeName }}" disabled style="font-weight: bold; background: transparent; border: none; box-shadow: none;">
  638.                                                                             <input type="hidden"
  639.                                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][name]"
  640.                                                                                    value="{{ item.loungeName }}">
  641.                                                                         </td>
  642.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  643.                                                                             <div class="input-group input-group-sm">
  644.                                                                                 <input type="number" step="any" class="form-control text-rich_black"
  645.                                                                                        name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][price]"
  646.                                                                                        id="price_{{ item.id }}"
  647.                                                                                        value="{{ item.servicePrice }}" style="border-radius: 8px 0 0 8px !important;">
  648.                                                                                 <span class="input-group-addon text-rich_black" style="background: transparent; border-color: #ccc; font-weight: bold; border-radius: 0 8px 8px 0 !important;">€</span>
  649.                                                                             </div>
  650.                                                                         </td>
  651.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  652.                                                                             <select class="form-control input-sm text-rich_black"
  653.                                                                                     id="iva_{{ item.id }}"
  654.                                                                                     {% if true %}disabled{% endif %} style="background: #fafafa; border-radius: 8px !important;">
  655.                                                                                 <option value="">{% trans %}Selecciona un IVA{% endtrans %}</option>
  656.                                                                                 {% for vat in sageVatRates %}
  657.                                                                                     <option value="{{ vat.id }}" {% if vat.id == item.sageIva.id %}selected{% endif %}>
  658.                                                                                         {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  659.                                                                                     </option>
  660.                                                                                 {% endfor %}
  661.                                                                             </select>
  662.                                                                             <input type="hidden"
  663.                                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][iva]"
  664.                                                                                    value="{{ item.sageIva.id }}">
  665.                                                                         </td>
  666.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  667.                                                                             {% if item.type is null %}
  668.                                                                                 <input type="number" step="1" class="form-control input-sm text-center text-rich_black"
  669.                                                                                        name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][pax]"
  670.                                                                                        id="pax_{{ item.id }}"
  671.                                                                                        value="{{ item.pax }}" style="border-radius: 8px !important;">
  672.                                                                             {% else %}
  673.                                                                                 <input type="text" class="form-control input-sm text-center text-rich_black"
  674.                                                                                        name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][type]"
  675.                                                                                        id="type_{{ item.id }}"
  676.                                                                                        value="{{ item.type }}" readonly style="background: transparent; border: none; box-shadow: none; font-weight: bold;">
  677.                                                                             {% endif %}
  678.                                                                         </td>
  679.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  680.                                                                             <input type="text" class="form-control input-sm text-center text-rich_black"
  681.                                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][dateHourMinStart]"
  682.                                                                                    id="start_{{ item.id }}"
  683.                                                                                    value="{{ item.dateStart|date('H:i') }}" style="border-radius: 8px !important;">
  684.                                                                         </td>
  685.                                                                         <td style="vertical-align: middle; border: none; padding: 8px 4px;">
  686.                                                                             <input type="text" class="form-control input-sm text-center text-rich_black"
  687.                                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][dateHourMinEnd]"
  688.                                                                                    id="end_{{ item.id }}"
  689.                                                                                    value="{{ item.dateEnd|date('H:i') }}" style="border-radius: 8px !important;">
  690.                                                                         </td>
  691.                                                                         <td class="text-center" style="vertical-align: middle; border: none; padding: 8px 4px;">
  692.                                                                             {% if item.id != 0 %}
  693.                                                                                 <a class="bg-btn-trash"
  694.                                                                                    onclick="return confirm('¿Deseas eliminar este elemento?');"
  695.                                                                                    href="/venues/deleteitemsimple/{{ item.id }}/{{ key|slice(6,2) }}-{{ key|slice(4,2) }}-{{ key|slice(0,4) }}"
  696.                                                                                    title="{% trans %}Eliminar este elemento{% endtrans %}"
  697.                                                                                    style="font-size: 15px; border-radius: 8px;"><i class="icon-trash"></i></a>
  698.                                                                             {% else %}
  699.                                                                                 <a class="text-muted"
  700.                                                                                    href="/venues/edit/{{ id }}"
  701.                                                                                    title="{% trans %}Antes debe guardar el expediente{% endtrans %}"
  702.                                                                                    style="font-size: 15px;"><i class="icon-lock"></i></a>
  703.                                                                             {% endif %}
  704.                                                                         </td>
  705.                                                                     </tr>
  706.                                                                 {% endfor %}
  707.                                                             </tbody>
  708.                                                         </table>
  709.                                                     </div>
  710.                                                 {% endfor %}
  711.                                                 <!-- SERVICIOS Y EXTRAS ASOCIADOS A ESTA OPCIÓN -->
  712.                                                 <div style="margin-top: 30px; padding: 15px; background-color: #fcfcfc; border: 1px solid #e9e9e9; border-radius: 8px;">
  713.                                                     <h5 class="text-vivid_sky_blue" style="margin-top: 0; font-weight: bold; font-size: 14px;">
  714.                                                         <i class="icon-box position-left"></i> {% trans %}Servicios Contratados para la Opción{% endtrans %} #{{ keyRank }}
  715.                                                     </h5>
  716.                                                     {% if servicesByRank[keyRank] is defined and servicesByRank[keyRank] is not empty %}
  717.                                                         <div class="table-responsive">
  718.                                                             <table class="table table-condensed table-hover" style="margin-bottom: 0;">
  719.                                                                 <thead>
  720.                                                                     <tr class="active text-muted" style="font-size: 11px;">
  721.                                                                         <th>{% trans %}Categoría{% endtrans %}</th>
  722.                                                                         <th>{% trans %}Servicio / Producto{% endtrans %}</th>
  723.                                                                         <th class="text-center">{% trans %}Fecha{% endtrans %}</th>
  724.                                                                         <th class="text-center">{% trans %}Uds{% endtrans %}</th>
  725.                                                                         <th class="text-right">{% trans %}Precio Un.{% endtrans %}</th>
  726.                                                                         <th class="text-right">{% trans %}Importe Neto{% endtrans %}</th>
  727.                                                                     </tr>
  728.                                                                 </thead>
  729.                                                                 <tbody>
  730.                                                                     {% for rankService in servicesByRank[keyRank] %}
  731.                                                                         {% set priceNet = rankService.price * rankService.units %}
  732.                                                                         <tr>
  733.                                                                             <td>
  734.                                                                                 <span class="label label-info" style="border-radius: 4px;">
  735.                                                                                     {{ rankService.serviceCatName|default('Audiovisuales') }}
  736.                                                                                 </span>
  737.                                                                             </td>
  738.                                                                             <td><strong>{{ rankService.name }}</strong></td>
  739.                                                                             <td class="text-center">{{ rankService.dateInAt ? rankService.dateInAt|date('d/m/Y') : '-' }}</td>
  740.                                                                             <td class="text-center">{{ rankService.units }}</td>
  741.                                                                             <td class="text-right">{{ rankService.price|number_format(2, ',', '.') }} €</td>
  742.                                                                             <td class="text-right"><strong>{{ priceNet|number_format(2, ',', '.') }} €</strong></td>
  743.                                                                         </tr>
  744.                                                                     {% endfor %}
  745.                                                                 </tbody>
  746.                                                             </table>
  747.                                                         </div>
  748.                                                     {% else %}
  749.                                                         <p class="text-muted text-center" style="margin: 10px 0 0 0; font-size: 12px; font-style: italic;">
  750.                                                             {% trans %}No hay servicios ni paquetes extras asociados específicamente a la Opción{% endtrans %} #{{ keyRank }}.
  751.                                                         </p>
  752.                                                     {% endif %}
  753.                                                 </div>
  754.                                                 {# ====== Bloque de textos por lounge/opción ====== #}
  755.                                                 {% if arrayLoungesInFile[keyRank] is defined and arrayLoungesInFile[keyRank] is not empty %}
  756.                                                     {% for item in arrayLoungesInFile[keyRank] %}
  757.                                                         <div style="margin: 25px 0 15px 0; padding: 12px 0; border-top: 1px solid #ded9e2; border-bottom: 1px solid #ded9e2;">
  758.                                                             <div class="row" style="display: flex; align-items: center; flex-wrap: wrap;">
  759.                                                                 <div class="col-sm-4">
  760.                                                                     <span class="text-rich_black" style="font-size: 13px; font-weight: bold; letter-spacing: 0.2px;">
  761.                                                                         <i class="icon-settings text-vivid_sky_blue" style="margin-right: 5px;"></i> {% trans %}Audiovisuales{% endtrans %}
  762.                                                                     </span>
  763.                                                                 </div>
  764.                                                                 <div class="col-sm-8 text-right-sm">
  765.                                                                     <label class="checkbox-inline text-rich_black" style="font-weight: 600; font-size: 12px; margin-top: 0; user-select: none; margin-right: 20px;">
  766.                                                                         <input type="hidden" name="reservation_global_lounge[{{ item.idLounge }}][showAudiovisualPrice]" value="0">
  767.                                                                         <input type="checkbox"
  768.                                                                                name="reservation_global_lounge[{{ item.idLounge }}][showAudiovisualPrice]"
  769.                                                                                id="show_av_price_{{ item.idLounge }}"
  770.                                                                                value="1"
  771.                                                                                {% if item.showAudiovisualPrice == true or item.showAudiovisualPrice == 1 %}checked="checked"{% endif %}>
  772.                                                                         {% trans %}Mostrar y sumar precio del paquete AV{% endtrans %}
  773.                                                                     </label>
  774.                                                                     <label class="checkbox-inline text-rich_black" style="font-weight: 600; font-size: 12px; margin-top: 0; user-select: none;">
  775.                                                                         <input type="hidden" name="reservation_global_lounge[{{ item.idLounge }}][showAudiovisualPackage]" value="0">
  776.                                                                         <input type="checkbox"
  777.                                                                                name="reservation_global_lounge[{{ item.idLounge }}][showAudiovisualPackage]"
  778.                                                                                id="show_av_package_{{ item.idLounge }}"
  779.                                                                                value="1"
  780.                                                                                {% if item.showAudiovisualPackage == true or item.showAudiovisualPackage == 1 %}checked="checked"{% endif %}>
  781.                                                                         {% trans %}Mostrar paquetes AV{% endtrans %}
  782.                                                                     </label>
  783.                                                                 </div>
  784.                                                             </div>
  785.                                                         </div>
  786.                                                         <div class="row" style="margin-top: 20px;">
  787.                                                             <div class="col-xs-12">
  788.                                                                 <ul class="nav nav-tabs nav-tabs-solid" role="tablist" style="margin-bottom: 0;">
  789.                                                                     <li class="active" role="presentation">
  790.                                                                         <a href="#resumenDescriptivo-{{item.idLounge}}-{{keyRank}}" aria-controls="resumenDescriptivo-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab" style="font-weight: bold; border-radius: 8px 8px 0 0 !important;"><i class="icon-notebook"></i> {% trans %}Resumen Descriptivo{% endtrans %}</a>
  791.                                                                     </li>
  792.                                                                     <li role="presentation">
  793.                                                                         <a href="#general-{{item.idLounge}}-{{keyRank}}" aria-controls="general-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab" style="font-weight: bold; border-radius: 8px 8px 0 0 !important;"><i class="icon-info"></i> {% trans %}Importante (Texto General){% endtrans %}</a>
  794.                                                                     </li>
  795.                                                                     <li role="presentation">
  796.                                                                         <a href="#horarios-{{item.idLounge}}-{{keyRank}}" aria-controls="horarios-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab" style="font-weight: bold; border-radius: 8px 8px 0 0 !important;"><i class="icon-clock"></i> {% trans %}Importante (Horarios){% endtrans %}</a>
  797.                                                                     </li>
  798.                                                                     <li role="presentation">
  799.                                                                         <a href="#parking-{{item.idLounge}}-{{keyRank}}" aria-controls="parking-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab" style="font-weight: bold; border-radius: 8px 8px 0 0 !important;"><i class="icon-direction"></i> {% trans %}Importante (Parking){% endtrans %}</a>
  800.                                                                     </li>
  801.                                                                 </ul>
  802.                                                                 <div class="tab-content" style="background: transparent; padding: 20px 0 0 0; border: none;">
  803.                                                                     <div role="tabpanel" class="tab-pane active" id="resumenDescriptivo-{{item.idLounge}}-{{keyRank}}">
  804.                                                                         <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescription]" class="form-control summernote-small resumenDescriptivo-{{ item.idLounge }}-editor" rows="3">{{ item.loungeImportantDescription }}</textarea>
  805.                                                                     </div>
  806.                                                                     <div role="tabpanel" class="tab-pane" id="general-{{item.idLounge}}-{{keyRank}}">
  807.                                                                         <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescGeneralText]" class="form-control summernote-small general-{{ item.idLounge }}-editor">{{ item.loungeImportantDescGeneralText }}</textarea>
  808.                                                                     </div>
  809.                                                                     <div role="tabpanel" class="tab-pane" id="horarios-{{item.idLounge}}-{{keyRank}}">
  810.                                                                         <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescSchedules]" class="form-control summernote-small horarios-{{ item.idLounge }}-editor">{{ item.loungeImportantDescSchedules }}</textarea>
  811.                                                                     </div>
  812.                                                                     <div role="tabpanel" class="tab-pane" id="parking-{{item.idLounge}}-{{keyRank}}">
  813.                                                                         <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescParking]" class="form-control summernote-small parking-{{ item.idLounge }}-editor">{{ item.loungeImportantDescParking }}</textarea>
  814.                                                                     </div>
  815.                                                                 </div>
  816.                                                             </div>
  817.                                                         </div>
  818.                                                     {% endfor %}
  819.                                                 {% endif %}
  820.                                             </div>
  821.                                         </div>
  822.                                     {% endfor %}
  823.                                     <div class="row" style="margin-top: 40px; margin-bottom: 50px;">
  824.                                         <div class="col-md-4 col-md-offset-4 text-center">
  825.                                             <button type="submit" name="mds_venuesbundle_reservation[save]" class="btn bg-btn-limerick btn-block" style="font-weight: bold; font-size: 15px; border-radius: 8px !important; padding: 12px; text-transform: uppercase; letter-spacing: 1px;">
  826.                                                 <i class="icon-disc"></i> {% trans %}Guardar Cotizaciones{% endtrans %}
  827.                                             </button>
  828.                                         </div>
  829.                                     </div>
  830.                                 </form>
  831.                                 {# ==========================================================
  832.                                    FORMULARIO DUPLICAR COTIZACIÓN
  833.                                    ========================================================== #}
  834.                                 <form name="mds_greenpatiobundle_addquote"
  835.                                       method="post"
  836.                                       action="{{ path('reservations_duplicate_quote') }}"
  837.                                       class="duplicate-quote-form"
  838.                                       role="form"
  839.                                       autocomplete="off">
  840.                                     {# ID DE LA RESERVA #}
  841.                                     <input type="hidden"
  842.                                            name="addquote[reservationId]"
  843.                                            value="{{ id }}">
  844.                                     {# ======================================================
  845.                                        CONTENEDOR PRINCIPAL
  846.                                        ====================================================== #}
  847.                                     <div class="duplicate-quote-container">
  848.                                         {# ==================================================
  849.                                            OPCIÓN ORIGEN
  850.                                            ================================================== #}
  851.                                         <div class="duplicate-source-wrapper">
  852.                                             <div class="duplicate-section-title">
  853.                                                 <i class="icon-copy"></i>
  854.                                                 <div>
  855.                                                     <div class="duplicate-section-title-main">
  856.                                                         Opción a duplicar
  857.                                                     </div>
  858.                                                     <div class="duplicate-section-title-description">
  859.                                                         Indica el número de opción que quieres utilizar como origen.
  860.                                                     </div>
  861.                                                 </div>
  862.                                             </div>
  863.                                             <div class="duplicate-source-field">
  864.                                                 <label for="addquote_idQuote">
  865.                                                     Número de opción
  866.                                                 </label>
  867.                                                 <input type="number"
  868.                                                        class="form-control"
  869.                                                        name="addquote[idQuote]"
  870.                                                        id="addquote_idQuote"
  871.                                                        placeholder="# Opción"
  872.                                                        title="Número de opción que deseas duplicar">
  873.                                             </div>
  874.                                         </div>
  875.                                         {# ==================================================
  876.                                            SALAS DESTINO
  877.                                            ================================================== #}
  878.                                         <div class="duplicate-quote-wrapper">
  879.                                             <div class="duplicate-section-title">
  880.                                                 <i class="icon-office"></i>
  881.                                                 <div>
  882.                                                     <div class="duplicate-section-title-main">
  883.                                                         Salas destino
  884.                                                     </div>
  885.                                                     <div class="duplicate-section-title-description">
  886.                                                         Selecciona una o varias salas y establece su precio.
  887.                                                     </div>
  888.                                                 </div>
  889.                                             </div>
  890.                                             {# ==================================================
  891.                                                ESPACIOS
  892.                                                ================================================== #}
  893.                                             <div class="duplicate-spaces">
  894.                                                 {% for spaceGroup in loungesBySpace %}
  895.                                                     {% set spaceId = 'duplicate-space-' ~ loop.index %}
  896.                                                     {# ==================================================
  897.                                                        TARJETA DEL ESPACIO
  898.                                                        ================================================== #}
  899.                                                     <div class="duplicate-space-card">
  900.                                                         {# CABECERA DEL ESPACIO #}
  901.                                                         <button
  902.                                                             type="button"
  903.                                                             class="duplicate-space-header"
  904.                                                             data-toggle="collapse"
  905.                                                             data-target="#{{ spaceId }}"
  906.                                                             aria-expanded="false"
  907.                                                             aria-controls="{{ spaceId }}"
  908.                                                         >
  909.                                                             <span class="duplicate-space-title">
  910.                                                                 <i class="icon-office"></i>
  911.                                                                 <strong>
  912.                                                                     {{ spaceGroup.name }}
  913.                                                                 </strong>
  914.                                                                 <span class="duplicate-space-count">
  915.                                                                     {{ spaceGroup.lounges|length }}
  916.                                                                     {% if spaceGroup.lounges|length == 1 %}
  917.                                                                         sala
  918.                                                                     {% else %}
  919.                                                                         salas
  920.                                                                     {% endif %}
  921.                                                                 </span>
  922.                                                             </span>
  923.                                                             <i class="icon-chevron-down duplicate-space-chevron"></i>
  924.                                                         </button>
  925.                                                         {# ==================================================
  926.                                                            CONTENIDO DEL ESPACIO
  927.                                                            ================================================== #}
  928.                                                         <div
  929.                                                             id="{{ spaceId }}"
  930.                                                             class="collapse"
  931.                                                         >
  932.                                                             <div class="duplicate-space-body">
  933.                                                                 {# ==================================================
  934.                                                                    CABECERA DE LAS SALAS
  935.                                                                    ================================================== #}
  936.                                                                 <div class="duplicate-lounge-header">
  937.                                                                     <div class="duplicate-col-select">
  938.                                                                         Seleccionar
  939.                                                                     </div>
  940.                                                                     <div class="duplicate-col-name">
  941.                                                                         Sala
  942.                                                                     </div>
  943.                                                                     <div class="duplicate-col-price">
  944.                                                                         Precio
  945.                                                                     </div>
  946.                                                                 </div>
  947.                                                                 {# ==================================================
  948.                                                                    LISTADO DE SALAS
  949.                                                                    ================================================== #}
  950.                                                                 {% for loungePre in spaceGroup.lounges %}
  951.                                                                     <div class="duplicate-lounge-row">
  952.                                                                         {# CHECKBOX #}
  953.                                                                         <div class="duplicate-col-select">
  954.                                                                             <label class="duplicate-checkbox-wrapper">
  955.                                                                                 <input
  956.                                                                                     type="checkbox"
  957.                                                                                     class="duplicate-lounge-check"
  958.                                                                                     id="duplicate_lounge_{{ loungePre.id }}"
  959.                                                                                     name="addquote[salas][{{ loungePre.id }}][selected]"
  960.                                                                                     value="1"
  961.                                                                                 >
  962.                                                                             </label>
  963.                                                                         </div>
  964.                                                                         {# NOMBRE DE LA SALA #}
  965.                                                                         <div class="duplicate-col-name">
  966.                                                                             <label
  967.                                                                                 for="duplicate_lounge_{{ loungePre.id }}"
  968.                                                                                 class="duplicate-lounge-name"
  969.                                                                             >
  970.                                                                                 {{ loungePre.name }}
  971.                                                                             </label>
  972.                                                                         </div>
  973.                                                                         {# PRECIO #}
  974.                                                                         <div class="duplicate-col-price">
  975.                                                                             <div class="input-group duplicate-price-group">
  976.                                                                                 <input
  977.                                                                                     type="number"
  978.                                                                                     step="0.01"
  979.                                                                                     min="0"
  980.                                                                                     class="form-control duplicate-lounge-price"
  981.                                                                                     name="addquote[salas][{{ loungePre.id }}][price]"
  982.                                                                                     placeholder="Precio"
  983.                                                                                     disabled
  984.                                                                                 >
  985.                                                                                 <span class="input-group-addon">
  986.                                                                                     €
  987.                                                                                 </span>
  988.                                                                             </div>
  989.                                                                         </div>
  990.                                                                     </div>
  991.                                                                 {% endfor %}
  992.                                                             </div>
  993.                                                         </div>
  994.                                                     </div>
  995.                                                 {% endfor %}
  996.                                             </div>
  997.                                         </div>
  998.                                         {# ==================================================
  999.                                            ELIMINAR OPCIÓN ORIGEN
  1000.                                            ================================================== #}
  1001.                                         <div class="duplicate-delete-wrapper">
  1002.                                             <div class="alert alert-warning">
  1003.                                                 <label style="margin: 0; cursor: pointer;">
  1004.                                                     <input
  1005.                                                         type="checkbox"
  1006.                                                         name="addquote[deleteSource]"
  1007.                                                         value="1"
  1008.                                                     >
  1009.                                                     <strong>
  1010.                                                         Eliminar la opción origen después de duplicarla
  1011.                                                     </strong>
  1012.                                                 </label>
  1013.                                                 <br>
  1014.                                                 <small>
  1015.                                                     La opción original solo se eliminará si todas
  1016.                                                     las nuevas opciones se crean correctamente.
  1017.                                                 </small>
  1018.                                             </div>
  1019.                                         </div>
  1020.                                         {# ==================================================
  1021.                                            BOTÓN DUPLICAR
  1022.                                            ================================================== #}
  1023.                                         <div class="duplicate-submit-wrapper">
  1024.                                             <button
  1025.                                                 type="submit"
  1026.                                                 id="mds_greenpatiobundle_reservation_addquote"
  1027.                                                 name="mds_greenpatiobundle_reservation[save]"
  1028.                                                 class="btn bg-btn-vivid_sky_blue"
  1029.                                             >
  1030.                                                 Duplicar opciones
  1031.                                             </button>
  1032.                                         </div>
  1033.                                     </div>
  1034.                                 </form>
  1035.                                 {# ==========================================================
  1036.                                    CSS
  1037.                                    ========================================================== #}
  1038.                                 <style>
  1039.                                 /* ==========================================================
  1040.                                    FORMULARIO PRINCIPAL
  1041.                                    ========================================================== */
  1042.                                 .duplicate-quote-form {
  1043.                                     width: 100%;
  1044.                                     margin: 0;
  1045.                                     padding: 0;
  1046.                                 }
  1047.                                 /* ==========================================================
  1048.                                    CONTENEDOR CENTRAL
  1049.                                    ========================================================== */
  1050.                                 .duplicate-quote-container {
  1051.                                     width: 100%;
  1052.                                     max-width: 1050px;
  1053.                                     margin: 0 auto;
  1054.                                     padding: 30px 20px 40px 20px;
  1055.                                     box-sizing: border-box;
  1056.                                 }
  1057.                                 /* ==========================================================
  1058.                                    TÍTULOS DE SECCIÓN
  1059.                                    ========================================================== */
  1060.                                 .duplicate-section-title {
  1061.                                     display: flex;
  1062.                                     align-items: flex-start;
  1063.                                     width: 100%;
  1064.                                     margin-bottom: 18px;
  1065.                                     color: #101230;
  1066.                                 }
  1067.                                 .duplicate-section-title > i {
  1068.                                     flex-shrink: 0;
  1069.                                     margin-right: 10px;
  1070.                                     margin-top: 2px;
  1071.                                     color: #32aaf0;
  1072.                                     font-size: 18px;
  1073.                                 }
  1074.                                 .duplicate-section-title-main {
  1075.                                     color: #101230;
  1076.                                     font-size: 16px;
  1077.                                     font-weight: 600;
  1078.                                     line-height: 22px;
  1079.                                 }
  1080.                                 .duplicate-section-title-description {
  1081.                                     margin-top: 2px;
  1082.                                     color: #999;
  1083.                                     font-size: 12px;
  1084.                                     font-weight: normal;
  1085.                                     line-height: 18px;
  1086.                                 }
  1087.                                 /* ==========================================================
  1088.                                    OPCIÓN ORIGEN
  1089.                                    ========================================================== */
  1090.                                 .duplicate-source-wrapper {
  1091.                                     width: 100%;
  1092.                                     margin-bottom: 30px;
  1093.                                 }
  1094.                                 .duplicate-source-field {
  1095.                                     width: 290px;
  1096.                                 }
  1097.                                 .duplicate-source-field label {
  1098.                                     display: block;
  1099.                                     margin-bottom: 7px;
  1100.                                     color: #555;
  1101.                                     font-size: 13px;
  1102.                                     font-weight: 600;
  1103.                                 }
  1104.                                 .duplicate-source-field .form-control {
  1105.                                     width: 100%;
  1106.                                     height: 42px;
  1107.                                     padding: 8px 12px;
  1108.                                     border: 1px solid #dcdfe5;
  1109.                                     border-radius: 6px;
  1110.                                     box-shadow: none;
  1111.                                 }
  1112.                                 .duplicate-source-field .form-control:focus {
  1113.                                     border-color: #32aaf0;
  1114.                                     box-shadow: 0 0 0 2px rgba(50, 170, 240, 0.10);
  1115.                                 }
  1116.                                 /* ==========================================================
  1117.                                    SALAS DESTINO
  1118.                                    ========================================================== */
  1119.                                 .duplicate-quote-wrapper {
  1120.                                     width: 100%;
  1121.                                     margin-bottom: 25px;
  1122.                                 }
  1123.                                 .duplicate-spaces {
  1124.                                     width: 100%;
  1125.                                 }
  1126.                                 /* ==========================================================
  1127.                                    ESPACIO
  1128.                                    ========================================================== */
  1129.                                 .duplicate-space-card {
  1130.                                     width: 100%;
  1131.                                     margin-bottom: 10px;
  1132.                                     border: 1px solid #e1e4e8;
  1133.                                     border-radius: 8px;
  1134.                                     background: #fff;
  1135.                                     overflow: hidden;
  1136.                                 }
  1137.                                 /* ==========================================================
  1138.                                    CABECERA DEL ESPACIO
  1139.                                    ========================================================== */
  1140.                                 .duplicate-space-header {
  1141.                                     position: relative;
  1142.                                     width: 100%;
  1143.                                     display: flex;
  1144.                                     align-items: center;
  1145.                                     justify-content: space-between;
  1146.                                     padding: 14px 18px;
  1147.                                     border: 0;
  1148.                                     background: #f8fafc;
  1149.                                     color: #101230;
  1150.                                     text-align: left;
  1151.                                     cursor: pointer;
  1152.                                     outline: none !important;
  1153.                                 }
  1154.                                 .duplicate-space-header:hover {
  1155.                                     background: #f1f5f9;
  1156.                                 }
  1157.                                 .duplicate-space-header:focus,
  1158.                                 .duplicate-space-header:active {
  1159.                                     outline: none !important;
  1160.                                     box-shadow: none !important;
  1161.                                 }
  1162.                                 .duplicate-space-title {
  1163.                                     display: flex;
  1164.                                     align-items: center;
  1165.                                     min-width: 0;
  1166.                                     gap: 9px;
  1167.                                 }
  1168.                                 .duplicate-space-title > i {
  1169.                                     flex-shrink: 0;
  1170.                                     color: #32aaf0;
  1171.                                 }
  1172.                                 .duplicate-space-count {
  1173.                                     display: inline-block;
  1174.                                     padding: 2px 8px;
  1175.                                     border-radius: 12px;
  1176.                                     background: #e9f5fd;
  1177.                                     color: #32aaf0;
  1178.                                     font-size: 11px;
  1179.                                     font-weight: 600;
  1180.                                 }
  1181.                                 .duplicate-space-chevron {
  1182.                                     flex-shrink: 0;
  1183.                                     color: #777;
  1184.                                     transition: transform 0.2s ease;
  1185.                                 }
  1186.                                 /* ==========================================================
  1187.                                    FLECHA AL ABRIR
  1188.                                    ========================================================== */
  1189.                                 .duplicate-space-header[aria-expanded="true"]
  1190.                                 .duplicate-space-chevron {
  1191.                                     transform: rotate(180deg);
  1192.                                 }
  1193.                                 /* ==========================================================
  1194.                                    CONTENIDO DEL ESPACIO
  1195.                                    ========================================================== */
  1196.                                 .duplicate-space-body {
  1197.                                     width: 100%;
  1198.                                     border-top: 1px solid #e8ebef;
  1199.                                 }
  1200.                                 /* ==========================================================
  1201.                                    CABECERA DE SALAS
  1202.                                    ========================================================== */
  1203.                                 .duplicate-lounge-header {
  1204.                                     display: flex;
  1205.                                     align-items: center;
  1206.                                     min-height: 38px;
  1207.                                     padding: 8px 18px;
  1208.                                     background: #fafbfc;
  1209.                                     border-bottom: 1px solid #e8ebef;
  1210.                                     color: #777;
  1211.                                     font-size: 11px;
  1212.                                     font-weight: 700;
  1213.                                     text-transform: uppercase;
  1214.                                     letter-spacing: 0.4px;
  1215.                                 }
  1216.                                 /* ==========================================================
  1217.                                    FILA DE SALA
  1218.                                    ========================================================== */
  1219.                                 .duplicate-lounge-row {
  1220.                                     display: flex;
  1221.                                     align-items: center;
  1222.                                     width: 100%;
  1223.                                     min-height: 58px;
  1224.                                     padding: 8px 18px;
  1225.                                     box-sizing: border-box;
  1226.                                     border-bottom: 1px solid #f0f1f3;
  1227.                                     transition: background 0.15s ease;
  1228.                                 }
  1229.                                 .duplicate-lounge-row:hover {
  1230.                                     background: #fafcff;
  1231.                                 }
  1232.                                 .duplicate-lounge-row:last-child {
  1233.                                     border-bottom: none;
  1234.                                 }
  1235.                                 /* ==========================================================
  1236.                                    COLUMNAS
  1237.                                    ========================================================== */
  1238.                                 .duplicate-col-select {
  1239.                                     width: 100px;
  1240.                                     flex-shrink: 0;
  1241.                                 }
  1242.                                 .duplicate-col-name {
  1243.                                     flex: 1;
  1244.                                     min-width: 0;
  1245.                                     padding-right: 20px;
  1246.                                 }
  1247.                                 .duplicate-col-price {
  1248.                                     width: 220px;
  1249.                                     flex-shrink: 0;
  1250.                                 }
  1251.                                 /* ==========================================================
  1252.                                    CHECKBOX
  1253.                                    ========================================================== */
  1254.                                 .duplicate-checkbox-wrapper {
  1255.                                     display: inline-flex;
  1256.                                     align-items: center;
  1257.                                     justify-content: center;
  1258.                                     margin: 0;
  1259.                                     cursor: pointer;
  1260.                                 }
  1261.                                 .duplicate-checkbox-wrapper input {
  1262.                                     margin: 0;
  1263.                                     width: 16px;
  1264.                                     height: 16px;
  1265.                                     cursor: pointer;
  1266.                                 }
  1267.                                 /* ==========================================================
  1268.                                    NOMBRE SALA
  1269.                                    ========================================================== */
  1270.                                 .duplicate-lounge-name {
  1271.                                     display: block;
  1272.                                     margin: 0;
  1273.                                     color: #101230;
  1274.                                     font-size: 13px;
  1275.                                     font-weight: 500;
  1276.                                     line-height: 20px;
  1277.                                     cursor: pointer;
  1278.                                 }
  1279.                                 .duplicate-lounge-name:hover {
  1280.                                     color: #32aaf0;
  1281.                                 }
  1282.                                 /* ==========================================================
  1283.                                    PRECIO
  1284.                                    ========================================================== */
  1285.                                 .duplicate-price-group {
  1286.                                     width: 100%;
  1287.                                 }
  1288.                                 .duplicate-price-group .form-control {
  1289.                                     height: 36px;
  1290.                                     border-radius: 6px 0 0 6px;
  1291.                                     border-color: #dcdfe5;
  1292.                                     box-shadow: none;
  1293.                                 }
  1294.                                 .duplicate-price-group .form-control:focus {
  1295.                                     border-color: #32aaf0;
  1296.                                     box-shadow: none;
  1297.                                 }
  1298.                                 .duplicate-price-group .input-group-addon {
  1299.                                     width: 42px;
  1300.                                     min-width: 42px;
  1301.                                     padding: 0;
  1302.                                     text-align: center;
  1303.                                     vertical-align: middle;
  1304.                                     background: #f8fafc;
  1305.                                     border: 1px solid #dcdfe5;
  1306.                                     border-left: 0;
  1307.                                     border-radius: 0 6px 6px 0;
  1308.                                     color: #555;
  1309.                                     font-weight: 600;
  1310.                                 }
  1311.                                 /* ==========================================================
  1312.                                    PRECIO DESHABILITADO
  1313.                                    ========================================================== */
  1314.                                 .duplicate-lounge-price:disabled {
  1315.                                     background: #f5f6f8;
  1316.                                     cursor: not-allowed;
  1317.                                     color: #aaa;
  1318.                                 }
  1319.                                 /* ==========================================================
  1320.                                    ELIMINAR ORIGEN
  1321.                                    ========================================================== */
  1322.                                 .duplicate-delete-wrapper {
  1323.                                     width: 100%;
  1324.                                     margin-top: 20px;
  1325.                                 }
  1326.                                 .duplicate-delete-wrapper .alert {
  1327.                                     margin-bottom: 0;
  1328.                                 }
  1329.                                 /* ==========================================================
  1330.                                    BOTÓN
  1331.                                    ========================================================== */
  1332.                                 .duplicate-submit-wrapper {
  1333.                                     width: 100%;
  1334.                                     margin-top: 20px;
  1335.                                     text-align: right;
  1336.                                 }
  1337.                                 .duplicate-submit-wrapper button {
  1338.                                     min-width: 160px;
  1339.                                 }
  1340.                                 /* ==========================================================
  1341.                                    RESPONSIVE
  1342.                                    ========================================================== */
  1343.                                 @media (max-width: 767px) {
  1344.                                     .duplicate-quote-container {
  1345.                                         padding-left: 10px;
  1346.                                         padding-right: 10px;
  1347.                                     }
  1348.                                     .duplicate-source-field {
  1349.                                         width: 100%;
  1350.                                     }
  1351.                                     .duplicate-col-select {
  1352.                                         width: 65px;
  1353.                                     }
  1354.                                     .duplicate-col-price {
  1355.                                         width: 150px;
  1356.                                     }
  1357.                                     .duplicate-lounge-row,
  1358.                                     .duplicate-lounge-header {
  1359.                                         padding-left: 10px;
  1360.                                         padding-right: 10px;
  1361.                                     }
  1362.                                 }
  1363.                                 </style>
  1364.                                 <div class="col-md-12" style="margin-top: 15px;">
  1365.                                     <div class="col-md-11"></div>
  1366.                                     <div class="col-md-1 text-right">
  1367.                                         <a href="{{ path('reservations_log_historic', { id: reserva.id }) }}"
  1368.                                            class="btn bg-btn-limerick btn-xs"
  1369.                                            title="Historico de Cotizaciones">
  1370.                                             <i class="fa fa-book"></i> Registro
  1371.                                         </a>
  1372.                                     </div>
  1373.                                 </div>
  1374.                             </div>
  1375.                         </div>
  1376.                     {% endif %}
  1377.                     {# TOTALES SALAS (SOLO EN CONFIRMED O INVOICED) #}
  1378.                         <div class="panel bg-rich_black text-mint_cream" style="margin: 0 300px 30px 300px">
  1379.                             <div class="panel-body text-center">
  1380.                                 <div class="col-sm-12">
  1381.                                     <div class="col-sm-4">
  1382.                                         <h4>{% trans %}Salas con IVA{% endtrans %}</h4>
  1383.                                         <h3>{{ totales_global_con_iva|number_format(2, ',', '.') }} €</h3>
  1384.                                     </div>
  1385.                                     <div class="col-sm-4">
  1386.                                         <h4>{% trans %}IVA Salas{% endtrans %}</h4>
  1387.                                         <h3>{{ totales_global_iva|number_format(2, ',', '.') }} €</h3>
  1388.                                     </div>
  1389.                                     <div class="col-sm-4">
  1390.                                         <h4>{% trans %}Salas Neto{% endtrans %}</h4>
  1391.                                         <h3>{{ totales_global_neto|number_format(2, ',', '.') }} €</h3>
  1392.                                     </div>
  1393.                                 </div>
  1394.                             </div>
  1395.                         </div>
  1396.                     {# SERVICIOS AÑADIDOS A LA RESERVA #}
  1397.                     <div id="btn_srv" class="panel panel-default">
  1398.                         <div class="panel-body text-center">
  1399.                             <div class="col-sm-12">
  1400.                                 <div class="row">
  1401.                                     <div class="col-xs-12 text-center">
  1402.                                         <h3><strong>{% trans %}Add Services to Reservation{% endtrans %}</strong></h3>
  1403.                                     </div>
  1404.                                 </div>
  1405.                                 <div class="col-sm-12 no-padding">
  1406.                                     <div class="panel panel-default" style="border: none">
  1407.                                         <div class="panel-body">
  1408.                                             <div class="row text-center srv-icons">
  1409.                                                 <div class="col-xs-1 margen-10">
  1410.                                                     <form method="post" action="/venues/reservations/white/services/add/3/{{ id }}">
  1411.                                                         <button type="submit" class="btn-icon" title="{% trans %}Audiovisuales{% endtrans %}">
  1412.                                                             <img src="/assets/images/icon/audiovisuales.png" alt="{% trans %}Audiovisuales{% endtrans %}" height="80">
  1413.                                                         </button>
  1414.                                                     </form>
  1415.                                                 </div>
  1416.                                                 <div class="col-xs-1 margen-10">
  1417.                                                     <form method="post" action="/venues/reservations/white/services/add/17/{{ id }}">
  1418.                                                         <button type="submit" class="btn-icon" title="{% trans %}Personal de Seguridad{% endtrans %}">
  1419.                                                             <img src="/assets/images/icon/seguridad.png" alt="{% trans %}Personal de Seguridad{% endtrans %}" height="80">
  1420.                                                         </button>
  1421.                                                     </form>
  1422.                                                 </div>
  1423.                                                 <div class="col-xs-1 margen-10">
  1424.                                                     <form method="post" action="/venues/reservations/white/services/add/18/{{ id }}">
  1425.                                                         <button type="submit" class="btn-icon" title="{% trans %}WiFi{% endtrans %}">
  1426.                                                             <img src="/assets/images/icon/wifi.png" alt="{% trans %}WiFi{% endtrans %}" height="80">
  1427.                                                         </button>
  1428.                                                     </form>
  1429.                                                 </div>
  1430.                                                 <div class="col-xs-1 margen-10">
  1431.                                                     <form method="post" action="/venues/reservations/white/services/add/15/{{ id }}">
  1432.                                                         <button type="submit" class="btn-icon" title="{% trans %}Project Manager{% endtrans %}">
  1433.                                                             <img src="/assets/images/icon/asistencia.png" alt="{% trans %}Project Manager{% endtrans %}" height="80">
  1434.                                                         </button>
  1435.                                                     </form>
  1436.                                                 </div>
  1437.                                                 <div class="col-xs-1 margen-10">
  1438.                                                     <form method="post" action="/venues/reservations/white/services/add/11/{{ id }}">
  1439.                                                         <button type="submit" class="btn-icon" title="{% trans %}F&B (Catering){% endtrans %}">
  1440.                                                             <img src="/assets/images/icon/catering.png" alt="{% trans %}F&B (Catering){% endtrans %}" height="80">
  1441.                                                         </button>
  1442.                                                     </form>
  1443.                                                 </div>
  1444.                                                 <div class="col-xs-1 margen-10">
  1445.                                                     <form method="post" action="/venues/reservations/white/services/add/21/{{ id }}">
  1446.                                                         <button type="submit" class="btn-icon" title="{% trans %}Limpieza{% endtrans %}">
  1447.                                                             <img src="/assets/images/icon/limpieza.png" alt="{% trans %}Limpieza{% endtrans %}" height="80">
  1448.                                                         </button>
  1449.                                                     </form>
  1450.                                                 </div>
  1451.                                                 <div class="col-xs-1 margen-10">
  1452.                                                     <form method="post" action="/venues/reservations/white/services/add/20/{{ id }}">
  1453.                                                         <button type="submit" class="btn-icon" title="{% trans %}Parking{% endtrans %}">
  1454.                                                             <img src="/assets/images/icon/parking.png" alt="{% trans %}Parking{% endtrans %}" height="80">
  1455.                                                         </button>
  1456.                                                     </form>
  1457.                                                 </div>
  1458.                                                 <div class="col-xs-1 margen-10">
  1459.                                                     <form method="post" action="/venues/reservations/white/services/add/19/{{ id }}">
  1460.                                                         <button type="submit" class="btn-icon" title="{% trans %}Mobiliario{% endtrans %}">
  1461.                                                             <img src="/assets/images/icon/mobiliario.png" alt="{% trans %}Mobiliario{% endtrans %}" height="80">
  1462.                                                         </button>
  1463.                                                     </form>
  1464.                                                 </div>
  1465.                                                 <div class="col-xs-1 margen-10">
  1466.                                                     <form method="post" action="/venues/reservations/white/services/add/12/{{ id }}">
  1467.                                                         <button type="submit" class="btn-icon" title="{% trans %}Otros{% endtrans %}">
  1468.                                                             <img src="/assets/images/icon/otros.png" alt="{% trans %}Otros{% endtrans %}" height="80">
  1469.                                                         </button>
  1470.                                                     </form>
  1471.                                                 </div>
  1472.                                             </div>
  1473.                                         </div>
  1474.                                     </div>
  1475.                                 </div>
  1476.                                 {% if services is not empty %}
  1477.                                     {# Agrupación evaluando la propiedad 'rank' del objeto ReservationService #}
  1478.                                     {% set servicesGrouped = {} %}
  1479.                                     {% for service in services %}
  1480.                                         {% set rawQuoteId = (service.rank is defined and service.rank is not empty and service.rank != 0)
  1481.                                             ? service.rank
  1482.                                             : ((service.rankQuote is defined and service.rankQuote is not empty and service.rankQuote != 0)
  1483.                                                 ? service.rankQuote
  1484.                                                 : ((service.idQuote is defined and service.idQuote is not empty and service.idQuote != 0)
  1485.                                                     ? service.idQuote
  1486.                                                     : '0')) %}
  1487.                                         {% set groupKey = 'opt_' ~ rawQuoteId %}
  1488.                                         {% if servicesGrouped[groupKey] is not defined %}
  1489.                                             {% set servicesGrouped = servicesGrouped|merge({(groupKey): [service]}) %}
  1490.                                         {% else %}
  1491.                                             {% set servicesGrouped = servicesGrouped|merge({(groupKey): servicesGrouped[groupKey]|merge([service])}) %}
  1492.                                         {% endif %}
  1493.                                     {% endfor %}
  1494.                                     <form name="mds_venuesbundle_servicegrid" method="post" action="/venues/updateservicegrid/{{ id }}" class="form-horizontal" role="form" autocomplete="off">
  1495.                                         <div class="col-sm-12" style="padding-left: 0px; padding-right: 0px">
  1496.                                             {% for groupKey, groupServices in servicesGrouped %}
  1497.                                                 {% set quoteId = groupKey|replace({'opt_': ''}) %}
  1498.                                                 <!-- BLOQUE CONTENEDOR SEGMENTADO POR OPCIÓN -->
  1499.                                                 <div class="panel panel-default" style="border: 1px solid #ded9e2; border-radius: 6px; margin-bottom: 30px; box-shadow: 0 2px 8px rgba(0,0,0,0.03);">
  1500.                                                     <div class="panel-heading" style="background-color: #f8f9fa; border-bottom: 2px solid #32aaf0; padding: 12px 20px;">
  1501.                                                         <h4 class="panel-title text-left" style="font-weight: bold; margin: 0;">
  1502.                                                             {% if quoteId != '0' %}
  1503.                                                                 <span class="label bg-btn-vivid_sky_blue" style="font-size: 13px; padding: 5px 10px; margin-right: 10px;">
  1504.                                                                     <i class="icon-file-text2"></i> {% trans %}OPCIÓN{% endtrans %} #{{ quoteId }}
  1505.                                                                 </span>
  1506.                                                                 <span class="text-rich_black">{% trans %}Servicios asociados a la Opción{% endtrans %} #{{ quoteId }}</span>
  1507.                                                             {% else %}
  1508.                                                                 <span class="label label-default" style="font-size: 13px; padding: 5px 10px; margin-right: 10px;">
  1509.                                                                     <i class="icon-box"></i> {% trans %}SERVICIOS GENERALES{% endtrans %}
  1510.                                                                 </span>
  1511.                                                                 <span class="text-muted">{% trans %}Servicios sin opción específica asignada{% endtrans %}</span>
  1512.                                                             {% endif %}
  1513.                                                         </h4>
  1514.                                                     </div>
  1515.                                                     <div class="panel-body" style="padding: 20px 10px 10px 10px;">
  1516.                                                         {% for service in groupServices %}
  1517.                                                             {% set currency = service.currency is empty ? 'Euro' : service.currency %}
  1518.                                                             {% set contcolor = service.contcolor %}
  1519.                                                             {% set error_commission = (service.commission is empty or service.commission == '0') ? 'has-error' : '' %}
  1520.                                                             {% set error_over = (service.over is empty or service.over == '0') ? 'has-error' : '' %}
  1521.                                                             {% set error_iva = (service.sageIva is empty or service.sageIva is null) ? 'has-error' : '' %}
  1522.                                                             {% set option_opcommission = (service.opCommission == '0') ? '<option value="0" selected="selected">-</option><option value="1">+</option>' : '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  1523.                                                             {% set option_opover = (service.opOver == '0') ? '<option value="0" selected="selected">-</option><option value="1">+</option>' : '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  1524.                                                             {% set option_opiva = (service.opIva == '0') ? '<option value="0" selected="selected">-</option><option value="1">+</option>' : '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  1525.                                                             {% set fondo_color = 'white' %}
  1526.                                                             <div id="{{ service.id }}" class="panel panel-default border-left-{{ contcolor }} {{ fondo_color }} panel-collapsed" style="margin: 0 15px 20px 15px;">
  1527.                                                                 <div class="panel-heading">
  1528.                                                                     <div class="panel-title text-left">
  1529.                                                                         <div class="row" style="display: flex; align-items: center; flex-wrap: wrap;">
  1530.                                                                             <div class="col-xs-12 col-md-8">
  1531.                                                                                 {% if quoteId != '0' %}
  1532.                                                                                     <span class="label bg-btn-vivid_sky_blue" style="margin-right: 8px; font-size: 11px;">
  1533.                                                                                         Opción #{{ quoteId }}
  1534.                                                                                     </span>
  1535.                                                                                 {% endif %}
  1536.                                                                                 <b class="text-vivid_sky_blue">
  1537.                                                                                     {% trans %}Service{% endtrans %}:
  1538.                                                                                     {% if not (service.serviceCatName|trans == 'Menú') %}
  1539.                                                                                         {{ service.serviceCatName|trans }}
  1540.                                                                                     {% else %}
  1541.                                                                                         Catering
  1542.                                                                                     {% endif %}
  1543.                                                                                     {% if (service.name is not null) %} - {{ service.name }}{% endif %}
  1544.                                                                                 </b>
  1545.                                                                             </div>
  1546.                                                                             <div class="col-xs-12 col-md-4 text-right">
  1547.                                                                                 {% if not service.toinvoice %}
  1548.                                                                                     <small class="bg-trash text-white" style="padding: 4px 8px; border-radius: 3px;">
  1549.                                                                                         {{ 'EXPENSE'|trans({}) }}
  1550.                                                                                     </small>
  1551.                                                                                 {% endif %}
  1552.                                                                             </div>
  1553.                                                                         </div>
  1554.                                                                     </div>
  1555.                                                                     <div class="heading-elements">
  1556.                                                                         <ul class="icons-list">
  1557.                                                                             <li><a data-action="collapse"></a></li>
  1558.                                                                         </ul>
  1559.                                                                     </div>
  1560.                                                                 </div>
  1561.                                                                 {% if not (service.serviceCatId == 15) %}
  1562.                                                                     <div class="panel-body">
  1563.                                                                         <div class="form-group">
  1564.                                                                             <div class="col-sm-11">
  1565.                                                                                 <div class="col-sm-12">
  1566.                                                                                     <div class="col-sm-3" style="padding-bottom: 10px; padding-left: 0px;">
  1567.                                                                                         <label class="control-label">{% trans %}Supplier{% endtrans %}:</label>
  1568.                                                                                         <div class="form-group form-group-material">
  1569.                                                                                             <select name="services[{{ service.id }}][supplier]" class="form-control" style="padding:0px;text-align-last: center;">
  1570.                                                                                                 <option value="0">{% trans %}Select a Supplier{% endtrans %}</option>
  1571.                                                                                                 {% for supplier in listSupplier %}
  1572.                                                                                                     <option value="{{ supplier.id }}" {% if supplier.id == service.supplierId %}selected="selected"{% endif %}>{{ supplier.company }}</option>
  1573.                                                                                                 {% endfor %}
  1574.                                                                                             </select>
  1575.                                                                                         </div>
  1576.                                                                                     </div>
  1577.                                                                                 </div>
  1578.                                                                                 <div class="col-sm-3">
  1579.                                                                                     <label class="control-label" for="services_name_{{ service.id }}">{% trans %}Description{% endtrans %}: </label>
  1580.                                                                                     <input type="text" id="services_name_{{ service.id }}" name="services[{{ service.id }}][name]" value="{{ service.name }}" class="form-control">
  1581.                                                                                 </div>
  1582.                                                                                 <div class="col-md-2 col-xs-12">
  1583.                                                                                     <label class="control-label" for="services_price_{{ service.id }}">
  1584.                                                                                         <span data-popup="tooltip-custom" title="{% trans %}Price with VAT or without VAT{% endtrans %}">
  1585.                                                                                             <b class="text-rich_black">{% trans %}Price{% endtrans %}</b>:
  1586.                                                                                         </span>
  1587.                                                                                     </label>
  1588.                                                                                     <input type="text" id="services_price_{{ service.id }}" name="services[{{ service.id }}][price]" value="{{ service.price|number_format(2, ',', '.') }}" class="form-control bg-{{ contcolor }}-300">
  1589.                                                                                 </div>
  1590.                                                                                 <div class="col-md-1 col-xs-6">
  1591.                                                                                     <label class="control-label" for="services_units_{{ service.id }}">{% trans %}Units{% endtrans %}: </label>
  1592.                                                                                     <input type="number" id="services_units_{{ service.id }}" name="services[{{ service.id }}][units]" value="{{ service.units }}" class="form-control">
  1593.                                                                                 </div>
  1594.                                                                                 <div class="col-md-1 col-xs-12">
  1595.                                                                                     <label class="control-label" for="services_pax_{{ service.id }}">{% trans %}Pax{% endtrans %}: </label>
  1596.                                                                                     <input type="number" id="services_pax_{{ service.id }}" name="services[{{ service.id }}][pax]" value="{{ service.pax }}" class="form-control">
  1597.                                                                                 </div>
  1598.                                                                                 <div class="col-md-5 col-xs-12">
  1599.                                                                                     <div class="col-md-2 col-xs-6 no-padding-right">
  1600.                                                                                         <label class="control-label" for="services_opcommission_{{ service.id }}">-/: </label>
  1601.                                                                                         <div class="form-group form-group-material">
  1602.                                                                                             <select id="services_opcommission_{{ service.id }}" name="services[{{ service.id }}][opCommission]" class="form-control" style="padding:0px;text-align-last: center;">
  1603.                                                                                                 {{ option_opcommission|raw }}
  1604.                                                                                             </select>
  1605.                                                                                         </div>
  1606.                                                                                     </div>
  1607.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1608.                                                                                         <label class="control-label" for="services_commission_{{ service.id }}">{% trans %}Commission{% endtrans %}(%) </label>
  1609.                                                                                         <div class="form-group form-group-material {{ error_commission }}">
  1610.                                                                                             <input type="text" id="services_commission_{{ service.id }}" name="services[{{ service.id }}][commission]" value="{{ service.commission|number_format(2, ',', '.') }}" class="form-control">
  1611.                                                                                         </div>
  1612.                                                                                     </div>
  1613.                                                                                     <div class="col-md-2 col-xs-6 no-padding-right" hidden>
  1614.                                                                                         <select id="services_opover_{{ service.id }}" name="services[{{ service.id }}][opOver]" class="form-control" hidden>
  1615.                                                                                             <option value="1" selected>+</option>
  1616.                                                                                             <option value="0">-</option>
  1617.                                                                                         </select>
  1618.                                                                                     </div>
  1619.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1620.                                                                                         <label class="control-label" for="services_over_{{ service.id }}">{% trans %}Over{% endtrans %}(€) </label>
  1621.                                                                                         <div class="form-group form-group-material {{ error_over }}">
  1622.                                                                                             <input type="text" id="services_over_{{ service.id }}" name="services[{{ service.id }}][over]" value="{{ service.over }}" class="form-control">
  1623.                                                                                         </div>
  1624.                                                                                     </div>
  1625.                                                                                     <div class="col-md-4 col-xs-6 no-padding-left">
  1626.                                                                                         <label class="control-label" for="services_iva_{{ service.id }}">{% trans %}Iva{% endtrans %}: </label>
  1627.                                                                                         <div class="form-group form-group-material {{ error_iva }}">
  1628.                                                                                             <select id="services_iva_{{ service.id }}" name="services[{{ service.id }}][iva]" class="form-control" style="width: 100%;">
  1629.                                                                                                 <option value="">Selecciona un IVA</option>
  1630.                                                                                                 {% for vat in sageVatRates %}
  1631.                                                                                                     <option value="{{ vat.id }}" {% if service.sageIva is not null and vat.id == service.sageIva.id %}selected{% endif %}>
  1632.                                                                                                         {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  1633.                                                                                                     </option>
  1634.                                                                                                 {% endfor %}
  1635.                                                                                             </select>
  1636.                                                                                         </div>
  1637.                                                                                     </div>
  1638.                                                                                 </div>
  1639.                                                                                 <div class="col-sm-9 margen-10">
  1640.                                                                                     <div class="col-sm-2 col-xs-6">
  1641.                                                                                         <label class="control-label" for="services_currency_{{ service.id }}">{% trans %}Currency{% endtrans %}: </label>
  1642.                                                                                         <input type="text" id="services_currency_{{ service.id }}" name="services[{{ service.id }}][currency]" value="{{ currency }}" class="form-control">
  1643.                                                                                     </div>
  1644.                                                                                     <div class="col-sm-2 no-padding">
  1645.                                                                                         <label class="control-label" for="services_start_{{ service.id }}"><i class="icon-watch2"></i> {% trans %}Star{% endtrans %}: </label>
  1646.                                                                                         <input type="time" id="services_start_{{ service.id }}" name="services[{{ service.id }}][start]" value="{{ service.dateInAt|date('H:i') }}" class="form-control">
  1647.                                                                                     </div>
  1648.                                                                                     <div class="col-sm-3">
  1649.                                                                                         <label class="control-label" for="services_dateInAt_{{ service.id }}">{% trans %}Date In{% endtrans %}: </label>
  1650.                                                                                         <input type="date" id="services_dateInAt_{{ service.id }}" name="services[{{ service.id }}][dateInAt]" value="{{ service.dateInAt|date('Y-m-d') }}" class="form-control">
  1651.                                                                                     </div>
  1652.                                                                                     <div class="col-sm-3">
  1653.                                                                                         <label class="control-label" for="services_dateOutAt_{{ service.id }}">{% trans %}Date Out{% endtrans %}: </label>
  1654.                                                                                         <input type="date" id="services_dateOutAt_{{ service.id }}" name="services[{{ service.id }}][dateOutAt]" value="{{ service.dateOutAt|date('Y-m-d') }}" class="form-control">
  1655.                                                                                     </div>
  1656.                                                                                     <div class="col-sm-2 no-padding">
  1657.                                                                                         <label class="control-label" for="services_hour_{{ service.id }}"><i class="icon-watch2"></i> {% trans %}End{% endtrans %}: </label>
  1658.                                                                                         <input type="time" id="services_hour_{{ service.id }}" name="services[{{ service.id }}][end]" value="{{ service.dateOutAt|date('H:i') }}" class="form-control">
  1659.                                                                                     </div>
  1660.                                                                                 </div>
  1661.                                                                                 <div class="col-md-3" style="padding-top: 35px;">
  1662.                                                                                     <div class="checkbox-switchery text-left switchery-sm">
  1663.                                                                                         <label>
  1664.                                                                                             <input type="checkbox" id="service_toinvoice_{{ service.id }}" name="services[{{ service.id }}][toinvoice]" class="switchery-info" value="1" {% if service.toinvoice %}checked{% endif %}/>
  1665.                                                                                             {% trans %}Aparece en factura{% endtrans %}
  1666.                                                                                         </label>
  1667.                                                                                     </div>
  1668.                                                                                 </div>
  1669.                                                                                 <div class="col-md-3" style="padding-top: 35px;">
  1670.                                                                                     <div class="checkbox-switchery text-left switchery-sm">
  1671.                                                                                         <label>
  1672.                                                                                             <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="1" {% if service.viewInfo %}checked{% endif %}/>
  1673.                                                                                             {% trans %}Add extra information to the web quotation{% endtrans %}
  1674.                                                                                         </label>
  1675.                                                                                     </div>
  1676.                                                                                 </div>
  1677.                                                                             </div>
  1678.                                                                             <div class="col-sm-1 margen-5">
  1679.                                                                                 <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1680.                                                                                     <div class="checkbox checkbox-switchery switchery-lg switchery-double text-center" title="Eliminar este item">
  1681.                                                                                         <a target="_self" class="btn bg-btn-trash btn-block icon-trash padding-3" onclick="return confirm('¿Deseas eliminar este elemento?');" href="/venues/deleteitemservice/{{ service.id }}/{{ id }}" title="Eliminar este elemento"></a>
  1682.                                                                                     </div>
  1683.                                                                                 </div>
  1684.                                                                                 {% if (service.serviceCatId == 3) %}
  1685.                                                                                     <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1686.                                                                                         <a href="{{ path('reservations_list_multiple_productfile_av', { id: service.id }) }}" class="btn bg-btn-green_av btn-xs" title="Precios AVs">
  1687.                                                                                            <strong>Precios AVs</strong>
  1688.                                                                                         </a>
  1689.                                                                                     </div>
  1690.                                                                                 {% endif %}
  1691.                                                                             </div>
  1692.                                                                         </div>
  1693.                                                                     </div>
  1694.                                                                 {% else %}
  1695.                                                                     {# ASISTENCIA #}
  1696.                                                                     <div class="panel-body">
  1697.                                                                         <div class="form-group">
  1698.                                                                             <div class="col-sm-3" style="padding-bottom: 10px; padding-left: 0px;">
  1699.                                                                                 <label class="control-label">{% trans %}Supplier{% endtrans %}:</label>
  1700.                                                                                 <div class="form-group form-group-material">
  1701.                                                                                     <select name="services[{{ service.id }}][supplier]" class="form-control" style="padding:0px;text-align-last: center;">
  1702.                                                                                         <option value="0">{% trans %}Select a Supplier{% endtrans %}</option>
  1703.                                                                                         {% for supplier in listSupplier %}
  1704.                                                                                             <option value="{{ supplier.id }}" {% if supplier.id == service.supplierId %}selected="selected"{% endif %}>{{ supplier.company }}</option>
  1705.                                                                                         {% endfor %}
  1706.                                                                                     </select>
  1707.                                                                                 </div>
  1708.                                                                             </div>
  1709.                                                                             <div class="col-sm-11">
  1710.                                                                                 <div class="col-sm-2" style="padding-bottom: 10px; padding-left: 0px;">
  1711.                                                                                     <label class="control-label" for="services_agent_{{ service.id }}">{% trans %}Agente{% endtrans %}:</label>
  1712.                                                                                     <div class="form-group form-group-material">
  1713.                                                                                         <select id="services_agent_{{ service.id }}" name="services[{{ service.id }}][agent]" class="form-control" style="padding:0px;text-align-last: center;">
  1714.                                                                                             <option value="0">{% trans %}Selecciona un agente{% endtrans %}</option>
  1715.                                                                                             {% for user in allUsersActive %}
  1716.                                                                                                 {% if (service.assistantId is not empty) and (user.id == service.assistantId or ((user.id * (-1)) == service.assistantId)) %}
  1717.                                                                                                     <option value="{{ user.role == 'Freelance' ? user.team : user.id }}" selected="selected">{{ user.name }} {{ user.lastname }}</option>
  1718.                                                                                                 {% else %}
  1719.                                                                                                     <option value="{{ user.role == 'Freelance' ? user.team : user.id }}">{{ user.name }} {{ user.lastname }}</option>
  1720.                                                                                                 {% endif %}
  1721.                                                                                             {% endfor %}
  1722.                                                                                         </select>
  1723.                                                                                     </div>
  1724.                                                                                 </div>
  1725.                                                                                 <div class="col-sm-2">
  1726.                                                                                     <label class="control-label" for="services_name_{{ service.id }}">{% trans %}Title{% endtrans %}: </label>
  1727.                                                                                     <input type="text" id="services_name_{{ service.id }}" name="services[{{ service.id }}][name]" value="{{ service.name }}" class="form-control">
  1728.                                                                                 </div>
  1729.                                                                                 <div class="col-md-2 col-xs-12">
  1730.                                                                                     <label class="control-label" for="services_price_{{ service.id }}">
  1731.                                                                                         <span data-popup="tooltip-custom" title="{% trans %}Price with VAT or without VAT{% endtrans %}">
  1732.                                                                                             <b class="text-rich_black">{% trans %}Price{% endtrans %}</b>:
  1733.                                                                                         </span>
  1734.                                                                                     </label>
  1735.                                                                                     <input type="text" id="services_price_{{ service.id }}" name="services[{{ service.id }}][price]" value="{{ service.price }}" class="form-control bg-{{ contcolor }}-300">
  1736.                                                                                 </div>
  1737.                                                                                 <input type="hidden" id="services_currency_{{ service.id }}" name="services[{{ service.id }}][currency]" value="{{ currency }}" class="form-control">
  1738.                                                                                 <input type="hidden" id="services_units_{{ service.id }}" name="services[{{ service.id }}][units]" value="{{ service.units }}" class="form-control">
  1739.                                                                                 <input type="hidden" id="services_pax_{{ service.id }}" name="services[{{ service.id }}][pax]" value="{{ service.pax }}" class="form-control">
  1740.                                                                                 <div class="col-md-5 col-xs-12">
  1741.                                                                                     <div class="col-md-2 col-xs-6 no-padding-right">
  1742.                                                                                         <label class="control-label" for="services_opcommission_{{ service.id }}">-/: </label>
  1743.                                                                                         <div class="form-group form-group-material">
  1744.                                                                                             <select id="services_opcommission_{{ service.id }}" name="services[{{ service.id }}][opCommission]" class="form-control" style="padding:0px;text-align-last: center;">
  1745.                                                                                                 {{ option_opcommission|raw }}
  1746.                                                                                             </select>
  1747.                                                                                         </div>
  1748.                                                                                     </div>
  1749.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1750.                                                                                         <label class="control-label" for="services_commission_{{ service.id }}">{% trans %}Commission{% endtrans %}: </label>
  1751.                                                                                         <div class="form-group form-group-material {{ error_commission }}">
  1752.                                                                                             <input type="text" id="services_commission_{{ service.id }}" name="services[{{ service.id }}][commission]" value="{{ service.commission }}" class="form-control">
  1753.                                                                                         </div>
  1754.                                                                                     </div>
  1755.                                                                                     <div class="col-md-2 col-xs-6 no-padding-right">
  1756.                                                                                         <label class="control-label" for="services_opover_{{ service.id }}">-/: </label>
  1757.                                                                                         <div class="form-group form-group-material">
  1758.                                                                                             <select id="services_opover_{{ service.id }}" name="services[{{ service.id }}][opOver]" class="form-control" style="padding:0px;text-align-last: center;">
  1759.                                                                                                 {{ option_opover|raw }}
  1760.                                                                                             </select>
  1761.                                                                                         </div>
  1762.                                                                                     </div>
  1763.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1764.                                                                                         <label class="control-label" for="services_over_{{ service.id }}">{% trans %}Over{% endtrans %}: </label>
  1765.                                                                                         <div class="form-group form-group-material {{ error_over }}">
  1766.                                                                                             <input type="text" id="services_over_{{ service.id }}" name="services[{{ service.id }}][over]" value="{{ service.over }}" class="form-control">
  1767.                                                                                         </div>
  1768.                                                                                     </div>
  1769.                                                                                     <div class="col-md-2 col-xs-6 no-padding-right">
  1770.                                                                                         <label class="control-label" for="services_opiva_{{ service.id }}">-/: </label>
  1771.                                                                                         <div class="form-group form-group-material">
  1772.                                                                                             <select id="services_opiva_{{ service.id }}" name="services[{{ service.id }}][opIva]" class="form-control" style="padding:0px;text-align-last: center;">
  1773.                                                                                                 {{ option_opiva|raw }}
  1774.                                                                                             </select>
  1775.                                                                                         </div>
  1776.                                                                                     </div>
  1777.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1778.                                                                                         <label class="control-label" for="services_iva_{{ service.id }}">{% trans %}Iva{% endtrans %}: </label>
  1779.                                                                                         <div class="form-group form-group-material {{ error_iva }}">
  1780.                                                                                             <select id="services_iva_{{ service.id }}" name="services[{{ service.id }}][iva]" class="form-control" style="width: 100%;" required>
  1781.                                                                                                 <option value="">Selecciona un IVA</option>
  1782.                                                                                                 {% for vat in sageVatRates %}
  1783.                                                                                                     <option value="{{ vat.id }}" {% if service.sageIva is not null and vat.id == service.sageIva.id %}selected{% endif %}>
  1784.                                                                                                         {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  1785.                                                                                                     </option>
  1786.                                                                                                 {% endfor %}
  1787.                                                                                             </select>
  1788.                                                                                         </div>
  1789.                                                                                     </div>
  1790.                                                                                 </div>
  1791.                                                                                 <div class="col-sm-8 margen-10">
  1792.                                                                                     <div class="col-sm-2 no-padding">
  1793.                                                                                         <label class="control-label" for="services_start_{{ service.id }}"><i class="icon-watch2"></i> {% trans %}Star{% endtrans %}: </label>
  1794.                                                                                         <input type="time" id="services_start_{{ service.id }}" name="services[{{ service.id }}][start]" value="{{ service.dateInAt|date('H:i') }}" class="form-control">
  1795.                                                                                     </div>
  1796.                                                                                     <div class="col-sm-4">
  1797.                                                                                         <label class="control-label" for="services_dateInAt_{{ service.id }}">{% trans %}Date In{% endtrans %}: </label>
  1798.                                                                                         <input type="date" id="services_dateInAt_{{ service.id }}" name="services[{{ service.id }}][dateInAt]" value="{{ service.dateInAt|date('Y-m-d') }}" class="form-control">
  1799.                                                                                     </div>
  1800.                                                                                     <div class="col-sm-4">
  1801.                                                                                         <label class="control-label" for="services_dateOutAt_{{ service.id }}">{% trans %}Date Out{% endtrans %}: </label>
  1802.                                                                                         <input type="date" id="services_dateOutAt_{{ service.id }}" name="services[{{ service.id }}][dateOutAt]" value="{{ service.dateOutAt|date('Y-m-d') }}" class="form-control">
  1803.                                                                                     </div>
  1804.                                                                                     <div class="col-sm-2 no-padding">
  1805.                                                                                         <label class="control-label" for="services_hour_{{ service.id }}"><i class="icon-watch2"></i> {% trans %}End{% endtrans %}: </label>
  1806.                                                                                         <input type="time" id="services_hour_{{ service.id }}" name="services[{{ service.id }}][end]" value="{{ service.dateOutAt|date('Y-m-d') }}" class="form-control">
  1807.                                                                                     </div>
  1808.                                                                                 </div>
  1809.                                                                                 <div class="col-md-4" style="padding-top: 35px;">
  1810.                                                                                     <div class="checkbox-switchery text-left switchery-sm">
  1811.                                                                                         <label>
  1812.                                                                                             <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="1" {% if service.viewInfo %}checked{% endif %}/>
  1813.                                                                                             {% trans %}View Info{% endtrans %}
  1814.                                                                                         </label>
  1815.                                                                                     </div>
  1816.                                                                                 </div>
  1817.                                                                             </div>
  1818.                                                                             <div class="col-sm-1 margen-5">
  1819.                                                                                 <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1820.                                                                                     <div class="checkbox checkbox-switchery switchery-lg switchery-double text-center" title="Eliminar este item">
  1821.                                                                                         <a target="_self" class="btn bg-btn-trash btn-block icon-trash padding-3" onclick="return confirm('¿Deseas eliminar este elemento?');" href="/venues/deleteitemservice/{{ service.id }}/{{ id }}" title="Eliminar este elemento"></a>
  1822.                                                                                     </div>
  1823.                                                                                 </div>
  1824.                                                                             </div>
  1825.                                                                         </div>
  1826.                                                                     </div>
  1827.                                                                 {% endif %}
  1828.                                                             </div>
  1829.                                                         {% endfor %}
  1830.                                                     </div>
  1831.                                                 </div>
  1832.                                             {% endfor %}
  1833.                                         </div>
  1834.                                         <div class="col-md-4 col-md-offset-4 margen-20" style="padding-top: 5px; padding-left: 15px; padding-right: 15px">
  1835.                                             <div class="form-group form-group-material">
  1836.                                                 <div class="text-center">
  1837.                                                     <button type="submit" id="mds_venuesbundle_servicegrid_save" name="mds_venuesbundle_servicegrid[save]" class="btn bg-btn-limerick btn-block">Guardar Servicios</button>
  1838.                                                 </div>
  1839.                                             </div>
  1840.                                         </div>
  1841.                                     </form>
  1842.                                 {% endif %}
  1843.                             </div>
  1844.                         </div>
  1845.                     </div>
  1846.                     {# TOTALES SERVICIOS #}
  1847.                         <div class="panel bg-rich_black text-mint_cream" style="margin: 0 300px 80px 300px">
  1848.                             <div class="panel-body text-center">
  1849.                                 <div class="col-sm-12">
  1850.                                     <div class="col-sm-4">
  1851.                                         <h4>{% trans %}Servicios con IVA{% endtrans %}</h4>
  1852.                                         <h3>{{ totales_global_servicios_con_iva|number_format(2, ',', '.') }} €</h3>
  1853.                                     </div>
  1854.                                     <div class="col-sm-4">
  1855.                                         <h4>{% trans %}IVA Servicios{% endtrans %}</h4>
  1856.                                         <h3>{{ totales_global_servicios_iva|number_format(2, ',', '.') }} €</h3>
  1857.                                     </div>
  1858.                                     <div class="col-sm-4">
  1859.                                         <h4>{% trans %}Servicios Neto{% endtrans %}</h4>
  1860.                                         <h3>{{ totales_global_servicios_neto|number_format(2, ',', '.') }} €</h3>
  1861.                                     </div>
  1862.                                 </div>
  1863.                             </div>
  1864.                         </div>
  1865.                     {# BENEFICIOS #}
  1866.                     <div class="panel panel-default">
  1867.                         <div class="panel-body text-center">
  1868.                             <div class="col-sm-12">
  1869.                                 <div class="col-sm-6">
  1870.                                     <b class="text-gray-light">{% trans %}Beneficio{% endtrans %}</b>
  1871.                                     <br>
  1872.                                     <b> {{ benefit|number_format(2, ',', '.') }} €</b>
  1873.                                 </div>
  1874.                                 <div class="col-sm-6">
  1875.                                     <b class="text-gray-light">{% trans %}Beneficio (%){% endtrans %}</b>
  1876.                                     <br>
  1877.                                     <b> {{ percBenefit|number_format(2, ',', '.') }} %</b>
  1878.                                 </div>
  1879.                                 <br><br><br>
  1880.                                 <div class="col-sm-12">
  1881.                                     <b class="text-gray-light">{% trans %}Resumen de Beneficio{% endtrans %}</b>
  1882.                                     {% for lounge in payedLounges %}
  1883.                                         <br><b>{{ lounge.loungeName }} + {{ lounge.servicePrice|number_format(2, ',', '.') }} €</b>
  1884.                                     {% endfor %}
  1885.                                     {% for service in payedServices %}
  1886.                                         {# 1. Capturamos los valores una sola vez en variables puras de Twig #}
  1887.                                         {% set safe_price = service.price|default(0) %}
  1888.                                         {% set safe_over = service.over|default(0) %}
  1889.                                         {# 2. Hacemos el cálculo sobre las variables seguras #}
  1890.                                         <br><b>{{ service.name }} + {{ (safe_price + safe_over)|number_format(2, ',', '.') }} €</b>
  1891.                                     {% endfor %}
  1892.                                     {% for service in unPayedServices %}
  1893.                                         {% if service.toinvoice %}
  1894.                                             <br><b>{{ service.name }}</b> + {{ ((service.price|default(0) + 0) + (service.over|default(0) + 0))|number_format(2, ',', '.') }} €
  1895.                                         {% else %}
  1896.                                             <br><b>{{ service.name }}</b> - {{ ((service.price|default(0) + 0) + (service.over|default(0) + 0))|number_format(2, ',', '.') }} €
  1897.                                         {% endif %}
  1898.                                     {% endfor %}
  1899.                                 </div>
  1900.                             </div>
  1901.                         </div>
  1902.                     </div>
  1903.                     {# AGENDA #}
  1904.                     <div class="panel panel-default">
  1905.                         <div class="panel-body">
  1906.                             <div class="col-sm-12">
  1907.                                 <div class="panel">
  1908.                                     <div class="panel-body">
  1909.                                         <div class="col-md-12 col-xs-12">
  1910.                                             <strong class="text-info">
  1911.                                                 <legend class="border-teal-800">{% trans %}AGENDA{% endtrans %}</legend>
  1912.                                             </strong>
  1913.                                         </div>
  1914.                                         <div class="col-sm-12">
  1915.                                             <style>
  1916.                                                 .agenda-container {
  1917.                                                     background-color: #fff;
  1918.                                                     border-radius: 4px;
  1919.                                                     overflow: hidden;
  1920.                                                     border: 1px solid #eee;
  1921.                                                 }
  1922.                                                 .agenda-row {
  1923.                                                     display: flex;
  1924.                                                     align-items: flex-start;
  1925.                                                     padding: 4px 10px;
  1926.                                                     border-bottom: 1px solid #f9f9f9;
  1927.                                                     transition: all 0.1s ease;
  1928.                                                     min-height: 32px;
  1929.                                                 }
  1930.                                                 .agenda-row:hover { background-color: #f5faff; }
  1931.                                                 .agenda-row:last-child { border-bottom: none; }
  1932.                                                 .agenda-content {
  1933.                                                     flex: 1;
  1934.                                                     min-width: 0;
  1935.                                                     font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  1936.                                                     font-size: 13px;
  1937.                                                     color: #444;
  1938.                                                     line-height: 1.6;
  1939.                                                     white-space: pre-wrap;
  1940.                                                     word-wrap: break-word;
  1941.                                                 }
  1942.                                                 .agenda-row.header .agenda-content {
  1943.                                                     font-weight: 700;
  1944.                                                     color: #000;
  1945.                                                     text-transform: uppercase;
  1946.                                                     font-size: 12px;
  1947.                                                     letter-spacing: 0.5px;
  1948.                                                     padding-top: 5px;
  1949.                                                 }
  1950.                                                 .agenda-row.header-2 .agenda-content { font-weight: 600; color: #333; padding-left: 20px; }
  1951.                                                 .agenda-row.header-3 .agenda-content { font-style: italic; color: #666; padding-left: 30px; }
  1952.                                                 .agenda-row.day .agenda-content { font-weight: bold; color: #d9534f; padding-left: 30px; }
  1953.                                                 .agenda-row.item .agenda-content { padding-left: 50px; }
  1954.                                                 .agenda-actions {
  1955.                                                     flex-shrink: 0;
  1956.                                                     min-width: 140px;
  1957.                                                     text-align: right;
  1958.                                                     padding-left: 10px;
  1959.                                                 }
  1960.                                             </style>
  1961.                                             <div class="agenda-container">
  1962.                                                 {% for linea in arregloLineasAgenda %}
  1963.                                                     <div class="agenda-row {{ linea.type }}">
  1964.                                                         <div class="agenda-content">{{- linea.text -}}</div>
  1965.                                                         <div class="agenda-actions">
  1966.                                                             {% if linea.id %}
  1967.                                                                 <div class="btn-group">
  1968.                                                                     <button class="btn bg-btn-limerick btn-xs"
  1969.                                                                             data-toggle="modal"
  1970.                                                                             data-target="#modalEditar"
  1971.                                                                             title="Editar (Ref. {{ linea.numberLine }})"
  1972.                                                                             data-url="{{ path('reservation_agenda_item_edit', { id: linea.id }) }}">
  1973.                                                                         <i class="fa fa-edit"></i> (Ref. {{ linea.numberLine }})
  1974.                                                                     </button>
  1975.                                                                     <button class="btn bg-btn-vivid_sky_blue btn-xs"
  1976.                                                                             data-toggle="modal"
  1977.                                                                             data-target="#modalAgregarLinea"
  1978.                                                                             data-url="{{ path('reservation_agenda_item_duplicate', { id: linea.id }) }}"
  1979.                                                                             aria-label="Duplicar línea"
  1980.                                                                             title="Duplicar línea">
  1981.                                                                         <i class="fa fa-copy"></i>
  1982.                                                                     </button>
  1983.                                                                     <a href="{{ path('reservation_agenda_item_delete', { id: linea.id }) }}"
  1984.                                                                        onclick="return confirm('¿Deseas eliminar la línea?');"
  1985.                                                                        class="btn bg-btn-trash btn-xs"
  1986.                                                                        title="Borrar">
  1987.                                                                         <i class="fa fa-trash"></i>
  1988.                                                                     </a>
  1989.                                                                 </div>
  1990.                                                             {% endif %}
  1991.                                                         </div>
  1992.                                                     </div>
  1993.                                                 {% endfor %}
  1994.                                             </div>
  1995.                                             <div class="col-sm-12"><hr></div>
  1996.                                             <div class="col-sm-12 text-right margen-10">
  1997.                                                 <div class="btn-group">
  1998.                                                     <button class="btn bg-btn-limerick btn-sm"
  1999.                                                             data-toggle="modal"
  2000.                                                             data-target="#modalAgregarLinea"
  2001.                                                             data-url="{{ path('reservation_agenda_item_add', { reservationId: id }) }}">
  2002.                                                         <i class="fa fa-plus"></i> Añadir línea
  2003.                                                     </button>
  2004.                                                     <a href="{{ path('reservation_agenda_print', { reservationId: id }) }}"
  2005.                                                        target="_blank"
  2006.                                                        class="btn bg-btn-vivid_sky_blue btn-sm">
  2007.                                                         <i class="fa fa-eye"></i> Ver Agenda
  2008.                                                     </a>
  2009.                                                     <a href="{{ path('reservations_agenda_pdf', { reservationId: id }) }}"
  2010.                                                        target="_blank"
  2011.                                                        class="btn bg-btn-limerick btn-sm">
  2012.                                                         <i class="fa fa-file-pdf-o"></i> Pdf Agenda
  2013.                                                     </a>
  2014.                                                 </div>
  2015.                                             </div>
  2016.                                         </div>
  2017.                                     </div>
  2018.                                 </div>
  2019.                             </div>
  2020.                         </div>
  2021.                     </div>
  2022.                     {# FACTURACIÓN #}
  2023.                     <div class="panel panel-default">
  2024.                         <div class="panel-body">
  2025.                             <div class="col-xs-12">
  2026.                                 <strong class="text-vivid_sky_blue">
  2027.                                     <legend class="border-teal-800">{% trans %}FACTURACION{% endtrans %}</legend>
  2028.                                 </strong>
  2029.                             </div>
  2030.                             <div class="col-sm-12 text-center">
  2031.                                 <div class="col-sm-12">
  2032.                                     <div class="col-sm-1"><b>No.</b></div>
  2033.                                     <div class="col-sm-2"><b>Fecha de Facturación</b></div>
  2034.                                     <div class="col-sm-3"><b>Cliente</b></div>
  2035.                                     <div class="col-sm-1"><b>Neto</b></div>
  2036.                                     <div class="col-sm-1"><b>Iva</b></div>
  2037.                                     <div class="col-sm-1"><b>Total</b></div>
  2038.                                     <div class="col-sm-2"><b>Balance Restante</b></div>
  2039.                                     <div class="col-sm-1"><b>Acciones</b></div>
  2040.                                 </div>
  2041.                                 <div class="col-sm-12"><hr></div>
  2042.                                 {% set totalBalance = 0 %}
  2043.                                 {% for factura in facturas %}
  2044.                                     {% set totalBalance = totalBalance + factura.balance %}
  2045.                                     <div class="col-sm-12 margen-10">
  2046.                                         <div class="col-sm-1">
  2047.                                             {% if factura.type == 'Invoice' %}
  2048.                                                 <p style="color: {{ factura.clientType == 'Supplier' ? 'orange' : 'inherit' }}">{{ factura.number }}</p>
  2049.                                             {% else %}
  2050.                                                 <p style="color: {{ factura.type == 'Invoice Deposit' ? 'green' : 'red' }}">
  2051.                                                     {{ factura.number }} {% if factura.type != 'Invoice Deposit' %}({{ factura.invoiceToRec.number }}){% endif %}
  2052.                                                 </p>
  2053.                                             {% endif %}
  2054.                                         </div>
  2055.                                         <div class="col-sm-2">
  2056.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2057.                                                 {{ factura.dateAt|date("d/m/Y") }}
  2058.                                             </p>
  2059.                                         </div>
  2060.                                         <div class="col-sm-3">
  2061.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2062.                                                 {{ factura.client.name|default('') }}
  2063.                                             </p>
  2064.                                         </div>
  2065.                                         <div class="col-sm-1">
  2066.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2067.                                                 {{ factura.totalNet|number_format(2, ',', '.') }}
  2068.                                             </p>
  2069.                                         </div>
  2070.                                         <div class="col-sm-1">
  2071.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2072.                                                 {{ factura.vat|number_format(2, ',', '.') }}
  2073.                                             </p>
  2074.                                         </div>
  2075.                                         <div class="col-sm-1">
  2076.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2077.                                                 {{ factura.total|number_format(2, ',', '.') }}
  2078.                                             </p>
  2079.                                         </div>
  2080.                                         <div class="col-sm-2">
  2081.                                             <p style="color: {{ factura.type == 'Invoice' ? (factura.clientType == 'Supplier' ? 'orange' : 'inherit') : (factura.type == 'Invoice Deposit' ? 'green' : 'red') }}">
  2082.                                                 {{ factura.balance|number_format(2, ',', '.') }}
  2083.                                             </p>
  2084.                                         </div>
  2085.                                         <div class="col-sm-1">
  2086.                                             {% if factura.type == 'Invoice' %}
  2087.                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/invoice/viewnew/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  2088.                                             {% elseif factura.type == 'Invoice Deposit' %}
  2089.                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/newinvoicedeposit/viewinvoicedeposit/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  2090.                                             {% elseif factura.type == 'Invoice Rec' %}
  2091.                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/invoice/viewrec/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  2092.                                             {% elseif factura.type == 'Invoice Deposit Rec' %}
  2093.                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/newinvoicedeposit/viewinvoicedepositrec/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  2094.                                             {% endif %}
  2095.                                         </div>
  2096.                                     </div>
  2097.                                 {% endfor %}
  2098.                                 {% for item in paymentNotIvoiced %}
  2099.                                     {% if item.invoiceId is empty %}
  2100.                                         {% set totalBalance = totalBalance - item.Amount %}
  2101.                                     {% endif %}
  2102.                                     <div class="col-sm-12 margen-10">
  2103.                                         <div class="col-sm-1"></div>
  2104.                                         <div class="col-sm-2"><p style="color:blue">{{ item.DatePayAt|date("d/m/Y") }}</p></div>
  2105.                                         <div class="col-sm-3"><p style="color:blue">{{ item.WayToPay }}</p></div>
  2106.                                         <div class="col-sm-1"></div>
  2107.                                         <div class="col-sm-1"></div>
  2108.                                         <div class="col-sm-1"></div>
  2109.                                         <div class="col-sm-2">
  2110.                                             <p style="color:blue">-{{ (item.invoiceId is empty ? item.Amount : item.AmountTotal)|number_format(2, ',', '.') }}</p>
  2111.                                         </div>
  2112.                                         <div class="col-sm-1"></div>
  2113.                                     </div>
  2114.                                 {% endfor %}
  2115.                                 <div class="col-sm-12"><hr></div>
  2116.                                 <div class="col-sm-12">
  2117.                                     <div class="col-sm-offset-6 col-sm-1"><b>Neto</b><br>{{ resultados.totalNeto|number_format(2, ',', '.') }}</div>
  2118.                                     <div class="col-sm-1"><b>Iva</b><br>{{ resultados.vat|number_format(2, ',', '.') }}</div>
  2119.                                     <div class="col-sm-1"><b>Total</b><br>{{ resultados.total|number_format(2, ',', '.') }}</div>
  2120.                                     <div class="col-sm-2"><b>Balance Restante</b><br>{{ totalBalance|number_format(2, ',', '.') }}</div>
  2121.                                 </div>
  2122.                             </div>
  2123.                         </div>
  2124.                     </div>
  2125.                     {# PROFORMAS DE RESERVA #}
  2126.                     <div class="panel panel-default">
  2127.                         <div class="panel-body">
  2128.                             <div class="col-xs-12">
  2129.                                 <strong class="text-vivid_sky_blue">
  2130.                                     <legend class="border-teal-800">{% trans %}PROFORMAS DE RESERVA{% endtrans %}</legend>
  2131.                                 </strong>
  2132.                             </div>
  2133.                             <div class="col-sm-12 text-center">
  2134.                                 <div class="col-sm-12">
  2135.                                     <div class="col-sm-4"><b>{% trans %}Numero de Proforma{% endtrans %}</b></div>
  2136.                                     <div class="col-sm-4"><b>{% trans %}Fecha de Creación{% endtrans %}</b></div>
  2137.                                     <div class="col-sm-4"><b>{% trans %}Acciones{% endtrans %}</b></div>
  2138.                                 </div>
  2139.                                 <div class="col-sm-12"><hr></div>
  2140.                                 {% for proforma in allReservationProformas %}
  2141.                                     <div class="col-sm-12 margen-10">
  2142.                                         <div class="col-sm-4"><p style="color:blue">{{ proforma.prefix }}</p></div>
  2143.                                         <div class="col-sm-4">{{ proforma.createdAt|date("d/m/Y") }}</div>
  2144.                                         <div class="col-sm-4">
  2145.                                             <a class="btn bg-btn-vivid_sky_blue btn-xs" href="{{ path('reservations_viewnew_proforma', {'id': proforma.id}) }}">{% trans %}Go{% endtrans %}</a>
  2146.                                         </div>
  2147.                                     </div>
  2148.                                 {% else %}
  2149.                                     <div class="col-sm-12 margen-10 text-muted">{% trans %}Sin proformas asociadas a esta reserva.{% endtrans %}</div>
  2150.                                 {% endfor %}
  2151.                             </div>
  2152.                         </div>
  2153.                     </div>
  2154.                     {# DEPÓSITOS PROFORMA #}
  2155.                     <div class="panel panel-default">
  2156.                         <div class="panel-body">
  2157.                             <div class="col-xs-12">
  2158.                                 <strong class="text-vivid_sky_blue">
  2159.                                     <legend class="border-teal-800">{% trans %}DEPÓSITOS PROFORMA{% endtrans %}</legend>
  2160.                                 </strong>
  2161.                             </div>
  2162.                             <div class="col-sm-12 text-center" style="margin-top:20px;">
  2163.                                 <div class="col-sm-12">
  2164.                                     <div class="col-sm-2"><b>Numero de Proforma</b></div>
  2165.                                     <div class="col-sm-2"><b>Fecha del Depósito</b></div>
  2166.                                     <div class="col-sm-3"><b>Monto</b></div>
  2167.                                     <div class="col-sm-3"><b>Pendiente</b></div>
  2168.                                     <div class="col-sm-2"><b>Acciones</b></div>
  2169.                                 </div>
  2170.                                 <div class="col-sm-12"><hr></div>
  2171.                                 {% for proforma in proformas %}
  2172.                                     {% set total = proforma.total|default(0) %}
  2173.                                     {% set paid = sumsByProforma[proforma.id].paid|default(0) %}
  2174.                                     {% set remaining = (total - paid) %}
  2175.                                     <div class="col-sm-12 margen-10">
  2176.                                         <div class="col-sm-2">{{ proforma.number }}</div>
  2177.                                         <div class="col-sm-2">{{ proforma.dateAt|date('d/m/Y') }}</div>
  2178.                                         <div class="col-sm-3">{{ total|number_format(2, ',', '.') }}</div>
  2179.                                         <div class="col-sm-3">{{ remaining|number_format(2, ',', '.') }}</div>
  2180.                                         <div class="col-sm-2">
  2181.                                             {% set anyDeposit = proforma.deposits|first %}
  2182.                                             <button class="btn bg-btn-vivid_sky_blue js-show-payments"
  2183.                                                     data-deposit-id="{{ anyDeposit.id }}"
  2184.                                                     data-url="{{ path('deposit_payments_modal', { id: anyDeposit.id }) }}"
  2185.                                                     data-toggle="modal"
  2186.                                                     data-target="#paymentsModal">
  2187.                                                 Pagos
  2188.                                             </button>
  2189.                                         </div>
  2190.                                     </div>
  2191.                                 {% endfor %}
  2192.                                 {% for depósito in depositsAll %}
  2193.                                     {% if depósito.proformaDeposit is null %}
  2194.                                         <div class="col-sm-12 margen-10">
  2195.                                             <div class="col-sm-2">N/A</div>
  2196.                                             <div class="col-sm-2">{{ depósito.date|date('d/m/Y') }}</div>
  2197.                                             <div class="col-sm-3">{{ depósito.amount|number_format(2, ',', '.') }}</div>
  2198.                                             <div class="col-sm-3">0</div>
  2199.                                             <div class="col-sm-2">
  2200.                                                 <button class="btn bg-btn-vivid_sky_blue js-show-payments"
  2201.                                                         data-deposit-id="{{ depósito.id }}"
  2202.                                                         data-url="{{ path('deposit_payments_modal', { id: depósito.id }) }}"
  2203.                                                         data-toggle="modal"
  2204.                                                         data-target="#paymentsModal">
  2205.                                                     Pagos
  2206.                                                 </button>
  2207.                                             </div>
  2208.                                         </div>
  2209.                                     {% endif %}
  2210.                                 {% endfor %}
  2211.                             </div>
  2212.                         </div>
  2213.                     </div>
  2214.                     {# PAYMENTS #}
  2215.                     <div class="panel panel-default">
  2216.                         <div class="panel-body">
  2217.                             <div class="col-xs-12">
  2218.                                 <strong class="text-vivid_sky_blue">
  2219.                                     <legend class="border-teal-800">{% trans %}Payments{% endtrans %}</legend>
  2220.                                 </strong>
  2221.                             </div>
  2222.                             <div class="col-sm-12 text-center">
  2223.                                 <div class="col-sm-12">
  2224.                                     <div class="col-sm-3"><b>Expediente</b></div>
  2225.                                     <div class="col-sm-3"><b>Fecha de Pago</b></div>
  2226.                                     <div class="col-sm-3"><b>Forma de Pago</b></div>
  2227.                                     <div class="col-sm-3"><b>Monto</b></div>
  2228.                                 </div>
  2229.                                 <div class="col-sm-12"><hr></div>
  2230.                                 <div class="row">
  2231.                                     {% for payment in paymentsAll %}
  2232.                                         <div class="col-sm-12 margen-10">
  2233.                                             <div class="row">
  2234.                                                 <div class="col-sm-3">{{ payment.reservationId }}</div>
  2235.                                                 <div class="col-sm-3">{{ payment.datePayAt|date('d/m/Y') }}</div>
  2236.                                                 <div class="col-sm-3">{{ payment.wayToPay }}</div>
  2237.                                                 <div class="col-sm-3">{{ payment.amount|number_format(2, ',', '.') }}</div>
  2238.                                             </div>
  2239.                                         </div>
  2240.                                     {% endfor %}
  2241.                                 </div>
  2242.                             </div>
  2243.                         </div>
  2244.                     </div>
  2245.                 </div>
  2246.             </div>
  2247.         </div>
  2248.     </div>
  2249. </div>
  2250. {# MODALES #}
  2251. <div class="modal fade" id="paymentsModal" tabindex="-1" role="dialog" aria-labelledby="paymentsModalLabel">
  2252.     <div class="modal-dialog modal-lg" role="document">
  2253.         <div class="modal-content">
  2254.             <div class="modal-header">
  2255.                 <button type="button" class="close" data-dismiss="modal" aria-label="Cerrar"><span aria-hidden="true">&times;</span></button>
  2256.                 <h4 class="modal-title" id="paymentsModalLabel">Pagos</h4>
  2257.             </div>
  2258.             <div class="modal-body">
  2259.                 <p class="text-muted" id="paymentsModalLoading">Cargando…</p>
  2260.             </div>
  2261.             <div class="modal-footer">
  2262.                 <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
  2263.             </div>
  2264.         </div>
  2265.     </div>
  2266. </div>
  2267. <div class="modal fade" id="modalEditar" tabindex="-1" role="dialog">
  2268.     <div class="modal-dialog modal-lg" role="document">
  2269.         <div class="modal-content">
  2270.             <div class="modal-header">
  2271.                 <h5 class="modal-title">Editar línea de la agenda</h5>
  2272.                 <button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
  2273.             </div>
  2274.             <div class="modal-body">
  2275.                 <div id="modalEditarContenido">Cargando...</div>
  2276.             </div>
  2277.         </div>
  2278.     </div>
  2279. </div>
  2280. <div class="modal fade" id="modalAgregarLinea" tabindex="-1" role="dialog">
  2281.     <div class="modal-dialog modal-lg" role="document">
  2282.         <div class="modal-content">
  2283.             <div class="modal-header">
  2284.                 <h5 class="modal-title">Añadir línea a la agenda</h5>
  2285.                 <button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
  2286.             </div>
  2287.             <div class="modal-body">
  2288.                 <div id="modalAgregarContenido">Cargando formulario ...</div>
  2289.             </div>
  2290.         </div>
  2291.     </div>
  2292. </div>
  2293. <div id="tracingsModal" class="modal fade" role="dialog">
  2294.     <div class="modal-dialog modal-lg">
  2295.         <div class="modal-content">
  2296.             <div class="modal-header bg-btn-limerick">
  2297.                 <button type="button" class="close" data-dismiss="modal">&times;</button>
  2298.                 <h5 class="modal-title"><i class="icon-history position-left"></i> Gestión de Seguimientos</h5>
  2299.             </div>
  2300.             <div class="modal-body">
  2301.                 <div class="panel panel-body">
  2302.                     <h6 style="margin-top:0;">Añadir nuevo seguimiento</h6>
  2303.                     <form id="ajax-tracing-form" onsubmit="submitTracingAjax(event)">
  2304.                         <div class="row">
  2305.                             <div class="col-sm-4">
  2306.                                 <div class="form-group">
  2307.                                     <label>Fecha de aviso a futuro</label>
  2308.                                     <div class="input-group">
  2309.                                         <span class="input-group-addon"><i class="icon-calendar22"></i></span>
  2310.                                         <input type="date" id="tracingDateAjax" class="form-control" required />
  2311.                                     </div>
  2312.                                 </div>
  2313.                             </div>
  2314.                             <div class="col-sm-6">
  2315.                                 <div class="form-group">
  2316.                                     <label>Texto recordatorio</label>
  2317.                                     <input type="text" id="tracingTextAjax" class="form-control" placeholder="Escribe tu recordatorio..." required />
  2318.                                 </div>
  2319.                             </div>
  2320.                             <div class="col-sm-2">
  2321.                                 <div class="form-group">
  2322.                                     <label>&nbsp;</label>
  2323.                                     <button type="submit" class="btn bg-btn-limerick btn-block" id="btn-save-tracing">Guardar</button>
  2324.                                 </div>
  2325.                             </div>
  2326.                         </div>
  2327.                     </form>
  2328.                 </div>
  2329.                 <h6 class="text-semibold"><i class="icon-list3 position-left"></i> Historial de Seguimientos Planificados</h6>
  2330.                 <div id="tracing-history-container">
  2331.                     {% if tracings|length > 0 %}
  2332.                         <div class="table-responsive">
  2333.                             <table class="table table-bordered table-striped text-size-small">
  2334.                                 <thead>
  2335.                                     <tr class="bg-light">
  2336.                                         <th style="width: 15%">Fecha Aviso</th>
  2337.                                         <th style="width: 65%">Mensaje</th>
  2338.                                         <th style="width: 20%">Registro</th>
  2339.                                     </tr>
  2340.                                 </thead>
  2341.                                 <tbody>
  2342.                                     {% for tracing in tracings %}
  2343.                                         <tr>
  2344.                                             <td>
  2345.                                                 <span class="label text-vivid_sky_blue label-block">
  2346.                                                     <i class="icon-calendar3 position-left" style="font-size:10px;"></i> {{ tracing.dateAt|date('d-m-Y') }}
  2347.                                                 </span>
  2348.                                             </td>
  2349.                                             <td>{{ tracing.text }}</td>
  2350.                                             <td><span class="text-muted"><i class="icon-clock3 position-left text-size-mini"></i>{{ tracing.createdAt|date('d-m-Y H:i') }}</span></td>
  2351.                                         </tr>
  2352.                                     {% endfor %}
  2353.                                 </tbody>
  2354.                             </table>
  2355.                         </div>
  2356.                     {% else %}
  2357.                         <div class="alert alert-info" style="margin-bottom:0;">
  2358.                             No hay seguimientos registrados para esta reserva.
  2359.                         </div>
  2360.                     {% endif %}
  2361.                 </div>
  2362.             </div>
  2363.             <div class="modal-footer">
  2364.                 <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar ventana</button>
  2365.             </div>
  2366.         </div>
  2367.     </div>
  2368. </div>
  2369. <div class="modal fade" id="modalReschedule" tabindex="-1" role="dialog" aria-labelledby="modalRescheduleLabel">
  2370.     <div class="modal-dialog" role="document">
  2371.         <div class="modal-content">
  2372.             <div class="modal-header bg-btn-vivid_sky_blue text-white">
  2373.                 <button type="button" class="close" data-dismiss="modal" aria-label="Cerrar"><span aria-hidden="true">&times;</span></button>
  2374.                 <h4 class="modal-title" id="modalRescheduleLabel"><i class="icon-calendar position-left"></i> {% trans %}Reprogramar Fechas del Evento{% endtrans %}</h4>
  2375.             </div>
  2376.             <div class="modal-body">
  2377.                 <div class="form-group">
  2378.                     <label class="control-label" for="newStartDate">{% trans %}Nueva Fecha de Inicio del Evento{% endtrans %}</label>
  2379.                     <input type="date" class="form-control" id="newStartDate" name="newStartDate">
  2380.                     <span class="help-block text-muted">
  2381.                         <i class="icon-info22 text-vivid_sky_blue"></i>
  2382.                         {% trans %}Al cambiar esta fecha, todas las fechas de finalización, salas y servicios se desplazarán exactamente en la misma cantidad de días.{% endtrans %}
  2383.                     </span>
  2384.                 </div>
  2385.             </div>
  2386.             <div class="modal-footer">
  2387.                 <button type="button" class="btn btn-default" data-dismiss="modal">{% trans %}Cancelar{% endtrans %}</button>
  2388.                 <button type="button" class="btn bg-btn-limerick" id="btnConfirmReschedule">{% trans %}Aceptar{% endtrans %}</button>
  2389.             </div>
  2390.         </div>
  2391.     </div>
  2392. </div>
  2393. <div class="modal fade" id="modalWebObservations" tabindex="-1" role="dialog" aria-labelledby="modalWebObservationsLabel">
  2394.     <div class="modal-dialog modal-lg" role="document">
  2395.         <div class="modal-content">
  2396.             <div class="modal-header">
  2397.                 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  2398.                 <h4 class="modal-title" id="modalWebObservationsLabel">
  2399.                     <i class="fa fa-comments-o"></i> Observaciones cliente
  2400.                 </h4>
  2401.             </div>
  2402.             <div class="modal-body" style="max-height: 450px; overflow-y: auto;">
  2403.                 {% if webObservations is not empty %}
  2404.                     {% for obs in webObservations %}
  2405.                         <div class="panel panel-default">
  2406.                             <div class="panel-heading" style="background-color: #f5f5f5;">
  2407.                                 <strong class="text-primary"><i class="fa fa-calendar"></i> {{ obs.createdAt|date('d/m/Y H:i:s') }}</strong>
  2408.                             </div>
  2409.                             <div class="panel-body">
  2410.                                 <p style="white-space: pre-wrap; margin: 0;">{{ obs.observation }}</p>
  2411.                             </div>
  2412.                         </div>
  2413.                     {% endfor %}
  2414.                 {% else %}
  2415.                     <div class="well text-center" style="margin-bottom: 0;">
  2416.                         <p class="text-muted" style="margin: 0;">
  2417.                             <i class="fa fa-info-circle fa-lg"></i> No se han recibido observaciones desde la cotización web para esta propuesta todavía.
  2418.                         </p>
  2419.                     </div>
  2420.                 {% endif %}
  2421.             </div>
  2422.             <div class="modal-footer">
  2423.                 <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
  2424.             </div>
  2425.         </div>
  2426.     </div>
  2427. </div>
  2428. {% endblock %}
  2429. {% block javascripts %}
  2430.     {{ parent() }}
  2431.     <script type="text/javascript" src="{{ asset('assets/js/plugins/editors/summernote/summernote.min.js') }}"></script>
  2432.     <script type="text/javascript" src="{{ asset('assets/js/plugins/croppie/croppie.js') }}"></script>
  2433.     <script type="text/javascript" src="{{ asset('assets/js/plugins/forms/styling/switchery.min.js') }}"></script>
  2434.     <script type="text/javascript" src="{{ asset('assets/js/plugins/loaders/blockui.min.js') }}"></script>
  2435.     <script type="text/javascript" src="{{ asset('assets/js/plugins/forms/selects/select2.min.js') }}"></script>
  2436.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/add-simple-reservation.js') }}"></script>
  2437.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/services-invoice-select-items.js') }}"></script>
  2438.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/switchery-services.js') }}"></script>
  2439.     <script>
  2440.         $(document).ready(function() {
  2441.             $('.select2').select2({ width: '100%' });
  2442.             $('.summernote-small').summernote({
  2443.                 height: 150,
  2444.                 minHeight: 150,
  2445.                 maxHeight: 150,
  2446.                 disableResizeEditor: true,
  2447.                 // AGREGAMOS LA BARRA DE HERRAMIENTAS:
  2448.                 toolbar: [
  2449.                     // [nombre_del_grupo, [lista_de_botones]]
  2450.                     ['style', ['style']],
  2451.                     ['font', ['bold', 'underline', 'clear']],
  2452.                     ['fontname', ['fontname']],
  2453.                     ['fontsize', ['fontsize']],
  2454.                     ['color', ['color']],
  2455.                     ['para', ['ul', 'ol', 'paragraph']],
  2456.                     ['table', ['table']],
  2457.                     ['insert', ['link', 'picture', 'video']],
  2458.                     ['view', ['fullscreen', 'codeview', 'help']]
  2459.                 ],
  2460.                 // Puedes definir los tamaños exactos que quieres que aparezcan en el desplegable del fontsizes
  2461.                 fontSizes: ['8', '9', '10', '11', '12', '14', '16', '18', '24', '36', '48']
  2462.             });
  2463.             const $inputDias = $('#reservation_daysBlock');
  2464.             const $inputFecha = $('#days');
  2465.             const $selectStatus = $('#mds_venuesbundle_reservation_status');
  2466.             function updateFechaDesdeDias() {
  2467.                 let n = parseInt($inputDias.val(), 10);
  2468.                 if (isNaN(n)) return;
  2469.                 let d = new Date();
  2470.                 d.setHours(0,0,0,0);
  2471.                 d.setDate(d.getDate() + n);
  2472.                 let iso = d.getFullYear() + '-' +
  2473.                           String(d.getMonth() + 1).padStart(2, '0') + '-' +
  2474.                           String(d.getDate()).padStart(2, '0');
  2475.                 $inputFecha.val(iso);
  2476.             }
  2477.             function updateDiasDesdeFecha() {
  2478.                 let str = $inputFecha.val();
  2479.                 if (!str) return;
  2480.                 let seleccionada = new Date(str);
  2481.                 let hoy = new Date();
  2482.                 hoy.setHours(0,0,0,0);
  2483.                 let diffTime = seleccionada - hoy;
  2484.                 let diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
  2485.                 $inputDias.val(diffDays >= 0 ? diffDays : 0);
  2486.             }
  2487.             window.recalculateDeadline = updateFechaDesdeDias;
  2488.             $inputDias.on('input change', updateFechaDesdeDias);
  2489.             $inputFecha.on('change', updateDiasDesdeFecha);
  2490.             if($selectStatus.val() !== 'BLOQUEO') {
  2491.                 updateFechaDesdeDias();
  2492.             }
  2493.             const steps = document.querySelectorAll('#estado-stepper .step');
  2494.             const stepperContainer = document.querySelector('#estado-stepper');
  2495.             if (stepperContainer && $selectStatus.length > 0) {
  2496.                 const estadoIndex = parseInt(stepperContainer.dataset.estadoIndex);
  2497.                 steps.forEach((step, index) => {
  2498.                     if (index <= estadoIndex) {
  2499.                         setTimeout(() => {
  2500.                             if (index < estadoIndex) {
  2501.                                 step.classList.add('completed');
  2502.                             } else if (index === estadoIndex) {
  2503.                                 step.classList.add('active');
  2504.                             }
  2505.                         }, index * 250);
  2506.                     }
  2507.                     step.addEventListener('click', (e) => {
  2508.                         if (step.classList.contains('disabled')) {
  2509.                             e.preventDefault();
  2510.                             return;
  2511.                         }
  2512.                         const newStatusLabel = $(step).find('span').text().trim().toUpperCase();
  2513.                         const $option = $selectStatus.find('option').filter(function() {
  2514.                             return $(this).text().trim().toUpperCase() === newStatusLabel;
  2515.                         });
  2516.                         if ($option.length && !$option.prop('disabled')) {
  2517.                             $selectStatus.val($option.val());
  2518.                             $selectStatus.closest('form').submit();
  2519.                         }
  2520.                     });
  2521.                 });
  2522.             }
  2523.             $('#modalEditar, #modalAgregarLinea').on('show.bs.modal', function (event) {
  2524.                 var button = $(event.relatedTarget);
  2525.                 var url = button.data('url');
  2526.                 var modal = $(this);
  2527.                 var contentDiv = modal.find('.modal-body > div');
  2528.                 contentDiv.html("<p class='text-muted'>Cargando...</p>");
  2529.                 $.ajax({
  2530.                     url: url,
  2531.                     success: function(data) { contentDiv.html(data); },
  2532.                     error: function() { contentDiv.html("<div class='alert alert-danger'>Error al cargar el contenido.</div>"); }
  2533.                 });
  2534.             });
  2535.             $(document).on('click', '.js-show-payments', function (e) {
  2536.                 e.preventDefault();
  2537.                 var $btn = $(this);
  2538.                 var $modal = $('#paymentsModal');
  2539.                 $modal.find('.modal-title').text('Pagos del depósito #' + $btn.data('deposit-id'));
  2540.                 $modal.find('.modal-body').html('<p class="text-muted">Cargando…</p>');
  2541.                 $.get($btn.data('url'))
  2542.                     .done(function (html) { $modal.find('.modal-body').html(html); })
  2543.                     .fail(function () { $modal.find('.modal-body').html('<div class="alert alert-danger">Error al cargar pagos.</div>'); });
  2544.             });
  2545.         });
  2546.         var changeLanguageUrlTemplate = '{{ path("reservations_venues_change_language", { "id": "ID_PLACEHOLDER", "idLanguage": "LANG_PLACEHOLDER" }) }}';
  2547.         function changeLanguageWeb(idLanguage) {
  2548.             if (confirm("¿Está seguro de que desea cambiar el idioma? Se perderán todos los cambios del idioma actual.")) {
  2549.                 var changeLanguageUrl = changeLanguageUrlTemplate
  2550.                     .replace('ID_PLACEHOLDER', {{ id }})
  2551.                     .replace('LANG_PLACEHOLDER', idLanguage);
  2552.                 $.ajax({
  2553.                     url: changeLanguageUrl,
  2554.                     type: 'GET',
  2555.                     dataType: 'json',
  2556.                     success: function(response) {
  2557.                         if (response.status == 200) {
  2558.                             $('#reservation_global_lounge_language_hidden').val(idLanguage);
  2559.                             $.each(response.idiomas, function(key, data) {
  2560.                                 if (data !== null) {
  2561.                                     $('.resumenDescriptivo-' + key + '-editor').each(function () {
  2562.                                         $(this).summernote('code', data.importantDescription);
  2563.                                     });
  2564.                                     $('.general-' + key + '-editor').each(function () {
  2565.                                         $(this).summernote('code', data.importantDescGeneralText);
  2566.                                     });
  2567.                                     $('.horarios-' + key + '-editor').each(function () {
  2568.                                         $(this).summernote('code', data.importantDescSchedules);
  2569.                                     });
  2570.                                     $('.parking-' + key + '-editor').each(function () {
  2571.                                         $(this).summernote('code', data.importantDescParking);
  2572.                                     });
  2573.                                 }
  2574.                             });
  2575.                         } else {
  2576.                             console.error("Error al cambiar el idioma:", response.statusText);
  2577.                         }
  2578.                     },
  2579.                     error: function(xhr, status, error) {
  2580.                         console.error("Error al cambiar el idioma:", error);
  2581.                     }
  2582.                 });
  2583.             } else {
  2584.                 var previousLang = $('#reservation_global_lounge_language_hidden').val();
  2585.                 $('#reservation_idWebLanguage').val(previousLang);
  2586.                 return false;
  2587.             }
  2588.         }
  2589.         function submitTracingAjax(e) {
  2590.             e.preventDefault();
  2591.             var dateVal = $("#tracingDateAjax").val();
  2592.             var textVal = $("#tracingTextAjax").val();
  2593.             if(!dateVal || !textVal) {
  2594.                 alert("Rellena ambos campos obligatorios.");
  2595.                 return;
  2596.             }
  2597.             var btn = $("#btn-save-tracing");
  2598.             btn.button('loading');
  2599.             $.ajax({
  2600.                 url: "/venues/tracing/add/{{ id }}",
  2601.                 type: "POST",
  2602.                 data: {
  2603.                     tracingDate: dateVal,
  2604.                     tracingText: textVal
  2605.                 },
  2606.                 success: function(res) {
  2607.                     btn.button('reset');
  2608.                     if(res.status === 'ok') {
  2609.                         $("#tracingDateAjax").val('');
  2610.                         $("#tracingTextAjax").val('');
  2611.                         swal({
  2612.                             title: "¡Guardado!",
  2613.                             text: "El seguimiento se ha guardado correctamente.",
  2614.                             type: "success",
  2615.                             confirmButtonColor: "#2196F3",
  2616.                             timer: 1500
  2617.                         });
  2618.                         setTimeout(function() {
  2619.                             location.reload();
  2620.                         }, 1500);
  2621.                     } else {
  2622.                         swal("Error", "No se pudo guardar el seguimiento.", "error");
  2623.                     }
  2624.                 },
  2625.                 error: function() {
  2626.                     btn.button('reset');
  2627.                     swal("Error", "Ocurrió un error en la conexión.", "error");
  2628.                 }
  2629.             });
  2630.         }
  2631.         $(document).on('blur change', 'input[name*="End"], input[id^="end_"], input[name*="hourEnd"]', function() {
  2632.             var $input = $(this);
  2633.             var valor = $input.val().trim();
  2634.             if (valor === "00:00" || valor === "00.00" || valor === "0" || valor === "00" || valor === "000" || valor === "0000") {
  2635.                 $input.val("23:59");
  2636.                 var $parent = $input.closest('.col-md-1, .form-group');
  2637.                 $parent.addClass('has-warning');
  2638.                 setTimeout(function() {
  2639.                     $parent.removeClass('has-warning');
  2640.                 }, 2000);
  2641.             }
  2642.         });
  2643.         $(document).ready(function() {
  2644.             $('[data-toggle="tooltip"]').tooltip();
  2645.         });
  2646.         document.addEventListener("DOMContentLoaded", function () {
  2647.             const $salaSelect = $('#reservation_sala_salasPrecargadas');
  2648.             const $dateInput = $('#reservation_sala_date');
  2649.             const $priceInput = $('#reservation_sala_servicePrice');
  2650.             function fetchPrice() {
  2651.                 const salaId = $salaSelect.val();
  2652.                 const date = $dateInput.val();
  2653.                 if (salaId && date) {
  2654.                     fetch('{{ path("get_reservations_price_to_view") }}?sala=' + salaId + '&date=' + date)
  2655.                         .then(response => {
  2656.                             if (!response.ok) throw new Error("HTTP error " + response.status);
  2657.                             return response.json();
  2658.                         })
  2659.                         .then(data => {
  2660.                             if (data.price !== undefined) {
  2661.                                 $priceInput.val(data.price);
  2662.                             } else {
  2663.                                 $priceInput.val("");
  2664.                             }
  2665.                         })
  2666.                         .catch(err => console.error("Error obteniendo precio:", err));
  2667.                 }
  2668.             }
  2669.             $salaSelect.on("change", fetchPrice);
  2670.             $dateInput.on("change", fetchPrice);
  2671.         });
  2672.         document.addEventListener("DOMContentLoaded", function () {
  2673.             function diffDays(d1, d2) {
  2674.                 var a = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());
  2675.                 var b = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
  2676.                 return Math.round((b - a) / 86400000);
  2677.             }
  2678.             var mainDateStartValue = '{{ reserva.dateStart ? reserva.dateStart|date("Y-m-d") : "" }}';
  2679.             var mainDateEndValue = '{{ reserva.dateEnd ? reserva.dateEnd|date("Y-m-d") : "" }}';
  2680.             function superaLos30Dias(fechaSala) {
  2681.                 if (!mainDateStartValue || mainDateStartValue.trim() === "") return false;
  2682.                 var ds = new Date(mainDateStartValue);
  2683.                 if (mainDateEndValue && mainDateEndValue.trim() !== "") {
  2684.                     var de = new Date(mainDateEndValue);
  2685.                     if (!isNaN(ds.getTime()) && !isNaN(de.getTime()) && de < ds) {
  2686.                         return false;
  2687.                     }
  2688.                 }
  2689.                 var dt = new Date(fechaSala);
  2690.                 if (!isNaN(ds.getTime()) && !isNaN(dt.getTime())) {
  2691.                     if (Math.abs(diffDays(ds, dt)) > 30) return true;
  2692.                 }
  2693.                 return false;
  2694.             }
  2695.             var formSalasPre = document.forms['mds_venuesbundle_revervation_form2'];
  2696.             if (formSalasPre) {
  2697.                 formSalasPre.addEventListener('submit', function (e) {
  2698.                     var salaDateInput = document.getElementById('reservation_sala_date');
  2699.                     if (salaDateInput && salaDateInput.value.trim() !== "") {
  2700.                         if (superaLos30Dias(salaDateInput.value)) {
  2701.                             e.preventDefault();
  2702.                             alert("{% trans %}Error: La diferencia entre la fecha de inicio del expediente y la fecha de la sala precargada no puede superar los 30 días.{% endtrans %}");
  2703.                         }
  2704.                     }
  2705.                 });
  2706.             }
  2707.             var formLoungeGrid = document.forms['mds_venuesbundle_loungrid'];
  2708.             if (formLoungeGrid) {
  2709.                 formLoungeGrid.addEventListener('submit', function (e) {
  2710.                     var gridDateInputs = formLoungeGrid.querySelectorAll('input[type="date"][id^="newDate_"]');
  2711.                     var gridTieneErrores = false;
  2712.                     for (var i = 0; i < gridDateInputs.length; i++) {
  2713.                         var currentVal = gridDateInputs[i].value;
  2714.                         if (currentVal.trim() !== "") {
  2715.                             if (superaLos30Dias(currentVal)) {
  2716.                                 gridTieneErrores = true;
  2717.                                 gridDateInputs[i].style.borderColor = '#F44336';
  2718.                             } else {
  2719.                                 gridDateInputs[i].style.borderColor = '';
  2720.                             }
  2721.                         }
  2722.                     }
  2723.                     if (gridTieneErrores) {
  2724.                         e.preventDefault();
  2725.                         alert("{% trans %}Error: Hay salas en la cotización cuya fecha supera los 30 días de diferencia respecto a la fecha de inicio del expediente. Por favor, revise las casillas marcadas en rojo.{% endtrans %}");
  2726.                     }
  2727.                 });
  2728.             }
  2729.         });
  2730.         $(document).ready(function() {
  2731.             $('#btnConfirmReschedule').on('click', function() {
  2732.                 var newDate = $('#newStartDate').val();
  2733.                 if (!newDate) {
  2734.                     swal("Atención", "Debe seleccionar una nueva fecha de inicio.", "warning");
  2735.                     return;
  2736.                 }
  2737.                 swal({
  2738.                     title: "¿Está seguro?",
  2739.                     text: "Se modificarán las fechas de la reserva, todas las salas y los servicios asociados. Esta acción recalculará los días para todos los elementos.",
  2740.                     type: "warning",
  2741.                     showCancelButton: true,
  2742.                     confirmButtonColor: "#32aaf0",
  2743.                     confirmButtonText: "Sí, reprogramar",
  2744.                     cancelButtonText: "Cancelar",
  2745.                     closeOnConfirm: false,
  2746.                     showLoaderOnConfirm: true
  2747.                 }, function(isConfirm) {
  2748.                     if (isConfirm) {
  2749.                         $('#modalReschedule').modal('hide');
  2750.                         $.ajax({
  2751.                             url: "/venues/reschedule/{{ id }}/" + newDate,
  2752.                             type: "POST",
  2753.                             success: function(response) {
  2754.                                 if(response.status === 'success') {
  2755.                                     swal({
  2756.                                         title: "¡Éxito!",
  2757.                                         text: response.message,
  2758.                                         type: "success",
  2759.                                         confirmButtonColor: "#2196F3"
  2760.                                     }, function() {
  2761.                                         location.reload();
  2762.                                     });
  2763.                                 } else {
  2764.                                     swal("Error", response.message, "error");
  2765.                                 }
  2766.                             },
  2767.                             error: function(xhr) {
  2768.                                 var errorMsg = "Ocurrió un error al comunicarse con el servidor.";
  2769.                                 if(xhr.responseJSON && xhr.responseJSON.message) {
  2770.                                     errorMsg = xhr.responseJSON.message;
  2771.                                 }
  2772.                                 swal("Error", errorMsg, "error");
  2773.                             }
  2774.                         });
  2775.                     }
  2776.                 });
  2777.             });
  2778.             // Modal de Contratos Firmados del Expediente
  2779.             $('#btn-open-signed-contracts').on('click', function(e) {
  2780.                 e.preventDefault();
  2781.                 $('#modal-reservation-signed-contracts').modal('show');
  2782.                 $('#signed-contracts-table-container').html(
  2783.                     '<div class="text-center text-muted" style="padding: 30px 0;">' +
  2784.                     '<i class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></i> Cargando contratos firmados...' +
  2785.                     '</div>'
  2786.                 );
  2787.                 $.ajax({
  2788.                     url: '{{ path('reservations_signed_contracts_list', {'id': id}) }}',
  2789.                     type: 'GET',
  2790.                     success: function(resp) {
  2791.                         if (resp.status === 'success' && resp.signedContracts) {
  2792.                             if (resp.signedContracts.length === 0) {
  2793.                                 $('#signed-contracts-table-container').html(
  2794.                                     '<div class="alert alert-info text-center" style="font-size: 12px; margin: 15px 0;">' +
  2795.                                     '<i class="icon-info22 position-left"></i> Aún no se ha registrado ningún contrato firmado formalmente para este expediente.' +
  2796.                                     '</div>'
  2797.                                 );
  2798.                                 return;
  2799.                             }
  2800.                             var html = '<div class="table-responsive"><table class="table table-hover table-striped table-bordered" style="background: #fff; font-size: 12px;">' +
  2801.                                 '<thead style="background: #101230; color: #fff;">' +
  2802.                                     '<tr>' +
  2803.                                         '<th>Tipo / Espacio</th>' +
  2804.                                         '<th style="width: 80px; text-align: center;">Versión</th>' +
  2805.                                         '<th>Firmante</th>' +
  2806.                                         '<th>Fecha y Hora</th>' +
  2807.                                         '<th style="text-align: center;">Estado</th>' +
  2808.                                         '<th style="width: 140px; text-align: center;">Acciones</th>' +
  2809.                                     '</tr>' +
  2810.                                 '</thead>' +
  2811.                                 '<tbody>';
  2812.                             $.each(resp.signedContracts, function(idx, item) {
  2813.                                 var badge = item.isCurrentValid ?
  2814.                                     '<span class="label label-success" style="background-color: #27ae60; font-size: 11px;"><i class="icon-checkmark3 position-left"></i> VIGENTE</span>' :
  2815.                                     '<span class="label label-default" style="background-color: #95a5a6; font-size: 11px;"><i class="icon-history position-left"></i> Histórico</span>';
  2816.                                 var rowStyle = item.isCurrentValid ? 'font-weight: 500; background-color: #f0fdf4;' : '';
  2817.                                 var downloadBtn = item.pdfUrl ?
  2818.                                     '<a href="' + item.pdfUrl + '" target="_blank" class="btn btn-xs ' + (item.isCurrentValid ? 'btn-success' : 'btn-default') + '" style="font-weight: bold;">' +
  2819.                                         '<i class="icon-download position-left"></i> Descargar PDF' +
  2820.                                     '</a>' : '<span class="text-muted">-</span>';
  2821.                                 html += '<tr style="' + rowStyle + '">' +
  2822.                                     '<td><strong>' + (item.modelTitle || 'Contrato') + '</strong></td>' +
  2823.                                     '<td style="text-align: center;"><span class="badge" style="background-color: #32aaf0;">v' + item.versionNumber + '</span></td>' +
  2824.                                     '<td>' + (item.signedByName || '-') + (item.signedByJob ? ' <small class="text-muted">(' + item.signedByJob + ')</small>' : '') + '</td>' +
  2825.                                     '<td>' + (item.signedAt || '-') + '</td>' +
  2826.                                     '<td style="text-align: center;">' + badge + '</td>' +
  2827.                                     '<td style="text-align: center;">' + downloadBtn + '</td>' +
  2828.                                 '</tr>';
  2829.                             });
  2830.                             html += '</tbody></table></div>';
  2831.                             $('#signed-contracts-table-container').html(html);
  2832.                         } else {
  2833.                             $('#signed-contracts-table-container').html('<div class="alert alert-danger" style="font-size: 12px;">Error al cargar los contratos firmados.</div>');
  2834.                         }
  2835.                     },
  2836.                     error: function() {
  2837.                         $('#signed-contracts-table-container').html('<div class="alert alert-danger" style="font-size: 12px;">Error de comunicación con el servidor.</div>');
  2838.                     }
  2839.                 });
  2840.             });
  2841.         });
  2842.     </script>
  2843.     <script>
  2844.     document.addEventListener('DOMContentLoaded', function () {
  2845.         /* ======================================================
  2846.            ACTIVAR / DESACTIVAR PRECIO
  2847.            ====================================================== */
  2848.         document.querySelectorAll('.duplicate-lounge-check').forEach(function (checkbox) {
  2849.             checkbox.addEventListener('change', function () {
  2850.                 var loungeId = this.id.replace(
  2851.                     'duplicate_lounge_',
  2852.                     ''
  2853.                 );
  2854.                 var priceInput = document.querySelector(
  2855.                     'input[name="addquote[salas]['
  2856.                     + loungeId
  2857.                     + '][price]"]'
  2858.                 );
  2859.                 if (!priceInput) {
  2860.                     return;
  2861.                 }
  2862.                 priceInput.disabled = !this.checked;
  2863.                 if (this.checked) {
  2864.                     priceInput.focus();
  2865.                 } else {
  2866.                     priceInput.value = '';
  2867.                 }
  2868.             });
  2869.         });
  2870.         /* ======================================================
  2871.            ACTUALIZAR ARIA DE LOS COLLAPSE
  2872.            ====================================================== */
  2873.         $('.duplicate-space-card .collapse').on(
  2874.             'show.bs.collapse',
  2875.             function () {
  2876.                 var button = $(this).prev(
  2877.                     '.duplicate-space-header'
  2878.                 );
  2879.                 button.attr(
  2880.                     'aria-expanded',
  2881.                     'true'
  2882.                 );
  2883.             }
  2884.         );
  2885.         $('.duplicate-space-card .collapse').on(
  2886.             'hide.bs.collapse',
  2887.             function () {
  2888.                 var button = $(this).prev(
  2889.                     '.duplicate-space-header'
  2890.                 );
  2891.                 button.attr(
  2892.                     'aria-expanded',
  2893.                     'false'
  2894.                 );
  2895.             }
  2896.         );
  2897.     });
  2898.     </script>
  2899.     <script>
  2900.     document.addEventListener('DOMContentLoaded', function () {
  2901.         document.querySelectorAll('.duplicate-lounge-check').forEach(function (checkbox) {
  2902.             checkbox.addEventListener('change', function () {
  2903.                 var loungeId = this.id.replace('duplicate_lounge_', '');
  2904.                 var priceInput = document.querySelector( 'input[name="addquote[salas][' + loungeId + '][price]"]' );
  2905.                 if (!priceInput) { return; }
  2906.                 priceInput.disabled = !this.checked;
  2907.                 if (this.checked) {
  2908.                     priceInput.focus();
  2909.                 } else {
  2910.                     priceInput.value = '';
  2911.                 }
  2912.             });
  2913.         });
  2914.         /*
  2915.          * Cuando se abre/cierra un espacio cambiamos
  2916.          * visualmente la flecha.
  2917.          */
  2918.         $('.duplicate-space-card .collapse').on('show.bs.collapse', function () {
  2919.             var button = $(this).prev('.duplicate-space-header');
  2920.             button.attr('aria-expanded', 'true');
  2921.         });
  2922.         $('.duplicate-space-card .collapse').on('hide.bs.collapse', function () {
  2923.             var button = $(this).prev('.duplicate-space-header');
  2924.             button.attr('aria-expanded', 'false');
  2925.         });
  2926.     });
  2927.     </script>
  2928.     {# MODAL CONTRATOS FIRMADOS DEL EXPEDIENTE #}
  2929.     <div id="modal-reservation-signed-contracts" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modalSignedContractsTitle" aria-hidden="true">
  2930.         <div class="modal-dialog modal-lg">
  2931.             <div class="modal-content" style="border-radius: 6px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.2);">
  2932.                 <div class="modal-header" style="background-color: #101230; border-top: 4px solid #27ae60; color: #fff; padding: 14px 22px;">
  2933.                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="color: #fff; opacity: 0.8; font-size: 24px;">&times;</button>
  2934.                     <h4 class="modal-title" id="modalSignedContractsTitle" style="color: #fff; font-weight: bold; font-size: 16px;">
  2935.                         <i class="icon-file-check position-left" style="color: #27ae60;"></i> {% trans %}Contratos Firmados del Expediente{% endtrans %}
  2936.                     </h4>
  2937.                 </div>
  2938.                 <div class="modal-body" style="padding: 20px; background: #f8fafc;">
  2939.                     <p class="text-muted" style="font-size: 12px; margin-bottom: 15px;">
  2940.                         <i class="icon-info22 position-left"></i>
  2941.                         A continuación se listan todos los contratos formalizados digitalmente por el cliente para este expediente. El contrato marcado como <strong>VIGENTE</strong> es el vinculante actual. Los anteriores se conservan como histórico inmutable.
  2942.                     </p>
  2943.                     <div id="signed-contracts-table-container">
  2944.                         <div class="text-center text-muted" style="padding: 30px 0;">
  2945.                             <i class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></i> Cargando contratos firmados...
  2946.                         </div>
  2947.                     </div>
  2948.                 </div>
  2949.                 <div class="modal-footer" style="padding: 12px 20px; background: #fff; border-top: 1px solid #e2e8f0;">
  2950.                     <button type="button" class="btn btn-default" data-dismiss="modal">
  2951.                         <i class="icon-cross2 position-left"></i> {% trans %}Cerrar{% endtrans %}
  2952.                     </button>
  2953.                 </div>
  2954.             </div>
  2955.         </div>
  2956.     </div>
  2957.     {# BARRA FIJA FLOTANTE INFERIOR: TOTAL GLOBAL DEL EXPEDIENTE #}
  2958.     <div class="navbar-fixed-bottom bg-vivid_sky_blue text-mint_cream" style="left: 280px; right: 0; padding: 12px 20px; box-shadow: 0 -2px 10px rgba(0,0,0,0.15); z-index: 99;">
  2959.     <div class="container-fluid">
  2960.         <div class="row text-center">
  2961.             <div class="col-xs-4">
  2962.                 <span class="text-size-small text-uppercase" style="letter-spacing: 0.5px; opacity: 0.9;">{% trans %}VENTA TOTAL CLIENTE{% endtrans %}</span><br>
  2963.                 <span class="text-bold" style="font-size: 20px; color: #ffffff;">{{ sumatoria_totales_global_con_iva|number_format(2, ',', '.') }} €</span>
  2964.             </div>
  2965.             <div class="col-xs-4">
  2966.                 <span class="text-size-small text-uppercase" style="letter-spacing: 0.5px; opacity: 0.9;">{% trans %}IVA{% endtrans %}</span><br>
  2967.                 <span class="text-bold" style="font-size: 20px; color: #ffffff;">{{ sumatoria_totales_global_iva|number_format(2, ',', '.') }} €</span>
  2968.             </div>
  2969.             <div class="col-xs-4">
  2970.                 <span class="text-size-small text-uppercase" style="letter-spacing: 0.5px; opacity: 0.9;">{% trans %}VENTA SIN IVA{% endtrans %}</span><br>
  2971.                 <span class="text-bold" style="font-size: 20px; color: #ffffff;">{{ sumatoria_totales_global_neto|number_format(2, ',', '.') }} €</span>
  2972.             </div>
  2973.         </div>
  2974.     </div>
  2975. </div>
  2976. {% endblock %}