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