# Progress

**What works**

- Modulo Producto ahora expone importacion desde Excel con modal, descarga de plantilla, validacion previa e importacion batch.
- La plantilla de productos se genera con referencias de monedas, unidades, locales y listas de precios activas.
- La importacion crea `producto`, `producto_costo_unitario`, `unidades_has_producto`, `unidades_has_precio` y `producto_almacen`, y ejecuta ajuste inicial cuando aplica.
- Se corrigio la codificacion de impresion/PDF en ventas/cotizacion: mPDF usa `utf-8` y las vistas decodifican entidades antes de mostrar/uppercase.
- Los nombres de producto en plantillas de factura ahora usan `mb_strtoupper` seguro para acentos/ñ.
- Se cubrieron tambien los layouts legacy `ticket_pdf`, `factura_pdf_original` y `factura_pdf_actual`.
- Se normalizo el flujo de cotizacion (`Cotizar`, `cotizar_pdf`, `ticket`, `cotizar_imprimir`) para evitar acentos/ñ rotos en historial, impresion y PDF.

**Not started / backlog**

- Prueba funcional completa desde `http://localhost/erp/producto` con archivo real.
- Soporte adicional para series, imagenes y mas niveles de unidad si el negocio lo requiere.
- Confirmar en QA todos los formatos de impresion activos (factura_imprimir, factura_pdf y layouts legacy `documento*`).
- Confirmar en QA tambien los formatos legacy de ticket/factura usados por POS.
- Confirmar en QA la impresion/PDF desde `cotizar/historial` y la descarga enviada por correo.

**Known issues**

- El flujo fue validado con lint PHP, pero no se ejecuto prueba E2E en navegador durante esta sesion.
- El ajuste inicial hereda la logica actual del formulario y conviene validar su efecto contable cuando se seleccionan varios locales.
- Persisten warnings de entorno PHP local (`Module "openssl" is already loaded`) no relacionados al cambio.

_Keep bullets factual and small; link issues or PRs when useful._
