Cita:
Empezado por bmfranky
Hola, podriais poner un ejemplo de codigo de como realizais el ajuste automatico en el programa? o lo realizais manualmente?, Gracias.
|
Bueno te puedo indicar el pseudocódigo aproximado de cómo valoramos una factura para impuestos incluidos en el precio
Espero no incurrir en ningún error. Pero básicamente, asegura que la suma de todos los valores brutos de las líneas para un tipo de Iva coincidan con la base imponible de ese Iva y que la suma de los valores de iva para el tipo de Iva "Tipo" coincida con el Iva del tipo "Tipo". He obviado los recargos de equivalencia para mayor claridad
1.- Construcción de las Bases Imponibles
For each LineaVenta in Ventas (Para cada línea de venta)
LineasVenta(Base) = LineasVenta(Uds) * LineasVenta(Precio) - (DescuentosLineas) + (RecargosLineas) 'En los Descuentos y recargos se incluyen prorrateados los descuentos y recargos globales
Next
2.-Cálculo de Brutos e Impuestos por línea
For each Tipo in TiposDeImpuestos (Para cada Tipo de Impuesto)
For each Linea in LineasVenta(Tipo) 'Obtiene todas las líneas de venta del Tipo "Tipo"
LineaBruto = Linea(Base) * 100 / (100 + Tipo)
LineaIva = Redondea2Decimales(LineaBruto * Tipo / 100)
LineaBruto = Redondea2Decimales(Linea(Base) - LineaIva)
Next
Next
3.-Ajustes de las Bases imponibles
For each Tipo in TiposDeImpuestos
For Each ValorBruto in LineasBruto(Tipo) 'Obtiene todos los valores brutos de las líneas con el Tipo "Tipo"
Parcial += ValorBruto
Next
Ajuste = LineaBruto(Tipo) - Parcial
si Ajuste <> 0 quiere decir que las sumas de las bases de cada línea para el tipo "Tipo" difiere de la Base imponible del tipo "Tipo"
Le aplico el ajuste a la primera línea del Tipo "Tipo"
if Ajuste <> 0 then
For Each Linea in LineaBruto(Tipo)
Linea(Bruto) += Ajuste
exit for
End if
End if
Next
4.- Hacemos lo mismo con los Impuestos
For each Tipo in TiposDeImpuestos
For Each ValorIva in LineasIva(Tipo)
Parcial += ValorIva
Next
Ajuste = LineaIva(Tipo) - Parcial
si Ajuste <> 0 quiere decir que las sumas de los Ivas de cada línea para el tipo "Tipo" difiere de el Valor de Iva para el tipo "Tipo"
Le aplico el ajuste a la primera línea del Tipo "Tipo"
if Ajuste <> 0 then
For Each Linea in LineasIva(Tipo)
Linea(Iva) += Ajuste
exit for
End if
End if
Next