# Actualizar de v1.0.0 a v1.1.0

## Windows / XAMPP

1. Respalda tu base (phpMyAdmin o `php artisan farmacia:backup`) y conserva `.env` y APP_KEY. Cierra los servidores de desarrollo para copiar los archivos.
2. Copia el contenido del backend v1.1.0 a la carpeta del backend instalado, sobrescribiendo código y `vendor`. **Conserva tu `.env` y tus archivos de `storage`. No uses una base nueva ni ejecutes `migrate:fresh`.**
3. Ejecuta `ACTUALIZAR.bat`. Aplica una migración que agrega `product_imports` y limpia cachés. No cambia la clave, no borra productos/ventas ni crea otro administrador. Después ejecuta `INICIAR.bat`.

La importación necesita nuevas extensiones PHP: **GD y ZIP**, además de las existentes. En el `php.ini` que corresponda habilita `extension=gd` y `extension=zip` y reinicia Apache o el servidor PHP. Si consola y web usan instalaciones distintas, habilítalas en ambas. `php --ini` indica cuál usa la consola. Se incluye `verificar_php.php` para comprobar las extensiones y `php.ini.ejemplo` con límites sugeridos de carga.

Frontend: copia los archivos nuevos conservando `.env`, ejecuta `npm ci` y `npm run dev` (o `INICIAR.bat`). Para hosting ejecuta `COMPILAR.bat` con la URL real configurada y sube el nuevo contenido de `dist`. Los puertos siguen siendo 8016 y 5184.

## Servidor Linux

Con los archivos nuevos, permisos correctos, respaldo y `.env` conservado:

```sh
php verificar_php.php
php artisan optimize:clear
php artisan migrate --seed --force
```

Se incluye `vendor` de producción. Si no lo utilizas: `composer install --no-dev --prefer-dist` antes de los comandos anteriores. Después se puede ejecutar `php artisan config:cache`. Mantén DocumentRoot en `public` y HTTPS.

## Importar productos

En **Productos → Importar Excel**:

1. Descarga XLS o XLSX. Completa `Productos` desde la fila 2; no cambies encabezados, orden ni nombre de la hoja. La hoja `Instrucciones` explica campos y valores. Se dejan 200 filas formateadas, pero se admiten hasta 2000 filas de productos extendiendo el mismo diseño.
2. Sube el archivo y elige detener ante códigos existentes u omitirlos. Se aceptan hasta 5 MB. Mantén códigos como texto, precios en Bs sin separador de miles y hasta dos decimales. No se admiten fórmulas, macros, objetos incrustados ni vínculos externos en XLSX.
3. Revisa errores por fila y descarga la revisión CSV si lo necesitas. Si hay cualquier fila inválida, el sistema no confirma ninguna fila. Corrige el Excel y vuelve a cargarlo.
4. Marca que revisaste los datos y confirma. Los existentes nunca se sobrescriben. Los nuevos quedan **pendientes de revisión sanitaria**, aunque el archivo tenga número de registro. Las presentaciones son Unidad, y opcionalmente Blíster/Caja con factores de unidades base.

La vista previa vence en 30 minutos. Un reintento de la misma confirmación no duplica productos. Si otro usuario registró un código después de la revisión, el sistema vuelve a comprobarlo: lo omite en modo omitir o rechaza toda la confirmación en modo detener. No hay creación parcial silenciosa.

El catálogo importado no ingresa cantidades ni lotes. Una vez revisados los productos, registra la compra para ingresar stock por lote y su vencimiento. Las modalidades archivada/valorada continúan bloqueadas para venta hasta implementar sus procedimientos específicos. Los campos y verificaciones sanitarias existentes se conservan.

## Vencimientos

El producto es la ficha general. **Cada lote tiene su propia fecha**. Si recibes dos lotes o dos fechas distintas, agrega dos líneas en la compra, aunque el producto sea el mismo.

La v1 ya bloqueaba ventas de lotes vencidos. La v1.1 añade:

- Próximo vencimiento de un lote disponible en Productos y POS (solo lotes con stock, disponibles y no vencidos).
- Ayuda visible en el alta de productos y en compras.
- Filtros de lotes vencidos o que vencen en los próximos 30, 60 o 90 días. Los filtros de próximos vencimientos excluyen los ya vencidos e incluyen lotes físicos con stock aunque estén en cuarentena, para su revisión.
- Aviso de vencidos con existencias en el resumen y contador total de próximos vencimientos, independiente del límite de diez filas de la tabla.
- Acceso desde el detalle de producto a sus lotes en inventario.

Los QR BNB/SIP siguen pendientes de documentación. No se cambió su funcionamiento.
