templates/clients/detail.html.twig line 139

Open in your IDE?
  1. {% extends "base.html.twig" %}
  2. {% block headerStyles %}
  3.     {{ parent() }}
  4. {% endblock %}
  5. {% block content %}
  6.     <div class="page-content">
  7.          <div class="page-breadcrumb d-none d-sm-flex align-items-center mb-3">
  8.             <div class="breadcrumb-title pe-3">Cliente: {{ client.getName()~' '~client.getSurname() }}</div>
  9.              
  10.                 <div class=" d-sm-flex align-items-center ms-auto">
  11.                     
  12.                 
  13.                 </div>
  14.            
  15.             <div class="ms-auto">
  16.             </div>
  17.         </div>
  18.         <div class="row">
  19.             <div class="col-md-4">
  20.                 <form action="{{ path('modifyClientData') }}?id={{ client.getId() }}" method="POST">
  21.                 <div class="card">
  22.                     <div class="card-body p-4">
  23.                         <h5>Datos personales</h5>
  24.                         <hr>
  25.                         <div class="mb-3">
  26.                             <label for="inputProductTitle" class="form-label">Nombre del Cliente</label>
  27.                             <input type="text" class="form-control" id="inputProductTitle" name="name" value="{{ client.getName() }}">
  28.                         </div>
  29.                         <div class="mb-3">
  30.                             <label for="surname" class="form-label">Apellidos del Cliente</label>
  31.                             <input type="text" class="form-control" id="surname" name="surname" value="{{ client.getSurname() }}">
  32.                         </div>
  33.                         <div class="mb-3">
  34.                             <label for="email" class="form-label">Email del Cliente</label>
  35.                             <input type="text" class="form-control" id="email" name="email" value="{{ client.getEmail() }}">
  36.                         </div>
  37.                         <div class="mb-3">
  38.                             <label for="nif" class="form-label">Nif / CIF del Cliente</label>
  39.                             <input type="text" class="form-control" id="nif" name="nif" value="{{ client.getNif() }}">
  40.                         </div>
  41.                         <div class="mb-3">
  42.                             <label for="phone" class="form-label">Teléfono del Cliente</label>
  43.                             <input type="text" class="form-control" id="phone" name="phone" value="{{ client.getPhone() }}">
  44.                         </div>
  45.                     </div>
  46.                 </div>
  47.                 <div class="card">
  48.                     <div class="card-body p-4">
  49.                         <h5>Dirección </h5>
  50.                         <hr>
  51.                         <div class="mb-3">
  52.                             <label for="address" class="form-label">Dirección</label>
  53.                             <input type="text" class="form-control" id="address" name="address" value="{{ client.getAddress() }}">
  54.                         </div>
  55.                         <div class="mb-3">
  56.                             <label for="cp" class="form-label">Código postal</label>
  57.                             <input type="text" class="form-control" id="cp" name="cp" value="{{ client.getCp() }}">
  58.                         </div>
  59.                         <div class="mb-3">
  60.                             <label for="city" class="form-label">Ciudad</label>
  61.                             <input type="text" class="form-control" id="city" name="city" value="{{ client.getCity() }}">
  62.                         </div>
  63.                         <div class="mb-3">
  64.                             <label for="state" class="form-label">Província</label>
  65.                             <input type="text" class="form-control" id="state" name="state" value="{{ client.getState() }}">
  66.                         </div>
  67.                         <div class="mb-3">
  68.                             <label for="country" class="form-label">País</label>
  69.                             <input type="text" class="form-control" id="country" name="country" value="{{ client.getCountry() }}">
  70.                         </div>
  71.                     </div>
  72.                 </div>
  73.                 <div class="card">
  74.                     <div class="card-body p-4">
  75.                         <div class="d-grid">
  76.                             <button type="submit" class="btn btn-primary btn-block">Guardar cambios</button>
  77.                         </div>
  78.                     </div>
  79.                 </div>
  80.                 </form>
  81.             </div>
  82.             <div class="col-md-8">
  83.                 <div class="card">
  84.                     <div class="card-body p-4">
  85.                         <h5>Estadísticas y datos</h5>
  86.                         <hr>
  87.                         <div class="row row-cols-1 row-cols-md-2 row-cols-xl-4">
  88.                             <div class="col">
  89.                                 <div class="card radius-10 border-start border-0 border-3 border-info">
  90.                                        <div class="card-body">
  91.                                                <div class="d-flex align-items-center">
  92.                                                        <div>
  93.                                                                <p class="mb-0 text-secondary">Total ventas</p>
  94.                                                                <h4 class="my-1 text-info">{{ client.getId() | calculaVenta() }}</h4>
  95.                                                        </div>
  96.                                                        <div class="widgets-icons-2 rounded-circle bg-gradient-scooter text-white ms-auto"><i class="bx bxs-wallet"></i>
  97.                                                        </div>
  98.                                                </div>
  99.                                        </div>
  100.                                 </div>
  101.                             </div>
  102.                             <div class="col">
  103.                                <div class="card radius-10 border-start border-0 border-3 border-success">
  104.                                   <div class="card-body">
  105.                                           <div class="d-flex align-items-center">
  106.                                                   <div>
  107.                                                           <p class="mb-0 text-secondary">Total Productos comprados</p>
  108.                                                           <h4 class="my-1 text-success">{{ prods_cant }}</h4>
  109.                                                           
  110.                                                   </div>
  111.                                                   <div class="widgets-icons-2 rounded-circle bg-gradient-ohhappiness text-white ms-auto"><i class="bx bxs-cart"></i>
  112.                                                   </div>
  113.                                           </div>
  114.                                   </div>
  115.                                </div>
  116.                             </div>
  117.                             <div class="col">
  118.                                <div class="card radius-10 border-start border-0 border-3 border-danger">
  119.                                   <div class="card-body">
  120.                                           <div class="d-flex align-items-center">
  121.                                                   <div>
  122.                                                           <p class="mb-0 text-secondary">Productos reservados</p>
  123.                                                           <h4 class="my-1 text-danger">{{ prods_res }}</h4>
  124.                                                           
  125.                                                   </div>
  126.                                                   <div class="widgets-icons-2 rounded-circle bg-gradient-bloody text-white ms-auto"><i class="bx bxs-save"></i>
  127.                                                   </div>
  128.                                           </div>
  129.                                   </div>
  130.                                </div>
  131.                             </div>
  132.                             <div class="col">
  133.                                <div class="card radius-10 border-start border-0 border-3 border-warning">
  134.                                   <div class="card-body">
  135.                                           <div class="d-flex align-items-center">
  136.                                                   <div>
  137.                                                           <p class="mb-0 text-secondary">Ultima compra</p>
  138.                                                           <h4 class="my-1 text-warning">{% if last_buy %}{{ last_buy.getDate() | date("d/m/Y") }}{% endif %}</h4>
  139.                                                           
  140.                                                   </div>
  141.                                                   <div class="widgets-icons-2 rounded-circle bg-gradient-blooker text-white ms-auto"><i class="bx bxs-calendar"></i>
  142.                                                   </div>
  143.                                           </div>
  144.                                   </div>
  145.                                </div>
  146.                             </div> 
  147.                         </div>
  148.                     </div>
  149.                 </div>
  150.                 <div class="card">
  151.                     <div class="card-body p-4">
  152.                         <h5>Ventas</h5>
  153.                         <hr>
  154.                         <table class="table mb-0">
  155.                             <thead>
  156.                                     <tr>
  157.                                             <th scope="col" class="cabecera_filtrada" data-filter="id">ID</th>
  158.                                             <th scope="col" class="cabecera_filtrada" data-filter="date">Fecha</th>
  159.                                             <th scope="col">Cliente</th>
  160.                                             <th scope="col">Vendido por</th>
  161.                                             <th scope="col" class="cabecera_filtrada" data-filter="subtotal">Subtotal</th>
  162.                                             <th scope="col" class="cabecera_filtrada" data-filter="ivaValue">Iva</th>
  163.                                             <th scope="col" class="cabecera_filtrada" data-filter="total">Total</th>
  164.                                             <th scope="col">Estado</th>
  165.                                             <th scope="col">Detalles</th>
  166.                                     </tr>
  167.                             </thead>
  168.                             <tbody>
  169.                                 {% for venta in ventas %}
  170.                                     <tr>
  171.                                             <th scope="row">{{ venta.getId() }}</th>
  172.                                             <td>{{ venta.getDate() | date ("d/m/Y") }}</td>
  173.                                             <td>{{ venta.getClientId() | getClienteName() }}</td>
  174.                                             <td>{{ venta.getUserId() | getUserName() }}</td>
  175.                                             <td>{{ venta.getSubtotal() }}</td>
  176.                                             <td>{{ venta.getIvaValue() }}</td>
  177.                                             <td>{{ venta.getTotal() }}</td>
  178.                                             <td>{{ (venta.getStatus() | getStatusLabel()) | raw }}</td>
  179.                                             <td>
  180.                                                 <button  onclick="viewTicket({{venta.getId()}})" class="btn btn-outline-primary" ><i class="bx bx-file"></i></button>
  181.                                                 <button  onclick="printTicket({{venta.getId()}})" class="btn btn-outline-primary" ><i class="bx bx-printer"></i></button>
  182.                                                 <button  onclick="printTicketRegalo({{venta.getId()}})" class="btn btn-outline-primary" ><i class="bx bx-gift"></i></button>
  183.                                             </td>
  184.                                     </tr>
  185.                                 {% endfor %}
  186.                             </tbody>
  187.                         </table>
  188.                         <div class="mt-3 col-md-12 text-center align-content-center">
  189.                             {{ knp_pagination_render(ventas) }}
  190.                         </div>
  191.                     </div>
  192.                 </div>
  193.             </div>
  194.         </div>
  195.     </div>
  196. {% endblock %}
  197. {% block footerScripts %}
  198.     {{ parent() }}
  199.     <script>
  200.        function printTicket(id){
  201.                 $.ajax({
  202.                     url:'{{path("printTicket")}}',
  203.                     type:'POST',
  204.                     async:false,
  205.                     data: {id:id },
  206.                     success:function(html){
  207.                         var mywindow = window.open('', 'PRINT', 'height=400,width=600'); 
  208.                         mywindow.document.write(html);
  209.                         mywindow.document.close();
  210.                         mywindow.focus();
  211.                         mywindow.print();
  212.                         //mywindow.close();
  213.                     }
  214.                 });
  215.             }
  216.         function printTicketRegalo(id){
  217.             $.ajax({
  218.                 url:'{{path("printTicketRegalo")}}',
  219.                 type:'POST',
  220.                     async:false,
  221.                     data: {id:id },
  222.                     success:function(html){
  223.                         var mywindow = window.open('', 'PRINT', 'height=400,width=600'); 
  224.                         mywindow.document.write(html);
  225.                         mywindow.document.close();
  226.                         mywindow.focus();
  227.                         setTimeout(function(){
  228.                             mywindow.print();
  229.                         },2000);
  230.                         //mywindow.close();
  231.                     }
  232.                 });
  233.         }
  234.         function viewTicket(id){
  235.             $.ajax({
  236.                 url:'{{path("printTicket")}}',
  237.                 type:'POST',
  238.                 async:false,
  239.                 data: {id:id },
  240.                 success:function(html){
  241.                     var mywindow = window.open('', 'PRINT', 'height=400,width=600'); 
  242.                     mywindow.document.write(html);
  243.                     mywindow.document.close();
  244.                     mywindow.focus();
  245.                     //mywindow.print();
  246.                     //mywindow.close();
  247.                 }
  248.             });
  249.         }
  250.     </script>
  251.     
  252. {% endblock %}