erp-core/docs/05-user-stories/mgn-008/US-MGN-008-003-001-asignar-distribuciones-analiticas.md

2.8 KiB

US-MGN-008-003-001: Asignar Distribuciones Analíticas a Transacciones

RF Asociado: RF-MGN-008-002 Módulo: MGN-008 - Contabilidad Analítica Epic: Distribuciones Analíticas Prioridad: P0 Story Points: 5 Sprint: Sprint 19 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como contador, Quiero asignar distribuciones analíticas a líneas de asientos contables, Para trackear costos/ingresos por dimensiones.

Descripción Detallada

Al crear asiento contable, cada línea puede tener distribución analítica:

  • Línea: Cuenta 6.1.01 (Gastos), Monto $1000
  • Distribución: Proyecto A (60%), Proyecto B (40%)
  • Resultado: $600 a Proy-A, $400 a Proy-B

Criterios de Aceptación

Escenario 1: Asignar distribución simple

Dado que línea contable tiene amount=1000, Cuando asigno Proyecto-A (100%), Entonces sistema crea analytical_line con account_id=Proyecto-A, amount=1000.

Escenario 2: Distribución múltiple

Dado que línea tiene amount=1000, Cuando asigno Proyecto-A (60%), Proyecto-B (40%), Entonces sistema crea 2 analytical_lines: $600 y $400.

Escenario 3: Validar suma 100%

Dado que asigno Proyecto-A (60%), Proyecto-B (30%), Cuando intento guardar, Entonces error 400 "Distribución debe sumar 100%".

Escenario 4: Distribución obligatoria según config

Dado que cuenta contable tiene "analytical_required=true", Cuando intento guardar línea sin distribución, Entonces error 400 "Distribución analítica obligatoria".

Reglas de Negocio

  • RN-1: Suma de porcentajes debe ser 100%.
  • RN-2: Puede ser obligatoria según configuración de cuenta.
  • RN-3: Se replica en cada plan configurado.

Tareas Técnicas

Backend

  • Service: AnalyticalLineService.create(journalLine, distributions)
  • Validar suma 100%
  • Validar obligatoriedad
  • Unit tests

Frontend

  • Componente: AnalyticalDistributionInput.tsx
  • Selector de cuentas analíticas
  • Slider/input para porcentajes
  • Validación en tiempo real

Database

  • Tabla: analytics.lines (journal_line_id, account_id, amount, percentage)
  • FK: journal_line_id, account_id

Estimación Detallada

Tarea Horas
Backend 2
Frontend 2
Testing 2
TOTAL 6 horas = 5 SP

Definition of Done

  • Distribución funcional
  • Validaciones correctas
  • Tests >80%
  • QA/PO aprobado

Referencias