Cosmos.Contabilidad.Contratos
Contratos del sub-dominio de Contabilidad del ERP Cosmos. Este paquete contiene los records para comunicarse con el Motor de Traducción (N1) y recibir resultados de contabilización. Es agnóstico al transporte — no trae dependencias de mensajería.
Si usas Wolverine, instala además Cosmos.Contabilidad.Mensajeria para obtener el método de extensión HabilitarContabilidad.
Instalación
dotnet add package Cosmos.Contabilidad.Contratos
Novedades v0.1.0
- Nuevo
HechoEconomicoRecibido(Origen, Fecha): el acuse. Contabilidad lo publica en cuanto guarda el hecho, por
el mismo topic de respuestas (contabilidad-respuestas). Dice "Contabilidad lo tiene"; no dice si se tradujo ni si
se contabilizó.
- Eliminado
HechoEconomicoRechazado (y MotivoRechazo): Contabilidad ya no le devuelve rechazos al emisor. Lo que
no puede traducir queda en su propia bandeja, con su motivo, y lo resuelve Contabilidad. Al emisor solo le llegan el
acuse y HechoEconomicoContabilizado.
- Validación en los constructores (cambio de comportamiento): armar un record con datos que el contrato no admite
lanza
ArgumentException en el new, y también con with. Se valida: origen con referencia y subdominio;
hecho con origen, transacción y al menos una línea; transacción con tercero principal; tercero con nombre no vacío e
identificación; línea con concepto y tercero; valor nunca negativo. "Nulo solo en la contrapartida" lo valida
Contabilidad, porque depende de la plantilla.
- Orden de despliegue: (1) publicar 0.1.0; (2) desplegar Contabilidad; (3) desplegar el emisor con 0.1.0 completo:
consumir el acuse, quitar su consumer de
HechoEconomicoRechazado y asegurar que sus mappers no armen datos que el
constructor rechace. No hace falta topic ni suscripción nuevos.
Novedades v0.0.14
LineaTraduccion gana la relación informativa entre líneas [R56]: IdComponente (string?, en las líneas principales) y ComponentePrincipal (string?, en las dependientes, apunta al IdComponente de su principal). Ambos opcionales, null por defecto y agregados al final. Contabilidad no los interpreta: los compara como texto exacto, los copia a cada partida del borrador y no cambian cuentas, terceros, unidades ni valores.
- Nuevo motivo de rechazo
MotivoRechazo.RelacionEntreLineasInvalida (eliminado en 0.1.0): la relación enviada es incoherente (dependiente sin principal, una línea con ambos campos, contrapartida con alguno, etc.).
- Cambio aditivo: quien compila contra 0.0.13 sigue compilando, y un mensaje sin los campos se lee con ambos en
null (líneas sueltas). El emisor no está obligado a actualizar.
Novedades v0.0.13
HechoEconomicoCreado gana Observaciones (string?, opcional, null por defecto), agregado al final, después de Descripcion. Es texto libre que el emisor quiere que llegue al sistema contable destino (SincoA&F) como observaciones del documento. Contabilidad lo reenvía sin transformarlo: lo guarda en el borrador, lo expone en la vista y lo entrega a AyF.
- Cambio aditivo: quien compila contra 0.0.12 sigue compilando, y un mensaje sin el campo se lee con
Observaciones = null (AyF recibe null, como hasta ahora). El emisor no está obligado a actualizar.
- Orden de despliegue: Contabilidad antes que el emisor. Al revés no falla, pero las observaciones que mande el emisor se pierden en silencio.
Novedades v0.0.11
ConceptoEconomico.TipoComponente y ContextoTransaccion.TipoTransaccion pasan de string a enum del paquete (TipoComponente, TipoTransaccion, en Cosmos.Contabilidad.Contratos.ServicioDeTraduccion.Modelos). Los enums son el catálogo publicado: un emisor solo puede nombrar tipos que Contabilidad conoce.
- Viajan por el bus como valor numérico, igual que los demás contratos Cosmos. Los valores son explícitos y nunca se reordenan, reutilizan ni borran; un tipo nuevo exige una versión nueva del paquete.
- El emisor debe migrar sus literales al enum (
"cruce_obligacion" → TipoComponente.CruceObligacion, "causacion_gasto" → TipoTransaccion.CausacionGasto).
- El formato del mensaje cambia respecto a 0.0.10: antes el campo viajaba como texto (
"cruce_obligacion"), ahora como número (17). Un mensaje 0.0.10 no se lee con 0.0.11 ni al revés, así que el despliegue de emisor y Contabilidad es coordinado, con la cola vacía.
Novedades v0.0.9
- La contrapartida viaja como una línea más (
tipoComponente = "contrapartida"): con su tercero y su clasificación, pero sin valor ni unidad organizacional — el Motor calcula el valor (balance) y asigna la unidad. Antes el Motor generaba la contrapartida a partir del terceroPrincipal. [R54]
ReferenciaHechoRelacionado pasa a ser por línea (en LineaTraduccion), habilitando cruces y notas crédito donde cada línea referencia un hecho distinto. Se removió de Origen. [R53]
ConceptoEconomico.Valor y LineaTraduccion.UnidadOrganizacional ahora son opcionales (la línea de contrapartida los omite).
Tipos disponibles
Evento de entrada
| Tipo |
Descripción |
HechoEconomicoCreado |
Evento que envía las líneas de traducción de un hecho económico a Contabilidad para generar un borrador contable. Los sub-dominios transaccionales (OXP, CXC, Tesorería, etc.) lo publican cuando ocurre un hecho económico con impacto contable. |
Eventos de salida
| Tipo |
Descripción |
HechoEconomicoContabilizado |
Contabilidad informa que el destino (SincoA&F) aceptó el borrador. Contiene el Origen y la referencia al asiento en el destino. [R17] |
HechoEconomicoRecibido |
Acuse: Contabilidad informa que guardó el hecho económico. Contiene el Origen y la Fecha en que lo guardó. No dice si se tradujo ni si se contabilizó. |
Modelos del contrato estandarizado
| Tipo |
Descripción |
LineaTraduccion |
Unidad mínima de información que un sub-dominio emite para ser traducida a contabilidad. Contiene ConceptoEconomico, Tercero, UnidadOrganizacional (opcional) y ReferenciaHechoRelacionado (opcional, por línea). |
ConceptoEconomico |
TipoComponente (enum TipoComponente: Gasto, Iva, Retefuente, Contrapartida, …; viaja como número), Clasificacion (texto semántico de emparejamiento) y Valor (opcional — la línea de contrapartida no lo trae; lo calcula el Motor). |
DatosTercero |
Nombre e identificación legal del tercero. |
ContextoTransaccion |
Tipo de transacción (enum TipoTransaccion: CausacionGasto, NotaCreditoGasto, …; viaja como número), empresa, moneda, fecha y TerceroPrincipal. El TerceroPrincipal es el tercero del documento que envía el emisor (proveedor en causación/anticipo/nota crédito, banco/emisor en el extracto). Es informativo del hecho — el tercero de la contrapartida viaja en su propia línea. |
Origen |
Referencia de origen única, sub-dominio y documento fuente. |
Parámetros de HechoEconomicoCreado
| Parámetro |
Tipo |
Descripción |
Origen |
Origen |
Referencia de origen única, sub-dominio y documento fuente del hecho económico. |
Transaccion |
ContextoTransaccion |
Tipo de transacción (enum TipoTransaccion: CausacionGasto, NotaCreditoGasto, …; viaja como número), empresa, moneda, fecha y tercero principal (informativo). |
Lineas |
IReadOnlyList<LineaTraduccion> |
Líneas de traducción del hecho económico, todas de la misma empresa, moneda y referencia de origen. Cuando la plantilla del tipo de transacción tiene rol de contrapartida, debe incluirse exactamente una línea contrapartida. |
Descripcion |
string? |
Descripción general del hecho económico (opcional). |
Observaciones |
string? |
Observaciones del documento para el sistema contable destino (opcional, desde 0.0.13). Contabilidad las reenvía tal cual llegan. |
Parámetros de la LineaTraduccion
| Parámetro |
Tipo |
Descripción |
ConceptoEconomico |
ConceptoEconomico |
Tipo de componente, clasificación y valor (opcional). |
Tercero |
DatosTercero |
Tercero de la línea. En la línea de contrapartida es el tercero de la cuenta por pagar (proveedor, banco/emisor). |
UnidadOrganizacional |
string? |
Unidad organizacional de la línea. La línea de contrapartida la omite (la asigna el Motor). |
ReferenciaHechoRelacionado |
string? |
Referencia al hecho económico original cuando la línea deriva de otro (cruce, nota crédito, amortización). Habilita la resolución por espejo. null en hechos originales. |
IdComponente |
string? |
Solo en líneas principales: identifica el componente del hecho (desde 0.0.14). Si el componente se distribuye en varias líneas, todas llevan el mismo valor. |
ComponentePrincipal |
string? |
Solo en líneas dependientes: el IdComponente de su principal (desde 0.0.14). Nunca junto con IdComponente; la contrapartida no lleva ninguno. |
Parámetros de HechoEconomicoContabilizado
| Parámetro |
Tipo |
Descripción |
Origen |
Origen |
Referencia, sub-dominio y documento fuente. |
ReferenciaDestino |
string |
Consecutivo o comprobante asignado por el sistema contable de destino (SincoA&F). |
Destino |
string |
Sistema contable que aceptó (ej: AYF). |
Parámetros de HechoEconomicoRecibido
| Parámetro |
Tipo |
Descripción |
Origen |
Origen |
El mismo origen del HechoEconomicoCreado que se acusa. |
Fecha |
DateTime |
Cuándo lo guardó Contabilidad (UTC). |
Dependencias
| Paquete |
Propósito |
Cosmos.EventDriven.Abstractions |
Interfaz IPublicEvent para eventos que viajan por RabbitMQ. |
Cosmos.Types |
Tipo Moneda para el contexto de transacción. |
Cosmos.Types.IdentificacionesLegales |
Identificación legal del tercero. |
Cosmos.Types.Paises |
País de la identificación legal. |
Licencia
Software propietario © 2026 Sincosoft. Todos los derechos reservados.