# 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 |