templates/factura/rentabilidad.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% set roleFacturacion=is_granted('ROLE_FACTURACION') %}
  3. {% block title %}
  4.     Rentabilidad
  5. {% endblock %}
  6. {% block facturasItem %}active{% endblock %}
  7. {% block rentabilidad %}active{% endblock %}
  8. {% block headscript %}
  9.     <!-- Custom styles for this page -->
  10.     <link href="/vendor/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
  11.     <link href="/vendor/datatables/dataTables.fixedHeader.min.css" rel="stylesheet">
  12.     <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/jszip-2.5.0/dt-1.11.2/b-2.0.0/b-colvis-2.0.0/b-html5-2.0.0/b-print-2.0.0/cr-1.5.4/date-1.1.1/fh-3.1.9/r-2.2.9/sb-1.2.1/datatables.min.css"/>
  13. {% endblock %}
  14. {% block body %}
  15.     <div class="container-fluid">
  16.         <!-- Page Heading -->
  17.         <div class="card border-left-primary shadow h-100 py-1 mb-2">
  18.             <div class="card-body">
  19.                 <input type="hidden" id="urlShow" value="{{ path('factura_show', {'id': '_id'}) }}">
  20.                 <input type="hidden" id="urlShowGenerica" value="{{ path('facturaGenerica_show', {'id': '_id'}) }}">
  21.                 <h1 class="h3 mb-2 text-gray-800">Rentabilidad</h1>
  22.                 {#  <p class="mb-4">Lorem ipsum sit amet.</p>#}
  23.             </div>
  24.         </div>
  25.         <!-- Filters -->
  26.         <div class="card">
  27.             <div class="card-header py-3">
  28.                 <h6 class="m-0 font-weight-bold text-primary">
  29.                     Filtrar facturas
  30.                 </h6>
  31.             </div>
  32.             <div class="card-body">
  33.                 {% include 'factura/_filtrarFacturaForm.html.twig' %}
  34.             </div>
  35.         </div>
  36.         {% if formSubmitted %}
  37.         <!-- Total -->
  38.         <div id="totales" class="card">
  39.             <div class="card-body">
  40.                 <div class="row">
  41.                     <div class="col-xl-2 col-md-4">
  42.                         <div class="card border-left-success shadow h-100 py-2">
  43.                             <div class="card-body">
  44.                                 <div class="row no-gutters align-items-center">
  45.                                     <div class="col mr-2">
  46.                                         <div class="text-xs font-weight-bold text-success text-uppercase mb-1">Total facturado</div>
  47.                                         <div id="totalFacturado" class="h5 mb-0 font-weight-bold text-gray-800">{{ facturado|number_format(2, ',', '.') }} €</div>
  48.                                     </div>
  49.                                     <div class="col-auto">
  50.                                         <i class="fas fa-file-invoice-dollar fa-2x text-gray-300"></i>
  51.                                     </div>
  52.                                 </div>
  53.                             </div>
  54.                         </div>
  55.                     </div>
  56.                     <div class="col-xl-2 col-md-4">
  57.                         <div class="card border-left-danger shadow h-100 py-2">
  58.                             <div class="card-body">
  59.                                 <div class="row no-gutters align-items-center">
  60.                                     <div class="col mr-2">
  61.                                         <div class="text-xs font-weight-bold text-danger text-uppercase mb-1">Coste total</div>
  62.                                         <div id="costeTotal" class="h5 mb-0 font-weight-bold text-gray-800">{{ coste|number_format(2, ',', '.') }} €</div>
  63.                                     </div>
  64.                                     <div class="col-auto">
  65.                                         <i class="fas fa-money-check-alt fa-2x text-gray-300"></i>
  66.                                     </div>
  67.                                 </div>
  68.                             </div>
  69.                         </div>
  70.                     </div>
  71.                     <div class="col-xl-2 col-md-4">
  72.                         <div class="card border-left-info shadow h-100 py-2">
  73.                             <div class="card-body">
  74.                                 <div class="row no-gutters align-items-center">
  75.                                     <div class="col mr-2">
  76.                                         <div class="text-xs font-weight-bold text-info text-uppercase mb-1">Total pagado</div>
  77.                                         <div id="totalPagado" class="h5 mb-0 font-weight-bold text-gray-800">{{ pagado|number_format(2, ',', '.') }} €</div>
  78.                                     </div>
  79.                                     <div class="col-auto">
  80.                                         <i class="fas fa-hand-holding-usd fa-2x text-gray-300"></i>
  81.                                     </div>
  82.                                 </div>
  83.                             </div>
  84.                         </div>
  85.                     </div>
  86.                     <div class="col-xl-2 col-md-4">
  87.                         <div class="card border-left-warning shadow h-100 py-2">
  88.                             <div class="card-body">
  89.                                 <div class="row no-gutters align-items-center">
  90.                                     <div class="col mr-2">
  91.                                         <div class="text-xs font-weight-bold text-warning text-uppercase mb-1">Pendiente de pago</div>
  92.                                         <div id="pendientePago" class="h5 mb-0 font-weight-bold text-gray-800">{{ pendiente|number_format(2, ',', '.') }} €</div>
  93.                                     </div>
  94.                                     <div class="col-auto">
  95.                                         <i class="far fa-clock fa-2x text-gray-300"></i>
  96.                                     </div>
  97.                                 </div>
  98.                             </div>
  99.                         </div>
  100.                     </div>
  101.                     <div class="col-xl-2 col-md-4">
  102.                         <div class="card border-left-dark shadow h-100 py-2">
  103.                             <div class="card-body">
  104.                                 <div class="row no-gutters align-items-center">
  105.                                     <div class="col mr-2">
  106.                                         <div class="text-xs font-weight-bold text-dark text-uppercase mb-1">Total devuelto</div>
  107.                                         <div id="costeTotal" class="h5 mb-0 font-weight-bold text-gray-800">{{ devuelto|number_format(2, ',', '.') }} €</div>
  108.                                     </div>
  109.                                     <div class="col-auto">
  110.                                         <i class="fas fa-exchange-alt fa-2x text-gray-300"></i>
  111.                                     </div>
  112.                                 </div>
  113.                             </div>
  114.                         </div>
  115.                     </div>
  116.                     <div class="col-xl-2 col-md-4">
  117.                         <div class="card border-left-primary shadow h-100 py-2">
  118.                             <div class="card-body">
  119.                                 <div class="row no-gutters align-items-center">
  120.                                     <div class="col mr-2">
  121.                                         <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">Beneficio total</div>
  122.                                         <div id="beneficioTotal" class="h5 mb-0 font-weight-bold text-gray-800">{{ beneficio|number_format(2, ',', '.') }} €</div>
  123.                                     </div>
  124.                                     <div class="col-auto">
  125.                                         <i class="fas fa-balance-scale fa-2x text-gray-300"></i>
  126.                                     </div>
  127.                                 </div>
  128.                             </div>
  129.                         </div>
  130.                     </div>
  131.                 </div>
  132.             </div>
  133.         </div>
  134.         {% endif %}
  135.         <!-- DataTables -->
  136.         <div class="card  mb-4">
  137.             <div class="card-body">
  138.                 <input  id="seleccionarFacturasVisible" type="hidden" value="false">
  139.                 <div class="mb-2">
  140.                     <div class="btn-group" role="group" aria-label="Basic example">
  141.                         <button type="button" id="seleccionarFacturas" class="btn btn-primary">
  142.                           <span class="fa-stack small">
  143.                             <i class="far fa-square fa-stack-2x"></i>
  144.                             <i class="fas fa-check fa-stack-1x"></i>
  145.                           </span>Seleccionar facturas
  146.                         </button>
  147.                         <button id="opcionesSeleccion" type="button" class="btn btn-primary" onclick="groupOptionsModal()" disabled>
  148.                             <i class="fas fa-cog mr-1"></i>Opciones
  149.                         </button>
  150.                     </div>
  151.                 </div>
  152.                 <div class="table-responsive">
  153.                     <table class="table table-bordered small" id="facturaTable" width="100%" cellspacing="0">
  154.                         <thead>
  155.                         <tr>
  156.                             <th><input type="checkbox" id="seleccionarTodo" class="d-none"></th>
  157.                             <th class="excel">Cliente</th>
  158.                             <th class="excel">NIF</th>
  159.                             <th class="excel factusol">Código cliente</th>
  160.                             <th class="excel">Referencia contrato</th>
  161.                             <th class="excel factusol">CUPS</th>
  162.                             <th class="excel factusol">Código artículo</th>
  163.                             <th class="excel factusol">Número</th>
  164.                             <th class="excel">Fecha lectura</th>
  165.                             <th class="excel factusol">Fecha emisión</th>
  166.                             <th class="excel">Dirección de suministro</th>
  167.                             <th class="excel">Comercial</th>
  168.                             <th class="excel">Tipo</th>
  169.                             <th class="excel">Tarifa</th>
  170.                             <th class="excel factusol">Base imponible</th>
  171.                             <th class="excel factusol">IVA</th>
  172.                             <th class="excel factusol">Importe</th>
  173.                             <th class="excel">Fecha emisión compra</th>
  174.                             <th class="excel">Fecha cobro compra</th>
  175.                             <th class="excel">Importe compra</th>
  176.                             <th class="excel">Estado compra</th>
  177.                             <th class="excel">Beneficio</th>
  178.                             <th>Opciones</th>
  179.                         </tr>
  180.                         </thead>
  181.                         <tbody>
  182.                         {% for factura in facturas %}
  183.                             {% set tarifa=factura.tarifa %}
  184.                             {% set contrato=factura.contrato %}
  185.                             {% set cliente=contrato.cliente %}
  186.                             {% set suministro=contrato.suministro %}
  187.                             {% set generica=factura.className!='Factura' %}
  188.                             {% if not generica %}
  189.                                 {% set beneficio=((factura.totalFactura ? factura.totalFactura : 0 )-(factura.totalCompra ? factura.totalCompra : 0 )) %}
  190.                             {% else %}
  191.                                 {% set beneficio=factura.totalFactura %}
  192.                             {% endif %}
  193.                             <tr id="factura{% if generica %}Generica{% endif %}{{ factura.id }}" class="{% if beneficio == 0 %}alert-warning{% elseif beneficio<0 %}alert-danger{% endif %}">
  194.                                 <td></td>
  195.                                 <td>{{ cliente }}</td>
  196.                                 <td>{{ cliente.nif }}</td>
  197.                                 <td>{{ cliente.codigoContable }}</td>
  198.                                 <td>{{ contrato }}</td>
  199.                                 <td>{{ suministro.cups }}</td>
  200.                                 <td>{{ suministro.codigoContable }}</td>
  201.                                 <td>{{ factura.numeroFactura }}</td>
  202.                                 {% if not generica %}
  203.                                 <td>{{ factura.fechaLectura ? factura.fechaLectura.format('Y-m-d') : '-' }}</td>
  204.                                 {% else %}
  205.                                  <td>-</td>
  206.                                 {% endif %}
  207.                                 <td>{{ factura.fechaEmision ? factura.fechaEmision.format('Y-m-d') : '-' }}</td>
  208.                                 <td>{{ suministro.direccion }}</td>
  209.                                 <td>{{ contrato.comercial }}</td>
  210.                                 <td>{{ tarifa.tipoTarifa }}</td>
  211.                                 <td>{{ tarifa }}</td>
  212.                                 <td class="text-right">{{ factura.baseImponible|number_format(2, ',', '.') }} €</td>
  213.                                 <td class="">{{ factura.iva }}%</td>
  214.                                 <td class="text-right"><span class="importe">{{ factura.totalFactura|number_format(2, ',', '.') }}</span> €</td>
  215.                                 {% if not generica %}
  216.                                 <td>{{ factura.fechaEmisionCompra ? factura.fechaEmisionCompra.format('Y-m-d') : '-' }}</td>
  217.                                 <td>{{ factura.fechaCobroCompra ? factura.fechaCobroCompra.format('Y-m-d') : '-' }}</td>
  218.                                 <td class="text-right"><span class="importeCompra">{{ factura.totalCompra ? factura.totalCompra|number_format(2, ',', '.') : '0,00' }}</span> €</td>
  219.                                 <td>{{ factura.estadoCompra }}</td>
  220.                                 <td class="text-right"><span class="beneficio">{{ beneficio|number_format(2, ',', '.') }}</span> €</td>
  221.                                     <td>
  222.                                         <a href="{{ path('factura_show', {'id': factura.id}) }}"><i class="fas fa-eye mr-1"></i>Ver</a>
  223.                                         <a href="#" onclick="optionsModal({{ factura.id }})" class="small text-nowrap mr-1 d-inline-block"><i class="fas fa-cog mr-1"></i>Opciones</a>
  224.                                         <input type="hidden" id="devuelta{{ factura.id }}" value="{{ factura.devuelta }}">
  225.                                     </td>
  226.                                 {% else %}
  227.                                     <td></td>
  228.                                     <td></td>
  229.                                     <td>N/A</td>
  230.                                     <td>N/A</td>
  231.                                     <td class="text-right"><span class="beneficio">{{ beneficio|number_format(2, ',', '.') }}</span> €</td>
  232.                                     <td>
  233.                                         <a href="{{ path('facturaGenerica_show', {'id': factura.id}) }}"><i class="fas fa-eye mr-1"></i>Ver</a>
  234.                                         <a href="#" onclick="optionsModal('+id+')" class="small text-nowrap mr-1 d-inline-block"><i class="fas fa-cog mr-1"></i>Opciones</a>
  235.                                         <input type="hidden" id="devuelta{{ factura.id }}" value="{{ factura.devuelta }}">
  236.                                     </td>
  237.                                 {% endif %}
  238.                                 {#  <td>{{ factura.estadoCompra }}</td>
  239.                                 <td>{{ factura.estadoCompra }}</td>
  240.                                 {% if factura.className=='Factura' %}
  241.                                     <td class="text-right">{{ factura.baseImponible|number_format(2, ',', '.') }} €</td>
  242.                                 {% else %}
  243.                                     <td class="text-right">{{ factura.baseImponible|number_format(2, ',', '.') }} €</td>
  244.                                 {% endif %}#}
  245.                             </tr>
  246.                         {% endfor %}
  247.                         </tbody>
  248.                     </table>
  249.                 </div>
  250.                 {% if roleFacturacion %}
  251.                     {{ include('factura/_rentabilidad_options_modal.html.twig') }}
  252.                     {{ include('factura/_options_modal.html.twig') }}
  253.                     {{ include('factura_generica/_options_modal.html.twig') }}
  254.                 {% endif %}
  255.             </div>
  256.         </div>
  257.     </div>
  258. {% endblock %}
  259. {% block script %}
  260.     <!-- Page level plugins -->
  261.     <script src="/vendor/moment.js/moment.min.js"></script>
  262.     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
  263.     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
  264.     <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jszip-2.5.0/dt-1.11.2/b-2.0.0/b-colvis-2.0.0/b-html5-2.0.0/b-print-2.0.0/cr-1.5.4/date-1.1.1/fh-3.1.9/r-2.2.9/sb-1.2.1/datatables.min.js"></script>
  265.     <script src="/vendor/datatables/datetime-moment.js"></script>
  266.     <script src="/vendor/datatables/datetime.js"></script>
  267.     <script src="https://cdn.jsdelivr.net/npm/iban@0.0.14/iban.min.js"></script>
  268.     <script src="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/js/select2.min.js" integrity="sha256-AFAYEOkzB6iIKnTYZOdUf9FFje6lOTYdwRJKwTN5mks=" crossorigin="anonymous"></script>
  269.     <!-- Page level custom scripts -->
  270.     <script src="/js/tables/rentabilidad-tables.js"></script>
  271.     <script src="/js/rentabilidad.js"></script>
  272.     {% if roleFacturacion %}
  273.         <script src="/js/rentabilidad_options_modal.js"></script>
  274.         <script src="/js/factura_options_modal.js"></script>
  275.         <script src="/js/facturaGenerica_options_modal.js"></script>
  276.     {% endif %}
  277. {% endblock %}