# US-MGN-008-002-001: CRUD Cuentas Analíticas por Plan **RF Asociado:** [RF-MGN-008-001](../../02-modelado/requerimientos-funcionales/mgn-008/RF-MGN-008-001-gestión-de-cuentas-analíticas.md) **Módulo:** MGN-008 - Contabilidad Analítica **Epic:** Cuentas Analíticas **Prioridad:** P0 **Story Points:** 3 **Sprint:** Sprint 18 **Estado:** Ready for Development **Fecha:** 2025-11-24 --- ## User Story **Como** contador, **Quiero** crear cuentas analíticas dentro de cada plan, **Para** registrar transacciones en dimensiones específicas. ## Descripción Detallada Cuenta analítica representa un elemento dentro de un plan: - Plan "Proyectos" → Cuentas: "Proyecto A", "Proyecto B" - Plan "Departamentos" → Cuentas: "IT", "Ventas", "Marketing" Cada cuenta tiene: código, nombre, plan_id, activo, parent_id (jerarquía opcional). ## Criterios de Aceptación ### Escenario 1: Crear cuenta analítica **Dado que** plan id=1 existe, **Cuando** creo cuenta con code="PROJ-A", name="Proyecto A", plan_id=1, **Entonces** sistema crea cuenta exitosamente. ### Escenario 2: Código único por plan **Dado que** cuenta "PROJ-A" existe en plan_id=1, **Cuando** intento crear otra con mismo código en plan_id=1, **Entonces** error 400 "Código ya existe en este plan". ### Escenario 3: Mismo código en diferente plan (permitido) **Dado que** cuenta "IT" existe en plan="Departamentos", **Cuando** creo cuenta "IT" en plan="Categorías", **Entonces** sistema permite (códigos independientes por plan). ## Reglas de Negocio - **RN-1:** Código único por plan. - **RN-2:** Cuenta pertenece a un solo plan. - **RN-3:** Cuenta puede tener parent_id (jerarquía). ## Tareas Técnicas ### Backend - [ ] Endpoint: POST/GET/PUT/DELETE `/api/v1/analytics/accounts` - [ ] Service: `AnalyticalAccountService` (CRUD) - [ ] Validar code único por plan - [ ] Unit/Integration tests ### Frontend - [ ] Página: `AnalyticalAccountsPage.tsx` - [ ] Formulario CRUD - [ ] Filtro por plan - [ ] Component tests ### Database - [ ] Tabla: `analytics.accounts` (id, plan_id, code, name, parent_id, active) - [ ] Constraint: unique(plan_id, code) - [ ] FK: plan_id, parent_id ## Estimación Detallada | Tarea | Horas | |-------|-------| | Backend | 1.5 | | Frontend | 1.5 | | Testing | 1 | | **TOTAL** | **4 horas = 3 SP** | ## Definition of Done - [ ] CRUD completo - [ ] Tests >80% - [ ] Validaciones aplicadas - [ ] QA/PO aprobado ## Referencias - [RF-MGN-008-001](../../02-modelado/requerimientos-funcionales/mgn-008/RF-MGN-008-001-gestión-de-cuentas-analíticas.md) - [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-008.yaml)