La complejidad del cálculo de deducciones de nómina en Canadá
- La Agencia de Ingresos de Canadá (CRA) publica periódicamente el documento "Payroll Deductions Formulas". Este documento incluye todas las fórmulas de cálculo del Plan de Pensiones de Canadá, el seguro de empleo y el impuesto sobre la renta que recauda la CRA.
- Colin Percival, quien opera un pequeño negocio en Canadá y no utiliza un proveedor externo de servicios de nómina, implementó estas fórmulas directamente en una hoja de cálculo.
- Como ocurre con la mayoría de los aspectos del sistema tributario, la complejidad sigue aumentando, y este año el Plan de Pensiones de Canadá incluye no solo una prima "base" y una prima "adicional", sino también una "segunda adicional", lo que obligó a reescribir la hoja de cálculo desde cero.
Creación de un gráfico de dependencias
- Los autores del documento pasaron por alto un detalle importante del software: que los valores deben calcularse antes de poder usarse. Por eso, al leer el documento, hay que ir y venir para encontrar dónde está cada valor que debe calcularse.
- Para ayudar con esto, Colin Percival creó un gráfico de dependencias con GraphViz. El gráfico tiene 79 nodos, desde valores como "annual maximum pensionable earnings" ($73200) hasta "total payroll deductions".
- En lugar de escribir las fórmulas en el gráfico, solo registró los demás valores de los que depende cada fórmula, para que quien lo vea pueda identificar fácilmente qué debe calcular primero.
Supuestos simplificados
- Para simplificar, Colin Percival asume que no está manejando empleados pagados por comisión, empleados que entran o salen del Plan de Pensiones de Canadá, ni personas que viven en Quebec, Nueva Escocia, Yukón u Ontario, ya que cada uno tiene su propia complejidad fiscal.
Opinión de GN⁺
- Este artículo muestra muy bien lo complejos que pueden ser los cálculos de deducciones de nómina en Canadá. En particular, destaca los desafíos que enfrentan los dueños de pequeños negocios y un enfoque creativo para resolverlos.
- Crear un gráfico de dependencias es una herramienta muy útil para comprender y administrar sistemas complejos, y puede aplicarse para resolver problemas no solo en ingeniería de software sino también en muchos otros campos.
- El artículo muestra el esfuerzo de un empresario por simplificar la complejidad del cálculo de impuestos, y ese esfuerzo también puede servir de inspiración para otros dueños de negocios.
1 comentarios
Opiniones de Hacker News
Es una lástima que el gobierno no proporcione fórmulas públicas en formato de código.
Por experiencia operando una pequeña empresa de nómina en Canadá, cada vez que se actualizaban las reglas ejecutaban un scraper contra la calculadora de la CRA para calcular nóminas de distintas regiones y rangos salariales, y volcaban los resultados con rspec para probar el cumplimiento normativo.
La complejidad de la legislación fiscal sigue un ciclo como este:
Hace algunos años hice algo parecido para el IRS.
Este gráfico muestra por qué existen los proveedores de nómina.
Aplausos al autor por señalar que la CRA debería publicar una implementación de referencia de todas las fórmulas.
En Francia, estas reglas están disponibles como sitio web, API, paquete de NPM y reglas en bruto en el lenguaje publi.codes.
Aplica a todos, excepto a los residentes de Quebec, Nueva Escocia, Yukón y Ontario, donde vive aproximadamente el 75% de la población canadiense.
Vivo en Estados Unidos, pero esta complejidad es una de las principales razones por las que no contrato empleados para mi LLC.
Cualquier algoritmo, sea software o no, termina convertido en un estado confuso al que se le añade complejidad para obtener el resultado deseado.