Sistema de Gestión de Negocios "Hexa"
Base de datos de conocimiento.
usuario usuariows del grupo no autorizado
Dos scripts que permiten modificar números de cuentas contables
Los dos script que se presenta a continuación son un buen punto de partida para hacer cambios masivos en la numeración de los dígitos de las cuentas contables.
Creación de todas las cuentas de cliente con 8 dógitos seguidos del código de cliente
Sub Main (PS0, PS1, PS2)
Cn.Execute "delete cuenta where nivel=3 and numero like '430%'"End Sub
Dim Cliente : Set Cliente = CreateObject ("ADODB.Recordset") : Cliente.CursorLocation = 3 'AdUseClient
Cliente.Open "SELECT Cliente FROM Factura GROUP BY Cliente ORDER BY Cliente", Cn : Set Cliente.ActiveConnection = Nothing
Do While Not Cliente.EOFCuentaCorrecta = "430" & Right ("00000" & Cliente.Fields ("Cliente"), 5)Loop
BaseDeDatos.Introduce "Cuenta", "Numero, Subcuenta, Anterior, Nivel, Descripcion", FH.SQLT (CuentaCorrecta) & ", 1, '430',3," & FH.SQLT (BaseDeDatos.Cmp ("Cliente", "Nombre", "Codigo=" & Cliente.Fields ("Cliente"), False))
Cliente.MoveNext
Modificación de todos los apuntes correspondientes a facturas y cobros para adaptarlo a cuentas de cliente de 8 dígitos
El proceso consiste en:
- Recorrer todos los apuntes.
- Para cada apunte, localizar el hecho contable, en este caso documento, correspondiente (factura o cobro).
- Localizar el código de cliente correspondiente a este hecho contable.
- Construir el nº de cuenta adecuada.
- Modificar el apunte para que utilice ese numero de cuenta.
Sub Main (PS0, PS1, PS2)
Dim Apunte : Set Apunte = CreateObject ("ADODB.Recordset") : Apunte.CursorLocation = 3 'AdUseClientEnd Sub
Apunte.Open "SELECT Numero, Asiento, Cuenta FROM Apunte WHERE Cuenta LIKE '430%' And Len (Cuenta) = 7 ORDER BY Numero", Cn : Set Apunte.ActiveConnection = Nothing
Do While Not Apunte.EOFTipoDocumento = BaseDeDatos.Cmp ("Asiento", "TipoDocumento", "Numero=" & Apunte.Fields ("Asiento"), False)Loop
PrefijoDocumento = BaseDeDatos.Cmp ("Asiento", "PrefijoDocumento", "Numero=" & Apunte.Fields ("Asiento"), False)
NumeroDocumento = BaseDeDatos.Cmp ("Asiento", "NumeroDocumento", "Numero=" & Apunte.Fields ("Asiento"), False)
Cliente = ""
If LCase (TipoDocumento) = "factura"
Cliente = BaseDeDatos.Cmp ("Factura", "Cliente", "Prefijo=" & FH.SQLT (PrefijoDocumento) & " And Numero=" & NumeroDocumento, False)End If
If LCase (TipoDocumento) = "cobro" or LCase (TipoDocumento) = "devolucion" ThenCliente = BaseDeDatos.Cmp ("Recibo", "Cliente", "Prefijo=" & FH.SQLT (PrefijoDocumento) & " And Numero=" & NumeroDocumento, False)End If
If Cliente <> "" ThenCuentaCorrecta = "430" & Right ("00000" & Cliente, 5)End If
BaseDeDatos.Modifica "Apunte", "Cuenta=" & FH.SQLT (CuentaCorrecta), "Numero=" & Apunte.Fields ("Numero")
Apunte.MoveNext
Modificación directa de cuentas
El proceso consiste en:
- Recorrer todas las subcuentas.
- Para cada una de ellas, si la la longitud es de 7 dígitos, crea un nuevo codigo a partir de los tres primeros y los cuatro últimos separados por un nuevo caracter "0".
- Modificar todos los registros de la tabla "Cuenta" y "Apunte" con el nuevo número.
Sub Main (PS0, PS1, PS2)
Dim Cuenta : Set Cuenta = CreateObject ("ADODB.Recordset") : Cuenta.CursorLocation = 3 'AdUseClientEnd Sub
Cuenta.Open "SELECT Numero FROM Cuenta WHERE Subcuenta=1 ORDER BY Numero", Cn : Set Cuenta.ActiveConnection = Nothing
Do While Not Cuenta.EOF
If Len (Cuenta.Fields ("Numero")) = 7 ThenLoop
CuentaCorrecta = Left (Cuenta.Fields ("Numero"), 3) & "0" & Right (Cuenta.Fields ("Numero"), 4)End If
BaseDeDatos.Modifica "Cuenta", "Numero=" & FH.SQLT (CuentaCorrecta), "Numero=" & FH.SQLT (Cuenta.Fields ("Numero"))
BaseDeDatos.Modifica "Apunte", "Cuenta=" & FH.SQLT (CuentaCorrecta), "Cuenta=" & FH.SQLT (Cuenta.Fields ("Numero"))
Cuenta.MoveNext
