A todos nos ocurre alguna vez, que nos asombramos jocosamente al ver algunas soluciones que otros han aplicado; sonreímos con vehemencia (en el mejor de los casos) y comentamos mientras hinchamos pecho, que esa barbaridad se resolvía fácilmente de tal o cual forma.
Yo sigo asombrándome y sonriendo con vehemencia, pero en lugar de sacar pecho, procuro ver y hacer ver, que quizás había una razón para ello, que quizás esa persona (anónima o no) supo encontrar una solución en un campo de batalla, en el que quizás nosotros nos hubiéramos perdido.
Leyendo comentarios sobre el nuevo cambio de IVA, me he vuelto a asombrar y sonreír sobre algunas formas de enfocar el problema y me han venido a la cabeza la gran cantidad de variantes que hay a la hora de tratar con tan peliagudo problema. Un problema, que hace que muchos desarrolladores se conviertan en auténticos “hombre orquesta”. ¿O quizás piensas que es un tema sencillo?.
Advertencia
No soy contable ni nada parecido, lo poco que se del IVA es a fuerza de tener que hacer o trabajar con software que lo incluye en sus procesos, así, no tomes mis requisitos de IVA como una referencia, más bien como situaciones que quizás te encuentres en algún momento. Y si detectas un error u otros requisitos del IVA ¡coméntalo por el bien de todos!.
El IVA
El IVA es muchísimo más complejo de lo que puede parecer a simple vista. Si bien es cierto que el caso habitual es conocido por todos (¿seguro?), existen muchísimas situaciones y variables que lo modifican de una u otra forma. Puedes buscar cualquier libro de contabilidad y repasarte los temas del IVA, verás que de sencillos y concisos no tienen nada (a mi desde luego no me lo parecen).
Como ni puedo, ni debo, ni quiero, ni (probablemente) querrás tú, no entraré en conceptos que difícilmente conozco así, sólo indicaré en general situaciones que se dan o se deben contemplar al trabajar con el IVA.
Requisitos
Sea pues una lista informal (y seguro que incompleta) de requisitos a la hora de trabajar con IVA:
El IVA de un producto, puede ser diferente según se lo vendas a uno u otro cliente (eg. nacional / extranjero pero hay más casos como ciertas organizaciones que no pagan IVA o lo tienen reducido).
En caso (por ejemplo) nacional, tu aplicación, quizás deba aplicar el IVA local y descontarlo después, o no aplicarlo o contemplar ambos casos.
El IVA de un producto, puede ser diferente (además) del tipo de producto de que se trate (eg. productos de primera necesidad / productos de lujo).
El IVA de un producto, puede ser diferente (además) del IVA de otros productos incluidos en la venta (eg. los gastos de envío).
El IVA de un producto, puede ser diferente (además) si ha sido manipulado y/o agrupado (eg. packs, ofertas, …).
El IVA de un producto, puede depender (además) de la fecha de venta, pero resulta, que realmente manda la fecha de facturación ¡pero cuando vendes aún no sabes cuando se realizará la factura!. Por ello, frente a un cambio de IVA, la elección de la fecha en que cambia el IVA puede ser arbitraria (eg. unas empresas querrán facturar al finalizar el mes y otras al empezar, etc… incluso dependiendo del cliente final al que se le factura el día o semana que él decide).
El IVA de un producto, puede depender (además) de ¡la fecha de disfrute! (eg. una estancia hotelera dentro de un mes), que a su vez depende de la de facturación, etc… (hay hoteles que prefieren facturar al entrar el cliente, otros al salir, otros al terminar el mes de la fecha de salida, etc…)
El IVA de un producto, puede que ¡no tengas que procesarlo! (pero si el importe). Por ejemplo cuando incluyes en la venta productos o servicios que tú no facturarás (lo hará otra empresa ¡pero tú debes contemplar también su casuística!).
Si ésto aún no es suficiente para ti (auténtico Chuck Norris del IVA), espera, porque hasta ahora únicamente hemos “definido el IVA” (incluyendo el concepto de “desconocido” no lo olvides).
Peticiones “especiales”:
Se desean cargar los precios de venta con impuestos incluidos, de tal forma que el precio final sea siempre un número prefijado (eg. 100,00 euros). (Cuidadito con este requisito, en general, es una trampa mortal [no tiene solución para algunos casos]).
Junto con la anterior, se desean tener tarifas netas (cargadas sin impuestos). Es decir, debes procesar simultáneamente importes que llevan o no llevan el IVA (luego totalizar, agrupar impuestos, excepciones, gastos fuera de IVA, etc…).
Si has sido capaz de componer todas las reglas de negocio, ahora resulta que debes exportar los precios para que otro sistema los procese. (Cuidadito con los decimales, seguramente deberás desnormalizar datos, etc…).
Múltiples divisas y aquí hay mucho juego, puede ser que el cambio de divisa sea informativo o que se permita al cliente final pagar en la moneda elegida; puede ser que los precios se carguen en una divisa y deban convertirse a otra (manteniendo estrategias como “precios redondos”).
Pasarela de pago, convirtiendo los importes de una divisa a otra (cuidado decimales).
Aplíquense reglas adicionales “al gusto” sobre cálculo de comisiones (que se aplican sobre el neto y/o bruto) y el IVA de esas mismas comisiones.
Bueno, seguro que hay muchas otras situaciones, he puesto las que me han venido a la cabeza y con las que de una u otra forma habré tenido que trabajar en algún momento.
Como anécdota diré, que una vez había que pasar ciertas tarifas de netas (sin IVA) a brutas (con IVA); tras comentar que el cambio no era trivial en nuestro sistema, nos comentó alguien de un sistema remoto con quien conectábamos que “sólo es multiplicar los precios de una tabla”, aún se pueden oír las risas de nuestro equipo (el extremo no conocía nada de nuestro sistema para poder hacer tal afirmación).
Problemas fáciles, problemas difíciles
Igual que con el IVA, con otros problemas se producen situaciones similares en todo momento. Problemas aparentemente triviales se convierten en auténticos quebraderos de cabeza, y son éstos, precisamente, de los que se oye recurrentemente la frase “¡pues si es muy fácil!”.
Así, te animo a ser cauto y/o condescendiente cuando creas ver una barbaridad (chapuza, desastre, etc…) y esperes a tener más datos del problema para crucificar al pobre tipo que, al fin y al cabo, supo solucionar el problema.