File "verificar.php"

Full Path: C:/wamp64/www/AVIDOTAPP/views/inventario/verificar.php
File size: 8.12 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">
  <title>Verificar Ingreso – Inventario Nuevo</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">
  <style>
    body { background:linear-gradient(225deg,#d0101d,#752b2a); min-height:100vh; padding:20px; }
    .card { border-radius:20px; box-shadow:0 5px 20px rgba(0,0,0,.25); }
    .card-header { background:linear-gradient(225deg,#d0101d,#752b2a); color:#fff; border-radius:20px 20px 0 0!important; }
    .card-info  { background:#f8f9fa; border-left:4px solid #d0101d; border-radius:8px; padding:12px 16px; margin-top:10px; }
    .badge-total { background:linear-gradient(225deg,#d0101d,#752b2a); color:#fff; font-size:1rem; padding:6px 14px; border-radius:20px; }
    .btn-rojo { background:linear-gradient(225deg,#d0101d,#752b2a); color:#fff; border:none; }
    .btn-rojo:hover { background:linear-gradient(225deg,#b00e1a,#632422); color:#fff; }
    .info-row input { font-size:.85rem; }
    .saved-badge { display:none; color:green; font-size:.8rem; margin-top:4px; }
  </style>
</head>
<body>
<div class="container">
  <div class="row justify-content-center">
    <div class="col-lg-10">

      <div class="card">
        <div class="card-header">
          <div class="d-flex justify-content-between align-items-center">
            <h4 class="mb-0"><i class="fas fa-clipboard-check me-2"></i>Verificar Ingreso – Inventario Nuevo</h4>
            <small class="text-white-50">Usuario: <?= htmlspecialchars($_SESSION['DIGITA'] ?? '') ?></small>
          </div>
        </div>

        <div class="card-body">

          <?php if ($msg_ok): ?>
            <div class="alert alert-success"><i class="fas fa-check-circle me-2"></i><?= $msg_ok ?></div>
          <?php endif; ?>
          <?php if ($msg_err): ?>
            <div class="alert alert-danger"><i class="fas fa-exclamation-triangle me-2"></i><?= $msg_err ?></div>
          <?php endif; ?>

          <p class="text-muted"><i class="fas fa-info-circle me-1"></i>Si el item ya existe, la cantidad se <strong>sumará</strong> a la existente.</p>

          <?php if (!empty($elementos_mostrar)): ?>

          <!-- Tabla de elementos -->
          <div class="table-responsive mb-4">
            <table class="table table-bordered align-middle">
              <thead class="table-dark">
                <tr>
                  <th>Código</th><th>Descripción</th>
                  <th class="text-center">Actual</th>
                  <th class="text-center">Añadir</th>
                  <th class="text-center">Total</th>
                  <th class="text-center" style="width:200px">Factura / Proveedor / Precio</th>
                  <th></th>
                </tr>
              </thead>
              <tbody>
                <?php foreach ($elementos_mostrar as $el):
                  $info_prev = $info_elementos[$el['codigo']] ?? [];
                ?>
                <tr>
                  <td class="fw-bold"><?= htmlspecialchars($el['codigo']) ?></td>
                  <td><?= htmlspecialchars($el['descripcion']) ?></td>
                  <td class="text-center"><?= $el['cantidad_actual'] ?></td>
                  <td class="text-center text-primary fw-bold">+<?= $el['cantidad'] ?></td>
                  <td class="text-center">
                    <span class="badge-total"><?= $el['cantidad_total'] ?></span>
                  </td>
                  <td>
                    <div class="info-row" data-codigo="<?= htmlspecialchars($el['codigo']) ?>">
                      <input class="form-control form-control-sm mb-1 inp-factura" type="text"
                             placeholder="N° Factura *"
                             value="<?= htmlspecialchars($info_prev['nfactura'] ?? '') ?>">
                      <input class="form-control form-control-sm mb-1 inp-proveedor" type="text"
                             placeholder="Proveedor *"
                             value="<?= htmlspecialchars($info_prev['provedor'] ?? '') ?>">
                      <input class="form-control form-control-sm inp-precio" type="number" min="0" step="0.01"
                             placeholder="Precio (opcional)"
                             value="<?= htmlspecialchars($info_prev['precio'] ?? '') ?>">
                      <button type="button" class="btn btn-sm btn-outline-success mt-1 btn-guardar-info">
                        <i class="fas fa-save me-1"></i>Guardar info
                      </button>
                      <div class="saved-badge"><i class="fas fa-check-circle me-1"></i>Guardado</div>
                    </div>
                  </td>
                  <td class="text-center">
                    <a href="index.php?controller=Inventario&action=verificar&eliminar=<?= urlencode($el['codigo']) ?>"
                       class="btn btn-sm btn-outline-danger" title="Quitar de la lista">
                      <i class="fas fa-trash-can"></i>
                    </a>
                  </td>
                </tr>
                <?php endforeach; ?>
              </tbody>
            </table>
          </div>

          <!-- Botones de acción -->
          <form method="post" action="index.php?controller=Inventario&action=verificar" id="formConfirmar">
            <div class="d-flex gap-2 flex-wrap">
              <a href="index.php?controller=Inventario&action=index" class="btn btn-secondary btn-lg">
                <i class="fas fa-arrow-left me-2"></i>Atrás
              </a>
              <button type="submit" name="CONFIRMA" class="btn btn-rojo btn-lg" id="btnConfirmar">
                <i class="fas fa-check me-2"></i>Confirmar Ingreso
              </button>
            </div>
          </form>

          <?php else: ?>
            <div class="alert alert-warning text-center">
              <i class="fas fa-exclamation-triangle me-2"></i>No hay elementos seleccionados.
              <a href="index.php?controller=Inventario&action=index" class="btn btn-rojo btn-sm ms-3">Ir a seleccionar</a>
            </div>
          <?php endif; ?>

        </div>
      </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://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.7.5/sweetalert2.all.min.js"></script>
<script>
$(function() {
  // Guardar info factura/proveedor/precio vía AJAX
  $('.btn-guardar-info').on('click', function() {
    const row      = $(this).closest('.info-row');
    const codigo   = row.data('codigo');
    const nfactura = row.find('.inp-factura').val().trim();
    const provedor = row.find('.inp-proveedor').val().trim();
    const precio   = row.find('.inp-precio').val();

    if (!nfactura || !provedor) {
      Swal.fire('Atención','Factura y proveedor son obligatorios','warning');
      return;
    }

    $.post('index.php?controller=Inventario&action=verificar', {
      guardar_info: 1, codigo, nfactura, provedor, precio
    }, function(res) {
      const r = JSON.parse(res);
      if (r.ok) {
        row.find('.saved-badge').fadeIn().delay(2500).fadeOut();
      }
    });
  });

  // Validar antes de confirmar
  $('#formConfirmar').on('submit', function(e) {
    const sinGuardar = [];
    $('.info-row').each(function() {
      const f = $(this).find('.inp-factura').val().trim();
      const p = $(this).find('.inp-proveedor').val().trim();
      if (!f || !p) sinGuardar.push($(this).data('codigo'));
    });
    if (sinGuardar.length > 0) {
      e.preventDefault();
      Swal.fire('Atención',
        'Guarda la información de factura y proveedor para todos los items antes de confirmar.<br><br>Pendientes: <strong>' + sinGuardar.join(', ') + '</strong>',
        'warning');
    }
  });
});
</script>
</body>
</html>