# Refactorizacion de Tarifas en Facturacion

## Resumen ejecutivo

Se corrigio una inconsistencia funcional: al cambiar la tarifa de una Guia desde Facturacion no se persistian todos los campos derivados, por lo que el resultado podia diferir del flujo de actualizacion directa de Guia.

La solucion separo responsabilidades de forma clara:

- Backend: unifica y persiste de forma consistente todos los campos derivados.
- Frontend: evita formulas locales para items soportados y consume preview del backend.
- Documentacion: se mantiene trazabilidad de cambios y contrato operativo.

## Problema identificado

El flujo de Factura actualizaba solo un subconjunto de campos derivados. Esto causaba diferencias en montos y trazabilidad cuando se comparaba:

- Cambio de tarifa desde Guia.
- Cambio de tarifa desde Factura.

## Archivos cambiados en Backend

- src/Service/BillService.php
	- Se reemplazo la actualizacion parcial por una ruta consistente de actualizacion de Guia.
	- Se incluyeron todos los campos derivados relevantes en la persistencia.

- src/Controller/BillController.php
	- Se normalizaron campos numericos de itemsInvoice a float.
	- Se redujeron errores de tipo y divergencias por payload.

- src/Repository/GuideRepository.php
	- Se uso como punto unico de persistencia para mantener consistencia de datos derivados.

## Cambios funcionales en Backend

- Actualizacion consistente de campos derivados al cambiar tarifa en Facturacion.
- Eliminacion de logica duplicada en el flujo de factura.
- Alineacion entre actualizacion directa de Guia y actualizacion desde Factura.

## Cambios esperados en Frontend

- Consumir el endpoint de preview de tarifa y aplicar la respuesta a la fila.
- Evitar recalculo local para items soportados por backend.
- Guardar con payload alineado al contrato operativo.

## Documentos relacionados

- documentation/BILL_RATE_PREVIEW_ENDPOINT.md

## Resultado final

- Comportamiento consistente entre modulos.
- Menor riesgo de diferencias de montos por formulas duplicadas.
- Mejor capacidad de soporte y explicacion para QA, negocio y desarrollo.
