Skip to content

Plataforma técnica · Orchestrator

Servicios de Administración

Orchestrator Administración Servicios

Los servicios de administración gobiernan los datos del tenant que rara vez cambian pero condicionan toda la operación: el plan de cuentas, la razón social, el capital social, quién firma, qué cuenta contable se usa por defecto, qué feature flags están activos.

Todos son consumidos por el panel de administración en Sevastopol (islands/administracion/) y por otros servicios de dominio que necesitan resolver “¿qué cuentas existen en el plan?”, “¿cuál es la cuenta de ventas?” o “¿qué representante firma?”.

flowchart TB
  PC[("administracion.plan_contable")]

  subgraph WRITE["CRUD directo del plan"]
    COA["ChartOfAccountsService"]
  end

  subgraph DEPS["Servicios que dependen del plan"]
    CAPS["CapitalService<br/>(valida cuenta y contrapartida)"]
    CCS["ConfigContableService<br/>(valida cuenta para wiring)"]
    LRS["LegalRepService<br/>(crea sub-cuentas bajo 2204000)"]
  end

  subgraph INDEP["Servicios independientes del plan"]
    COMP["CompanyService<br/>→ configuracion_empresa"]
    SCS["SystemConfigService<br/>→ configuracion_sistema"]
  end

  subgraph EXT["Otras dependencias"]
    CO[("operaciones_sii.conceptos_operaciones")]
    BAN[("financieros.bancos + movimientos")]
  end

  COA -- CRUD --> PC
  CAPS -. valida .-> PC
  CCS -. valida .-> PC
  CCS -. valida .-> CO
  LRS -. INSERT sub-cuenta .-> PC
  LRS -. saldo socio (read) .-> BAN

Solo CapitalService emite eventos al DomainEventBus en este dominio:

EventoTriggerPayload
capital:movimientoCapitalService.create post-COMMIT{ capitalId, tipoMovimiento: APORTE|RETIRO|AJUSTE, monto }

El mapeo tipo_capital → tipoMovimiento está documentado en CapitalService › Mapeo de hook.

Los demás servicios no emiten eventos — sus mutaciones son configuración estable que no dispara cadenas reactivas. Si en el futuro SystemConfigService.updateByKey necesita avisar (e.g. para invalidar cache cross-instancia), se agrega un evento config:updated en DomainEventMap.

PatrónQuién lo aplica
BaseService.withTransaction(ctx, cb)CapitalService (create/update/delete/approve), ChartOfAccountsService.create, LegalRepService.activarCuentaSocio, LegalRepRepository.setAsActive.
BaseService.validateRequiredCapital (create), ChartOfAccounts (create), ConfigContable (create cuenta/concepto).
BaseService.assertExistsConfigContable (getCuenta, getConcepto).
Validación de RUT (^\d{7,8}-[\dkK]$)Company (update), LegalRep (create/update).
Validación de emailCompany (update).
Validación FK contra plan_contableCapital, ConfigContable.
Bloqueo de delete por dependenciasChartOfAccounts (cuentas con hijos), Capital (asientos aprobados).
Cache en memoria por tenantSystemConfig (TTL 5 min).
SchemaTablas que tocan estos servicios
administracionconfiguracion_empresa, capital, representantes_legales, configuracion_sistema, plan_contable.
operaciones_siiconfig_cuentas_contables, config_conceptos_contables, conceptos_operaciones (read-only validation).
financierosbancos, movimientos_bancarios (read-only para saldo socio).