calculos de ivas

30/04/2010 - 16:59 por juker | Informe spam
Saludos al grupo y agradecer las colaboraciones desinteresadas.

Mi problema es el siguiente y no tengo claro cual sería la mejor forma
de enfocarlo.
La aplicacion que estoy creanodo, saca los datos de unas tablas en las
cuales los precios son sin IVA.
Mi aplicacion trabaja con precios IVAS incluido, por lo tanto al
precio le calculo el iva y saco el precio final.
Pero luego traslado los datos a la aplicacion de la cual saco los
datos, por lo que realizo el proceso inverso,desgloso la base
imponible y el iva.
Pero por los redondeos entre operaciones los resultados no son
correctos.
Hago una factura precios iva incluido arts A,B,C,..total 128,65
Al trasladfarlo al programa de donde toma los datos que son precios
sin iva y le paso las bases desglosadas y unidades me calcula por ej:
128.32
La funcion format y round hacen que me muestre los precios+iva con dos
decimales pero para calculos al descartar el tercer decimal es de
donde parten las diferencias.
Por ejemplo en excel puedo hacer un calculo y formatear la celda a dos
decimales,pero los calculos los hace teniendo en cuenta el tercer
decimal.
¿Alguna funcion equiparable en Visual basic? .¿Podria ser lo mas
aconsejable acumular las difrencia del redondeo en una variable para
restarla luego del total?

Agradeceria cualquier sugerencia.
 

Leer las respuestas

#1 Baron_Dandy
04/05/2010 - 11:54 | Informe spam
On 30 abr, 16:59, juker
wrote:
Saludos al grupo y agradecer las colaboraciones desinteresadas.

Mi problema es el siguiente y no tengo claro cual sería la mejor forma
de enfocarlo.
La aplicacion que estoy creanodo, saca los datos de unas tablas en las
cuales los precios son sin IVA.
Mi aplicacion trabaja con precios IVAS incluido, por lo tanto al
precio le calculo el iva y saco el precio final.
Pero luego traslado los datos a la aplicacion de la cual saco los
datos, por lo que realizo el proceso inverso,desgloso la base
imponible y el iva.
Pero por los redondeos entre operaciones los resultados no son
correctos.
Hago una factura precios iva incluido arts A,B,C,..total 128,65
Al trasladfarlo al programa de donde toma los datos que son precios
sin iva y le paso las bases desglosadas y unidades me calcula por ej:
128.32
La funcion format y round hacen que me muestre los precios+iva con dos
decimales pero para calculos al descartar el tercer decimal es de
donde parten las diferencias.
Por ejemplo en excel puedo hacer un calculo y formatear la celda a dos
decimales,pero los calculos los hace teniendo en cuenta el tercer
decimal.
¿Alguna funcion equiparable en Visual basic? .¿Podria ser lo mas
aconsejable acumular las difrencia del redondeo en una variable para
restarla luego del total?

Agradeceria cualquier sugerencia.



La Ley y el Reglamento de IVA establecen una fórmula para hayar los
coeficientes de conversión que nos dan el importe del IVA y el importe
IVA incluído:

A) Coeficiente de conversión, según fórmula 100/(100+T), dónde T tipo IVA
B) Tipo sobre precio IVA Incluido, según fórmula 100*T/(100+T), dónde
T = tipo IVA aplicado

Por tu mensaje creo que estás calculando el importe IVA incluído
mediante la "cuenta de la vieja", de ahí el baile de cifras. Debes
utilizar las fórmulas anteriores para obtener una cantidad exacta. Te
paso un método que devuelve el importe Base liquidable del IVA
(importe de la factura sin IVA), bien el importe del propio IVA.
Espero que te sea de utilidad:

Public Enum TipoImporte As Byte
vbImporteIVA
vbImporteLiquidable
End Enum

Public Function Importes(ByVal Importe As Decimal, ByVal
TipoImpositivo As Integer, _
ByVal Tipo As TipoImporte) As Decimal
'A partir de un importe pasado como parámetro, la función
devuelve:
'Bien el Importe liquidable (importe sin IVA o importe neto de
una factura).
'Bien el Importe del propio IVA.
'Parámetros:
'Importe: Importe
'TipoImpositivo = tipo impositivo aplicado al Importe.
'Tipo: la función devuelve el importe sin iva (Base
liquidable del IVA).
' la función devuelve el importe correspondiente al IVA.

Dim CoefConv As Object 'Coeficiente de conversión, según
fórmula 100/(100+T), dónde T = tipo IVA aplicado.
Dim TipoSIVA As Object 'Tipo sobre precio IVA Incluido, según
fórmula 100*T/(100+T), dónde T = tipo IVA aplicado

Select Case Tipo
Case TipoImporte.vbImporteLiquidable 'Devuelve el importe
sin IVA (Base Liquidable IVA)
If lo_IVAIncluído Then 'Para IVA incluído en el
importe ingresado por el usuario en la propiedad Importe, se haya el
Importe Liquidable (Base liquidable IVA) aplicando la fórmula fiscal.
CoefConv = CDec(100 / (100 + TipoImpositivo))
'Convertimos a tipo de dato decimal
CoefConv = Round(CoefConv, 5) 'Redondeamos a cinco
decimales
Return Format(Round(Importe * CoefConv, 2),
"#,##0.00") 'Aquí, Importe Total = Importe Liquidable + Importe IVA
Else 'Para IVA no incluído. Aquí, Importe Total importe + Importe IVA
Return Format(Importe, "#,##0.00")
End If
Case TipoImporte.vbImporteIVA 'Devuelve el importe
correspondiente a IVA (siempre será el mismo, con independencia de que
el IVA esté o no incluído en el importe ingresado por el usuario en la
propiedad Importe). El Importe IVA así calculado siempre se incluirá
en la fórmula de obtención del Importe Total.
TipoSIVA = CDec(100 * TipoImpositivo / (100 +
(TipoImpositivo)))
TipoSIVA = Round(TipoSIVA, 3)
Return Format(Round(Importe * (TipoSIVA / 100), 2),
"#,##0.00")
End Select
End Function

Preguntas similares