erp-core/docs/03-requerimientos/RF-catalogs/INDICE-RF-CATALOG.md

4.7 KiB

Indice de Requerimientos: MGN-005 Catalogs

Identificacion

Campo Valor
Modulo MGN-005
Nombre Catalogs - Catalogos Maestros
Prioridad P0 (Core)
Version 1.0
Fecha 2025-12-05

Descripcion General

El modulo de Catalogos proporciona datos maestros compartidos y especificos de tenant para el funcionamiento del ERP. Se divide en:

  1. Catalogos Globales - Datos compartidos por todos los tenants (paises, monedas)
  2. Catalogos por Tenant - Datos especificos de cada tenant (contacts, categorias, UoM)

Referencia Odoo:

  • res.partner - Contacts (clientes, proveedores, empleados)
  • res.country / res.country.state - Paises y estados
  • res.currency / res.currency.rate - Monedas y tasas
  • uom.category / uom.uom - Unidades de medida
  • res.partner.category - Tags/categorias de contactos

Resumen de Requerimientos

ID Titulo Prioridad Estado
RF-CATALOG-001 Gestion de Contactos Alta Draft
RF-CATALOG-002 Paises y Estados (Global) Alta Draft
RF-CATALOG-003 Monedas y Tasas de Cambio (Global) Alta Draft
RF-CATALOG-004 Unidades de Medida Media Draft
RF-CATALOG-005 Categorias y Tags Media Draft

Arquitectura de Catalogos

Catalogos Globales (Sin tenant_id)

Estos catalogos son compartidos por todos los tenants y no tienen tenant_id:

Catalogo Tabla Descripcion
Paises core_catalogs.countries ISO 3166-1 (250+ paises)
Estados core_catalogs.states Subdivisiones por pais
Monedas core_catalogs.currencies ISO 4217 (180+ monedas)
Moneda base USD Todas las tasas se referencian a USD

Rationale: Estos datos son estandares internacionales que no deben variar por tenant.

Catalogos por Tenant (Con tenant_id)

Estos catalogos tienen tenant_id y RLS aplicado:

Catalogo Tabla Descripcion
Contactos core_catalogs.contacts Clientes, proveedores, etc.
Categorias UoM core_catalogs.uom_categories Categorias de unidades
Unidades core_catalogs.uom Unidades de medida
Contact Tags core_catalogs.contact_tags Etiquetas para contactos
Tasas de cambio core_catalogs.currency_rates Tasas por tenant

Modelo de Contactos

Tipos de Contacto (Ref: Odoo res.partner)

CONTACT_TYPE:
  - company     # Empresa/Organizacion
  - individual  # Persona fisica
  - contact     # Contacto de empresa (child)

Roles de Contacto

Un contacto puede tener multiples roles:

CONTACT_ROLES:
  - customer     # Cliente (puede comprar)
  - vendor       # Proveedor (puede vender)
  - employee     # Empleado (puede ser usuario)
  - other        # Otro tipo

Campos Principales

Datos basicos:
  - name, display_name
  - contact_type (company/individual/contact)
  - parent_id (para contactos de empresa)
  - roles[] (customer, vendor, employee)

Identificacion:
  - ref (codigo interno)
  - vat (RFC/NIT/RUT)
  - company_registry

Comunicacion:
  - email, phone, mobile
  - website

Direccion:
  - street, street2, city, zip
  - state_id, country_id

Contabilidad:
  - currency_id (moneda preferida)
  - payment_terms (condiciones de pago)
  - credit_limit

Relaciones:
  - user_id (si es un usuario del sistema)
  - commercial_partner_id (empresa matriz)

Dependencias

Requiere

Modulo Razon
MGN-001 Auth Campos created_by, updated_by
MGN-004 Tenants tenant_id para catalogos por tenant

Requerido por

Modulo Razon
MGN-010 Financial Cuentas por pais, moneda
MGN-011 Inventory Productos, UoM
MGN-012 Purchasing Proveedores
MGN-013 CRM Clientes, contactos

Metricas de Exito

Metrica Objetivo
Contactos por tenant Sin limite
Busqueda de contactos < 100ms
Tasas de cambio por moneda Historico completo
UoM conversiones Precision 6 decimales

Notas de Implementacion

Diferencias con Odoo

Aspecto Odoo ERP Suite
Paises/Monedas Por company (company_id) Global (sin tenant_id)
Partner/User Herencia delegada Tablas separadas con FK
UoM Global Por tenant
Currency rates Por company Por tenant

Seed de Datos

Los catalogos globales (paises, monedas) se cargan desde archivos ISO:

  • ISO 3166-1 para paises
  • ISO 4217 para monedas
  • Datos iniciales proporcionados en migracion

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 System Creacion inicial basada en Odoo