12 Jun Cómo desglosar distintos tipos de impuesto en nuestras aplicaciones velneo V7
A raíz de una consulta de Julian en el foro de Velneo V7 sobre cómo poder desglosar distintos tipos de impuesto en nuestras aplicaciones Velneo V7, se me ocurrió ampliar la información que di con este post. De paso repasamos las actualizaciones condicionadas… ¡Comenzamos!
Planteamiento del problema
Tenemos en nuestra base de datos artículos con distintos tipos de impuesto y queremos que al ir introduciendo líneas de venta, se vayan acumulando en la cabecera de los documentos los importes según los impuestos.
Voy a coger como base para realizar el ejemplo, vErp que está adaptado para los tipos impositivos de España (pero puede servir perfectamente para cualquier otro país).
Creando los objetos necesarios
Lo primero es crear una tabla estática (REG_IVA_M) para tener delimitados los distintos tipos de impuestos que vamos a utilizar en nuestra aplicación. En nuestro caso, la tabla tiene los siguientes items:
Dos campos por si queremos diferenciar el tipo de IVA de ventas (REG_IVA_VTA) del tipo de IVA de compras (REG_IVA_COM)
En los documentos (tanto de compra como de venta) y dependiendo de la empresa, usaremos estos campos para calcular el total IVA de cada una de las bases imponibles.
Ahora vamos con las modificaciones necesarias en los documentos de venta (extrapolable a los documentos de compra).
Desglosar distintos tipos de impuesto en los documentos
En cada una de las tablas de documentos (presupuestos, pedidos, albaranes, facturas) tanto de compras como de ventas, tendremos que crear los campos necesarios para poder desglosar los distintos tipos de impuesto.
Estos son los campos necesarios:
Vamos a ir viendo en detalle cada uno de los bloques de campos:
Son campos numéricos. En estos campos se irán acumulando las bases imponibles de las líneas según el tipo de IVA (veremos las actualizaciones mas adelante). El último de ellos tendrá como contenido inicial lo siguiente para hacer el sumatorio de todas las bases imponibles:
En este caso, los dos primeros campos son para poder introducir en el documento de venta los portes (POT) y un % de descuento general (POR_DTO)
Si hemos introducido un descuento, en los siguientes campos se calcula el descuento a aplicar en cada una de las bases imponibles con los siguientes contenidos iniciales:
En el último campo de este bloque, se calcula la base imponible total menos los descuentos:
En este bloque de campos vamos a calcular el importe de IVA según cada uno de los tipos.
En los 4 primeros campos dependiendo de la fecha del documento, se coge el % de IVA a aplicar con contenidos iniciales (este montaje nos permite diferenciar los periodos por si ha habido camios en los %). Estos son los contenidos iniciales de los campos:
En los cuatro siguientes campos, dependiendo del % de IVA, se calcula el total IVA de cada base imponible también con contenidos iniciales:
Como siempre, el último campo de este bloque es para realizar el sumatorio en este caso del IVA total:
El siguiente bloque de campos es para aplicar retenciones en el documento si si diese el caso. Como os podéis imaginar, los campos tienen la misma estructura que los que acabamos de ver.
En el ultimo campo TOT_ALB se acumula el total del albarán. El contenido inicial de este campo es:
Modificando la tabla de líneas de los documentos
Si hemos creado en la tabla de artículos dos campos para diferenciar el tipo de impuestos para compras y ventas, en la tabla de líneas habrá que distinguir si estamos en compras o ventas.
En vERP tenemos una única tabla para los movimientos de almacén (se graban en la misma tabla tanto los movimientos de compra como de venta). La tabla en cuestión es MOV_G.
Por lo tanto en esta tabla creamos dos campos enlazados a la tabla estática de tipos de impuestos:
- REG_IVA_COM: cuyo contenido inicial es:
choose( #PRV.EXE_IVA | #SER_COM.EXE_IVA , «X», #ART.REG_IVA_COM ): En este caso primero se comprueba si el proveedor o la serie del documento tienen marcado un campo booleano que indica si está exento de IVA. Si lo tiene marcado se asigna el tipo de IVA exento (X); si no, coge el valor que tenga el artículo para el tipo de IVA de compras.
- REG_IVA_VTA: cuyo contenido inicial es:
choose( #CLT.EXE_IVA | #SER_VTA.EXE_IVA , «X», #ART.REG_IVA_VTA ): En este caso primero se comprueba si el cliente o la serie del documento tienen marcado un campo booleano que indica si está exento de IVA. Si lo tiene marcado se asigna el tipo de IVA exento (X); si no, coge el valor que tenga el artículo para el tipo de IVA de ventas.
Generando las actualizaciones a la cabecera de los documentos
Una vez visto todo el montaje de los campos en las tablas, lo único que nos quedará será crear las actualizaciones a disparar cada vez que el usuario de un alta o modifique una de las líneas de los documentos.
Una vez creada la actualización, tendremos que crear los distintos componentes de actualización que vamos a necesitar para asignar correctamente las distintas bases imponibles:
Como os podéis imaginar, habrá que condicionar el componente al tipo de iva de la tabla estática de impuestos:
El resto de los componentes de actualización, os lo dejo como práctica para vosotros.
Esto es todo lo que necesitas para desglosar distintos tipos de impuesto en nuestras aplicaciones velneo V7.
Si te ha parecido intereante, déjame tu opinión mas abajo en los comentarios.
Además si te ha parecido interesante este artículo puedes suscribirte al blog y al canal de youtube.
No Comments