Sistema de Gestión de Negocios "Hexa"
Base de datos de conocimiento.
Doc. Ref. 9215 Título: Script de comprobación de IVA Autor: Hexa Última actualización: 07/09/2012#script #Libro #IVA #477 #472 #descuadre |
Script de comprobación de IVA
Ejemplo de un script que comprueba y busca descuadres entre las cuentas de IVA del grupo 477 y el libro de IVA (Listados de facturas)
Function Main (PS0, PS1, PS2) 'Búsqueda de descuadres contables de IVA
'Lo haremos para las facturas comprendidas en un rango de fechas. El método IBX del objeto formularios permite
'solicitar datos son diferentes ayudas según el tipo
FechaDesde = Formularios.IBX ("Fecha desde", "Fecha", 0) : FechaHasta = Formularios.IBX ("Fecha hasta", "Fecha", 0)
'Declaración del recordset de facturas e inicialización del texto para el resultado
Dim Factura : Set Factura = CreateObject("ADODB.RecordSet") : Factura.CursorLocation = 3 'AdUseClient
Resultado = ""
'Abrimos y recorremos el Recordset de facturas. Sólo las que tienen importe diferente de cero y están en el rango de fechas
Factura.Open "SELECT Prefijo, Numero, ImporteIVA1 + ImporteIVA2 + ImporteIVA3 + ImporteRE1 + ImporteRE2 + ImporteRE3 As ImporteIVA FROM Factura WHERE Total <> 0 And Fecha>=" & FH.SQLF (FechaDesde) & " And Fecha<=" & FH.SQLF (FechaHasta), Cn : Set Factura.ActiveConnection = Nothing
Do While Not Factura.EOF
'Localizar el asiento contable correspondiente a esa factura y...
Asiento = FH.VAC (BaseDeDatos.Cmp ("Asiento", "Numero", "TipoDocumento='Factura' And PrefijoDocumento=" & FH.SQLT (Factura.Fields ("Prefijo")) & " And NumeroDocumento=" & Factura.Fields ("Numero"), False))
If Asiento=0 Then 'Si no existe, informar en el resultado
Resultado = Resultado & "Fra." & Factura.Fields ("Prefijo") & "-" & Factura.Fields ("Numero") & " no tiene asiento" & VbCrLf
'Si existe, comprobar que la suma de importes de IVA y Recargo de Equivalencia
'de la factura cuadren con la suma de importes de apuntes en cuentas de IVA.
Else
'En este ejemlo se contabiliza todos los importes de IVA en la misma cuenta 47700000
ImporteApuntesIVA = FH.VAC (BaseDeDatos.Cmp ("Apunte", "Sum (Debe - Haber)", "Asiento=" & Asiento & " And Cuenta='47700000'", False))
'Si no cuadra, informar en el resultado
If - ImporteApuntesIVA <> FH.VAC (Factura.Fields("ImporteIVA")) Then Resultado = Resultado & "Fra." & Factura.Fields ("Prefijo") & "-" & Factura.Fields ("Numero") & " tiene un importe total de IVA de " & Factura.Fields("ImporteIVA") & " y un importe contabilizado de " & - ImporteApuntesIVA & VbCrLf
End If
Factura.MoveNext
Loop
'Cerrar el recordset, liberar los recursos del objeto y devolver el resultado
Factura.Close : Set Factura = Nothing
Main = Resultado
End Function