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

Volver a la búsqueda anterior