Como actualizar la tabla de productos en access (modificar la alícuota iva) sin que eso modifique los registros ya hechos.

Sucede que tengo varias tablas en ACCESS. Productos, IVA, y Detalle Factura. Todas relacionadas, sucede que cuando modifico la alícuota del IVA en el registro de uno de los productos, esta actualización modifica todos los registros ya hecho. Es decir si el IVA en un país cambia hoy y ya se han hecho 500 registros anteriormente estos también se modifican. ¿Cómo hacer para que al cambiar la alícuota no me modifique los registros anteriores? ¿

1 Respuesta

Respuesta
2

La primera solución que tienes para mantener los "históricos" de iva es añadir una campo nuevo en la tabla de detalles factura (o productos, no me queda claro en cual aplicas el iva) en el que introduzcas el importe o el porcentaje de iva, pero sin relacionar con la tabla de iva (no como tienes ahora). La idea sería buscar el tipo de iva en la tabla IVA (por código con la función DLookup) y ponerlo en el nuevo campo IVA de la tabla productos o detalle factura, o bien hacer el cálculo (base x tipo) y poner el importe de iva. Puedes ver algo parecido aquí, cuando habla del precio del producto (página 7): http://neckkito.xyz/nck/index.php/teoria/cosas-que-es-bueno-saber/estructurar-y-relacionar-una-bd

Otra solución sería que no modifiques en la tabla iva los porcentajes (o lo que sea), sino que añadas nuevos tipos de iva. Por ejemplo, en tu tabla IVA tienes que el tipo general es de 21%. El día de mañana lo suben al 23%. Pues en vez de modificar en la tabla el 21 y poner 23, añades un nuevo registro a esa tabla con ese 23, de modo que tu tabla tendrá dos valores de IVA (21 y 23)

Si ves que no te aclaras con la explicación, dímelo y te preparo un ejemplo, aunque sería bueno que me indicases la estructura de tus tablas.

Un saludo.


Hola  amigo, ante todo gracias por tomarte el tiempo en ayudarme. Sucede que las opciones que me das las tenia ambas pero las descarté. ¿por que? por la Alícuota IVa debo tenerla e el producto, dado que puedo en un mismo detalle factura puedo tener dos artículos (uno con iva exento y otro con alícuota general), pero en un tiempo puede que el gobierno dicte ley diciendo que dicho producto ya no está exento de iva y haya que cargarle alícuota general . No se si me expliqué. Y cuando eso pasa, entonces al cambiar la alícuota en el producto se me actualizan todos los demás registros para ese mismo producto (Los que pude haber  registrado antes de la nueva reforma tributaria; por así llamarlo) Te dejo print con ejemplos. Son ejemplos para que por favor me orientes y poder hacer tus recomendaciones en la BD original.

Gracias por el apoyo.

Yo no pondría el iva en el producto, sino en el detalle (y lo seleccionas para cada producto al escribir la linea), aplicando lo que te comentaba en mi anterior respuesta

Tal como lo tienes, la única solución que te conservará un historico es que vuelvas a añadir el producto con el nuevo iva a la tabla productos, y no lo veo práctico a la larga...

Se me ocurren dos ideas un poco más enrevesadas:

1º/ Crear una tabla intermedia en la que relaciones los productos con los ivas, de tal forma que puedas tener un producto con varios ivas, y uses el id de esa tabla en la tabla de detalles (adjunto imagen del diseño de la BD):

2º/ Relacionar la tabla iva con el campo idiva de la tabla productos y también con el campo iva de la tabla detalle:

En este caso, en productos siempre tendrás el iva vigente, y en la tabla detalle, el iva será uno de los que existan en la tabla IVA, sea o no el vigente del producto. Para rellenarlo en el formulario de detalle, usa la función dlookup en el evento "después de actualizar" del campo producto, para que en los registros nuevos, ya te coja automáticamente el iva actual, algo así:

Private Sub producto_AfterUpdate()
Me.IVA=DLookUp("idiva","Productos","idproducto=" & Nz(Me.producto,0))
End sub

Y te pondrá en el campo el idiva asociado al producto, aunque se lo puedes cambiar manualmente en esa linea de detalle sin tener que cambiarlo en la tabla Producto

Gracias probaré con ambas a ver que tal, pero ya estoy seguro que ambas funcionarán.

Saludos cordiales.

Pues ya dirás si te sirven o no. Personalmente, me iría más por la segunda opción.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas