File "consulta_epp.php"

Full Path: C:/wamp64/www/AVIDOTAPP/views/fconsuldota/consulta_epp.php
File size: 13.88 KB
MIME-type: text/html
Charset: utf-8

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Consulta de Entregas por Filtros</title>
  <link rel="icon" type="image/png" href="assets/img/icono.png">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <link rel="stylesheet" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.css">
  <link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.2.2/css/buttons.dataTables.min.css">
  <style>
    body { background-image: linear-gradient(125deg, #d0101d, #752b2a); padding: 20px; min-height: 100vh; }
    .card { border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,.1); }
    .card-header { background-color: #8d8c8c; color: white; border-radius: 15px 15px 0 0 !important; }
    .card-header.bg-primary { background: linear-gradient(225deg, #d0101d, #752b2a) !important; }
    .card-header.bg-info    { background-color: #8d8c8c !important; }
    .table-container { overflow-x: auto; }
    table.dataTable thead th {
      background-color: #8d8c8c !important; color: white !important;
      border: none !important; text-shadow: 0 1px 1px rgba(0,0,0,.3) !important;
    }
    table.dataTable thead th:hover { background-color: #8d8c8c !important; }
    table.dataTable thead th.sorting:after,
    table.dataTable thead th.sorting_asc:after,
    table.dataTable thead th.sorting_desc:after { color: white !important; opacity: .8 !important; }
    .btn-rojo { background: linear-gradient(225deg, #d0101d, #752b2a); color: white; border: none; }
    .btn-rojo:hover { background: linear-gradient(225deg, #b00e1a, #632422); color: white; }
    .filter-section { background-color: #f8f9fa; padding: 15px; border-radius: 10px; margin-bottom: 20px; }
    .filter-title { font-weight: bold; margin-bottom: 10px; color: #d0101d; }
    .talla-col { min-width: 80px; max-width: 100px; font-size: .9em; }
    .firma-img { max-width: 100px; cursor: pointer; transition: transform .3s; }
    .firma-img:hover { transform: scale(1.5); z-index: 1000; }
  </style>
</head>
<body>
<div class="container-fluid">

  <!-- TARJETA FILTROS -->
  <div class="card mb-4">
    <div class="card-header">
      <div class="d-flex justify-content-between align-items-center">
        <h4 class="mb-0"><i class="fas fa-filter me-2"></i>Consulta de Entregas por Filtros</h4>
        <div class="d-flex gap-2">
          <a href="index.php?controller=Consulta&action=historico" class="btn btn-warning btn-sm">
            <i class="fas fa-history me-1"></i> Histórico
          </a>
          <a href="index.php?controller=Dashboard&action=index" class="btn btn-light btn-sm">
            <i class="fas fa-home me-1"></i> Menú
          </a>
        </div>
      </div>
    </div>
    <div class="card-body">
      <form id="formConsulta" method="post"
            action="index.php?controller=Consulta&action=index" class="row g-3">

        <!-- Tipo de filtro -->
        <div class="col-12">
          <div class="filter-section">
            <div class="filter-title">Seleccione el tipo de filtro:</div>
            <?php
              $tipos = ['cedula' => 'Cédula', 'item' => 'Item', 'area' => 'Área', 'ccosto' => 'Centro de Costo'];
              foreach ($tipos as $val => $lbl):
                $checked = (!$tipo_filtro && $val === 'cedula') || $tipo_filtro === $val ? 'checked' : '';
            ?>
            <div class="form-check form-check-inline">
              <input class="form-check-input" type="radio" name="tipo_filtro"
                     id="filtro_<?= $val ?>" value="<?= $val ?>" <?= $checked ?>>
              <label class="form-check-label" for="filtro_<?= $val ?>"><?= $lbl ?></label>
            </div>
            <?php endforeach; ?>
          </div>
        </div>

        <!-- Campo cédula -->
        <div class="col-md-4 filter-field" id="cedula-field"
             style="<?= ($tipo_filtro && $tipo_filtro !== 'cedula') ? 'display:none' : '' ?>">
          <label class="form-label">Cédula del Operario</label>
          <input type="text" class="form-control" name="cedula"
                 value="<?= htmlspecialchars($_POST['cedula'] ?? '') ?>">
        </div>

        <!-- Campo item -->
        <div class="col-md-4 filter-field" id="item-field"
             style="<?= $tipo_filtro !== 'item' ? 'display:none' : '' ?>">
          <label class="form-label">Código del Item</label>
          <input type="text" class="form-control" name="item"
                 value="<?= htmlspecialchars($_POST['item'] ?? '') ?>">
        </div>

        <!-- Campo área -->
        <div class="col-md-4 filter-field" id="area-field"
             style="<?= $tipo_filtro !== 'area' ? 'display:none' : '' ?>">
          <label class="form-label">Área</label>
          <select class="form-select" name="area">
            <option value="">Seleccione un área</option>
            <?php foreach ($areas as $a): ?>
              <option value="<?= htmlspecialchars($a['area']) ?>"
                <?= ($_POST['area'] ?? '') === $a['area'] ? 'selected' : '' ?>>
                <?= htmlspecialchars($a['area']) ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Campo centro de costo -->
        <div class="col-md-4 filter-field" id="ccosto-field"
             style="<?= $tipo_filtro !== 'ccosto' ? 'display:none' : '' ?>">
          <label class="form-label">Centro de Costo</label>
          <select class="form-select" name="ccosto">
            <option value="">Seleccione un centro de costo</option>
            <?php foreach ($ccostos as $cc): ?>
              <option value="<?= htmlspecialchars($cc['ccosto']) ?>"
                <?= ($_POST['ccosto'] ?? '') === $cc['ccosto'] ? 'selected' : '' ?>>
                <?= htmlspecialchars($cc['ccosto']) ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>

        <!-- Fechas -->
        <div class="col-md-3">
          <label class="form-label">Fecha Inicial</label>
          <input type="date" class="form-control" name="fecha_inicio"
                 value="<?= htmlspecialchars($fecha_inicio) ?>" required>
        </div>
        <div class="col-md-3">
          <label class="form-label">Fecha Final</label>
          <input type="date" class="form-control" name="fecha_fin"
                 value="<?= htmlspecialchars($fecha_fin) ?>" required>
        </div>
        <div class="col-md-2 d-flex align-items-end">
          <button type="submit" class="btn btn-rojo w-100">
            <i class="fas fa-search me-1"></i> Buscar
          </button>
        </div>
      </form>
    </div>
  </div>

  <?php if ($tipo_filtro !== null): ?>

    <!-- Tarjeta datos operario (solo cuando filtra por cédula) -->
    <?php if ($tipo_filtro === 'cedula' && $operario): ?>
    <div class="card mb-4">
      <div class="card-header bg-primary text-white">
        <h5 class="mb-0">Datos del Operario</h5>
      </div>
      <div class="card-body">
        <div class="row">
          <div class="col-md-3"><p><strong>Cédula:</strong> <?= htmlspecialchars($_POST['cedula'] ?? '') ?></p></div>
          <div class="col-md-3"><p><strong>Nombre:</strong> <?= htmlspecialchars($operario['nombre'] ?? '') ?></p></div>
          <div class="col-md-2"><p><strong>Centro Costo:</strong> <?= htmlspecialchars($operario['ccosto'] ?? '') ?></p></div>
          <div class="col-md-2"><p><strong>Área:</strong> <?= htmlspecialchars($operario['area'] ?? '') ?></p></div>
          <div class="col-md-2"><p><strong>Cargo:</strong> <?= htmlspecialchars($operario['cargo'] ?? '') ?></p></div>
        </div>
      </div>
    </div>
    <?php endif; ?>

    <!-- Tabla de resultados -->
    <div class="card">
      <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0">Resultados de Entregas
          <span class="badge bg-secondary ms-2"><?= count($resultados) ?> registros</span>
        </h5>
        <!-- Botón exportar Excel -->
        <form method="post" action="index.php?controller=Consulta&action=exportarExcel">
          <input type="hidden" name="tipo_filtro_export"   value="<?= htmlspecialchars($tipo_filtro) ?>">
          <input type="hidden" name="fecha_inicio_export"  value="<?= htmlspecialchars($fecha_inicio) ?>">
          <input type="hidden" name="fecha_fin_export"     value="<?= htmlspecialchars($fecha_fin) ?>">
          <?php if ($tipo_filtro === 'cedula'): ?>
            <input type="hidden" name="cedula_export" value="<?= htmlspecialchars($_POST['cedula'] ?? '') ?>">
          <?php elseif ($tipo_filtro === 'item'): ?>
            <input type="hidden" name="item_export"   value="<?= htmlspecialchars($_POST['item'] ?? '') ?>">
          <?php elseif ($tipo_filtro === 'area'): ?>
            <input type="hidden" name="area_export"   value="<?= htmlspecialchars($_POST['area'] ?? '') ?>">
          <?php elseif ($tipo_filtro === 'ccosto'): ?>
            <input type="hidden" name="ccosto_export" value="<?= htmlspecialchars($_POST['ccosto'] ?? '') ?>">
          <?php endif; ?>
          <button type="submit" class="btn btn-success btn-sm">
            <i class="fas fa-file-excel me-1"></i> Exportar Excel
          </button>
        </form>
      </div>
      <div class="card-body">
        <div class="table-container">
          <table id="tablaEntregas" class="table table-striped table-bordered" style="width:100%">
            <thead>
              <tr>
                <th>#</th>
                <?php if ($tipo_filtro !== 'cedula'): ?>
                  <th>Cédula</th><th>Nombre</th>
                <?php endif; ?>
                <th>Fecha</th>
                <th>Código</th>
                <th>Descripción</th>
                <th>Cant.</th>
                <th class="talla-col">T.Pant</th>
                <th class="talla-col">T.Cam</th>
                <th class="talla-col">T.Bot</th>
                <th class="talla-col">T.Chaq</th>
                <th class="talla-col">T.Imp</th>
                <th>Estado</th>
                <th>Tipo Entrega</th>
                <th>Entregado Por</th>
                <?php if ($tipo_filtro !== 'cedula'): ?>
                  <th>Área</th><th>Centro Costo</th>
                <?php endif; ?>
              </tr>
            </thead>
            <tbody>
              <?php $c = 1; foreach ($resultados as $row): ?>
              <tr>
                <td><?= $c++ ?></td>
                <?php if ($tipo_filtro !== 'cedula'): ?>
                  <td><?= htmlspecialchars($row['cedula']) ?></td>
                  <td><?= htmlspecialchars($row['nombre']) ?></td>
                <?php endif; ?>
                <td><?= date('d/m/Y', strtotime($row['fEntrega'])) ?></td>
                <td><?= htmlspecialchars($row['codigo']) ?></td>
                <td><?= htmlspecialchars($row['descripcion_epp'] ?: $row['epp']) ?></td>
                <td><?= htmlspecialchars($row['cantidad']) ?></td>
                <td class="talla-col"><?= htmlspecialchars($row['TALLAPANT'] ?: '-') ?></td>
                <td class="talla-col"><?= htmlspecialchars($row['TALLACAMI'] ?: '-') ?></td>
                <td class="talla-col"><?= htmlspecialchars($row['TALLABOT']  ?: '-') ?></td>
                <td class="talla-col"><?= htmlspecialchars($row['tallachaq'] ?: '-') ?></td>
                <td class="talla-col"><?= htmlspecialchars($row['tallaimp']  ?: '-') ?></td>
                <td><?= htmlspecialchars($row['tpEstado']) ?></td>
                <td><?= htmlspecialchars($row['tpEntrega']) ?></td>
                <td><?= htmlspecialchars($row['userEntrega']) ?></td>
                <?php if ($tipo_filtro !== 'cedula'): ?>
                  <td><?= htmlspecialchars($row['area']) ?></td>
                  <td><?= htmlspecialchars($row['ccosto']) ?></td>
                <?php endif; ?>
              </tr>
              <?php endforeach; ?>
            </tbody>
          </table>
        </div>
      </div>
    </div>

  <?php endif; ?>
</div>

<!-- Modal firma -->
<div class="modal fade" id="modalFirma" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Firma del Operario</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body text-center"><img id="firmaGrande" src="" class="img-fluid"></div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
      </div>
    </div>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.js"></script>
<script src="https://cdn.datatables.net/buttons/2.2.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script src="https://cdn.datatables.net/buttons/2.2.2/js/buttons.html5.min.js"></script>
<script>
$(function() {
  // Mostrar/ocultar campos según filtro
  $('input[name="tipo_filtro"]').on('change', function() {
    $('.filter-field').hide();
    $('#' + $(this).val() + '-field').show();
  });

  // DataTable
  <?php if ($tipo_filtro !== null && !empty($resultados)): ?>
  $('#tablaEntregas').DataTable({
    language: { url: '//cdn.datatables.net/plug-ins/1.11.5/i18n/es-ES.json' },
    dom: 'Bfrtip',
    buttons: [{
      extend: 'excel',
      text: '<i class="fas fa-file-excel"></i> Exportar Excel',
      className: 'btn btn-success btn-sm',
      title: 'EntregasFiltradas'
    }],
    responsive: true,
    pageLength: 25,
    columnDefs: [{ targets: [6,7,8,9,10], width: '80px' }],
    scrollX: true
  });
  <?php endif; ?>

  function mostrarFirma(url) { $('#firmaGrande').attr('src', url); }
});
</script>
</body>
</html>