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">
  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.                 </ul>
  45.             </div>
  46.             {% if aveFile is defined %}
  47.                 {% if aveFile is not empty %}
  48.                     <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>
  49.                 {% endif %}
  50.             {% endif %}
  51.             {% if htFile is defined %}
  52.                 {% if htFile is not empty %}
  53.                     <a href="/higotrigo/ht/file/{{ htFile.id }}/edit" target="_blank" class="btn bg-btn-orange_cat btn-gl">{% trans %}Expediente Catering{% endtrans %} </a>
  54.                 {% endif %}
  55.             {% endif %}
  56.            {% if viewContract %}
  57.                 {% set contactMissing = (reserva.clientContact is empty) and (reserva.contactUnregistered is empty or reserva.nameContactUnregistered is empty) %}
  58.                 
  59.                 {% if contactMissing %}
  60.                     <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 %}">
  61.                         <button class="btn bg-btn-lavender_gray dropdown-toggle btn-gl disabled" type="button" style="pointer-events: none;" disabled="disabled">
  62.                             {% trans %}Contratos{% endtrans %}
  63.                             <span class="caret"></span>
  64.                         </button>
  65.                     </div>
  66.                 {% else %}
  67.                     <div class="btn-group">
  68.                         <button class="btn bg-btn-lavender_gray dropdown-toggle btn-gl" type="button" id="dropdownMenuContrato" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  69.                             {% trans %}Contratos{% endtrans %}
  70.                             <span class="caret"></span>
  71.                         </button>
  72.                         <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuContrato" role="menu" style="min-width: 250px;">
  73.                             {% for contract in reservationContracts %}
  74.                                 <li class="dropdown-header" style="font-weight: bold; color: #333; background: #f9f9f9; padding: 10px;">
  75.                                     {{ contract.model.title|default('Contrato ' ~ loop.index) }}
  76.                                 </li>
  77.                                 <li>
  78.                                     <a href="/pdf/venuescontract/{{ contract.id }}" target="_blank">
  79.                                         <i class="icon-file-pdf"></i> {% trans %}Versión PDF{% endtrans %}
  80.                                     </a>
  81.                                 </li>
  82.                                 <li>
  83.                                     <a href="/venues/contract/{{ contract.id }}" target="_blank">
  84.                                         <i class="icon-pencil"></i> {% trans %}Versión Editable{% endtrans %}
  85.                                     </a>
  86.                                 </li>
  87.                                 {% if not loop.last %}<li class="divider"></li>{% endif %}
  88.                             {% endfor %}
  89.                         </ul>
  90.                     </div>
  91.                 {% endif %}
  92.            {% endif %}
  93.             {# Acciones principales #}
  94.             {% if clientId != 0 %}
  95.                 <a href="/venues/payment/{{ id }}" class="btn bg-btn-limerick btn-gl">
  96.                     {% trans %}Pagos y Proformas de Depósito{% endtrans %} <i class="icon-coin-euro position-right"></i>
  97.                 </a>
  98.                 <a href="/venues/selinvoice/{{ id }}" class="btn bg-btn-vivid_sky_blue btn-gl">
  99.                     {% trans %}Facturación{% endtrans %} <i class="icon-eye8 position-right"></i>
  100.                 </a>
  101.             {% endif %}
  102.             <a href="/venues/summary/prices/{{ id }}" class="btn bg-btn-rich_black btn-gl">
  103.                 {% trans %}Resumen Económico{% endtrans %} <i class="icon-balance position-right"></i>
  104.             </a>
  105.             <a href="#" class="btn bg-btn-vivid_sky_blue btn-gl" data-toggle="modal" data-target="#tracingsModal" style="color: white;">
  106.                 <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>
  107.             </a>
  108.             <a href="/venues/delete/{{ id }}" class="btn bg-btn-trash btn-gl" onclick="return confirm('¿Deseas CANCELAR esta reserva por completo?');">
  109.                 {% trans %}Cancelar Reserva{% endtrans %} <i class="icon-cancel-circle2 position-right"></i>
  110.             </a>
  111.         </div>
  112.     </div>
  113.     {# === BODY === #}
  114.     <div class="panel-body">
  115.         <div class="row settings-page" id="client-client-subpage">
  116.             {# flashbags #}
  117.             {% for flashMessage in app.session.flashbag.get('mensajereservation') %}
  118.                 <div class="hidden alertFlashMensaje" data-mensaje="{{ flashMessage|raw }}"></div>
  119.             {% endfor %}
  120.             {% for flashMessage in app.session.flashbag.get('mensajereservationerror') %}
  121.                 <div class="hidden alertFlashMensajeError" data-mensajeerror="{{ flashMessage|raw }}"></div>
  122.             {% endfor %}
  123.             {% for flashMessage in app.session.flashbag.get('mensaje') %}
  124.                 <div class="hidden alertFlashMensaje" data-mensaje="{{ flashMessage|raw }}"></div>
  125.             {% endfor %}
  126.             {% for flashMessage in app.session.flashbag.get('mensajeerror') %}
  127.                 <div class="hidden alertFlashMensajeError" data-mensajeerror="{{ flashMessage|raw }}"></div>
  128.             {% endfor %}
  129.             <div class="col-xs-12">
  130.                 <div class="margen-15"></div>
  131.                 {# CONTENIDO PRINCIPAL (antes estaba en otro panel) #}
  132.                 <div class="panel panel-default">
  133.                     <div class="panel-body">
  134.                         <style>
  135.                             .stepper {
  136.                                 display: flex;
  137.                                 justify-content: space-between;
  138.                                 align-items: center;
  139.                                 padding: 20px;
  140.                                 border-radius: 10px;
  141.                                 color: white;
  142.                                 margin-bottom: 30px;
  143.                             }
  144.                             .step { text-align: center; position: relative; flex: 1; }
  145.                             .step:not(:last-child)::after {
  146.                                 content: "";
  147.                                 position: absolute;
  148.                                 top: 24px;
  149.                                 right: -50%;
  150.                                 height: 4px;
  151.                                 width: 100%;
  152.                                 background: #d3d3d3;
  153.                                 z-index: 0;
  154.                                 transition: background-color 0.5s ease;
  155.                             }
  156.                             .step.completed:not(:last-child)::after { background: #32aaf0; }
  157.                             .step .icon {
  158.                                 background: #fff;
  159.                                 border-radius: 50%;
  160.                                 padding: 15px;
  161.                                 font-size: 24px;
  162.                                 z-index: 1;
  163.                                 position: relative;
  164.                                 display: inline-block;
  165.                                 font-family: 'icomoon';
  166.                                 color: #101230;
  167.                                 transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  168.                                 cursor: pointer;
  169.                                 box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  170.                             }
  171.                             .step.completed .icon,
  172.                             .step.active .icon { 
  173.                                 background: #32aaf0; 
  174.                                 color: #fafffd; 
  175.                             }
  176.                             .step.active .icon {
  177.                                 transform: scale(1.15);
  178.                                 box-shadow: 0 0 15px rgba(50, 170, 240, 0.4);
  179.                             }
  180.                             .step span {
  181.                                 display: block;
  182.                                 margin-top: 8px;
  183.                                 font-weight: bold;
  184.                                 font-size: 14px;
  185.                                 color: #d3d3d3;
  186.                                 transition: color 0.4s ease, transform 0.4s ease;
  187.                             }
  188.                             .step.completed span { color: #101230; }
  189.                             .step.active span { 
  190.                                 color: #32aaf0; 
  191.                                 transform: translateY(2px);
  192.                             }
  193.                             /* Barra de totales fija y centrada */
  194.                             .totales-fixed {
  195.                                 margin: 0 6% 0 20%;
  196.                                 position: fixed;
  197.                                 left: 0;
  198.                                 right: 0;
  199.                                 bottom: 12px;
  200.                                 z-index: 1030;
  201.                                 border-radius: 6px;
  202.                                 box-shadow: 0 2px 10px rgba(0,0,0,.5);
  203.                             }
  204.                             .totales-fixed .container { max-width: 860px; }
  205.                             @media (max-width: 768px){
  206.                                 .totales-fixed { bottom: 0; border-radius: 0; }
  207.                                 .totales-fixed .container { max-width: 100%; }
  208.                             }
  209.                         </style>
  210.                             {% set pasos = ['Iniciado', 'Cotizado', 'Bloqueo', 'Confirmed', 'Invoiced'] %}
  211.                             {% set iconos = {
  212.                                 'Iniciado': 'icon-play',
  213.                                 'Cotizado': 'icon-coin-euro',
  214.                                 'Bloqueo': 'icon-lock',
  215.                                 'Confirmed': 'icon-checkmark-circle',
  216.                                 'Invoiced': 'icon-file-text'
  217.                             } %}
  218.                             {% set estadoActual = reserva.status %}
  219.                             {% set estadoIndex = -1 %}
  220.                             {% for i in 0..pasos|length - 1 %}
  221.                                 {% if pasos[i] == reserva.status %}
  222.                                     {% set estadoIndex = i %}
  223.                                 {% endif %}
  224.                             {% endfor %}
  225.                             <div class="stepper" id="estado-stepper" data-estado-index="{{ estadoIndex }}">
  226.                                 {% for paso in pasos %}
  227.                                     {% set index = loop.index0 %}
  228.                                     {% set clase = '' %}
  229.                                     {% if index < estadoIndex %}
  230.                                         {% set clase = 'completed' %}
  231.                                     {% elseif index == estadoIndex %}
  232.                                         {% set clase = 'active' %}
  233.                                     {% endif %}
  234.                                     {# Evaluamos si es el paso 'Iniciado' para deshabilitarlo #}
  235.                                     {% set claseDeshabilitado = (paso == 'Iniciado') ? 'disabled' : '' %}
  236.                                     {# Agregamos la clase deshabilitado al div class="step" #}
  237.                                     <div class="step {{ claseDeshabilitado }}" data-step-index="{{ index }}" data-step-type="{{ clase }}">
  238.                                         <div class="icon {{ iconos[paso] }}"></div>
  239.                                         <span>{{ paso|upper }}</span>
  240.                                     </div>
  241.                                 {% endfor %}
  242.                             </div>
  243.                             {% trans_default_domain 'messages' %}
  244.                             {# Renderiza el inicio del formulario con las clases y atributos necesarios #}
  245.                             {{ form_start(form, {
  246.                                 'action': path('reservations_update', {'id': id}), 
  247.                                 'attr': {
  248.                                     'class': 'form-horizontal', 
  249.                                     'role': 'form', 
  250.                                     'autocomplete': 'off'
  251.                                 }
  252.                             }) }}
  253.                                 {# --- BLOQUE ESTATICO (NO PARTE DEL FORM OBJECT) --- #}
  254.                                 <div class="form-group">
  255.                                     <label class="col-sm-3 control-label">{% trans %}Venues ID{% endtrans %}</label>
  256.                                     <div class="col-sm-9">
  257.                                         <b><p class="form-control-static">
  258.                                             #{{ id }} —> {% trans %}Created by Agent{% endtrans %}: {{ createdBy }} ({{ reserva.createdAt|date('d/m/Y') }})
  259.                                         </p></b>
  260.                                     </div>
  261.                                 </div>
  262.                                 {# --- TITULO Y SUCOE --- #}
  263.                                 <div class="form-group">
  264.                                     {{ form_label(form.title, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  265.                                     <div class="col-sm-6">
  266.                                         {{ form_widget(form.title, {'attr': {'class': 'form-control'}}) }}
  267.                                         {{ form_errors(form.title) }}
  268.                                     </div>
  269.                                     <div class="col-sm-3">
  270.                                         <div class="checkbox" style="margin:0">
  271.                                             <label>
  272.                                                 {# Renderizamos el widget del checkbox y su texto #}
  273.                                                 {{ form_widget(form.sucoe, {'attr': {'class': 'switchery-info'}}) }}
  274.                                                 {{ form_label(form.sucoe) }}
  275.                                             </label>
  276.                                         </div>
  277.                                     </div>
  278.                                 </div>
  279.                                 {# --- CLIENTE Y BOTÓN AÑADIR --- #}
  280.                                 <div class="form-group">
  281.                                     {{ form_label(form.client, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  282.                                     <div class="col-sm-5">
  283.                                         {{ form_widget(form.client, {'attr': {'class': 'form-control select2'}}) }}
  284.                                         {{ form_errors(form.client) }}
  285.                                     </div>
  286.                                     <div class="col-sm-1">
  287.                                         <a href="/client/add" class="btn bg-btn-vivid_sky_blue btn-gl" target="_blank">
  288.                                             {% trans %}Add Client{% endtrans %} <i class="icon-user-plus position-right"></i>
  289.                                         </a>
  290.                                     </div>
  291.                                 </div>
  292.                                 {# --- CONTACTO REGISTRADO --- #}
  293.                                 <div class="form-group">
  294.                                     <label for="client_contact" class="col-sm-3 control-label">{% trans %}Contacto{% endtrans %}</label>
  295.                                     <div class="col-sm-9">
  296.                                         <div class="InputClientContactSpinner">
  297.                                             {# 
  298.                                             NOTA: Como en el Type definimos 'clientContact' como HiddenType, 
  299.                                             aquí renderizamos el hidden widget para guardar el dato, 
  300.                                             y mantenemos tu SELECT HTML manual para la interfaz de usuario 
  301.                                             que alimenta ese hidden mediante JS.
  302.                                             *Idealmente esto debería ser un EntityType Ajax.*
  303.                                             #}
  304.                                             {{ form_widget(form.clientContact) }}
  305.                                             
  306.                                             <select class="form-control select2" id="ui_client_contact_selector" 
  307.                                                     onchange="document.getElementById('{{ form.clientContact.vars.id }}').value = this.value;">
  308.                                                 <option value="" selected="selected">{% trans %}Seleccione un contacto{% endtrans %}</option>
  309.                                                 {% for contact in clientsContact %}
  310.                                                     <option value="{{ contact.id }}" {% if contact.id == form.clientContact.vars.value %}selected{% endif %}>
  311.                                                         {{ contact.name }} {{ contact.lastName }} ({{ contact.email }})
  312.                                                     </option>
  313.                                                 {% endfor %}
  314.                                             </select>
  315.                                         </div>
  316.                                         <span class="help-block">{{ form_errors(form.clientContact) }}</span>
  317.                                     </div>
  318.                                 </div>
  319.                                 {# --- CONTACTO NO REGISTRADO --- #}
  320.                                 <div class="form-group">
  321.                                     <label class="col-sm-3 control-label">{% trans %}Contacto No Registrado{% endtrans %}</label>
  322.                                     <div class="col-sm-9">
  323.                                         <div class="row">
  324.                                             <div class="col-sm-4">
  325.                                                 {{ form_widget(form.contactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Correo electrónico'}}) }}
  326.                                                 {{ form_errors(form.contactUnregistered) }}
  327.                                             </div>
  328.                                             <div class="col-sm-4">
  329.                                                 {# Asegúrate de añadir nameContactUnregistered al ReservationType #}
  330.                                                 {{ form_widget(form.nameContactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Nombre y apellido'}}) }}
  331.                                                 {{ form_errors(form.nameContactUnregistered) }}
  332.                                             </div>
  333.                                             <div class="col-sm-4">
  334.                                                 {# Asegúrate de añadir phoneContactUnregistered al ReservationType #}
  335.                                                 {{ form_widget(form.phoneContactUnregistered, {'attr': {'class': 'form-control', 'placeholder': 'Teléfono'}}) }}
  336.                                                 {{ form_errors(form.nameContactUnregistered) }}
  337.                                             </div>
  338.                                         </div>
  339.                                     </div>
  340.                                 </div>
  341.                                 {# --- STATUS --- #}
  342.                                 <div class="form-group">
  343.                                     {{ form_label(form.status, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  344.                                     <div class="col-sm-3">
  345.                                         {# 
  346.                                         NOTA: La lógica compleja de "disabled" (confirmable/cotizable) 
  347.                                         debería manejarse en el FormType mediante eventos o 'choice_attr'.
  348.                                         Aquí renderizamos el widget estándar.
  349.                                         #}
  350.                                         {{ form_widget(form.status, {'attr': {'class': 'form-control select2'}}) }}
  351.                                         {{ form_errors(form.status) }}
  352.                                     </div>
  353.                                 </div>
  354.                                 {# --- FECHAS DE INICIO Y FIN --- #}
  355.                                 <div class="form-group">
  356.                                     {{ form_label( form.dateStart, null, {'label_attr': {'class': 'col-sm-3 control-label'}} ) }}
  357.                                     <div class="col-sm-2">
  358.                                         {{ form_widget(form.dateStart, { 'attr': { 'class': 'form-control', 'placeholder': 'Fecha de Inicio' }, 'disabled': true }) }}
  359.                                         {{ form_errors(form.dateStart) }}
  360.                                     </div>
  361.                                     <div class="col-sm-2"></div>
  362.                                     {{ form_label( form.dateEnd, null, {'label_attr': {'class': 'col-sm-3 control-label'}} ) }}
  363.                                     <div class="col-sm-2">
  364.                                         {{ form_widget(form.dateEnd, { 'attr': { 'class': 'form-control', 'placeholder': 'Fecha de Fin' }, 'disabled': true }) }}
  365.                                         {{ form_errors(form.dateEnd) }}
  366.                                     </div>
  367.                                 </div>
  368.                                 {# --- DIAS BLOQUEO / FECHA LIMITE --- #}
  369.                                 <div class="form-group">
  370.                                     <label class="col-sm-3 control-label">
  371.                                         {{ form_label(form.daysBlock) }} / {{ form_label(form.days) }}
  372.                                     </label>
  373.                                     <div class="col-sm-3">
  374.                                         {% set daysBlockAttrs = {'class': 'form-control'} %}
  375.                                         {# Aplicar lógica visual basada en el valor del status #}
  376.                                         {% if form.status.vars.value == 'Bloqueo' %}
  377.                                             {% set daysBlockAttrs = daysBlockAttrs|merge({'disabled': 'disabled'}) %}
  378.                                         {% endif %}
  379.                                         
  380.                                         {{ form_widget(form.daysBlock, {'attr': daysBlockAttrs}) }}
  381.                                         {{ form_errors(form.daysBlock) }}
  382.                                     </div>
  383.                                     <div class="col-sm-3">
  384.                                         {{ form_widget(form.days, {'attr': {'class': 'form-control', 'id': 'days', 'placeholder': 'Fecha límite bloqueo'}}) }}
  385.                                         {{ form_errors(form.days) }}
  386.                                     </div>
  387.                                 </div>
  388.                                 {# --- NOTIFICACION (Solo si es Bloqueo) --- #}
  389.                                 <div class="form-group">
  390.                                     {% if form.status.vars.value == 'Bloqueo' %}
  391.                                         {{ form_label(form.dateNextMailAlert, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  392.                                         <div class="col-sm-3">
  393.                                             {{ form_widget(form.dateNextMailAlert, {'attr': {'class': 'form-control'}}) }}
  394.                                         </div>
  395.                                     {% else %}
  396.                                         {# Renderiza el campo oculto para que no falte en el submit pero no se vea #}
  397.                                         <div style="display:none;">
  398.                                             {{ form_widget(form.dateNextMailAlert) }}
  399.                                         </div>
  400.                                     {% endif %}
  401.                                 </div>
  402.                                 {# --- SEGUIMIENTO ELIMINADO DEL FORMULARIO PRINCIPAL --- #}
  403.                                 {# --- CAMPOS OCULTOS AUTOMÁTICOS (Priority, Contract, CSRF Token) --- #}
  404.                                 {{ form_widget(form.priority) }}
  405.                                 {{ form_widget(form.contract) }}
  406.                                 {# form_rest renderiza cualquier campo que no hayamos puesto manualmente, incluyendo el _token #}
  407.                                 {# --- Comisión entre filiales --- #}
  408.                                 <div class="form-group">
  409.                                     {{ form_label(form.comHtGp, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  410.                                     <div class="col-sm-1">
  411.                                         {{ form_widget(form.comHtGp, {
  412.                                             'attr': {
  413.                                                 'class': 'form-control',
  414.                                                 'placeholder': '14 (Por defecto)'
  415.                                             }
  416.                                         }) }}
  417.                                         {{ form_errors(form.comHtGp) }}
  418.                                     </div>
  419.                                 </div>
  420.                                 
  421.                                 {# --- DESCRIPCION --- #}
  422.                                 <div class="form-group">
  423.                                     {{ form_label(form.description, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
  424.                                     <div class="col-sm-9">
  425.                                         {{ form_widget(form.description) }}
  426.                                         {{ form_errors(form.description) }}
  427.                                     </div>
  428.                                 </div>
  429.                                 {# --- BOTON GUARDAR --- #}
  430.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;"></div>
  431.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;">
  432.                                     <div class="form-group form-group-material">
  433.                                         <div class="text-center">
  434.                                             {{ form_widget(form.save, {'attr': {'class': 'btn bg-btn-limerick btn-block'}}) }}
  435.                                         </div>
  436.                                     </div>
  437.                                 </div>
  438.                                 <div class="col-md-4 margen-20" style="padding: 5px 15px;"></div>
  439.                             {{ form_end(form) }}
  440.                         </div>
  441.                     </div>
  442.                     <div class="panel panel-default">
  443.                         <div class="panel-body">
  444.                             <!-- ===================== RESERVA DE SALAS (HEADER) ===================== -->
  445.                             <div class="row">
  446.                                 <div class="col-xs-12 text-center">
  447.                                     <h3><strong>{% trans %}RESERVA DE SALAS{% endtrans %}</strong></h3>
  448.                                 </div>
  449.                                 <div class="col-xs-12">
  450.                                     <legend class="border text-vivid_sky_blue">{% trans %}Salas, Montaje y Desmontaje (Cargar día a día){% endtrans %}</legend>
  451.                                 </div>
  452.                             </div>
  453.                             <!-- ===================== FORM: SALAS PRECARGADAS ===================== -->
  454.                             <form name="mds_venuesbundle_revervation_form2"
  455.                                   method="post"
  456.                                   action="/venues/createsimplelounge/{{ id }}"
  457.                                   class="form-inline"
  458.                                   role="form"
  459.                                   autocomplete="off">
  460.                                 <div class="row" style="margin-bottom:10px">
  461.                                     <div class="col-sm-2">
  462.                                         <div class="form-group">
  463.                                             <label for="reservation_sala_salasPrecargadas" class="control-label">
  464.                                                 {% trans %}Salas Precargadas{% endtrans %} *
  465.                                             </label>
  466.                                             <select id="reservation_sala_salasPrecargadas"
  467.                                                     name="reservation_sala[salaPrecargadas]"
  468.                                                     class="form-control select2" required>
  469.                                                 <option value="">{% trans %}Seleccione una sala{% endtrans %}</option>
  470.                                                 {% for loungePre in loungesPre %}
  471.                                                     <option value="{{ loungePre.id }}">{{ loungePre.name|capitalize }}</option>
  472.                                                 {% endfor %}
  473.                                             </select>
  474.                                         </div>
  475.                                     </div>
  476.                                     <div class="col-sm-2">
  477.                                         <div class="form-group">
  478.                                             <label for="reservation_sala_date" class="control-label">{% trans %}Date{% endtrans %} *</label>
  479.                                             <input type="date" id="reservation_sala_date"
  480.                                                    name="reservation_sala[dateStart]"
  481.                                                    class="form-control" required>
  482.                                         </div>
  483.                                     </div>
  484.                                     <div class="col-sm-2">
  485.                                         <div class="form-group">
  486.                                             <label for="reservation_sala_date" class="control-label">{% trans %}Type{% endtrans %}</label>
  487.                                             <select id="reservation_sala_type" name="reservation_sala[type]" class="form-control" style="padding:0px;text-align-last: center;">
  488.                                                 <option value="" selected>Día de Evento</option>
  489.                                                 <option value="Montaje">Montaje</option>
  490.                                                 <option value="Desmontaje">Desmontaje</option>
  491.                                             </select>
  492.                                         </div>
  493.                                     </div>
  494.                                     <!-- Valor base oculto 0 -->
  495.                                     <input type="hidden" name="reservation_sala[servicePrice]" id="reservation_sala_price" value="0">
  496.                                     <div class="col-sm-1">
  497.                                         <div class="form-group">
  498.                                             <label for="reservation_sala_hourStart" class="control-label">{% trans %}Inicio{% endtrans %} *</label>
  499.                                             <input type="text" class="form-control"
  500.                                                    name="reservation_sala[hourStart]" id="reservation_sala_hourStart"
  501.                                                    placeholder="00:00" required>
  502.                                         </div>
  503.                                     </div>
  504.                                     <div class="col-sm-1">
  505.                                         <div class="form-group">
  506.                                             <label for="reservation_sala_hourEnd" class="control-label">{% trans %}Fin{% endtrans %} *</label>
  507.                                             <input type="text" class="form-control"
  508.                                                    name="reservation_sala[hourEnd]" id="reservation_sala_hourEnd"
  509.                                                    placeholder="00:00" required>
  510.                                         </div>
  511.                                     </div>
  512.                                     <div class="col-sm-1">
  513.                                         <div class="form-group">
  514.                                             <label for="reservation_sala_pax" class="control-label">{% trans %}Pax{% endtrans %}</label>
  515.                                             <input type="text" class="form-control" name="reservation_sala[pax]" id="reservation_sala_pax" required>
  516.                                         </div>
  517.                                     </div>
  518.                                     <div class="col-sm-1">
  519.                                         <div class="form-group">
  520.                                             <label for="reservation_sala_servicePrice" class="control-label">{% trans %}Precio{% endtrans %}</label>
  521.                                             <input type="number"
  522.                                                    step="any"
  523. {#                                                   min="0.01"#}
  524.                                                    class="form-control"
  525.                                                    name="reservation_sala[servicePrice]"
  526.                                                    id="reservation_sala_servicePrice"
  527.                                                    required>
  528.                                         </div>
  529.                                     </div>
  530.                                     <div class="col-sm-1">
  531.                                         <div class="form-group">
  532.                                             <label for="reservation_sala_idQuote" class="control-label">{% trans %}# Opción{% endtrans %}</label>
  533.                                             <input type="number" class="form-control"
  534.                                                    name="reservation_sala[idQuote]" id="reservation_sala_idQuote">
  535.                                         </div>
  536.                                     </div>
  537.                                     <div class="col-sm-1">
  538.                                         <div class="form-group">
  539.                                             <label class="control-label" style="display:block">&nbsp;</label>
  540.                                             <div class="input-group">
  541. {#                                                <span class="input-group-addon bg-vivid_sky_blue"><i class="icon-plus22"></i></span>#}
  542.                                                 <span class="group-btn">
  543.                                                 <button type="submit" id="reservation_sala_save" name="reservation_sala[save]"
  544.                                                         class="btn bg-btn-limerick">
  545.                                                   {% trans %}Add{% endtrans %}
  546.                                                 </button>
  547.                                               </span>
  548.                                             </div>
  549.                                         </div>
  550.                                     </div>
  551.                                 </div>
  552.                             </form>
  553.                         </div>
  554.                     </div>
  555.                     {% if numeroItems > 0 %}
  556.                         {# === Encabezado COTIZADO + selector de idioma === #}
  557.                         <div class="panel panel-default">
  558.                             <div class="panel-body">
  559.                                 <div class="row">
  560.                                     <div class="col-xs-12">
  561.                                         <strong class="text-vivid_sky_blue">
  562.                                             <legend class="border">
  563.                                                 <div class="row">
  564.                                                     <div class="col-xs-10">
  565.                                                         <h3>{% trans %}COTIZADO{% endtrans %}</h3>
  566.                                                     </div>
  567.                                                     <div class="col-xs-2">
  568.                                                         {% set firstLevel = arrayLoungesInFile|first %}
  569.                                                         {% set firstItem = firstLevel|first %}
  570.                                                         <label for="reservation_idWebLanguage" class="control-label">{% trans %}Idioma web{% endtrans %}</label>
  571.                                                         <select id="reservation_idWebLanguage" class="form-control" onchange="changeLanguageWeb(this.value)">
  572.                                                             {% for language, value in languagesWeb %}
  573.                                                                 <option value="{{ value }}" {% if firstItem.language is null or firstItem.language == value %}selected{% endif %}>
  574.                                                                     {{ language }}
  575.                                                                 </option>
  576.                                                             {% endfor %}
  577.                                                         </select>
  578.                                                     </div>
  579.                                                 </div>
  580.                                             </legend>
  581.                                         </strong>
  582.                                     </div>
  583.                                 </div>
  584.                                 <form name="mds_venuesbundle_loungrid"
  585.                                       method="post"
  586.                                       action="/venues/updateloungegrid"
  587.                                       class="form-horizontal"
  588.                                       role="form"
  589.                                       autocomplete="off">
  590.                                     <input type="hidden" name="reservationId" value="{{ id }}">
  591.                                     {# Mantén sincronizado el idioma seleccionado #}
  592.                                     <input type="hidden" name="reservation_global_lounge[language]" id="reservation_global_lounge_language_hidden" value="{{ firstItem.language }}">
  593.                                     {% set idRankQuote = null %}
  594.                                     {% for keyRank, itemRankQuote in arrayLoungesByDay %}
  595.                                         <div class="row">
  596.                                             <div class="col-md-12">
  597.                                                 <h4 class="m-t-10 m-b-10">
  598.                                                     <strong style="color: #bdbf09;">{% trans %}Opción{% endtrans %} # {{ keyRank }}</strong>
  599.                                                     <a class="btn bg-btn-limerick btn-xs" href="/venues/checkquote/{{ id }}/{{ keyRank }}" onclick="return confirm('{% trans %}¿Deseas eliminar todas las otras cotizaciones?{% endtrans %}');">
  600.                                                         <i class="icon-check"></i>
  601.                                                     </a>
  602.                                                     <a class="btn bg-btn-trash btn-xs" href="/venues/deletequote/{{ id }}/{{ keyRank }}" onclick="return confirm('{% trans %}¿Deseas eliminar la cotización?{% endtrans %}');">
  603.                                                         <i class="icon-trash"></i>
  604.                                                     </a>
  605.                                                 </h4>
  606.                                             </div>
  607.                                         </div>
  608.                                         {% for key, itemDay in itemRankQuote %}
  609.                                             <div class="row"><div class="col-md-12"><br></div></div>
  610.                                             <div class="row">
  611.                                                 <div class="col-md-1">
  612.                                                     <h4 class="text-vivid_sky_blue">{{ key|slice(6,2) }}/{{ key|slice(4,2) }}/{{ key|slice(0,4) }}</h4>
  613.                                                 </div>
  614.                                                 <div class="col-md-2">
  615.                                                     <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-gl">
  616.                                                         {% trans %}Duplicar Día{% endtrans %}
  617.                                                     </a>
  618.                                                 </div>
  619.                                             </div>
  620.                                             {# Cabecera de columnas #}
  621.                                             <div class="row no-padding" style="margin-top:10px">
  622.                                                 <div class="col-md-2"><label class="control-label">{% trans %}Fecha{% endtrans %}</label></div>
  623.                                                 <div class="col-md-3"><label class="control-label">{% trans %}Sala{% endtrans %}</label></div>
  624.                                                 <div class="col-md-1"><label class="control-label">{% trans %}Precio{% endtrans %}</label></div>
  625.                                                 <div class="col-md-2"><label class="control-label">{% trans %}IVA{% endtrans %}</label></div>
  626.                                                 <div class="col-md-1">
  627.                                                     <label class="control-label text-center">
  628.                                                         {% set hasMontaje = false %}
  629.                                                         {% for item in itemDay %}
  630.                                                             {% if item.type is not null %}
  631.                                                                 {% set hasMontaje = true %}
  632.                                                             {% endif %}
  633.                                                         {% endfor %}
  634.                                                         {% if hasMontaje %}{% trans %}Tipo{% endtrans %}{% else %}{% trans %}Personas{% endtrans %}{% endif %}
  635.                                                     </label>
  636.                                                 </div>
  637.                                                 <div class="col-md-1"><label class="control-label text-center">{% trans %}Inicio{% endtrans %}</label></div>
  638.                                                 <div class="col-md-1"><label class="control-label text-center">{% trans %}Fin{% endtrans %}</label></div>
  639.                                                 <div class="col-md-1"></div>
  640.                                             </div>
  641.                                             {# Filas de edición #}
  642.                                             {% for item in itemDay %}
  643.                                                 {% set idRankQuote = item.rankQuote %}
  644.                                                 {% set ymd = key|slice(0,4) ~ key|slice(4,2) ~ key|slice(6,2) %}
  645.                                                 <div class="row no-padding" style="margin-bottom:8px">
  646.                                                     <div class="col-md-2">
  647.                                                         <input type="date"
  648.                                                                class="form-control"
  649.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][newDate]"
  650.                                                                id="newDate_{{ item.id }}"
  651.                                                                value="{{ key|slice(0,4) }}-{{ key|slice(4,2) }}-{{ key|slice(6,2) }}">
  652.                                                     </div>
  653.                                                     <div class="col-md-3">
  654.                                                         <input type="text" class="form-control"
  655.                                                                id="loungeName_{{ item.id }}"
  656.                                                                value="{{ item.loungeName }}" disabled>
  657.                                                         {# hidden espejo para enviar el valor #}
  658.                                                         <input type="hidden"
  659.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][name]"
  660.                                                                value="{{ item.loungeName }}">
  661.                                                     </div>
  662.                                                     <div class="col-md-1">
  663.                                                         <input type="number" step="any" class="form-control"
  664.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][price]"
  665.                                                                id="price_{{ item.id }}"
  666.                                                                value="{{ item.servicePrice }}">
  667.                                                     </div>
  668.                                                     <div class="col-md-2">
  669.                                                         {# si debe ser no editable a UX, mantenlo disabled + hidden espejo #}
  670.                                                         <select class="form-control"
  671.                                                                 id="iva_{{ item.id }}"
  672.                                                                 {% if true %}disabled{% endif %}>
  673.                                                             <option value="">{% trans %}Selecciona un IVA{% endtrans %}</option>
  674.                                                             {% for vat in sageVatRates %}
  675.                                                                 <option value="{{ vat.id }}" {% if vat.id == item.sageIva.id %}selected{% endif %}>
  676.                                                                     {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  677.                                                                 </option>
  678.                                                             {% endfor %}
  679.                                                         </select>
  680.                                                         <input type="hidden"
  681.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][iva]"
  682.                                                                value="{{ item.sageIva.id }}">
  683.                                                     </div>
  684.                                                     <div class="col-md-1">
  685.                                                         {% if item.type is null %}
  686.                                                             <input type="number" step="1" class="form-control"
  687.                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][pax]"
  688.                                                                    id="pax_{{ item.id }}"
  689.                                                                    value="{{ item.pax }}">
  690.                                                         {% else %}
  691.                                                             <input type="text" class="form-control"
  692.                                                                    name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][type]"
  693.                                                                    id="type_{{ item.id }}"
  694.                                                                    value="{{ item.type }}" readonly>
  695.                                                         {% endif %}
  696.                                                     </div>
  697.                                                     <div class="col-md-1">
  698.                                                         <input type="text" class="form-control text-center"
  699.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][dateHourMinStart]"
  700.                                                                id="start_{{ item.id }}"
  701.                                                                value="{{ item.dateStart|date('H:i') }}">
  702.                                                     </div>
  703.                                                     <div class="col-md-1">
  704.                                                         <input type="text" class="form-control text-center"
  705.                                                                name="lounge[{{ item.id }}][{{ ymd }}][{{ item.loungeName }}][dateHourMinEnd]"
  706.                                                                id="end_{{ item.id }}"
  707.                                                                value="{{ item.dateEnd|date('H:i') }}">
  708.                                                     </div>
  709.                                                     <div class="col-md-1">
  710.                                                         {% if item.id != 0 %}
  711.                                                             <a class="btn bg-btn-trash icon-trash"
  712.                                                                onclick="return confirm('¿Deseas eliminar este elemento?');"
  713.                                                                href="/venues/deleteitemsimple/{{ item.id }}/{{ key|slice(6,2) }}-{{ key|slice(4,2) }}-{{ key|slice(0,4) }}"
  714.                                                                title="{% trans %}Eliminar este elemento{% endtrans %}"></a>
  715.                                                         {% else %}
  716.                                                             <a class="btn bg-btn-trash icon-trash"
  717.                                                                href="/venues/edit/{{ id }}"
  718.                                                                title="{% trans %}Antes debe guardar el expediente{% endtrans %}"></a>
  719.                                                         {% endif %}
  720.                                                     </div>
  721.                                                 </div>
  722.                                             {% endfor %}
  723.                                         {% endfor %}
  724.                                         {# ====== Bloque de textos por lounge/opción ====== #}
  725.                                         {% if arrayLoungesInFile[idRankQuote] is defined and arrayLoungesInFile[idRankQuote] is not empty %}
  726.                                             {% for item in arrayLoungesInFile[idRankQuote] %}
  727.                                                 <div class="row"><div class="col-xs-12"><br></div></div>
  728.                                                 <div class="row">
  729.                                                     <div class="col-xs-12">
  730.                                                         <ul class="nav nav-tabs" role="tablist">
  731.                                                             <li class="active" role="presentation">
  732.                                                                 <a href="#resumenDescriptivo-{{item.idLounge}}-{{keyRank}}" aria-controls="resumenDescriptivo-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab">🌐 {% trans %}Resumen Descriptivo{% endtrans %}</a>
  733.                                                             </li>
  734.                                                             <li role="presentation">
  735.                                                                 <a href="#general-{{item.idLounge}}-{{keyRank}}" aria-controls="general-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab">🌐 {% trans %}Importante (Texto General){% endtrans %}</a>
  736.                                                             </li>
  737.                                                             <li role="presentation">
  738.                                                                 <a href="#horarios-{{item.idLounge}}-{{keyRank}}" aria-controls="horarios-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab">🌐 {% trans %}Importante (Horarios){% endtrans %}</a>
  739.                                                             </li>
  740.                                                             <li role="presentation">
  741.                                                                 <a href="#parking-{{item.idLounge}}-{{keyRank}}" aria-controls="parking-{{item.idLounge}}-{{keyRank}}" role="tab" data-toggle="tab">🌐 {% trans %}Importante (Parking){% endtrans %}</a>
  742.                                                             </li>
  743.                                                         </ul>
  744.                                                         <div class="tab-content">
  745.                                                             <div role="tabpanel" class="tab-pane active" id="resumenDescriptivo-{{item.idLounge}}-{{keyRank}}">
  746.                                                                 <div class="col-md-12">
  747.                                                                     <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescription]" class="form-control summernote resumenDescriptivo-{{ item.idLounge }}-editor" rows="3">{{ item.loungeImportantDescription }}</textarea>
  748.                                                                 </div>
  749.                                                             </div>
  750.                                                             <div role="tabpanel" class="tab-pane" id="general-{{item.idLounge}}-{{keyRank}}">
  751.                                                                 <div class="col-md-12">
  752.                                                                     <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescGeneralText]" class="form-control summernote-small general-{{ item.idLounge }}-editor">{{ item.loungeImportantDescGeneralText }}</textarea>
  753.                                                                 </div>
  754.                                                             </div>
  755.                                                             <div role="tabpanel" class="tab-pane" id="horarios-{{item.idLounge}}-{{keyRank}}">
  756.                                                                 <div class="col-md-12">
  757.                                                                     <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescSchedules]" class="form-control summernote-small horarios-{{ item.idLounge }}-editor">{{ item.loungeImportantDescSchedules }}</textarea>
  758.                                                                 </div>
  759.                                                             </div>
  760.                                                             <div role="tabpanel" class="tab-pane" id="parking-{{item.idLounge}}-{{keyRank}}">
  761.                                                                 <div class="col-md-12">
  762.                                                                     <textarea name="reservation_global_lounge[{{ item.idLounge }}][importantDescParking]" class="form-control summernote-small parking-{{ item.idLounge }}-editor">{{ item.loungeImportantDescParking }}</textarea>
  763.                                                                 </div>
  764.                                                             </div>
  765.                                                         </div>
  766.                                                     </div>
  767.                                                 </div>
  768.                                             {% endfor %}
  769.                                         {% endif %}
  770.                                         {% if not loop.last %}
  771.                                             <div class="row"><div class="col-md-12"><br><hr><br></div></div>
  772.                                         {% endif %}
  773.                                     {% endfor %}
  774.                                     <div class="row">
  775.                                         <div class="col-md-4 margen-20" style="padding-top: 5px;"></div>
  776.                                         <div class="col-md-4 margen-20" style="padding-top: 5px;">
  777.                                             <button type="submit" name="mds_venuesbundle_reservation[save]" class="btn bg-btn-limerick btn-block">
  778.                                                 {% trans %}Guardar Cotizaciones{% endtrans %}
  779.                                             </button>
  780.                                         </div>
  781.                                         <div class="col-md-4 margen-20" style="padding-top: 5px;"></div>
  782.                                     </div>
  783.                                 </form>
  784.                                 <form name="mds_greenpatiobundle_addquote" method="post" action="/venues/duplicatequote" class="form-horizontal" role="form" autocomplete="off">
  785.                                     <input type="hidden" class="form-control" name="addquote[reservationId]" id="reservationId" value="{{ id }}">
  786.                                     <div class="col-md-12"></div>
  787.                                     <div class="col-md-12"><br><br><br><br></div>
  788.                                     <div class="col-md-12">
  789.                                         <div class="col-md-5"></div>
  790.                                         <div class="col-md-3">
  791.                                             <select id="reservation_sala_salasPrecargadas" name="addquote[salaPrecargadas]" class="form-control| select2" required>
  792.                                                 <option value="">{% trans %}Seleccione una sala{% endtrans %}</option>
  793.                                                 {% for loungePre in loungesPre %}
  794.                                                     <option value="{{ loungePre.id }}">{{ loungePre.name|capitalize }}  </option>
  795.                                                 {% endfor %}
  796.                                             </select>
  797.                                         </div>
  798.                                         <div class="col-md-1"><input type="number" class="form-control" step="any" name="addquote[salaPrice]" id="addquote_price" placeholder="Precio"></div>
  799.                                         <div class="col-md-1"><input type="number" class="form-control" step="any" name="addquote[idQuote]" id="addquote_idQuote" placeholder="# Opción" title="Número de opción que deseas duplicar"></div>
  800.                                         <div class="col-md-1 ml-5">
  801.                                             <div class="form-group form-group-material">
  802.                                                 <div class="input-group">
  803. {#                                                    <span class="input-group-addon bg-teal-800"><i class="icon-add"></i></span>#}
  804.                                                     <button type="submit" id="mds_greenpatiobundle_reservation_addquote" name="mds_greenpatiobundle_reservation[save]" class="btn bg-btn-vivid_sky_blue">Duplicar Opción</button>
  805.                                                 </div>
  806.                                             </div>
  807.                                         </div>
  808.                                     </div>
  809.                                 </form>
  810.                                 <div class="col-md-12">
  811.                                     <div class="col-md-11"></div>
  812.                                     <div class="col-md-1">
  813.                                         <a
  814.                                             href="{{ path('reservations_log_historic', { id: reserva.id }) }}"
  815.                                             class="btn bg-btn-limerick btn-xs"
  816.                                             title="Historico de Cotizaciones">
  817.                                             <i class="fa fa-book"></i> Registro
  818.                                         </a>
  819.                                     </div>
  820.                                 </div>
  821.                             </div>
  822.                         </div>
  823. {#                        <script>#}
  824. {#                            // Mantener sincronizado el hidden de idioma con el select visible#}
  825. {#                            (function(){#}
  826. {#                                var sel = document.getElementById('reservation_idWebLanguage');#}
  827. {#                                var hid = document.getElementById('reservation_global_lounge_language_hidden');#}
  828. {#                                if(sel && hid){#}
  829. {#                                    sel.addEventListener('change', function(){ hid.value = this.value; });#}
  830. {#                                }#}
  831. {#                            })();#}
  832. {#                        </script>#}
  833.                     {% endif %}
  834.                     {% if estadoActual in ['Confirmed', 'Invoiced'] %}
  835.                         <div class="panel bg-rich_black text-mint_cream" style="margin: 0 300px 80px 300px">
  836.                             <div class="panel-body text-center">
  837.                                 <div class="col-sm-12 ">
  838.                                     <div class="col-sm-4">
  839.                                         <H4>{% trans %}Sale Client Global{% endtrans %}</H4>
  840.                                         <H3>{{ totales_global_con_iva|number_format(2, '.', ',') }} €</H3>
  841.                                     </div>
  842.                                     <div class="col-sm-4">
  843.                                         <H4>{% trans %}IVA{% endtrans %}</H4>
  844.                                         <H3>{{ totales_global_iva|number_format(2, '.', ',') }} €</H3>
  845.                                     </div>
  846.                                     <div class="col-sm-4">
  847.                                         <H4>{% trans %}Sale No Vat{% endtrans %}</H4>
  848.                                         <H3>{{ totales_global_neto|number_format(2, '.', ',') }} €</H3>
  849.                                     </div>
  850.                                 </div>
  851.                             </div>
  852.                         </div>
  853.                     {% endif %}
  854.                     {# Con <div id="btn_srv" usamos el _fragment para el salto al insertar un servicio #}
  855.                     <div id="btn_srv" class="panel panel-default">
  856.                         <div class="panel-body text-center">
  857.                             <div class="col-sm-12 ">
  858.                                 <div class="row">
  859.                                     <div class="col-xs-12 text-center">
  860.                                         <h3><strong>{% trans %}Add Services to Reservation{% endtrans %}</strong></h3>
  861.                                     </div>
  862.                                 </div>
  863.                                 <div class="col-sm-12 no-padding">
  864.                                     <div class="panel panel-default" style="border: none">
  865.                                         <div class="panel-body">
  866.                                             <div class="row text-center srv-icons">
  867.                                                 <div class="col-xs-1 margen-10">
  868.                                                     <form method="post" action="/venues/reservations/white/services/add/3/{{ id }}">
  869.                                                         <button type="submit" class="btn-icon" title="{% trans %}Audiovisuales{% endtrans %}">
  870.                                                             <img src="/assets/images/icon/audiovisuales.png" alt="{% trans %}Audiovisuales{% endtrans %}" height="80">
  871.                                                         </button>
  872.                                                     </form>
  873.                                                 </div>
  874.                                                 <div class="col-xs-1 margen-10">
  875.                                                     <form method="post" action="/venues/reservations/white/services/add/17/{{ id }}">
  876.                                                         <button type="submit" class="btn-icon" title="{% trans %}Personal de Seguridad{% endtrans %}">
  877.                                                             <img src="/assets/images/icon/seguridad.png" alt="{% trans %}Personal de Seguridad{% endtrans %}" height="80">
  878.                                                         </button>
  879.                                                     </form>
  880.                                                 </div>
  881.                                                 <div class="col-xs-1 margen-10">
  882.                                                     <form method="post" action="/venues/reservations/white/services/add/18/{{ id }}">
  883.                                                         <button type="submit" class="btn-icon" title="{% trans %}WiFi{% endtrans %}">
  884.                                                             <img src="/assets/images/icon/wifi.png" alt="{% trans %}WiFi{% endtrans %}" height="80">
  885.                                                         </button>
  886.                                                     </form>
  887.                                                 </div>
  888.                                                 <div class="col-xs-1 margen-10">
  889.                                                     <form method="post" action="/venues/reservations/white/services/add/15/{{ id }}">
  890.                                                         <button type="submit" class="btn-icon" title="{% trans %}Project Manager{% endtrans %}">
  891.                                                             <img src="/assets/images/icon/asistencia.png" alt="{% trans %}Project Manager{% endtrans %}" height="80">
  892.                                                         </button>
  893.                                                     </form>
  894.                                                 </div>
  895.                                                 <div class="col-xs-1 margen-10">
  896.                                                     <form method="post" action="/venues/reservations/white/services/add/11/{{ id }}">
  897.                                                         <button type="submit" class="btn-icon" title="{% trans %}F&B (Catering){% endtrans %}">
  898.                                                             <img src="/assets/images/icon/catering.png" alt="{% trans %}F&B (Catering){% endtrans %}" height="80">
  899.                                                         </button>
  900.                                                     </form>
  901.                                                 </div>
  902.                                                 <div class="col-xs-1 margen-10">
  903.                                                     <form method="post" action="/venues/reservations/white/services/add/21/{{ id }}">
  904.                                                         <button type="submit" class="btn-icon" title="{% trans %}Limpieza{% endtrans %}">
  905.                                                             <img src="/assets/images/icon/limpieza.png" alt="{% trans %}Limpieza{% endtrans %}" height="80">
  906.                                                         </button>
  907.                                                     </form>
  908.                                                 </div>
  909.                                                 <div class="col-xs-1 margen-10">
  910.                                                     <form method="post" action="/venues/reservations/white/services/add/20/{{ id }}">
  911.                                                         <button type="submit" class="btn-icon" title="{% trans %}Parking{% endtrans %}">
  912.                                                             <img src="/assets/images/icon/parking.png" alt="{% trans %}Parking{% endtrans %}" height="80">
  913.                                                         </button>
  914.                                                     </form>
  915.                                                 </div>
  916.                                                 <div class="col-xs-1 margen-10">
  917.                                                     <form method="post" action="/venues/reservations/white/services/add/19/{{ id }}">
  918.                                                         <button type="submit" class="btn-icon" title="{% trans %}Mobiliario{% endtrans %}">
  919.                                                             <img src="/assets/images/icon/mobiliario.png" alt="{% trans %}Mobiliario{% endtrans %}" height="80">
  920.                                                         </button>
  921.                                                     </form>
  922.                                                 </div>
  923.                                                 <div class="col-xs-1 margen-10">
  924.                                                     <form method="post" action="/venues/reservations/white/services/add/12/{{ id }}">
  925.                                                         <button type="submit" class="btn-icon" title="{% trans %}Otros{% endtrans %}">
  926.                                                             <img src="/assets/images/icon/otros.png" alt="{% trans %}Otros{% endtrans %}" height="80">
  927.                                                         </button>
  928.                                                     </form>
  929.                                                 </div>
  930.                                             </div>
  931.                                         </div>
  932.                                     </div>
  933.                                 </div>
  934.                                 {% if services is not empty %}
  935.                                     <form name="mds_venuesbundle_servicegrid" method="post" action="/venues/updateservicegrid/{{ id }}" class="form-horizontal" role="form" autocomplete="off">
  936.                                         <div class="col-sm-12" style="padding-left: 0px; padding-right: 0px">
  937.                                             <div class="panel panel-default">
  938.                                                 <div class="panel-body">
  939.                                                     <div class="col-md-10 col-xs-10" ><strong class="text-vivid_sky_blue text-left">
  940.                                                         <legend class="border">{% trans %}Services{% endtrans %}</legend></strong>
  941.                                                     </div>
  942.                                                 </div>
  943.                                                 {% for service in services %}
  944.                                                     {% set loopIndex = loop.index %}
  945.                                                     {% if service.currency is empty %}
  946.                                                         {% set currency = 'Euro' %}
  947.                                                     {% else %}
  948.                                                         {% set currency = service.currency %}
  949.                                                     {% endif %}
  950.                                                     {% set contcolor = service.contcolor %}
  951.                                                     {% set error_commission = '' %}
  952.                                                     {% if service.commission is empty or service.commission =='0' %}
  953.                                                         {% set error_commission = 'has-error' %}
  954.                                                     {% endif %}
  955.                                                     {% set error_over  = '' %}
  956.                                                     {% if service.over  is empty or service.over =='0' %}
  957.                                                         {% set error_over = 'has-error' %}
  958.                                                     {% endif %}
  959.                                                     {% set error_iva  = '' %}
  960.                                                     {% if service.sageIva  is empty or service.sageIva is null %}
  961.                                                         {% set error_iva = 'has-error' %}
  962.                                                     {% endif %}
  963.                                                     {% if service.opCommission is empty %}
  964.                                                         {% set option_opcommission = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  965.                                                     {% else %}
  966.                                                         {% if service.opCommission == '0' %}
  967.                                                             {% set option_opcommission  = '<option value="0" selected="selected">-</option><option value="1">+</option>' %}
  968.                                                         {% elseif service.opCommission == '1' %}
  969.                                                             {% set option_opcommission  = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  970.                                                         {% endif %}
  971.                                                     {% endif %}
  972.                                                     {% if service.opOver is empty %}
  973.                                                         {% set option_opover = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  974.                                                     {% else %}
  975.                                                         {% if service.opOver == '0' %}
  976.                                                             {% set option_opover = '<option value="0" selected="selected">-</option><option value="1">+</option>' %}
  977.                                                         {% elseif service.opOver == '1' %}
  978.                                                             {% set option_opover  = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  979.                                                         {% endif %}
  980.                                                     {% endif %}
  981.                                                     {% if service.opIva is empty %}
  982.                                                         {% set option_opiva = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  983.                                                     {% else %}
  984.                                                         {% if service.opIva == '0' %}
  985.                                                             {% set option_opiva  = '<option value="0" selected="selected">-</option><option value="1">+</option>' %}
  986.                                                         {% elseif service.opIva == '1' %}
  987.                                                             {% set option_opiva = '<option value="1" selected="selected">+</option><option value="0">-</option>' %}
  988.                                                         {% endif %}
  989.                                                     {% endif %}
  990.                                                     {% set fondo_color  = 'white' %}
  991.                                                     {% if service.serviceId == '0'  and  service.serviceCatId != "16"%}
  992.                                                         {% set message_presentation  = 'This service has no presentation because it has not been added to the supplier as a service'|trans %}
  993.                                                         {% set name_presentation  = 'Service without presentation'|trans %}
  994.                                                         {% set boton_presentation  = 'Save Service in Supplier'|trans %}
  995.                                                         {% set no_presentacion_tip  = '<span data-popup="tooltip-custom" title="' ~ message_presentation  ~'"><span class="label text-danger-800"><b>' ~ name_presentation  ~':</b></span></span>' %}
  996.                                                         {% set no_presentacion  = '
  997.                                                                                     <div class="panel-footer">
  998.                                                                                         <span class="label text-danger-800"><b>' ~ name_presentation  ~':</b></span>
  999.                                                                                         <span class="label text-grey-800"><i class"text-grey">' ~ message_presentation ~'.</i> |</span>
  1000.                                                                                         <a class="text-teal boton_services_supplier_proposal" href="/supplier/services/fromproposal/' ~ service.serviceCatName|lower ~ '/add/' ~ service.id ~ '">' ~ boton_presentation ~ '</a></i>
  1001.                                                                                     </div>' %}
  1002.                                                     {% else %}
  1003.                                                         {% set message_presentation  = '' %}
  1004.                                                         {% set name_presentation  = '' %}
  1005.                                                         {% set no_presentacion_tip  = '' %}
  1006.                                                         {% set no_presentacion  = '' %}
  1007.                                                     {% endif %}
  1008.                                                     {% if service.serviceCatId =="1" %}
  1009.                                                         {% set name_days_night  = "Nights" %}
  1010.                                                     {% else %}
  1011.                                                         {% set name_days_night  = "Days" %}
  1012.                                                     {% endif %}
  1013.                                                     {% if service.serviceCatId =="1" %}
  1014.                                                         {% set name_days_night  = "Nights" %}
  1015.                                                     {% else %}
  1016.                                                         {% set name_days_night  = "Days" %}
  1017.                                                     {% endif %}
  1018.                                                     {% set additional = '' %}
  1019.                                                     <div id="{{ service.id }}" class="panel panel-default margin-right-20 border-left-{{ contcolor }} {{ fondo_color }} panel-collapsed" style="margin: 0 25px 25px 25px">
  1020.                                                         <div class="panel-heading">
  1021.                                                             <div class="panel-title text-left">
  1022.                                                                 <div class="row">
  1023.                                                                     <div class="col-xs-12 col-md-6">
  1024.                                                                         <b class="text-vivid_sky_blue">{% trans %}Service{% endtrans %}: {% if not (service.serviceCatName|trans == 'Menú') %} {{ service.serviceCatName|trans }} {% else %} Catering {% endif %} {% if (service.name is not null) %} - {{ service.name }}{% endif %}</b>
  1025.                                                                         {% autoescape %}{{ additional|raw }}{% endautoescape %}
  1026.                                                                     </div>
  1027.                                                                     <div class="col-xs-12 col-md-5 text-right">
  1028.                                                                         {% if not service.toinvoice %}
  1029.                                                                             <p class="m-0" style="margin-bottom: 0;"><small class="bg-trash text-white" style="padding: 5px 10px; border-radius: 3px;">{{ 'EXPENSE'|trans({}) }}</small></p>
  1030.                                                                         {% endif %}
  1031.                                                                     </div>
  1032.                                                                 </div>
  1033.                                                             </div>
  1034.                                                             <div class="heading-elements">
  1035.                                                                 <ul class="icons-list">
  1036.                                                                     <li><a data-action="collapse"></a></li>
  1037.                                                                 </ul>
  1038.                                                             </div>
  1039.                                                         </div>
  1040.                                                         {% if not (service.serviceCatId == 15) %}
  1041.                                                         <div class="panel-body">
  1042.                                                         <div class="form-group">
  1043.                                                             <div class="col-sm-11">
  1044.                                                                 <div class="col-sm-12">
  1045.                                                                     {% if not (service.serviceCatId == 15) %}
  1046.                                                                         <div class="col-sm-3" style="padding-bottom: 10px; padding-left: 0px; ">
  1047.                                                                             <label class="control-label" for="services_opcommission">{% trans %}Supplier{% endtrans %}:</label>
  1048.                                                                             <div class="form-group form-group-material">
  1049.                                                                                 <select name="services[{{ service.id }}][supplier]" class="form-control" style="padding:0px;text-align-last: center;">
  1050.                                                                                     <option value="0">{% trans %}Select a Supplier{% endtrans %}</option>
  1051.                                                                                     {% for supplier in listSupplier %}
  1052.                                                                                         {% if supplier.id == service.supplierId %}
  1053.                                                                                             <option value="{{ supplier.id }}" selected="selected">{{ supplier.company }}</option>
  1054.                                                                                         {% else %}
  1055.                                                                                             <option value="{{ supplier.id }}">{{ supplier.company }}</option>
  1056.                                                                                         {% endif %}
  1057.                                                                                     {% endfor %}
  1058.                                                                                 </select>
  1059.                                                                             </div>
  1060.                                                                         </div>
  1061.                                                                     {% endif %}
  1062.                                                                     {% if service.serviceCatId == 15 %}
  1063.                                                                         <div class="col-sm-2" style="padding-bottom: 10px; padding-left: 0px; ">
  1064.                                                                             <label class="control-label" for="services_agent">{% trans %}Agente{% endtrans %}:</label>
  1065.                                                                             <div class="form-group form-group-material">
  1066.                                                                                 <select id="services_agent" name="services[{{ service.id }}][agent]" class="form-control" style="padding:0px;text-align-last: center;">
  1067.                                                                                     <option value="0">{% trans %}Selecciona un agente{% endtrans %}</option>
  1068.                                                                                     {% for user in allUsersActive %}
  1069.                                                                                         {% if (service.assistantId is not empty) and (user.id == service.assistantId or ((user.id * (-1)) == service.assistantId)) %}
  1070.                                                                                             {% if user.role == 'Freelance' %}
  1071.                                                                                                 <option value="{{ user.team }}" selected="selected">{{ user.name }} {{ user.lastname }}</option>
  1072.                                                                                             {% else %}
  1073.                                                                                                 <option value="{{ user.id }}" selected="selected">{{ user.name }} {{ user.lastname }}</option>
  1074.                                                                                             {% endif %}
  1075.                                                                                         {% else %}
  1076. {#                                                                                                  FreeLance no registrado en el sistema       #}
  1077.                                                                                             {% if user.role == 'Freelance' %}
  1078.                                                                                                 <option value="{{ user.team }}">{{ user.name }} {{ user.lastname }}</option>
  1079.                                                                                             {% else %}
  1080.                                                                                                 <option value="{{ user.id }}">{{ user.name }} {{ user.lastname }}</option>
  1081.                                                                                             {% endif %}
  1082.                                                                                         {% endif %}
  1083.                                                                                     {% endfor %}
  1084.                                                                                 </select>
  1085.                                                                             </div>
  1086.                                                                         </div>
  1087.                                                                     {% endif %}
  1088.                                                                 </div>
  1089.                                                                 <div class="col-sm-3">
  1090.                                                                     <label class="control-label" for="services_name">{% trans %}Title{% endtrans %}: </label>
  1091.                                                                     <input type="text" id="services_name_{{ service.id }}" name="services[{{ service.id }}][name]"  value="{{ service.name }}" class="form-control">
  1092.                                                                 </div>
  1093.                                                                 <div class="col-md-2 col-xs-12">
  1094.                                                                     <label class="control-label" for="services_price">
  1095.                                                                         <span data-popup="tooltip-custom" title="{% trans %}Price with VAT or without VAT{% endtrans %}">
  1096.                                                                             <b class="text-rich_black">{% trans %}Price{% endtrans %}</b>:
  1097.                                                                         </span>
  1098.                                                                     </label>
  1099.                                                                     <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">
  1100.                                                                 </div>
  1101.                                                                 {% if not (service.serviceCatId == 15) %}
  1102.                                                                     <div class="col-md-1 col-xs-6">
  1103.                                                                         <label class="control-label" for="services_units">{% trans %}Units{% endtrans %}: </label>
  1104.                                                                         <input type="number" id="services_units_{{ service.id }}" name="services[{{ service.id }}][units]" value="{{ service.units }}" class="form-control">
  1105.                                                                     </div>
  1106.                                                                     <div class="col-md-1 col-xs-12">
  1107.                                                                         <label class="control-label" for="services_pax">{% trans %}Pax{% endtrans %}: </label>
  1108.                                                                         <input type="number" id="services_pax_{{ service.id }}" name="services[{{ service.id }}][pax]" value="{{ service.pax }}" class="form-control">
  1109.                                                                     </div>
  1110.                                                                 {% endif %}
  1111.                                                                 <div class="col-md-5 col-xs-12">
  1112.                                                                     {% autoescape %}
  1113.                                                                         <div class="col-md-2 col-xs-6  no-padding-right">
  1114.                                                                             <label class="control-label" for="services_opcommission" >-/+: </label>
  1115.                                                                             <div class="form-group form-group-material">
  1116.                                                                                 <select id="services_opcommission_{{ service.id }}" name="services[{{ service.id }}][opCommission]" class="form-control" style="padding:0px;text-align-last: center;">
  1117.                                                                                     {{ option_opcommission|raw }}
  1118.                                                                                 </select>
  1119.                                                                             </div>
  1120.                                                                         </div>
  1121.                                                                         <div class="col-md-2 col-xs-6  no-padding-left">
  1122.                                                                             <label class="control-label" for="services_commission">{% trans %}Commission{% endtrans %}(%) </label>
  1123.                                                                             <div class="form-group form-group-material {{ error_commission }}">
  1124.                                                                                 <input type="text" id="services_commission_{{ service.id }}" name="services[{{ service.id }}][commission]" value="{{ service.commission|number_format(2, ',', '.') }}" class="form-control">
  1125.                                                                             </div>
  1126.                                                                         </div>
  1127. {#                                                                        <div class="col-md-2 col-xs-6  no-padding-right">#}
  1128. {#                                                                            <label class="control-label" for="services_opover">-/+: </label>#}
  1129. {#                                                                            <div class="form-group form-group-material">#}
  1130. {#                                                                                <select id="services_opover_{{ service.id }}" name="services[{{ service.id }}][opOver]" class="form-control" style="padding:0px;text-align-last: center;">#}
  1131. {#                                                                                    {{ option_opover|raw }}#}
  1132. {#                                                                                </select>#}
  1133. {#                                                                            </div>#}
  1134. {#                                                                        </div>#}
  1135.                                                                         <div class="col-md-2 col-xs-6 no-padding-right" hidden>
  1136.                                                                             <label class="control-label" for="services_opover{{ service.id }}">-/+: </label>
  1137.                                                                             <div class="form-group form-group-material">
  1138.                                                                                 <select id="services_opover_{{ service.id }}" name="services[{{ service.id }}][opOver]" class="form-control" style="padding:0px;text-align-last: center;" hidden>
  1139.                                                                                     <option value="1" selected>+</option>
  1140.                                                                                     <option value="0">-</option>
  1141.                                                                                 </select>
  1142.                                                                             </div>
  1143.                                                                         </div>
  1144.                                                                         <div class="col-md-2 col-xs-6  no-padding-left">
  1145.                                                                             <label class="control-label" for="services_over">{% trans %}Over{% endtrans %}(€) </label>
  1146.                                                                             <div class="form-group form-group-material {{ error_over }}">
  1147.                                                                                 <input type="text" id="services_over_{{ service.id }}" name="services[{{ service.id }}][over]" value="{{ service.over }}" class="form-control">
  1148.                                                                             </div>
  1149.                                                                         </div>
  1150.                                                                         <div class="col-md-2 col-xs-6  no-padding-right" hidden>
  1151.                                                                             <label class="control-label" for="services_opiva">-/+: </label>
  1152.                                                                             <div class="form-group form-group-material">
  1153.                                                                                 <select id="services_opiva_{{ service.id }}" name="services[{{ service.id }}][opIva]" class="form-control" style="padding:0px;text-align-last: center;">
  1154.                                                                                     {{ option_opiva|raw }}
  1155.                                                                                 </select>
  1156.                                                                             </div>
  1157.                                                                         </div>
  1158.                                                                         {% if not (service.serviceCatId == 15) %}
  1159.                                                                            <div class="col-md-4 col-xs-6 no-padding-left">
  1160.                                                                                 <label class="control-label" for="services_iva">{% trans %}Iva{% endtrans %}: </label>
  1161.                                                                                 <div class="form-group form-group-material {{ error_iva }}">
  1162.                                                                                     <select id="services_iva_{{ service.id|default('new') }}"
  1163.                                                                                             name="services[{{ service.id|default('new') }}][iva]"
  1164.                                                                                             class="form-control"
  1165.                                                                                             style="width: 100%;"> {# Añadimos el style para asegurar el ancho #}
  1166.                                                                                         <option value="">Selecciona un IVA</option>
  1167.                                                                                         {% for vat in sageVatRates %}
  1168.                                                                                             <option value="{{ vat.id }}"
  1169.                                                                                                 {% if service.sageIva is not null and vat.id == service.sageIva.id %}selected{% endif %}>
  1170.                                                                                                 {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  1171.                                                                                             </option>
  1172.                                                                                         {% endfor %}
  1173.                                                                                     </select>
  1174.                                                                                 </div>
  1175.                                                                             </div>
  1176.                                                                         {% endif %}
  1177.                                                                     {% endautoescape %}
  1178.                                                                 </div>
  1179.                                                                 <div class="col-sm-9 margen-10">
  1180.                                                                     <div class="col-sm-2 col-xs-6">
  1181.                                                                         <label class="control-label" for="services_currency">{% trans %}Currency{% endtrans %}: </label>
  1182.                                                                         <input type="text" id="services_currency_{{ service.id }}" name="services[{{ service.id }}][currency]" value="{{ currency }}" class="form-control">
  1183.                                                                     </div>
  1184.                                                                     <div class="col-sm-2 no-padding">
  1185.                                                                         <label class="control-label" for="services_hour"><i class="icon-watch2"></i> {% trans %}Star{% endtrans %}: </label>
  1186.                                                                         <input type="time" id="services_start_{{ service.id }}" name="services[{{ service.id }}][start]" value="{{ service.dateInAt|date('H:i') }}" class="form-control">
  1187.                                                                     </div>
  1188.                                                                     <div class="col-sm-3">
  1189.                                                                         <label class="control-label" for="services_dateInAt">{% trans %}Date In{% endtrans %}: </label>
  1190.                                                                         <input type="date" id="services_dateInAt_{{ service.id }}" name="services[{{ service.id }}][dateInAt]" value="{{ service.dateInAt|date('d-m-Y') }}" class="form-control">
  1191.                                                                     </div>
  1192.                                                                     <div class="col-sm-3">
  1193.                                                                         <label class="control-label" for="services_dateOutAt">{% trans %}Date Out{% endtrans %}: </label>
  1194.                                                                         <input type="date" id="services_dateOutAt_{{ service.id }}" name="services[{{ service.id }}][dateOutAt]" value="{{ service.dateOutAt|date('d-m-Y') }}" class="form-control">
  1195.                                                                     </div>
  1196.                                                                     <div class="col-sm-2 no-padding">
  1197.                                                                         <label class="control-label" for="services_hour"><i class="icon-watch2"></i> {% trans %}End{% endtrans %}: </label>
  1198.                                                                         <input type="time" id="services_hour_{{ service.id }}" name="services[{{ service.id }}][end]" value="{{ service.dateOutAt|date('H:i') }}" class="form-control">
  1199.                                                                     </div>
  1200.                                                                 </div>
  1201.                                                                 <div class="col-md-3" style="padding-top: 35px;">
  1202.                                                                     <div class="checkbox-switchery text-left switchery-sm">
  1203.                                                                         <label >
  1204.                                                                             {% if service.toinvoice is empty %}
  1205.                                                                                 <input type="checkbox" id="service_toinvoice_{{ service.id }}" name="services[{{ service.id }}][toinvoice]" class="switchery-info" value="0"/>
  1206.                                                                             {% else %}
  1207.                                                                                 {% if service.toinvoice %}
  1208.                                                                                     <input type="checkbox" id="service_toinvoice_{{ service.id }}" name="services[{{ service.id }}][toinvoice]" class="switchery-info" value="1" checked/>
  1209.                                                                                 {% else %}
  1210.                                                                                     <input type="checkbox" id="service_toinvoice_{{ service.id }}" name="services[{{ service.id }}][toinvoice]" class="switchery-info" value="0"/>
  1211.                                                                                 {% endif %}
  1212.                                                                             {% endif %}
  1213.                                                                             {% trans %}Aparece en factura{% endtrans %}
  1214.                                                                         </label>
  1215.                                                                     </div>
  1216.                                                                 </div>
  1217.                                                                 <div class="col-md-3" style="padding-top: 35px;">
  1218.                                                                     <div class="checkbox-switchery text-left switchery-sm">
  1219.                                                                         <label >
  1220.                                                                             {% if service.viewInfo is empty %}
  1221.                                                                                 <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="0"/>
  1222.                                                                             {% else %}
  1223.                                                                                 {% if service.viewInfo %}
  1224.                                                                                     <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="1" checked/>
  1225.                                                                                 {% else %}
  1226.                                                                                     <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="0"/>
  1227.                                                                                 {% endif %}
  1228.                                                                             {% endif %}
  1229.                                                                             {% trans %}Add extra information to the web quotation{% endtrans %}
  1230.                                                                         </label>
  1231.                                                                     </div>
  1232.                                                                 </div>
  1233.                                                             </div>
  1234.                                                             <div class="col-sm-1 margen-5">
  1235.                                                                 <div class="col-xs-12">
  1236.                                                                 </div>
  1237.                                                                 <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1238.                                                                     <div class="checkbox checkbox-switchery switchery-lg switchery-double text-center" title="Eliminar este item">
  1239.                                                                         {#<input type="checkbox" class="switchery-info boolDelete" id="services_delete_{{ service.id }}" name="services_{{ service.id }}[boolDelete]" value="1">#}
  1240.                                                                         <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>
  1241.                                                                     </div>
  1242.                                                                 </div>
  1243.                                                                 <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1244.                                                                 {# ------------------------------ LISTA DE PRECIOS DE AVs ------------------------------ #}
  1245.                                                                 {% if (service.serviceCatId == 3) %}
  1246.                                                                     <div class="col-sm-3" style="padding-bottom: 10px; padding-left: 0px; ">
  1247.                                                                         <a href="{{ path('reservations_list_multiple_productfile_av', { id: service.id }) }}",
  1248.                                                                            class="btn bg-btn-green_av btn-xs"
  1249.                                                                            title="Precios AVs">
  1250.                                                                             <i class="fa fa-euro"></i>
  1251.                                                                         </a>
  1252.                                                                     </div>
  1253.                                                                 {% endif %}
  1254.                                                             </div>
  1255.                                                             </div>
  1256.                                                         </div>
  1257.                                                         </div>
  1258.                                                         {% else %}
  1259.                                                             {# ---------------- ASISTENCIA  ---------------- #}
  1260.                                                             <div class="panel-body">
  1261.                                                                 <div class="form-group">
  1262.                                                                     {% if (service.serviceCatId == 15) %}
  1263.                                                                         <div class="col-sm-3" style="padding-bottom: 10px; padding-left: 0px; ">
  1264.                                                                             <label class="control-label" for="services_opcommission">{% trans %}Supplier{% endtrans %}:</label>
  1265.                                                                             <div class="form-group form-group-material">
  1266.                                                                                 <select name="services[{{ service.id }}][supplier]" class="form-control" style="padding:0px;text-align-last: center;">
  1267.                                                                                     <option value="0">{% trans %}Select a Supplier{% endtrans %}</option>
  1268.                                                                                     {% for supplier in listSupplier %}
  1269.                                                                                         {% if supplier.id == service.supplierId %}
  1270.                                                                                             <option value="{{ supplier.id }}" selected="selected">{{ supplier.company }}</option>
  1271.                                                                                         {% else %}
  1272.                                                                                             <option value="{{ supplier.id }}">{{ supplier.company }}</option>
  1273.                                                                                         {% endif %}
  1274.                                                                                     {% endfor %}
  1275.                                                                                 </select>
  1276.                                                                             </div>
  1277.                                                                         </div>
  1278.                                                                     {% endif %}
  1279.                                                                     <div class="col-sm-11">
  1280.                                                                         <div class="col-sm-2" style="padding-bottom: 10px; padding-left: 0px; ">
  1281.                                                                             <label class="control-label" for="services_agent">{% trans %}Agente{% endtrans %}:</label>
  1282.                                                                             <div class="form-group form-group-material">
  1283.                                                                                 <select id="services_agent_{{ service.id }}" name="services[{{ service.id }}][agent]" class="form-control" style="padding:0px;text-align-last: center;">
  1284.                                                                                     <option value="0">{% trans %}Selecciona un agente{% endtrans %}</option>
  1285.                                                                                     {% for user in allUsersActive %}
  1286.                                                                                         {% if (service.assistantId is not empty) and (user.id == service.assistantId or ((user.id * (-1)) == service.assistantId)) %}
  1287.                                                                                             {% if user.role == 'Freelance' %}
  1288.                                                                                                 <option value="{{ user.team }}" selected="selected">{{ user.name }} {{ user.lastname }}</option>
  1289.                                                                                             {% else %}
  1290.                                                                                                 <option value="{{ user.id }}" selected="selected">{{ user.name }} {{ user.lastname }}</option>
  1291.                                                                                             {% endif %}
  1292.                                                                                         {% else %}
  1293.                                                                                             {#      FreeLance no registrado en el sistema       #}
  1294.                                                                                             {% if user.role == 'Freelance' %}
  1295.                                                                                                 <option value="{{ user.team }}">{{ user.name }} {{ user.lastname }}</option>
  1296.                                                                                             {% else %}
  1297.                                                                                                 <option value="{{ user.id }}">{{ user.name }} {{ user.lastname }}</option>
  1298.                                                                                             {% endif %}
  1299.                                                                                         {% endif %}
  1300.                                                                                     {% endfor %}
  1301.                                                                                 </select>
  1302.                                                                             </div>
  1303.                                                                         </div>
  1304.                                                                         <div class="col-sm-2">
  1305.                                                                             <label class="control-label" for="services_name">{% trans %}Title{% endtrans %}: </label>
  1306.                                                                             <input type="text" id="services_name_{{ service.id }}" name="services[{{ service.id }}][name]"  value="{{ service.name }}" class="form-control">
  1307.                                                                         </div>
  1308.                                                                         <div class="col-md-2 col-xs-12">
  1309.                                                                             <label class="control-label" for="services_price">
  1310.                                                                         <span data-popup="tooltip-custom" title="{% trans %}Price with VAT or without VAT{% endtrans %}">
  1311.                                                                             <b class="text-rich_black">{% trans %}Price{% endtrans %}</b>:
  1312.                                                                         </span>
  1313.                                                                             </label>
  1314.                                                                             <input type="text" id="services_price_{{ service.id }}" name="services[{{ service.id }}][price]" value="{{ service.price }}" class="form-control bg-{{ contcolor }}-300">
  1315.                                                                         </div>
  1316.                                                                         {#<input type="hidden" id="services_supplier" name="services[{{ service.id }}][supplier]" value="0" class="form-control">#}
  1317.                                                                         {#<input type="hidden" id="services_opiva_{{ service.id }}" name="services[{{ service.id }}][opIva]" value="1" class="form-control">#}
  1318.                                                                         {#<input type="hidden" id="services_iva_{{ service.id }}" name="services[{{ service.id }}][iva]" value="21" class="form-control">#}
  1319.                                                                         <input type="hidden" id="services_currency_{{ service.id }}" name="services[{{ service.id }}][currency]" value="{{ currency }}" class="form-control">
  1320.                                                                         <input type="hidden" id="services_units_{{ service.id }}" name="services[{{ service.id }}][units]" value="{{ service.units }}" class="form-control">
  1321.                                                                         <input type="hidden" id="services_pax_{{ service.id }}" name="services[{{ service.id }}][pax]" value="{{ service.pax }}" class="form-control">
  1322.                                                                         <br>
  1323.                                                                         <div class="col-md-5 col-xs-12">
  1324.                                                                             {% autoescape %}
  1325.                                                                                 <div class="col-md-2 col-xs-6  no-padding-right">
  1326.                                                                                     <label class="control-label" for="services_opcommission" >-/+: </label>
  1327.                                                                                     <div class="form-group form-group-material">
  1328.                                                                                         <select id="services_opcommission_{{ service.id }}" name="services[{{ service.id }}][opCommission]" class="form-control" style="padding:0px;text-align-last: center;">
  1329.                                                                                             {{ option_opcommission|raw }}
  1330.                                                                                         </select>
  1331.                                                                                     </div>
  1332.                                                                                 </div>
  1333.                                                                                 <div class="col-md-2 col-xs-6  no-padding-left">
  1334.                                                                                     <label class="control-label" for="services_commission">{% trans %}Commission{% endtrans %}: </label>
  1335.                                                                                     <div class="form-group form-group-material {{ error_commission }}">
  1336.                                                                                         <input type="text" id="services_commission_{{ service.id }}" name="services[{{ service.id }}][commission]" value="{{ service.commission }}" class="form-control">
  1337.                                                                                     </div>
  1338.                                                                                 </div>
  1339.                                                                                 <div class="col-md-2 col-xs-6  no-padding-right">
  1340.                                                                                     <label class="control-label" for="services_opover">-/+: </label>
  1341.                                                                                     <div class="form-group form-group-material">
  1342.                                                                                         <select id="services_opover_{{ service.id }}" name="services[{{ service.id }}][opOver]" class="form-control" style="padding:0px;text-align-last: center;">
  1343.                                                                                             {{ option_opover|raw }}
  1344.                                                                                         </select>
  1345.                                                                                     </div>
  1346.                                                                                 </div>
  1347.                                                                                 <div class="col-md-2 col-xs-6  no-padding-left">
  1348.                                                                                     <label class="control-label" for="services_over">{% trans %}Over{% endtrans %}: </label>
  1349.                                                                                     <div class="form-group form-group-material {{ error_over }}">
  1350.                                                                                         <input type="text" id="services_over_{{ service.id }}" name="services[{{ service.id }}][over]" value="{{ service.over }}" class="form-control">
  1351.                                                                                     </div>
  1352.                                                                                 </div>
  1353.                                                                                 {% if (service.serviceCatId == 15) %}
  1354.                                                                                     <div class="col-md-2 col-xs-6  no-padding-right">
  1355.                                                                                         <label class="control-label" for="services_opiva">-/+: </label>
  1356.                                                                                         <div class="form-group form-group-material">
  1357.                                                                                             <select id="services_opiva_{{ service.id }}" name="services[{{ service.id }}][opIva]" class="form-control" style="padding:0px;text-align-last: center;">
  1358.                                                                                                 {{ option_opiva|raw }}
  1359.                                                                                             </select>
  1360.                                                                                         </div>
  1361.                                                                                     </div>
  1362.                                                                                 {% endif %}
  1363.                                                                                 {% if (service.serviceCatId == 15) %}
  1364.                                                                                     <div class="col-md-2 col-xs-6 no-padding-left">
  1365.                                                                                         <label class="control-label" for="services_iva">{% trans %}Iva{% endtrans %}: </label>
  1366.                                                                                         <div class="form-group form-group-material {{ error_iva }}">
  1367.                                                                                             <select id="services_iva_{{ service.id }}"
  1368.                                                                                                     name="services[{{ service.id }}][iva]"
  1369.                                                                                                     class="form-control"
  1370.                                                                                                     style="width: 100%;"
  1371.                                                                                                     required> {# Aquí quitamos el disabled #}
  1372.                                                                                                 <option value="">Selecciona un IVA</option>
  1373.                                                                                                 {% for vat in sageVatRates %}
  1374.                                                                                                     <option value="{{ vat.id }}"
  1375.                                                                                                         {% if service.sageIva is not null and vat.id == service.sageIva.id %}selected{% endif %}>
  1376.                                                                                                         {{ vat.name }} ({{ vat.iva|number_format(2, '.', '') }}%)
  1377.                                                                                                     </option>
  1378.                                                                                                 {% endfor %}
  1379.                                                                                             </select>
  1380.                                                                                         </div>
  1381.                                                                                     </div>
  1382.                                                                                 {% endif %}
  1383.                                                                             {% endautoescape %}
  1384.                                                                         </div>
  1385.                                                                         <div class="col-sm-8 margen-10">
  1386.                                                                             <div class="col-sm-2 no-padding">
  1387.                                                                                 <label class="control-label" for="services_hour"><i class="icon-watch2"></i> {% trans %}Star{% endtrans %}: </label>
  1388.                                                                                 <input type="time" id="services_start_{{ service.id }}" name="services[{{ service.id }}][start]" value="{{ service.dateInAt|date('H:i') }}" class="form-control">
  1389.                                                                             </div>
  1390.                                                                             <div class="col-sm-4">
  1391.                                                                                 <label class="control-label" for="services_dateInAt">{% trans %}Date In{% endtrans %}: </label>
  1392.                                                                                 <input type="date" id="services_dateInAt_{{ service.id }}" name="services[{{ service.id }}][dateInAt]" value="{{ service.dateInAt|date('d-m-Y') }}" class="form-control">
  1393.                                                                             </div>
  1394.                                                                             <div class="col-sm-4">
  1395.                                                                                 <label class="control-label" for="services_dateOutAt">{% trans %}Date Out{% endtrans %}: </label>
  1396.                                                                                 <input type="date" id="services_dateOutAt_{{ service.id }}" name="services[{{ service.id }}][dateOutAt]" value="{{ service.dateOutAt|date('d-m-Y') }}" class="form-control">
  1397.                                                                             </div>
  1398.                                                                             <div class="col-sm-2 no-padding">
  1399.                                                                                 <label class="control-label" for="services_hour"><i class="icon-watch2"></i> {% trans %}End{% endtrans %}: </label>
  1400.                                                                                 <input type="time" id="services_hour_{{ service.id }}" name="services[{{ service.id }}][end]" value="{{ service.dateOutAt|date('H:i') }}" class="form-control">
  1401.                                                                             </div>
  1402.                                                                         </div>
  1403.                                                                         <div class="col-md-4" style="padding-top: 35px;">
  1404.                                                                             <div class="checkbox-switchery text-left switchery-sm">
  1405.                                                                                 <label >
  1406.                                                                                     {% if service.viewInfo is empty %}
  1407.                                                                                         <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="0"/>
  1408.                                                                                     {% else %}
  1409.                                                                                         {% if service.viewInfo %}
  1410.                                                                                             <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="1" checked/>
  1411.                                                                                         {% else %}
  1412.                                                                                             <input type="checkbox" id="service_viewInfo_{{ service.id }}" name="services[{{ service.id }}][viewinfo]" class="switchery-info" value="0"/>
  1413.                                                                                         {% endif %}
  1414.                                                                                     {% endif %}
  1415.                                                                                     {% trans %}View Info{% endtrans %}
  1416.                                                                                 </label>
  1417.                                                                             </div>
  1418.                                                                         </div>
  1419.                                                                     </div>
  1420.                                                                     <div class="col-sm-1 margen-5">
  1421.                                                                         <div class="col-xs-12">
  1422.                                                                         </div>
  1423.                                                                         <div class="col-xs-12" style="padding-top: 15px; padding-left: 0px">
  1424.                                                                             <div class="checkbox checkbox-switchery switchery-lg switchery-double text-center" title="Eliminar este item">
  1425.                                                                                 <a target="_self" class="btn bg-btn-trash  btn-block icon-trash padding-3" 
  1426.                                                                             onclick="return confirm('¿Deseas eliminar este elemento?');"
  1427.                                                                             href="/venues/deleteitemservice/{{ service.id }}/{{ id }}" title="Eliminar este elemento"></a>
  1428.                                                                             </div>
  1429.                                                                         </div>
  1430.                                                                     </div>
  1431.                                                                 </div>
  1432.                                                             </div>
  1433.                                                         {% endif %}
  1434.                                                     </div>
  1435.                                                 {% endfor %}
  1436.                                             </div>
  1437.                                         </div>
  1438.                                         <div class="col-md-4 margen-20" style="padding-top: 5px; padding-left: 15px;padding-right: 15px"></div>
  1439.                                         <div class="col-md-4 margen-20" style="padding-top: 5px; padding-left: 15px;padding-right: 15px">
  1440.                                             <div class="form-group form-group-material">
  1441.                                                 <div class="text-center">
  1442.                                                     <button type="submit" id="mds_venuesbundle_servicegrid_save" name="mds_venuesbundle_servicegrid[save]" class="btn bg-btn-limerick btn-block">Guardar Servicios</button>
  1443.                                                 </div>
  1444.                                             </div>
  1445.                                         </div>
  1446.                                         <div class="col-md-4 margen-20" style="padding-top: 5px; padding-left: 15px;padding-right: 15px"></div>
  1447.                                         <div class="col-md-4 margen-20" style="padding-top: 5px; padding-left: 15px;padding-right: 15px"></div>
  1448.                                     </form>
  1449.                                 {% endif %}
  1450.                             </div>
  1451.                         </div>
  1452.                     </div>
  1453.                     {% if estadoActual in ['Confirmed', 'Invoiced'] %}
  1454.                         <div class="panel bg-rich_black text-mint_cream" style="margin: 0 300px 80px 300px">
  1455.                             <div class="panel-body text-center">
  1456.                                 <div class="col-sm-12 ">
  1457.                                     <div class="col-sm-4">
  1458.                                         <H4>{% trans %}Sale Client Global{% endtrans %}</H4>
  1459.                                         <H3>{{ totales_global_servicios_con_iva|number_format(2, '.', ',') }} €</H3>
  1460.                                     </div>
  1461.                                     <div class="col-sm-4">
  1462.                                         <H4>{% trans %}IVA{% endtrans %}</H4>
  1463.                                         <H3>{{ totales_global_servicios_iva|number_format(2, '.', ',') }} €</H3>
  1464.                                     </div>
  1465.                                     <div class="col-sm-4">
  1466.                                         <H4>{% trans %}Sale No Vat{% endtrans %}</H4>
  1467.                                         <H3>{{ totales_global_servicios_neto|number_format(2, '.', ',') }} €</H3>
  1468.                                     </div>
  1469.                                 </div>
  1470.                             </div>
  1471.                         </div>
  1472.                     {% endif %}
  1473.                         <div class="panel panel-default">
  1474.                             <div class="panel-body text-center">
  1475.                                 <div class="col-sm-12 ">
  1476.                                     <div class="col-sm-6">
  1477.                                         <b class="text-gray-light">{% trans %}Beneficio{% endtrans %}</b>
  1478.                                         <br>
  1479.                                         <b> {{ benefit|number_format(2, '.', ',') }} €</b>
  1480.                                     </div>
  1481.                                     <div class="col-sm-6"><b class="text-gray-light">{% trans %}Beneficio (%){% endtrans %}</b><br><b> {{ percBenefit|number_format(2, '.', ',') }} %</b></div>
  1482.                                     <br><br><br>
  1483.                                     <div class="col-sm-12"><b class="text-gray-light">{% trans %}Resumen de Beneficio{% endtrans %}</b>
  1484.                                         {% for lounge in payedLounges %}
  1485.                                             <br><b>{{ lounge.loungeName }} + {{ lounge.servicePrice|number_format(2, '.', ',') }} €</b>
  1486.                                         {% endfor %}
  1487.                                         {% for service in payedServices %}
  1488.                                             <br><b>{{ service.name }} + {{ (service.price + service.over)|number_format(2, '.', ',') }} €</b>
  1489.                                         {% endfor %}
  1490.                                         {% for service in unPayedServices %}
  1491.                                             {#Se verifica el check de toinvoice por si el servicio se facturara a futuro#}
  1492.                                             {% if service.toinvoice %}
  1493.                                                 <br><b>{{ service.name }} + {{ (service.price + service.over)|number_format(2, '.', ',') }} €</b>
  1494.                                             {% else %}
  1495.                                                 <br><b>{{ service.name }} - {{ (service.price + service.over)|number_format(2, '.', ',') }} €</b>
  1496.                                             {% endif %}
  1497.                                         {% endfor %}
  1498.                                     </div>
  1499.                                 </div>
  1500.                             </div>
  1501.                         </div>
  1502.                 {#--------------------------------------------------------------- AGENDA --------------------------------------------------------------- #}
  1503.                 <div class="panel panel-default">
  1504.                     <div class="panel-body">
  1505.                         <div class="col-sm-12">
  1506.                             <div class="panel">
  1507.                         <div class="panel-body">
  1508.                             <div class="col-md-12 col-xs-12">
  1509.                                 <strong class="text-info">
  1510.                                     <legend class="border-teal-800">{% trans %}AGENDA{% endtrans %}</legend>
  1511.                                 </strong>
  1512.                             </div>
  1513.                             <div class="col-sm-12">
  1514.                                 {# ====================== RENDER DEL ÁRBOL ====================== #}
  1515.                                 <style>
  1516.                                     .agenda-container {
  1517.                                         background-color: #fff;
  1518.                                         border-radius: 4px;
  1519.                                         overflow: hidden;
  1520.                                         border: 1px solid #eee;
  1521.                                     }
  1522.                                     .agenda-row {
  1523.                                         display: flex;
  1524.                                         align-items: flex-start;
  1525.                                         padding: 4px 10px;
  1526.                                         border-bottom: 1px solid #f9f9f9;
  1527.                                         transition: all 0.1s ease;
  1528.                                         min-height: 32px;
  1529.                                     }
  1530.                                     .agenda-row:hover {
  1531.                                         background-color: #f5faff;
  1532.                                     }
  1533.                                     .agenda-row:last-child {
  1534.                                         border-bottom: none;
  1535.                                     }
  1536.                                     .agenda-content {
  1537.                                         flex: 1;
  1538.                                         min-width: 0;
  1539.                                         font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  1540.                                         font-size: 13px;
  1541.                                         color: #444;
  1542.                                         line-height: 1.6;
  1543.                                         white-space: pre-wrap; 
  1544.                                         word-wrap: break-word;
  1545.                                     }
  1546.                                     /* Estilos por tipo de línea */
  1547.                                     .agenda-row.header .agenda-content {
  1548.                                         font-weight: 700;
  1549.                                         color: #000;
  1550.                                         text-transform: uppercase;
  1551.                                         font-size: 12px;
  1552.                                         letter-spacing: 0.5px;
  1553.                                         padding-top: 5px;
  1554.                                     }
  1555.                                     .agenda-row.header-2 .agenda-content { font-weight: 600; color: #333; padding-left: 20px; }
  1556.                                     .agenda-row.header-3 .agenda-content { font-style: italic; color: #666; padding-left: 30px; }
  1557.                                     .agenda-row.day .agenda-content { font-weight: bold; color: #d9534f; padding-left: 30px; }
  1558.                                     .agenda-row.item .agenda-content { padding-left: 50px; }
  1559.                                     
  1560.                                     .agenda-actions {
  1561.                                         flex-shrink: 0;
  1562.                                         min-width: 140px;
  1563.                                         text-align: right;
  1564.                                         padding-left: 10px;
  1565.                                     }
  1566.                                 </style>
  1567.                                 <div class="agenda-container">
  1568.                                 {% for linea in arregloLineasAgenda %}
  1569.                                     <div class="agenda-row {{ linea.type }}">
  1570.                                         <div class="agenda-content">
  1571.                                             {{- linea.text -}}
  1572.                                         </div>
  1573.                                         <div class="agenda-actions">
  1574.                                             {% if linea.id %}
  1575.                                                 <div class="btn-group">
  1576.                                                     <button
  1577.                                                             class="btn bg-btn-limerick btn-xs"
  1578.                                                             data-toggle="modal"
  1579.                                                             data-target="#modalEditar"
  1580.                                                             title="Editar (Ref. {{ linea.numberLine }})"
  1581.                                                             data-url="{{ path('reservation_agenda_item_edit', { id: linea.id }) }}">
  1582.                                                         <i class="fa fa-edit"></i> (Ref. {{ linea.numberLine }})
  1583.                                                     </button>
  1584.                                                     <button
  1585.                                                             class="btn bg-btn-vivid_sky_blue btn-xs"
  1586.                                                             data-toggle="modal"
  1587.                                                             data-target="#modalAgregarLinea"
  1588.                                                             data-url="{{ path('reservation_agenda_item_duplicate', { id: linea.id }) }}"
  1589.                                                             aria-label="Duplicar línea"
  1590.                                                             title="Duplicar línea">
  1591.                                                         <i class="fa fa-copy"></i>
  1592.                                                     </button>
  1593.                                                     <a href="{{ path('reservation_agenda_item_delete', { id: linea.id }) }}"
  1594.                                                        onclick="return confirm('¿Deseas eliminar la línea?');"
  1595.                                                        class="btn bg-btn-trash btn-xs"
  1596.                                                        title="Borrar">
  1597.                                                         <i class="fa fa-trash"></i>
  1598.                                                     </a>
  1599.                                                 </div>
  1600.                                             {% endif %}
  1601.                                         </div>
  1602.                                     </div>
  1603.                                 {% endfor %}
  1604.                                 </div>
  1605.                                 <div class="col-sm-12"><hr></div>
  1606.                                 {# ====================== FORMULARIO PARA AGREGAR ITEM ====================== #}
  1607.                                 <div class="col-sm-12 text-right margen-10">
  1608.                                     <div class="btn-group">
  1609.                                         <button
  1610.                                                 class="btn bg-btn-limerick btn-sm"
  1611.                                                 data-toggle="modal"
  1612.                                                 data-target="#modalAgregarLinea"
  1613.                                                 data-url="{{ path('reservation_agenda_item_add', { reservationId: id }) }}"
  1614.                                         >
  1615.                                             <i class="fa fa-plus"></i> Añadir línea
  1616.                                         </button>
  1617.                                         <a href="{{ path('reservation_agenda_print', { reservationId: id }) }}"
  1618.                                            target="_blank"
  1619.                                            class="btn bg-btn-vivid_sky_blue btn-sm">
  1620.                                             <i class="fa fa-eye"></i> Ver Agenda
  1621.                                         </a>
  1622.                                         <a href="{{ path('reservations_agenda_pdf', { reservationId: id }) }}"
  1623.                                            target="_blank"
  1624.                                            class="btn bg-btn-limerick btn-sm">
  1625.                                             <i class="fa fa-file-pdf-o"></i> Pdf Agenda
  1626.                                         </a>
  1627.                                     </div>
  1628.                                 </div>
  1629.                             </div>
  1630.                         </div>
  1631.                     </div>
  1632.                         </div>
  1633.                     </div>
  1634.                 </div>
  1635.                 {#--------------------------------------------------------------- AGENDA --------------------------------------------------------------- #}
  1636.                         <div class="panel panel-default">
  1637.                             <div class="panel-body">
  1638.                                 <div class="col-xs-12" ><strong class="text-vivid_sky_blue">
  1639.                                     <legend class="border-teal-800">{% trans %}FACTURACION{% endtrans %}</legend></strong>
  1640.                                 </div>
  1641.                                 <div class="col-sm-12 text-center">
  1642.                                     <div class="col-sm-12">
  1643.                                         <div class="col-sm-1"><b>No.</b></div>
  1644.                                         <div class="col-sm-2"><b>Fecha de Facturación</b></div>
  1645.                                         <div class="col-sm-3"><b>Cliente</b></div>
  1646.                                         <div class="col-sm-1"><b>Neto</b></div>
  1647.                                         <div class="col-sm-1"><b>Iva</b></div>
  1648.                                         <div class="col-sm-1"><b>Total</b></div>
  1649.                                         <div class="col-sm-2"><b>Balance Restante</b></div>
  1650.                                         <div class="col-sm-1"><b>Acciones</b></div>
  1651.                                     </div>
  1652.                                     <div class="col-sm-12">
  1653.                                         <hr>
  1654.                                     </div>
  1655.                                     {% set totalBalance = 0 %}
  1656.                                     {% for factura in facturas %}
  1657.                                         {% set totalBalance = totalBalance + factura.balance %}
  1658.                                         <div class="col-sm-12 margen-10">
  1659.                                             <div class="col-sm-1">
  1660.                                                 {% if factura.type == 'Invoice' %}
  1661.                                                     {% if factura.clientType == 'Supplier' %}
  1662.                                                         <p style="color:orange">{{ factura.number }}</p>
  1663.                                                     {% else %}
  1664.                                                         {{ factura.number }}
  1665.                                                     {% endif %}
  1666.                                                 {% else %}
  1667.                                                     {% if factura.type == 'Invoice Deposit' %}
  1668.                                                         {#Factura de depósito#}
  1669.                                                         <p style="color:green">{{ factura.number }}</p>
  1670.                                                     {% else %}
  1671.                                                         {#Factura rectificativa#}
  1672.                                                         <p style="color:red"> {{ factura.number }} ({{ factura.invoiceToRec.number }})</p>
  1673.                                                     {% endif %}
  1674.                                                 {% endif %}
  1675.                                             </div>
  1676.                                             <div class="col-sm-2">
  1677.                                                 {% if factura.type == 'Invoice' %}
  1678.                                                     {% if factura.clientType == 'Supplier' %}
  1679.                                                         <p style="color:orange">{{ factura.dateAt|date("d/m/Y") }}</p>
  1680.                                                     {% else %}
  1681.                                                         {{ factura.dateAt|date("d/m/Y") }}
  1682.                                                     {% endif %}
  1683.                                                 {% else %}
  1684.                                                     {% if factura.type == 'Invoice Deposit' %}
  1685.                                                         {#Factura de depósito#}
  1686.                                                         <p style="color:green">{{ factura.dateAt|date("d/m/Y") }}</p>
  1687.                                                     {% else %}
  1688.                                                         {#Factura rectificativa#}
  1689.                                                         <p style="color:red">{{ factura.dateAt|date("d/m/Y") }}</p>
  1690.                                                     {% endif %}
  1691.                                                 {% endif %}
  1692.                                             </div>
  1693.                                             <div class="col-sm-3">
  1694.                                                 {% if factura.type == 'Invoice' %}
  1695.                                                     {% if factura.clientType == 'Supplier' %}
  1696.                                                         <p style="color:orange">{{ factura.client.name }}</p>
  1697.                                                     {% else %}
  1698.                                                         {{ factura.client.name|default('') }}
  1699.                                                     {% endif %}
  1700.                                                 {% else %}
  1701.                                                     {% if factura.type == 'Invoice Deposit' %}
  1702.                                                         {#Factura de depósito#}
  1703.                                                         <p style="color:green">{{ factura.client.name|default('') }}</p>
  1704.                                                     {% else %}
  1705.                                                         {#Factura rectificativa#}
  1706.                                                         <p style="color:red"> {{ factura.client.name|default('') }}</p>
  1707.                                                     {% endif %}
  1708.                                                 {% endif %}
  1709.                                             </div>
  1710.                                             <div class="col-sm-1">
  1711.                                                 {% if factura.type == 'Invoice' %}
  1712.                                                     {% if factura.clientType == 'Supplier' %}
  1713.                                                         <p style="color:orange">{{ factura.totalNet|number_format(2, '.', ',') }}</p>
  1714.                                                     {% else %}
  1715.                                                         {{ factura.totalNet|number_format(2, '.', ',') }}
  1716.                                                     {% endif %}
  1717.                                                 {% else %}
  1718.                                                     {% if factura.type == 'Invoice Deposit' %}
  1719.                                                         {#Factura de depósito#}
  1720.                                                         <p style="color:green">{{ factura.totalNet|number_format(2, '.', ',') }}</p>
  1721.                                                     {% else %}
  1722.                                                         {% if factura.type == 'Invoice Deposit Rec' %}
  1723.                                                             {#Factura rectificativa de depósito#}
  1724.                                                             <p style="color:red">{{ factura.totalNet|number_format(2, '.', ',') }}</p>
  1725.                                                         {% else %}
  1726.                                                             {#Factura rectificativa#}
  1727.                                                             <p style="color:red">{{ factura.totalNet|number_format(2, '.', ',') }}</p>
  1728.                                                         {% endif %}
  1729.                                                     {% endif %}
  1730.                                                 {% endif %}
  1731.                                             </div>
  1732.                                             <div class="col-sm-1">
  1733.                                                 {% if factura.type == 'Invoice' %}
  1734.                                                     {% if factura.clientType == 'Supplier' %}
  1735.                                                         <p style="color:orange">{{ factura.vat|number_format(2, '.', ',') }}</p>
  1736.                                                     {% else %}
  1737.                                                         {{ factura.vat|number_format(2, '.', ',') }}
  1738.                                                     {% endif %}
  1739.                                                 {% else %}
  1740.                                                     {% if factura.type == 'Invoice Deposit' %}
  1741.                                                         {#Factura de depósito#}
  1742.                                                         <p style="color:green">{{ factura.vat|number_format(2, '.', ',') }}</p>
  1743.                                                     {% else %}
  1744.                                                         {% if factura.type == 'Invoice Deposit Rec' %}
  1745.                                                             {#Factura rectificativa de depósito#}
  1746.                                                             <p style="color:red">{{ factura.vat|number_format(2, '.', ',') }}</p>
  1747.                                                         {% else %}
  1748.                                                             {#Factura rectificativa#}
  1749.                                                             <p style="color:red">{{ factura.vat|number_format(2, '.', ',') }}</p>
  1750.                                                         {% endif %}
  1751.                                                     {% endif %}
  1752.                                                 {% endif %}
  1753.                                             </div>
  1754.                                             <div class="col-sm-1">
  1755.                                                 {% if factura.type == 'Invoice' %}
  1756.                                                     {% if factura.clientType == 'Supplier' %}
  1757.                                                         <p style="color:orange">{{ factura.total|number_format(2, '.', ',') }}</p>
  1758.                                                     {% else %}
  1759.                                                         {{ factura.total|number_format(2, '.', ',') }}
  1760.                                                     {% endif %}
  1761.                                                 {% else %}
  1762.                                                     {% if factura.type == 'Invoice Deposit' %}
  1763.                                                         {#Factura de depósito#}
  1764.                                                         <p style="color:green">{{ factura.total|number_format(2, '.', ',') }}</p>
  1765.                                                     {% else %}
  1766.                                                         {% if factura.type == 'Invoice Deposit Rec' %}
  1767.                                                             {#Factura rectificativa de depósito#}
  1768.                                                             <p style="color:red">{{ factura.total|number_format(2, '.', ',') }}</p>
  1769.                                                         {% else %}
  1770.                                                             {#Factura rectificativa#}
  1771.                                                             <p style="color:red">{{ factura.total|number_format(2, '.', ',') }}</p>
  1772.                                                         {% endif %}
  1773.                                                     {% endif %}
  1774.                                                 {% endif %}
  1775.                                             </div>
  1776.                                             <div class="col-sm-2">
  1777.                                                 {% if factura.type == 'Invoice' %}
  1778.                                                     {% if factura.clientType == 'Supplier' %}
  1779.                                                         <p style="color:orange">{{ factura.balance|number_format(2, '.', ',') }}</p>
  1780.                                                     {% else %}
  1781.                                                         {{ factura.balance|number_format(2, '.', ',') }}
  1782.                                                     {% endif %}
  1783.                                                 {% else %}
  1784.                                                     {% if factura.type == 'Invoice Deposit' %}
  1785.                                                         {#Factura de depósito#}
  1786.                                                         <p style="color:green">{{ factura.balance|number_format(2, '.', ',') }}</p>
  1787.                                                     {% else %}
  1788.                                                         {#Factura rectificativa#}
  1789.                                                         <p style="color:red">{{ factura.balance|number_format(2, '.', ',') }}</p>
  1790.                                                     {% endif %}
  1791.                                                 {% endif %}
  1792.                                             </div>
  1793.                                             <div class="col-sm-1">
  1794.                                                 {% if factura.type == 'Invoice' %}
  1795.                                                     <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/invoice/viewnew/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  1796.                                                 {% else %}
  1797.                                                     {% if factura.type == 'Invoice Deposit' %}
  1798.                                                         {#Factura de depósito#}
  1799.                                                         <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/newinvoicedeposit/viewinvoicedeposit/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  1800.                                                     {% else %}
  1801.                                                         {% if factura.type == 'Invoice Rec' %}
  1802.                                                             {#Factura rectificativa#}
  1803.                                                             <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/invoice/viewrec/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  1804.                                                         {% else %}
  1805.                                                             {% if factura.type == 'Invoice Deposit Rec' %}
  1806.                                                                 {#Factura de depósito rectificativa#}
  1807.                                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="/venues/reservations/newinvoicedeposit/viewinvoicedepositrec/{{ factura.id }}">{% trans %}Go{% endtrans %}</a>
  1808.                                                             {% endif %}
  1809.                                                         {% endif %}
  1810.                                                     {% endif %}
  1811.                                                 {% endif %}
  1812.                                             </div>
  1813.                                         </div>
  1814.                                     {% endfor %}
  1815.                                     {% for item in paymentNotIvoiced %}
  1816.                                         {% if item.invoiceId is empty %}
  1817.                                             {% set totalBalance = totalBalance - item.Amount %}
  1818.                                         {% else %}
  1819.                                             {% set totalBalance = totalBalance - 0 %}
  1820.                                         {% endif %}
  1821.                                         <div class="col-sm-12 margen-10">
  1822.                                             <div class="col-sm-1"></div>
  1823.                                             <div class="col-sm-2">
  1824.                                                 <p style="color:blue">{{ item.DatePayAt|date("d/m/Y") }}</p>
  1825.                                             </div>
  1826.                                             <div class="col-sm-3">
  1827.                                                 <p style="color:blue">{{ item.WayToPay }}</p>
  1828.                                             </div>
  1829.                                             <div class="col-sm-1"></div>
  1830.                                             <div class="col-sm-1"></div>
  1831.                                             <div class="col-sm-1"></div>
  1832.                                             <div class="col-sm-2">
  1833.                                                 {% if item.invoiceId is empty %}
  1834.                                                   <p style="color:blue">-{{ (item.Amount)|number_format(2, '.', ',') }}</p>
  1835.                                                 {% else %}
  1836.                                                   <p style="color:blue">-{{ (item.AmountTotal)|number_format(2, '.', ',') }}</p>
  1837.                                                 {% endif %}
  1838.                                             </div>
  1839.                                             <div class="col-sm-1"></div>
  1840.                                         </div>
  1841.                                     {% endfor %}
  1842.                                     <div class="col-sm-12">
  1843.                                         <hr>
  1844.                                     </div>
  1845.                                     <div class="col-sm-12">
  1846.                                         <div class="col-sm-offset-6 col-sm-1"><b>Neto</b><br>{{ resultados.totalNeto|number_format(2, '.', ',') }}</div>
  1847.                                         <div class="col-sm-1"><b>Iva</b><br>{{ resultados.vat|number_format(2, '.', ',') }}</div>
  1848.                                         <div class="col-sm-1"><b>Total</b><br>{{ resultados.total|number_format(2, '.', ',') }}</div>
  1849.                                         <div class="col-sm-2"><b>Balance Restante</b><br>{{ totalBalance|number_format(2, '.', ',') }}</div>
  1850.                                     </div>
  1851.                                 </div>
  1852.                             </div>
  1853.                         </div>
  1854.                     {# -------------------------- Proformas de Reserva -------------------------- #}
  1855.                         <div class="panel panel-default">
  1856.                             <div class="panel-body">
  1857.                                 <div class="col-xs-12" ><strong class="text-vivid_sky_blue">
  1858.                                         <legend class="border-teal-800">{% trans %}PROFORMAS DE RESERVA{% endtrans %}</legend></strong>
  1859.                                 </div>
  1860.                                 <div class="col-sm-12 text-center">
  1861.                                     <div class="col-sm-12">
  1862.                                         <div class="col-sm-4"><b>{% trans %}Numero de Proforma{% endtrans %}</b></div>
  1863.                                         <div class="col-sm-4"><b>{% trans %}Fecha de Creación{% endtrans %}</b></div>
  1864.                                         <div class="col-sm-4"><b>{% trans %}Acciones{% endtrans %}</b></div>
  1865.                                     </div>
  1866.                                     <div class="col-sm-12">
  1867.                                         <hr>
  1868.                                     </div>
  1869.                                     {% for proforma in allReservationProformas %}
  1870.                                         <div class="col-sm-12 margen-10">
  1871.                                             <div class="col-sm-4">
  1872.                                                 <p style="color:blue">{{ proforma.prefix }}</p>
  1873.                                             </div>
  1874.                                             <div class="col-sm-4">
  1875.                                                 {{ proforma.createdAt|date("d/m/Y") }}
  1876.                                             </div>
  1877.                                             <div class="col-sm-4">
  1878.                                                 <a class="btn bg-btn-vivid_sky_blue btn-xs" href="{{ path('reservations_viewnew_proforma', {'id': proforma.id}) }}">{% trans %}Go{% endtrans %}</a>
  1879.                                             </div>
  1880.                                         </div>
  1881.                                     {% else %}
  1882.                                         <div class="col-sm-12 margen-10 text-muted">
  1883.                                             {% trans %}Sin proformas asociadas a esta reserva.{% endtrans %}
  1884.                                         </div>
  1885.                                     {% endfor %}
  1886.                                 </div>
  1887.                             </div>
  1888.                         </div>
  1889.                     {# -------------------------- Depósitos -------------------------- #}
  1890.                         <div class="panel panel-default">
  1891.                             <div class="panel-body">
  1892.                                 <div class="col-xs-12" ><strong class="text-vivid_sky_blue">
  1893.                                         <legend class="border-teal-800">{% trans %}DEPÓSITOS PROFORMA{% endtrans %}</legend></strong>
  1894.                                 </div>
  1895.                                 <div class="col-sm-12 text-center"><br><br><br></div>
  1896.                                 <div class="col-sm-12 text-center">
  1897.                                     <div class="col-sm-12">
  1898.                                         <div class="col-sm-2"><b>Numero de Proforma</b></div>
  1899.                                         <div class="col-sm-2"><b>Fecha del Depósito</b></div>
  1900.                                         <div class="col-sm-3"><b>Monto</b></div>
  1901.                                         <div class="col-sm-3"><b>Pendiente</b></div>
  1902.                                         <div class="col-sm-2"><b>Acciones</b></div>
  1903.                                     </div>
  1904.                                     <div class="col-sm-12">
  1905.                                         <hr>
  1906.                                     </div>
  1907.                                     {% for proforma in proformas %}
  1908.                                         {% set total = proforma.total|default(0) %}
  1909.                                         {% set paid  = (sumsByProforma[proforma.id].paid|default(0)) %}
  1910.                                         {% set remaining = (total - paid) %}
  1911.                                         {% set number = proforma.number %}
  1912.                                         <div class="col-sm-12 margen-10">
  1913.                                             <div class="col-sm-2">
  1914.                                                 {{ number }}
  1915.                                             </div>
  1916.                                             <div class="col-sm-2">
  1917.                                                 {{ proforma.dateAt|date('d/m/Y') }}
  1918.                                             </div>
  1919.                                             <div class="col-sm-3">
  1920.                                                 {{ total }}
  1921.                                             </div>
  1922.                                             <div class="col-sm-3">
  1923.                                                 {{ remaining }}
  1924.                                             </div>
  1925.                                             <div class="col-sm-2">
  1926.                                                 {% set anyDeposit = proforma.deposits|first %}
  1927.                                                 <button class="btn bg-btn-vivid_sky_blue js-show-payments"
  1928.                                                         data-deposit-id="{{ anyDeposit.id }}"
  1929.                                                         data-url="{{ path('deposit_payments_modal', { id: anyDeposit.id }) }}"
  1930.                                                         data-toggle="modal"
  1931.                                                         data-target="#paymentsModal">
  1932.                                                     Pagos
  1933.                                                 </button>
  1934.                                             </div>
  1935.                                         </div>
  1936.                                     {% endfor %}
  1937.                                     {% for depósito in depositsAll %}
  1938.                                         {% if depósito.proformaDeposit is null %}
  1939.                                             <div class="col-sm-12 margen-10">
  1940.                                                 <div class="col-sm-2">N/A</div>
  1941.                                                 <div class="col-sm-2">{{ depósito.date|date('d/m/Y') }}</div>
  1942.                                                 <div class="col-sm-3">{{ depósito.amount }}</div>
  1943.                                                 <div class="col-sm-3">0</div>
  1944.                                                 <div class="col-sm-2">
  1945.                                                     <button class="btn bg-btn-vivid_sky_blue js-show-payments"
  1946.                                                             data-deposit-id="{{ depósito.id }}"
  1947.                                                             data-url="{{ path('deposit_payments_modal', { id: depósito.id }) }}"
  1948.                                                             data-toggle="modal"
  1949.                                                             data-target="#paymentsModal">
  1950.                                                         Pagos
  1951.                                                     </button>
  1952.                                                 </div>
  1953.                                             </div>
  1954.                                         {% endif %}
  1955.                                     {% endfor %}
  1956.                                     <div class="col-sm-12">
  1957.                                         <hr>
  1958.                                     </div>
  1959.                                 </div>
  1960.                             </div>
  1961.                         </div>
  1962.                     {# -------------------------- Facturas de Depósitos -------------------------- #}
  1963.                         <div class="panel panel-default">
  1964.                             <div class="panel-body">
  1965.                                 <div class="col-xs-12" ><strong class="text-vivid_sky_blue">
  1966.                                     <legend class="border-teal-800">{% trans %}Payments{% endtrans %}</legend></strong>
  1967.                                 </div>
  1968.                                 <div class="col-sm-12 text-center">
  1969.                                     <div class="col-sm-12">
  1970.                                         {#<div class="col-sm-1"><b>No.</b></div>#}
  1971.                                         <div class="col-sm-3"><b>Expediente</b></div>
  1972.                                         <div class="col-sm-3"><b>Fecha de Pago</b></div>
  1973.                                         <div class="col-sm-3"><b>Forma de Pago</b></div>
  1974.                                         <div class="col-sm-3"><b>Monto</b></div>
  1975.                                     </div>
  1976.                                     <div class="col-sm-12">
  1977.                                         <hr>
  1978.                                     </div>
  1979.                                     <div class="row">
  1980.                                         {% for payment in paymentsAll %}
  1981.                                             <div class="col-sm-12 margen-10">
  1982.                                                 <div class="row"> {# Añadimos un row interno para las sub-columnas #}
  1983.                                                     <div class="col-sm-3">{{ payment.reservationId }}</div>
  1984.                                                     <div class="col-sm-3">{{ payment.datePayAt|date('d/m/Y') }}</div>
  1985.                                                     <div class="col-sm-3">{{ payment.wayToPay }}</div>
  1986.                                                     <div class="col-sm-3">{{ payment.amount|number_format(2, '.', ',') }}</div>
  1987.                                                 </div>
  1988.                                             </div>
  1989.                                         {% endfor %}
  1990.                                     </div>
  1991.                                 </div>
  1992.                             </div>
  1993.                         </div>
  1994.                 </div>
  1995.             </div>
  1996.         </div>
  1997.        {# Panel flotante de totales #}
  1998.        {% if estadoActual in ['Confirmed', 'Invoiced'] %}
  1999.             <div class="navbar-fixed-bottom bg-vivid_sky_blue text-mint_cream" style="left: 300px; right: 20px; padding: 15px; border-top: 2px solid #fff; z-index: 9999;">
  2000.                 <div class="container-fluid">
  2001.                     <div class="row text-center p-10">
  2002.                         <div class="col-xs-4 border-right border-mint_cream">
  2003.                             <span class="text-size-small text-uppercase">{% trans %}Sale Client Global{% endtrans %}</span><br>
  2004.                             <span class="text-bold text-size-large">{{ sumatoria_totales_global_con_iva|number_format(2, '.', ',') }} €</span>
  2005.                         </div>
  2006.                         <div class="col-xs-4 border-right border-mint_cream">
  2007.                             <span class="text-size-small text-uppercase">{% trans %}IVA{% endtrans %}</span><br>
  2008.                             <span class="text-bold text-size-large">{{ sumatoria_totales_global_iva|number_format(2, '.', ',') }} €</span>
  2009.                         </div>
  2010.                         <div class="col-xs-4">
  2011.                             <span class="text-size-small text-uppercase">{% trans %}Sale No Vat{% endtrans %}</span><br>
  2012.                             <span class="text-bold text-size-large">{{ sumatoria_totales_global_neto|number_format(2, '.', ',') }} €</span>
  2013.                         </div>
  2014.                     </div>
  2015.                 </div>
  2016.             </div>
  2017.         {% endif %}
  2018.         <div class="modal fade" id="paymentsModal" tabindex="-1" role="dialog" aria-labelledby="paymentsModalLabel">
  2019.             <div class="modal-dialog modal-lg" role="document">
  2020.                 <div class="modal-content">
  2021.                     <div class="modal-header">
  2022.                         <button type="button" class="close" data-dismiss="modal" aria-label="Cerrar">
  2023.                             <span aria-hidden="true">&times;</span>
  2024.                         </button>
  2025.                         <h4 class="modal-title" id="paymentsModalLabel">Pagos</h4>
  2026.                     </div>
  2027.                     <div class="modal-body">
  2028.                         <p class="text-muted" id="paymentsModalLoading">
  2029.                             Cargando…
  2030.                         </p>
  2031.                     </div>
  2032.                     <div class="modal-footer">
  2033.                         <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
  2034.                     </div>
  2035.                 </div>
  2036.             </div>
  2037.         </div>
  2038.         <div class="modal fade" id="modalEditar" tabindex="-1" role="dialog">
  2039.             <div class="modal-dialog modal-lg" role="document">
  2040.                 <div class="modal-content">
  2041.                     <div class="modal-header">
  2042.                         <h5 class="modal-title">Editar línea de la agenda</h5>
  2043.                         <button type="button" class="close" data-dismiss="modal">
  2044.                             <span>&times;</span>
  2045.                         </button>
  2046.                     </div>
  2047.                     <div class="modal-body">
  2048.                         <div id="modalEditarContenido">
  2049.                             Cargando...
  2050.                         </div>
  2051.                     </div>
  2052.                 </div>
  2053.             </div>
  2054.         </div>
  2055.         <div class="modal fade" id="modalAgregarLinea" tabindex="-1" role="dialog">
  2056.             <div class="modal-dialog modal-lg" role="document">
  2057.                 <div class="modal-content">
  2058.                     <div class="modal-header">
  2059.                         <h5 class="modal-title">Añadir línea a la agenda</h5>
  2060.                         <button type="button" class="close" data-dismiss="modal">
  2061.                             <span>&times;</span>
  2062.                         </button>
  2063.                     </div>
  2064.                     <div class="modal-body">
  2065.                         <div id="modalAgregarContenido">
  2066.                             Cargando formulario ...
  2067.                         </div>
  2068.                     </div>
  2069.                 </div>
  2070.             </div>
  2071.         </div>
  2072.     <!-- Modal Seguimientos -->
  2073.     <div id="tracingsModal" class="modal fade" role="dialog">
  2074.         <div class="modal-dialog modal-lg">
  2075.             <div class="modal-content">
  2076.                 <div class="modal-header bg-btn-limerick">
  2077.                     <button type="button" class="close" data-dismiss="modal">&times;</button>
  2078.                     <h5 class="modal-title"><i class="icon-history position-left"></i> Gestión de Seguimientos</h5>
  2079.                 </div>
  2080.                 <div class="modal-body">
  2081.                     
  2082.                     {# Formulario AJAX Nuevo Seguimiento #}
  2083.                     <div class="panel panel-body">
  2084.                         <h6 class="text-semibold" style="margin-top:0;">Añadir nuevo seguimiento</h6>
  2085.                         <form id="ajax-tracing-form" onsubmit="submitTracingAjax(event)">
  2086.                             <div class="row">
  2087.                                 <div class="col-sm-4">
  2088.                                     <div class="form-group">
  2089.                                         <label>Fecha de aviso a futuro</label>
  2090.                                         <div class="input-group">
  2091.                                             <span class="input-group-addon"><i class="icon-calendar22"></i></span>
  2092.                                             <input type="date" id="tracingDateAjax" class="form-control" required />
  2093.                                         </div>
  2094.                                     </div>
  2095.                                 </div>
  2096.                                 <div class="col-sm-6">
  2097.                                     <div class="form-group">
  2098.                                         <label>Texto recordatorio</label>
  2099.                                         <input type="text" id="tracingTextAjax" class="form-control" placeholder="Escribe tu recordatorio..." required />
  2100.                                     </div>
  2101.                                 </div>
  2102.                                 <div class="col-sm-2">
  2103.                                     <div class="form-group">
  2104.                                         <label>&nbsp;</label>
  2105.                                         <button type="submit" class="btn bg-btn-limerick btn-block" id="btn-save-tracing" data-loading-text="<i class='icon-spinner4 spinner'></i>">
  2106.                                             Guardar
  2107.                                         </button>
  2108.                                     </div>
  2109.                                 </div>
  2110.                             </div>
  2111.                         </form>
  2112.                     </div>
  2113.                     <h6 class="text-semibold"><i class="icon-list3 position-left"></i> Historial de Seguimientos Planificados</h6>
  2114.                     <div id="tracing-history-container">
  2115.                         {% if tracings|length > 0 %}
  2116.                             <div class="table-responsive">
  2117.                                 <table class="table table-bordered table-striped text-size-small">
  2118.                                     <thead>
  2119.                                         <tr class="bg-light">
  2120.                                             <th style="width: 15%">Fecha Aviso</th>
  2121.                                             <th style="width: 65%">Mensaje</th>
  2122.                                             <th style="width: 20%">Registro</th>
  2123.                                         </tr>
  2124.                                     </thead>
  2125.                                     <tbody>
  2126.                                         {% for tracing in tracings %}
  2127.                                             {% set todayStr = 'now'|date('Y-m-d') %}
  2128.                                             {% set tracingDateStr = tracing.dateAt|date('Y-m-d') %}
  2129.                                             
  2130.                                             {% if tracingDateStr < todayStr %}
  2131.                                                 {% set labelClass = 'label-default' %}
  2132.                                             {% elseif tracingDateStr == todayStr %}
  2133.                                                 {% set labelClass = 'label-warning bg-orange' %}
  2134.                                             {% else %}
  2135.                                                 {% set labelClass = 'bg-vivid_sky_blue' %}
  2136.                                             {% endif %}
  2137.                                             <tr>
  2138.                                                 <td>
  2139.                                                     <span class="label text-vivid_sky_blue label-block">
  2140.                                                         <i class="icon-calendar3 position-left" style="font-size:10px;"></i> {{ tracing.dateAt|date('d-m-Y') }}
  2141.                                                     </span>
  2142.                                                 </td>
  2143.                                                 <td>{{ tracing.text }}</td>
  2144.                                                 <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>
  2145.                                             </tr>
  2146.                                         {% endfor %}
  2147.                                     </tbody>
  2148.                                 </table>
  2149.                             </div>
  2150.                         {% else %}
  2151.                             <div class="alert alert-info" style="margin-bottom:0;">
  2152.                                 No hay seguimientos registrados para esta reserva.
  2153.                             </div>
  2154.                         {% endif %}
  2155.                     </div>
  2156.                 </div>
  2157.                 <div class="modal-footer">
  2158.                     <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar ventana</button>
  2159.                 </div>
  2160.             </div>
  2161.         </div>
  2162.     </div>
  2163. {% endblock %}
  2164. {% block javascripts %}
  2165.     {{ parent() }}
  2166.     {# Carga de librerías externas #}
  2167.     <script type="text/javascript" src="{{ asset('assets/js/plugins/editors/summernote/summernote.min.js') }}"></script>
  2168.     <script type="text/javascript" src="{{ asset('assets/js/plugins/croppie/croppie.js') }}"></script>
  2169.     <script type="text/javascript" src="{{ asset('assets/js/plugins/forms/styling/switchery.min.js') }}"></script>
  2170.     <script type="text/javascript" src="{{ asset('assets/js/plugins/loaders/blockui.min.js') }}"></script>
  2171.     <script type="text/javascript" src="{{ asset('assets/js/plugins/forms/selects/select2.min.js') }}"></script>
  2172.     {# Scripts de página - Asegúrate de que existan en estas rutas #}
  2173.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/add-simple-reservation.js') }}"></script>
  2174.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/services-invoice-select-items.js') }}"></script>
  2175.     {# <script type="text/javascript" src="{{ asset('assets/js/pages/datetime.js') }}"></script> #}
  2176.     <script type="text/javascript" src="{{ asset('assets/js/pages/venues/switchery-services.js') }}"></script>
  2177.     <script>
  2178.         $(document).ready(function() {
  2179.             // 0. Inicialización de Select2
  2180.             $('.select2').select2({
  2181.                 width: '100%'
  2182.             });
  2183.             // 1. Configuración de Summernote
  2184.             $('.summernote-small').summernote({
  2185.                 height: 150,
  2186.                 minHeight: 150,
  2187.                 maxHeight: 150,
  2188.                 disableResizeEditor: true,
  2189.             });
  2190.             // 2. Selectores de Fechas y Días
  2191.             const $inputDias = $('#reservation_daysBlock');
  2192.             const $inputFecha = $('#days'); // Tu campo de fecha en el HTML tiene id="days"
  2193.             const $selectStatus = $('#mds_venuesbundle_reservation_status');
  2194.             // 3. Función de sincronización: Días -> Fecha (Hoy + N días)
  2195.             function updateFechaDesdeDias() {
  2196.                 let n = parseInt($inputDias.val(), 10);
  2197.                 if (isNaN(n)) return;
  2198.                 let d = new Date();
  2199.                 d.setHours(0,0,0,0);
  2200.                 d.setDate(d.getDate() + n);
  2201.                 // Formato YYYY-MM-DD para el input de tipo date
  2202.                 let iso = d.getFullYear() + '-' +
  2203.                           String(d.getMonth() + 1).padStart(2, '0') + '-' +
  2204.                           String(d.getDate()).padStart(2, '0');
  2205.                 $inputFecha.val(iso);
  2206.             }
  2207.             // 4. Función de sincronización: Fecha -> Días
  2208.             function updateDiasDesdeFecha() {
  2209.                 let str = $inputFecha.val();
  2210.                 if (!str) return;
  2211.                 let seleccionada = new Date(str);
  2212.                 let hoy = new Date();
  2213.                 hoy.setHours(0,0,0,0);
  2214.                 let diffTime = seleccionada - hoy;
  2215.                 let diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
  2216.                 $inputDias.val(diffDays >= 0 ? diffDays : 0);
  2217.             }
  2218.             // EXPOSICIÓN GLOBAL: Evita el error "recalculateDeadline is not defined" en consola
  2219.             window.recalculateDeadline = updateFechaDesdeDias;
  2220.             // 5. Asignación de Eventos
  2221.             $inputDias.on('input change', updateFechaDesdeDias);
  2222.             $inputFecha.on('change', updateDiasDesdeFecha);
  2223.             // Ejecución inicial si el estado permite edición
  2224.             if($selectStatus.val() !== 'BLOQUEO') {
  2225.                 updateFechaDesdeDias();
  2226.             }
  2227.             // 6. Lógica del Stepper de Estado (Iniciado, Bloqueo, etc.)
  2228.             const steps = document.querySelectorAll('#estado-stepper .step');
  2229.             const stepperContainer = document.querySelector('#estado-stepper');
  2230.             if (stepperContainer && $selectStatus.length > 0) {
  2231.                 const estadoIndex = parseInt(stepperContainer.dataset.estadoIndex);
  2232.                 steps.forEach((step, index) => {
  2233.                     // Animación progresiva de carga
  2234.                     if (index <= estadoIndex) {
  2235.                         setTimeout(() => {
  2236.                             if (index < estadoIndex) {
  2237.                                 step.classList.add('completed');
  2238.                             } else if (index === estadoIndex) {
  2239.                                 step.classList.add('active');
  2240.                             }
  2241.                         }, index * 250); // Retraso de 250ms entre pasos
  2242.                     }
  2243.                     // Evento para cambiar el estado al hacer clic en el icono
  2244.                     step.addEventListener('click', (e) => {
  2245.                         // Si el paso tiene la clase 'disabled' (como el de Iniciado), ignoramos el click
  2246.                         if (step.classList.contains('disabled')) {
  2247.                             e.preventDefault();
  2248.                             return;
  2249.                         }
  2250.                         const newStatusLabel = $(step).find('span').text().trim().toUpperCase();
  2251.                         const $option = $selectStatus.find('option').filter(function() {
  2252.                             return $(this).text().trim().toUpperCase() === newStatusLabel;
  2253.                         });
  2254.                         if ($option.length && !$option.prop('disabled')) {
  2255.                             $selectStatus.val($option.val());
  2256.                             $selectStatus.closest('form').submit();
  2257.                         }
  2258.                     });
  2259.                 });
  2260.             }
  2261.             // 7. Modales de Agenda y Pagos
  2262.             $('#modalEditar, #modalAgregarLinea').on('show.bs.modal', function (event) {
  2263.                 var button = $(event.relatedTarget);
  2264.                 var url = button.data('url');
  2265.                 var modal = $(this);
  2266.                 var contentDiv = modal.find('.modal-body > div');
  2267.                 contentDiv.html("<p class='text-muted'>Cargando...</p>");
  2268.                 $.ajax({
  2269.                     url: url,
  2270.                     success: function(data) { contentDiv.html(data); },
  2271.                     error: function() { contentDiv.html("<div class='alert alert-danger'>Error al cargar el contenido.</div>"); }
  2272.                 });
  2273.             });
  2274.             // Manejo de pagos en modal
  2275.             $(document).on('click', '.js-show-payments', function (e) {
  2276.                 e.preventDefault();
  2277.                 var $btn = $(this);
  2278.                 var $modal = $('#paymentsModal');
  2279.                 $modal.find('.modal-title').text('Pagos del depósito #' + $btn.data('deposit-id'));
  2280.                 $modal.find('.modal-body').html('<p class="text-muted">Cargando…</p>');
  2281.                 $.get($btn.data('url'))
  2282.                     .done(function (html) { $modal.find('.modal-body').html(html); })
  2283.                     .fail(function () { $modal.find('.modal-body').html('<div class="alert alert-danger">Error al cargar pagos.</div>'); });
  2284.             });
  2285.         });
  2286.         // 8. Cambio de Idioma Web
  2287.         {#function changeLanguageWeb(idLanguage) {#}
  2288.         {#    if (confirm("¿Está seguro de que desea cambiar el idioma?")) {#}
  2289.         {#        var url = '{{ path("reservations_venues_change_language", { "id": id, "idLanguage": "LANG_ID" }) }}'.replace('LANG_ID', idLanguage);#}
  2290.         {#        $.getJSON(url, function(response) {#}
  2291.         {#            if (response.status == 200) {#}
  2292.         {#                location.reload();#}
  2293.         {#            }#}
  2294.         {#        });#}
  2295.         {#    }#}
  2296.         {#}#}
  2297.         // Genera la URL con placeholders (Ruta de Venues)
  2298.         var changeLanguageUrlTemplate = '{{ path("reservations_venues_change_language", { "id": "ID_PLACEHOLDER", "idLanguage": "LANG_PLACEHOLDER" }) }}';
  2299.         function changeLanguageWeb(idLanguage) {
  2300.     if (confirm("¿Está seguro de que desea cambiar el idioma? Se perderán todos los cambios del idioma actual.")) {
  2301.         // Reemplaza los placeholders por los valores reales
  2302.         var changeLanguageUrl = changeLanguageUrlTemplate
  2303.             .replace('ID_PLACEHOLDER', {{ id }})
  2304.             .replace('LANG_PLACEHOLDER', idLanguage);
  2305.         $.ajax({
  2306.             url: changeLanguageUrl,
  2307.             type: 'GET',
  2308.             dataType: 'json',
  2309.             success: function(response) {
  2310.                 if (response.status == 200) {
  2311.                     // Actualiza el campo oculto de Venues para que se guarde el idioma correcto
  2312.                     $('#reservation_global_lounge_language_hidden').val(idLanguage);
  2313.                     // Iteramos sobre las traducciones recibidas
  2314.                     $.each(response.idiomas, function(key, data) {
  2315.                         if (data !== null) {
  2316.                             // Inyectamos el contenido en cada editor de Summernote según sus clases
  2317.                             $('.resumenDescriptivo-' + key + '-editor').each(function () {
  2318.                                 $(this).summernote('code', data.importantDescription);
  2319.                             });
  2320.                             $('.general-' + key + '-editor').each(function () {
  2321.                                 $(this).summernote('code', data.importantDescGeneralText);
  2322.                             });
  2323.                             $('.horarios-' + key + '-editor').each(function () {
  2324.                                 $(this).summernote('code', data.importantDescSchedules);
  2325.                             });
  2326.                             $('.parking-' + key + '-editor').each(function () {
  2327.                                 $(this).summernote('code', data.importantDescParking);
  2328.                             });
  2329.                         }
  2330.                     });
  2331.                 } else {
  2332.                     console.error("Error al cambiar el idioma:", response.statusText);
  2333.                 }
  2334.             },
  2335.             error: function(xhr, status, error) {
  2336.                 console.error("Error al cambiar el idioma:", error);
  2337.             }
  2338.         });
  2339.     } else {
  2340.         // Si el usuario cancela, restauramos visualmente el select al idioma anterior
  2341.         var previousLang = $('#reservation_global_lounge_language_hidden').val();
  2342.         $('#reservation_idWebLanguage').val(previousLang);
  2343.         return false;
  2344.     }
  2345. }
  2346.         function submitTracingAjax(e) {
  2347.         e.preventDefault();
  2348.         var dateVal = $("#tracingDateAjax").val();
  2349.         var textVal = $("#tracingTextAjax").val();
  2350.         
  2351.         if(!dateVal || !textVal) {
  2352.             alert("Rellena ambos campos obligatorios.");
  2353.             return;
  2354.         }
  2355.         var btn = $("#btn-save-tracing");
  2356.         btn.button('loading');
  2357.         $.ajax({
  2358.             url: "/venues/tracing/add/{{ id }}",
  2359.             type: "POST",
  2360.             data: {
  2361.                 tracingDate: dateVal,
  2362.                 tracingText: textVal
  2363.             },
  2364.             success: function(res) {
  2365.                 btn.button('reset');
  2366.                 if(res.status === 'ok') {
  2367.                     // Limpiar campos form
  2368.                     $("#tracingDateAjax").val('');
  2369.                     $("#tracingTextAjax").val('');
  2370.                     
  2371.                     // Recargar con SWAL y reload (o repintar la tabla, pero reload es fiable temporalmente)
  2372.                     swal({
  2373.                         title: "¡Guardado!",
  2374.                         text: "El seguimiento se ha guardado correctamente.",
  2375.                         type: "success",
  2376.                         confirmButtonColor: "#2196F3",
  2377.                         timer: 1500
  2378.                     });
  2379.                     setTimeout(function() {
  2380.                         location.reload();
  2381.                     }, 1500);
  2382.                 } else {
  2383.                     swal("Error", "No se pudo guardar el seguimiento.", "error");
  2384.                 }
  2385.             },
  2386.             error: function() {
  2387.                 btn.button('reset');
  2388.                 swal("Error", "Ocurrió un error en la conexión.", "error");
  2389.             }
  2390.         });
  2391.     }
  2392. </script>
  2393. <script>
  2394. // --- Lógica para corregir 00:00 a 23:59 en Venues ---
  2395. $(document).on('blur change', 'input[name*="End"], input[id^="end_"], input[name*="hourEnd"]', function() {
  2396.     var $input = $(this);
  2397.     var valor = $input.val().trim();
  2398.     // Comprobamos si el usuario ha puesto 00:00
  2399.     if (valor === "00:00" || valor === "00.00" || valor  === "0" || valor  === "00" || valor  === "000" || valor  === "0000") {
  2400.         $input.val("23:59");
  2401.         // Feedback visual: ponemos el borde en naranja un momento (Bootstrap 3)
  2402.         var $parent = $input.closest('.col-md-1, .form-group');
  2403.         $parent.addClass('has-warning');
  2404.         console.log("Venues: Corregida medianoche en " + $input.attr('name'));
  2405.         // Quitamos el aviso visual a los 2 segundos
  2406.         setTimeout(function() {
  2407.             $parent.removeClass('has-warning');
  2408.         }, 2000);
  2409.     }
  2410. });
  2411. // Inicializar tooltips de Bootstrap
  2412. $(document).ready(function() {
  2413.     $('[data-toggle="tooltip"]').tooltip();
  2414. });
  2415. </script>
  2416. <script>
  2417.     // ---  PRECIO SEGUN TARIFARIO  ---
  2418.     document.addEventListener("DOMContentLoaded", function () {
  2419.         // Elementos del DOM
  2420.         const $salaSelect = $('#reservation_sala_salasPrecargadas');
  2421.         const $dateInput = $('#reservation_sala_date');
  2422.         const $priceInput = $('#reservation_sala_servicePrice');
  2423.         function fetchPrice() {
  2424.             const salaId = $salaSelect.val();
  2425.             const date = $dateInput.val();
  2426.             if (salaId && date) {
  2427.                 // Hacemos la petición AJAX
  2428.                 fetch('{{ path("get_reservations_price_to_view") }}?sala=' + salaId + '&date=' + date)
  2429.                     .then(response => {
  2430.                         if (!response.ok) {
  2431.                             throw new Error("HTTP error " + response.status);
  2432.                         }
  2433.                         return response.json();
  2434.                     })
  2435.                     .then(data => {
  2436.                         if (data.price !== undefined) {
  2437.                             $priceInput.val(data.price);
  2438.                         } else {
  2439.                             $priceInput.val("");
  2440.                             console.error("Error en respuesta:", data);
  2441.                         }
  2442.                     })
  2443.                     .catch(err => {
  2444.                         console.error("Error obteniendo precio:", err);
  2445.                     });
  2446.             }
  2447.         }
  2448.         // Usamos jQuery (.on) para que pueda detectar los cambios hechos por Select2
  2449.         $salaSelect.on("change", fetchPrice);
  2450.         $dateInput.on("change", fetchPrice);
  2451.     });
  2452. </script>
  2453. <script>
  2454.  // ---  CONTROL DE FECHAS  ---
  2455.     document.addEventListener("DOMContentLoaded", function () {
  2456.         // 1. DECLARAR LA FUNCIÓN DIFFDAYS
  2457.         function diffDays(d1, d2) {
  2458.             var a = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());
  2459.             var b = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
  2460.             return Math.round((b - a) / 86400000);
  2461.         }
  2462.         // 2. OBTENER LAS FECHAS DE INICIO Y FIN DIRECTAMENTE DE LA ENTIDAD A TRAVÉS DE TWIG
  2463.         var mainDateStartValue = '{{ reserva.dateStart ? reserva.dateStart|date("Y-m-d") : "" }}';
  2464.         var mainDateEndValue = '{{ reserva.dateEnd ? reserva.dateEnd|date("Y-m-d") : "" }}';
  2465.         // --- FUNCIÓN DE VALIDACIÓN REUTILIZABLE ---
  2466.         function superaLos30Dias(fechaSala) {
  2467.             // Si no hay fecha de inicio base, no validamos
  2468.             if (!mainDateStartValue || mainDateStartValue.trim() === "") {
  2469.                 return false;
  2470.             }
  2471.             var ds = new Date(mainDateStartValue);
  2472.             // Si la fecha de fin existe y es MENOR a la fecha de inicio, omitimos la validación, se creo la reserva sin fechas
  2473.             if (mainDateEndValue && mainDateEndValue.trim() !== "") {
  2474.                 var de = new Date(mainDateEndValue);
  2475.                 if (!isNaN(ds.getTime()) && !isNaN(de.getTime())) {
  2476.                     if (de < ds) {
  2477.                         return false; // Retornamos false para PERMITIR el envío sin aplicar la regla de los 30 días
  2478.                     }
  2479.                 }
  2480.             }
  2481.             var dt = new Date(fechaSala);
  2482.             if (!isNaN(ds.getTime()) && !isNaN(dt.getTime())) {
  2483.                 // Usamos Math.abs() para comprobar la ventana completa de +/- 30 días
  2484.                 var diff = Math.abs(diffDays(ds, dt));
  2485.                 if (diff > 30) {
  2486.                     return true; // SÍ supera los 30 días
  2487.                 }
  2488.             }
  2489.             return false; // NO supera los 30 días
  2490.         }
  2491.         // =========================================================================
  2492.         // FORM 1: SALAS PRECARGADAS (mds_venuesbundle_revervation_form2)
  2493.         // =========================================================================
  2494.         var formSalasPre = document.forms['mds_venuesbundle_revervation_form2'];
  2495.         if (formSalasPre) {
  2496.             formSalasPre.addEventListener('submit', function (e) {
  2497.                 var salaDateInput = document.getElementById('reservation_sala_date');
  2498.                 if (salaDateInput && salaDateInput.value.trim() !== "") {
  2499.                     if (superaLos30Dias(salaDateInput.value)) {
  2500.                         e.preventDefault(); // Detenemos el envío
  2501.                         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 %}");
  2502.                     }
  2503.                 }
  2504.             });
  2505.         }
  2506.         // =========================================================================
  2507.         // FORM 2: GRID DE OPCIONES YA GUARDADAS (mds_venuesbundle_loungrid)
  2508.         // =========================================================================
  2509.         var formLoungeGrid = document.forms['mds_venuesbundle_loungrid'];
  2510.         if (formLoungeGrid) {
  2511.             formLoungeGrid.addEventListener('submit', function (e) {
  2512.                 // Seleccionamos todos los inputs de fecha dentro de este form
  2513.                 var gridDateInputs = formLoungeGrid.querySelectorAll('input[type="date"][id^="newDate_"]');
  2514.                 var gridTieneErrores = false;
  2515.                 for (var i = 0; i < gridDateInputs.length; i++) {
  2516.                     var currentVal = gridDateInputs[i].value;
  2517.                     if (currentVal.trim() !== "") {
  2518.                         if (superaLos30Dias(currentVal)) {
  2519.                             gridTieneErrores = true;
  2520.                             // Resaltamos el input conflictivo en rojo para ayudar al usuario
  2521.                             gridDateInputs[i].style.borderColor = '#F44336';
  2522.                         } else {
  2523.                             // Limpiamos estilos de advertencia si la fecha ahora es correcta
  2524.                             gridDateInputs[i].style.borderColor = '';
  2525.                         }
  2526.                     }
  2527.                 }
  2528.                 // Si al menos una fecha superó el límite, detenemos todo y avisamos
  2529.                 if (gridTieneErrores) {
  2530.                     e.preventDefault(); // Evita que se envíe el formulario
  2531.                     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 %}");
  2532.                 }
  2533.             });
  2534.         }
  2535.     });
  2536. </script>
  2537. {% endblock %}