# TRACEABILITY - MAE-012: Compras metadata: modulo: MAE-012 nombre: Compras tipo: Maestro version: 1.0.0 fecha: 2025-12-06 reutilizacion_core: 85% descripcion: Gestión integral del proceso de compras incluyendo requisiciones, cotizaciones, órdenes de compra y recepción de materiales dependencias: - MGN-001 # Usuarios y Autenticación - MGN-002 # RBAC - MGN-003 # Multi-tenancy - MGN-005 # Catálogos - MAE-013 # Inventarios apps_moviles: - MOB-002 # Almacenista (para recepción en campo) # ============================================================================ # REQUERIMIENTOS FUNCIONALES # ============================================================================ requerimientos: - id: RF-COMP-001 titulo: Requisiciones de Compra descripcion: Gestión de solicitudes de compra de materiales y servicios prioridad: alta especificaciones: - id: ESP-COMP-001-01 descripcion: Crear requisiciones de compra con múltiples partidas - id: ESP-COMP-001-02 descripcion: Definir proveedor sugerido, cantidad, unidad y fecha requerida - id: ESP-COMP-001-03 descripcion: Flujo de aprobación multinivel configurable - id: ESP-COMP-001-04 descripcion: Estados (borrador, enviada, aprobada, rechazada, convertida, cancelada) - id: ESP-COMP-001-05 descripcion: Conversión de requisiciones aprobadas a órdenes de compra - id: ESP-COMP-001-06 descripcion: Vinculación con proyectos y centros de costo historias_usuario: - id: US-COMP-001-01 titulo: Como usuario autorizado necesito crear requisiciones de compra criterios_aceptacion: - Seleccionar tipo de requisición (material, servicio, activo) - Agregar partidas con descripción, cantidad y especificaciones - Definir proveedor sugerido (opcional) - Establecer fecha requerida y prioridad - Adjuntar documentos de soporte - Guardar como borrador o enviar a aprobación - id: US-COMP-001-02 titulo: Como aprobador necesito revisar y aprobar/rechazar requisiciones criterios_aceptacion: - Ver lista de requisiciones pendientes de mi aprobación - Revisar detalle completo de la requisición - Aprobar, rechazar o solicitar modificaciones - Agregar comentarios y observaciones - Recibir notificación de nuevas requisiciones - id: US-COMP-001-03 titulo: Como comprador necesito consultar requisiciones aprobadas criterios_aceptacion: - Ver requisiciones aprobadas pendientes de proceso - Filtrar por fecha, solicitante, tipo, prioridad - Agrupar requisiciones para órdenes consolidadas - Exportar listados para análisis tablas: - purchasing_management.requisiciones - purchasing_management.requisiciones_detalle - purchasing_management.requisiciones_aprobaciones - purchasing_management.requisiciones_documentos endpoints: - POST /api/v1/requisiciones - GET /api/v1/requisiciones - GET /api/v1/requisiciones/:id - PUT /api/v1/requisiciones/:id - DELETE /api/v1/requisiciones/:id - POST /api/v1/requisiciones/:id/enviar - POST /api/v1/requisiciones/:id/aprobar - POST /api/v1/requisiciones/:id/rechazar - POST /api/v1/requisiciones/:id/cancelar - GET /api/v1/requisiciones/pendientes-aprobacion componentes_ui: - RequisicionesListView - RequisicionFormModal - RequisicionDetailView - RequisicionApprovalPanel - RequisicionItemsTable - RequisicionWorkflowTimeline - RequisicionAttachmentsPanel integraciones: - modulo: MGN-005 descripcion: Catálogo de proveedores, materiales y servicios - modulo: MAE-013 descripcion: Validación de existencias antes de requisicionar estado: pendiente - id: RF-COMP-002 titulo: Órdenes de Compra descripcion: Gestión completa del ciclo de vida de órdenes de compra prioridad: alta especificaciones: - id: ESP-COMP-002-01 descripcion: Crear órdenes de compra manual o desde requisiciones - id: ESP-COMP-002-02 descripcion: Definir condiciones comerciales (precio, descuentos, plazo, forma de pago) - id: ESP-COMP-002-03 descripcion: Generar folio consecutivo automático por ejercicio - id: ESP-COMP-002-04 descripcion: Cálculo automático de subtotales, impuestos y total - id: ESP-COMP-002-05 descripcion: Estados (borrador, enviada, confirmada, recibida parcial, recibida total, cancelada) - id: ESP-COMP-002-06 descripcion: Generación de documento PDF con formato personalizable - id: ESP-COMP-002-07 descripcion: Envío automático por email al proveedor - id: ESP-COMP-002-08 descripcion: Control de recepciones parciales y totales historias_usuario: - id: US-COMP-002-01 titulo: Como comprador necesito crear órdenes de compra criterios_aceptacion: - Seleccionar proveedor del catálogo - Agregar partidas manualmente o desde requisiciones - Definir precio unitario, descuentos y condiciones - Calcular impuestos según configuración fiscal - Especificar condiciones de pago y entrega - Agregar notas y observaciones - Guardar como borrador o enviar - id: US-COMP-002-02 titulo: Como comprador necesito enviar órdenes de compra a proveedores criterios_aceptacion: - Generar PDF con formato corporativo - Previsualizar documento antes de enviar - Enviar por email al proveedor automáticamente - Registrar fecha y hora de envío - Reenviar si es necesario - id: US-COMP-002-03 titulo: Como comprador necesito dar seguimiento a órdenes de compra criterios_aceptacion: - Ver dashboard con estado de todas las órdenes - Consultar órdenes pendientes de recepción - Identificar órdenes con atraso en entrega - Generar reportes de órdenes por período - Filtrar por proveedor, estado, proyecto tablas: - purchasing_management.ordenes_compra - purchasing_management.ordenes_compra_detalle - purchasing_management.ordenes_compra_condiciones - purchasing_management.ordenes_compra_documentos - purchasing_management.ordenes_compra_seguimiento endpoints: - POST /api/v1/ordenes-compra - GET /api/v1/ordenes-compra - GET /api/v1/ordenes-compra/:id - PUT /api/v1/ordenes-compra/:id - DELETE /api/v1/ordenes-compra/:id - POST /api/v1/ordenes-compra/:id/enviar - POST /api/v1/ordenes-compra/:id/confirmar - POST /api/v1/ordenes-compra/:id/cancelar - GET /api/v1/ordenes-compra/:id/pdf - POST /api/v1/ordenes-compra/:id/enviar-email - GET /api/v1/ordenes-compra/pendientes-recepcion componentes_ui: - OrdenesCompraListView - OrdenCompraFormModal - OrdenCompraDetailView - OrdenCompraItemsTable - OrdenCompraPDFPreview - OrdenCompraStatusBadge - OrdenCompraTimelineView - OrdenCompraEmailModal integraciones: - modulo: RF-COMP-001 descripcion: Generación desde requisiciones aprobadas - modulo: RF-COMP-004 descripcion: Vinculación con recepciones de material - modulo: MGN-005 descripcion: Catálogo de proveedores y productos estado: pendiente - id: RF-COMP-003 titulo: Cotizaciones descripcion: Gestión del proceso de solicitud y comparación de cotizaciones prioridad: media especificaciones: - id: ESP-COMP-003-01 descripcion: Crear solicitudes de cotización a múltiples proveedores - id: ESP-COMP-003-02 descripcion: Definir partidas a cotizar con especificaciones técnicas - id: ESP-COMP-003-03 descripcion: Establecer fecha límite de recepción de cotizaciones - id: ESP-COMP-003-04 descripcion: Registrar cotizaciones recibidas de proveedores - id: ESP-COMP-003-05 descripcion: Comparar cotizaciones en tabla comparativa - id: ESP-COMP-003-06 descripcion: Seleccionar proveedor ganador y generar orden de compra - id: ESP-COMP-003-07 descripcion: Estados (borrador, enviada, recibiendo, evaluación, adjudicada, cancelada) historias_usuario: - id: US-COMP-003-01 titulo: Como comprador necesito solicitar cotizaciones a proveedores criterios_aceptacion: - Crear solicitud con partidas a cotizar - Definir especificaciones técnicas requeridas - Seleccionar proveedores a invitar - Establecer fecha límite de respuesta - Generar y enviar documento de solicitud - id: US-COMP-003-02 titulo: Como comprador necesito registrar cotizaciones recibidas criterios_aceptacion: - Capturar cotización recibida por cada proveedor - Registrar precios, plazos y condiciones - Adjuntar documento de cotización (PDF) - Marcar cotización como recibida - Notificar recepción al solicitante - id: US-COMP-003-03 titulo: Como comprador necesito comparar cotizaciones criterios_aceptacion: - Ver tabla comparativa de todas las cotizaciones - Comparar precios unitarios y totales - Evaluar condiciones de pago y entrega - Identificar mejor opción por partida - Generar cuadro comparativo para aprobación - Seleccionar proveedor ganador - Convertir a orden de compra tablas: - purchasing_management.solicitudes_cotizacion - purchasing_management.solicitudes_cotizacion_detalle - purchasing_management.solicitudes_cotizacion_proveedores - purchasing_management.cotizaciones - purchasing_management.cotizaciones_detalle - purchasing_management.comparativo_cotizaciones endpoints: - POST /api/v1/cotizaciones/solicitudes - GET /api/v1/cotizaciones/solicitudes - GET /api/v1/cotizaciones/solicitudes/:id - PUT /api/v1/cotizaciones/solicitudes/:id - POST /api/v1/cotizaciones/solicitudes/:id/enviar - POST /api/v1/cotizaciones - GET /api/v1/cotizaciones - GET /api/v1/cotizaciones/:id - PUT /api/v1/cotizaciones/:id - GET /api/v1/cotizaciones/comparativo/:solicitud_id - POST /api/v1/cotizaciones/:id/adjudicar componentes_ui: - SolicitudCotizacionListView - SolicitudCotizacionFormModal - SolicitudCotizacionDetailView - CotizacionFormModal - CotizacionDetailView - ComparativoCotizacionesTable - CotizacionAdjudicacionModal integraciones: - modulo: RF-COMP-001 descripcion: Generación desde requisiciones - modulo: RF-COMP-002 descripcion: Conversión a órdenes de compra - modulo: MGN-005 descripcion: Catálogo de proveedores estado: pendiente - id: RF-COMP-004 titulo: Recepción de Materiales descripcion: Registro y control de recepción de materiales en almacén y campo prioridad: alta especificaciones: - id: ESP-COMP-004-01 descripcion: Registrar recepción completa o parcial de órdenes de compra - id: ESP-COMP-004-02 descripcion: Validar cantidad recibida vs cantidad ordenada - id: ESP-COMP-004-03 descripcion: Registrar diferencias, faltantes o daños - id: ESP-COMP-004-04 descripcion: Captura de información de lote, serie, caducidad - id: ESP-COMP-004-05 descripcion: Generación automática de entrada a inventario - id: ESP-COMP-004-06 descripcion: Firma digital del almacenista receptor - id: ESP-COMP-004-07 descripcion: Modo offline en app móvil con sincronización posterior - id: ESP-COMP-004-08 descripcion: Actualización automática del estado de la orden de compra historias_usuario: - id: US-COMP-004-01 titulo: Como almacenista necesito registrar recepciones desde escritorio criterios_aceptacion: - Ver lista de órdenes pendientes de recepción - Seleccionar orden de compra a recibir - Registrar cantidad recibida por partida - Capturar información de lote/serie si aplica - Documentar diferencias o daños - Generar comprobante de recepción - Actualizar automáticamente inventario - id: US-COMP-004-02 titulo: Como almacenista necesito registrar recepciones desde app móvil (MOB-002) criterios_aceptacion: - Consultar órdenes pendientes en dispositivo móvil - Escanear código de barras de productos - Registrar cantidad recibida con teclado numérico - Capturar fotos de material recibido - Registrar firma digital del proveedor - Documentar incidencias (faltantes, daños) - Trabajar en modo offline si no hay conexión - Sincronizar recepciones al recuperar conexión - Recibir confirmación de registro exitoso - id: US-COMP-004-03 titulo: Como comprador necesito consultar recepciones realizadas criterios_aceptacion: - Ver historial de recepciones por orden - Identificar recepciones parciales pendientes - Consultar diferencias reportadas - Generar reporte de materiales recibidos - Dar seguimiento a incidencias tablas: - purchasing_management.recepciones - purchasing_management.recepciones_detalle - purchasing_management.recepciones_incidencias - purchasing_management.recepciones_documentos endpoints: - POST /api/v1/recepciones - GET /api/v1/recepciones - GET /api/v1/recepciones/:id - PUT /api/v1/recepciones/:id - GET /api/v1/recepciones/orden-compra/:oc_id - POST /api/v1/recepciones/:id/incidencia - POST /api/v1/recepciones/:id/firmar - POST /api/v1/recepciones/sync # Para sincronización móvil componentes_ui: - RecepcionesListView - RecepcionFormModal - RecepcionDetailView - RecepcionItemsTable - RecepcionIncidenciasPanel - RecepcionSignaturePad - RecepcionPhotoGallery app_movil: MOB-002 funcionalidades_movil: - Consultar órdenes pendientes de recepción - Escanear códigos de barras/QR - Registrar cantidades recibidas - Capturar fotos de materiales - Registrar firma digital del proveedor - Documentar incidencias (faltantes, daños) - Modo offline con almacenamiento local - Sincronización automática en background - Notificaciones push de nuevas órdenes integraciones: - modulo: RF-COMP-002 descripcion: Actualización de estado de órdenes de compra - modulo: MAE-013 descripcion: Generación de entradas a inventario - modulo: MOB-002 descripcion: Registro de recepciones en campo estado: pendiente # ============================================================================ # APLICACIÓN MÓVIL # ============================================================================ app_movil: id: MOB-002 nombre: Almacenista descripcion: Aplicación móvil para almacenistas en campo y almacén plataformas: - Android - iOS tecnologias: - React Native - Expo - SQLite (offline storage) - Axios (API sync) - React Native Camera - React Native Signature Capture funcionalidades: - login_offline: Autenticación con modo offline - consulta_ordenes: Consulta de órdenes pendientes de recepción - escaneo_codigos: Escaneo de códigos de barras y QR - registro_recepciones: Registro de recepciones con cantidades - captura_fotos: Captura de fotografías de materiales - firma_digital: Captura de firma del proveedor - documentar_incidencias: Registro de faltantes y daños - sincronizacion: Sincronización automática con servidor - notificaciones_push: Notificaciones de nuevas órdenes - modo_offline: Funcionamiento sin conexión requerimientos_vinculados: - RF-COMP-002 # Consulta de órdenes de compra - RF-COMP-004 # Recepción de materiales estado: pendiente # ============================================================================ # ESQUEMAS DE BASE DE DATOS # ============================================================================ esquemas: - nombre: purchasing_management descripcion: Esquema para gestión de compras tablas: - requisiciones - requisiciones_detalle - requisiciones_aprobaciones - requisiciones_documentos - ordenes_compra - ordenes_compra_detalle - ordenes_compra_condiciones - ordenes_compra_documentos - ordenes_compra_seguimiento - solicitudes_cotizacion - solicitudes_cotizacion_detalle - solicitudes_cotizacion_proveedores - cotizaciones - cotizaciones_detalle - comparativo_cotizaciones - recepciones - recepciones_detalle - recepciones_incidencias - recepciones_documentos # ============================================================================ # POLÍTICAS RLS # ============================================================================ rls_policies: archivo: ET-COMP-rls-policies.sql descripcion: Políticas de seguridad a nivel de fila para multi-tenancy tablas_protegidas: - purchasing_management.requisiciones - purchasing_management.ordenes_compra - purchasing_management.cotizaciones - purchasing_management.recepciones # ============================================================================ # REPORTES # ============================================================================ reportes: - id: REP-COMP-001 nombre: Requisiciones por Estado descripcion: Listado de requisiciones agrupadas por estado parametros: [fecha_inicio, fecha_fin, estado, solicitante_id] - id: REP-COMP-002 nombre: Órdenes de Compra Emitidas descripcion: Detalle de órdenes de compra emitidas por período parametros: [fecha_inicio, fecha_fin, proveedor_id, proyecto_id] - id: REP-COMP-003 nombre: Órdenes Pendientes de Recepción descripcion: Órdenes con recepciones parciales o pendientes parametros: [dias_atraso, proveedor_id, almacen_id] - id: REP-COMP-004 nombre: Comparativo de Cotizaciones descripcion: Cuadro comparativo de cotizaciones recibidas parametros: [solicitud_cotizacion_id] - id: REP-COMP-005 nombre: Incidencias en Recepciones descripcion: Reporte de faltantes y daños en recepciones parametros: [fecha_inicio, fecha_fin, tipo_incidencia, proveedor_id] - id: REP-COMP-006 nombre: Análisis de Compras por Proveedor descripcion: Estadísticas de compras realizadas por proveedor parametros: [fecha_inicio, fecha_fin, proveedor_id] # ============================================================================ # NOTIFICACIONES # ============================================================================ notificaciones: - evento: requisicion_enviada destinatarios: [aprobadores, jefe_compras] canal: [email, app] - evento: requisicion_aprobada destinatarios: [solicitante, comprador_asignado] canal: [email, app] - evento: requisicion_rechazada destinatarios: [solicitante] canal: [email, app] - evento: orden_compra_creada destinatarios: [proveedor, solicitante] canal: [email] - evento: orden_compra_enviada destinatarios: [proveedor, almacenista] canal: [email] - evento: orden_pendiente_recepcion destinatarios: [almacenista] canal: [app, push_movil] - evento: recepcion_registrada destinatarios: [comprador, solicitante] canal: [app] - evento: incidencia_recepcion destinatarios: [comprador, jefe_almacen] canal: [email, app] - evento: cotizacion_venciendo destinatarios: [comprador] canal: [email, app] # ============================================================================ # MÉTRICAS Y KPIs # ============================================================================ metricas: - nombre: tiempo_aprobacion_requisiciones descripcion: Tiempo promedio de aprobación de requisiciones unidad: horas objetivo: "< 24 horas" - nombre: tasa_rechazo_requisiciones descripcion: Porcentaje de requisiciones rechazadas unidad: porcentaje objetivo: "< 10%" - nombre: cumplimiento_entregas descripcion: Porcentaje de órdenes entregadas a tiempo unidad: porcentaje objetivo: "> 90%" - nombre: ahorro_por_cotizaciones descripcion: Ahorro obtenido por proceso de cotización unidad: porcentaje objetivo: "> 8%" - nombre: incidencias_recepcion descripcion: Porcentaje de recepciones con incidencias unidad: porcentaje objetivo: "< 5%" - nombre: tiempo_registro_recepcion descripcion: Tiempo promedio de registro de recepción unidad: minutos objetivo: "< 15 minutos" # ============================================================================ # VALIDACIONES Y REGLAS DE NEGOCIO # ============================================================================ reglas_negocio: - codigo: RN-COMP-001 descripcion: Toda requisición debe tener al menos un aprobador asignado - codigo: RN-COMP-002 descripcion: No se puede crear orden de compra sin requisición aprobada o autorización especial - codigo: RN-COMP-003 descripcion: El total de la orden de compra debe calcularse con impuestos según configuración fiscal - codigo: RN-COMP-004 descripcion: Las cotizaciones deben tener al menos 3 proveedores para compras mayores a monto configurado - codigo: RN-COMP-005 descripcion: La cantidad recibida puede ser menor o igual a la ordenada, nunca mayor - codigo: RN-COMP-006 descripcion: Toda recepción con incidencias debe generar notificación al comprador - codigo: RN-COMP-007 descripcion: Las recepciones parciales deben actualizar el estado de la orden a "recibida parcial" # ============================================================================ # SEGURIDAD # ============================================================================ seguridad: permisos: - compras.requisiciones.crear - compras.requisiciones.leer - compras.requisiciones.editar - compras.requisiciones.eliminar - compras.requisiciones.aprobar - compras.ordenes.crear - compras.ordenes.leer - compras.ordenes.editar - compras.ordenes.eliminar - compras.ordenes.enviar - compras.cotizaciones.crear - compras.cotizaciones.leer - compras.cotizaciones.evaluar - compras.recepciones.crear - compras.recepciones.leer - compras.recepciones.firmar - compras.reportes.generar roles_sugeridos: - nombre: solicitante permisos: [compras.requisiciones.crear, compras.requisiciones.leer] - nombre: aprobador permisos: [compras.requisiciones.leer, compras.requisiciones.aprobar] - nombre: comprador permisos: [compras.requisiciones.*, compras.ordenes.*, compras.cotizaciones.*] - nombre: almacenista permisos: [compras.ordenes.leer, compras.recepciones.*] - nombre: jefe_compras permisos: [compras.*] # ============================================================================ # PRUEBAS # ============================================================================ pruebas: unitarias: - validar_flujo_aprobacion_requisiciones - calcular_totales_orden_compra - validar_cantidad_recibida_vs_ordenada - procesar_sincronizacion_movil integracion: - flujo_completo_requisicion_a_orden - proceso_cotizacion_y_adjudicacion - recepcion_y_actualizacion_inventario - sincronizacion_app_movil_offline e2e: - proceso_completo_compra_material - aprobacion_multinivel_requisiciones - recepcion_movil_con_incidencias - comparativo_cotizaciones_y_adjudicacion # ============================================================================ # CRONOGRAMA ESTIMADO # ============================================================================ cronograma: - fase: Análisis y Diseño duracion: 2 semanas entregables: [modelos_datos, diagramas_flujo, especificaciones_api] - fase: Desarrollo Backend duracion: 5 semanas entregables: [api_requisiciones, api_ordenes, api_cotizaciones, api_recepciones, rls_policies] - fase: Desarrollo Frontend duracion: 4 semanas entregables: [ui_requisiciones, ui_ordenes, ui_cotizaciones, ui_recepciones] - fase: Desarrollo App Móvil duracion: 3 semanas entregables: [app_almacenista_mob002, modo_offline, sincronizacion] - fase: Integración duracion: 2 semanas entregables: [integracion_inventarios, integracion_catalogos] - fase: Pruebas duracion: 2 semanas entregables: [pruebas_unitarias, pruebas_integracion, pruebas_usuario, pruebas_movil] - fase: Documentación y Capacitación duracion: 1 semana entregables: [manual_usuario, manual_tecnico, manual_app_movil, videos_capacitacion] # ============================================================================ # NOTAS DE IMPLEMENTACIÓN # ============================================================================ notas: - Priorizar desarrollo de RF-COMP-001 y RF-COMP-002 (flujo básico de compras) - Desarrollar app móvil MOB-002 en paralelo con RF-COMP-004 (recepciones) - Implementar sincronización offline-online robusta para app móvil - Considerar integración futura con proveedores vía EDI o API - Evaluar uso de códigos QR para trazabilidad de materiales - La app MOB-002 es crítica para recepción en campo, priorizar su estabilidad - Documentar protocolo de resolución de conflictos en sincronización offline - Implementar versionado de recepciones para auditoría completa