Calendario fiscal español
Cuándo vence cada modelo de la Agencia Tributaria, calculado y no copiado de una tabla.
Librerías de código abierto · Python · Código publicado
El problema
La fecha de vencimiento parece un dato y es un cálculo. El día cambia según el modelo, se traslada si cae en sábado, domingo o festivo, y se adelanta cinco días si el pago va domiciliado. Cualquier calendario escrito a mano es correcto el año en que se escribe y silenciosamente falso al siguiente.
Qué hace
- Calcula la fecha límite de los modelos trimestrales, anuales y de campaña de la Agencia Tributaria.
- Traslada el vencimiento cuando cae en día inhábil, según el artículo 30.5 de la Ley 39/2015.
- Acorta el plazo cinco días cuando la presentación va con domiciliación bancaria.
- Sitúa el Viernes Santo con el algoritmo de Meeus, Jones y Butcher, en lugar de listar años a mano.
Lo que se decidió al construirlo
- La Pascua se calcula, no se lista
- El Viernes Santo es el único festivo estatal que se mueve, y la tentación es escribir diez años en una tabla. Esa tabla caduca sin avisar: el año once devuelve una fecha equivocada y nadie ve nada raro. Con el algoritmo de Meeus, Jones y Butcher el año once sale igual de bien que el primero.
- El traslado sale de la ley que lo dice
- Que un plazo que vence en inhábil pase al siguiente hábil no es una costumbre: es el artículo 30.5 de la Ley 39/2015, y está citado en el código junto a la línea que lo aplica. Una regla sin su norma al lado es una regla que nadie puede revisar sin volver a investigarla entera.
- La domiciliación acorta el plazo, no lo alarga
- Domiciliar el pago adelanta cinco días la fecha real de presentación, y es la equivocación más cara de todas porque va en la dirección contraria a la intuición: quien cree que domiciliar da margen presenta fuera de plazo. Es un parámetro explícito, no un caso especial escondido.
Hasta dónde llega
- No rellena ningún modelo, no calcula ningún importe y no presenta nada ante la Agencia.
- No es asesoramiento fiscal: dice cuándo vence un modelo, no si hay obligación de presentarlo.
- La cobertura es la lista de modelos declarada en el repositorio. Un modelo que no esté en ella no tiene fecha.
- El modelo 100 solo devuelve fecha para los años de campaña verificados en el repositorio.
- 0 dependencias
- MIT licencia
- 3.9+ Python
Construido con
- Python
- datetime