El cierre es una máquina de estados. No un permiso que olvidó revocar.
Seis estados explícitos, locks asimétricos para ventas y compras, cierre anual guiado y posting irreversible. Lo que sus auditores llamarán evidencia.
El ciclo de vida de un período
<code>Unlocked</code>
El período acepta postings normales. Ventas, compras, ajustes — todos los documentos fluyen al GL.
<code>LockSales</code> / <code>LockPurchasing</code>
Locks asimétricos. Usted puede cerrar AR mientras AP sigue abierta, o viceversa. Así se cierra en el mundo real.
<code>Locked</code> → <code>Closed</code>
<code>Locked</code> bloquea todo posting. <code>Closed</code> se alcanza solo en cierre anual — punto de no retorno razonable.
Por qué AR y AP cierran por separado
El manual dice "cierre el mes". La realidad dice "cierre ventas el día 3, compras el día 8". Un sistema que exige cerrar todo a la vez obliga al contador a retrasar la factura de ventas correcta por esperar al proveedor retrasado.
LockSales. Ventas, notas de crédito y recibos de cliente ya no modifican el período. AP sigue abierto hasta que llegue la última factura de proveedor.LockPurchasing. Inverso: compras cerradas, ventas abiertas. Útil cuando el mes se cerró por compras temprano.LockSalesAndPurchasing. Ambos cerrados, pero ajustes del contador (revalúos, reclasificaciones) todavía permitidos.Locked. Todo posting bloqueado. Solo queda transicionar aClosed(cierre anual) o reversar con permiso explícito.
Tres pasos auditables
- Paso 1: el sistema genera el asiento de cierre. Reversa acumulaciones, cierra cuentas de resultado contra
RetainedEarnings, balancea varianza cambiaria. - Paso 2: el usuario revisa y aprueba. El borrador se presenta con cada línea explicada. Hasta aquí no se postea nada.
- Paso 3: posting atómico. El sistema postea el asiento, transiciona los doce períodos del año a
Closedy crea los doce períodos del año siguiente enUnlocked. - Reversión disponible pero costosa. Requiere permiso elevado
PostingPeriod.ReverseClosey razón de 20 caracteres mínimo. El evento queda enAuditEvents.
Qué no se puede hacer
- No se edita una factura posteada. Se anula (
void) y se emite nota de crédito o débito. Se preserva la historia. - No se postea dentro de un período
Locked. El motor de posting verifica el estado del período porPostingDateantes de escribir al GL. - No se modifica
ActualPostingDate. Una vez establecido al momento del post, es inmutable. Evidencia para el auditor. - Todas las transiciones logueadas.
Unlocked→LockSales,Locked→Unlockedreversado,Closedde cierre anual — cada una aAuditEvents.
Simulemos un cierre con sus datos
Demo técnica que recorre el flujo completo: locks, ajustes, cierre anual y reversión auditada.