> ## Documentation Index
> Fetch the complete documentation index at: https://reduardo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Validaciones

> Validación de precios, existencia y SKU duplicado

# Validaciones de Datos

El sistema implementa validaciones tanto en el frontend (HTML5) como en el backend (PHP) para garantizar la integridad de los datos.

## Validación de Precio de Venta ≥ Precio de Compra

El precio de venta nunca puede ser menor que el precio de compra. Si se intenta, el sistema muestra un error.

```php theme={null}
if ((float) $data['precio_venta'] < (float) $data['precio_compra']) {
    $_SESSION['error'] = 'El precio de venta debe ser mayor o igual al precio de compra.';
    // Redirigir de vuelta al formulario
}
```

## Validación de Existencia ≥ 0

La existencia no puede ser un número negativo.

```php theme={null}
if ((int) $data['existencia'] < 0) {
    $_SESSION['error'] = 'La existencia debe ser mayor o igual a 0.';
}
```

## Detección de SKU Duplicado

Al crear o editar un producto, el sistema verifica que el SKU no esté ya registrado.

```php theme={null}
// Al crear: verificar que no exista
if ($this->productoModel->existePorSku($data['sku'])) {
    $_SESSION['error'] = 'El SKU ya está registrado.';
}

// Al editar: excluir el producto actual
if ($this->productoModel->existePorSku($data['sku'], $id)) {
    $_SESSION['error'] = 'El SKU ya está registrado en otro producto.';
}
```

<Note>
  El método `existePorSku()` acepta un segundo parámetro opcional `$exceptoId` que excluye el producto actual al editar, evitando falsos positivos.
</Note>

## Validación de Campos Numéricos

Todos los campos de precio y existencia se validan como numéricos antes de procesarse.

```php theme={null}
if (!is_numeric($data['precio_compra']) || !is_numeric($data['precio_venta'])
    || !is_numeric($data['existencia'])) {
    $_SESSION['error'] = 'Los precios y existencia deben ser numéricos.';
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.