BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END
Attribute VB_Name = "Empresas" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes" Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Public Enum ErroresEmpresas
iInsertError = (vbObjectError + 1) iUpdateError = (vbObjectError + 2) iDeleteError = (vbObjectError + 3) iListError = (vbObjectError + 4) End Enum
Dim mAuxiliar As Auxiliar
Dim mDelegaciones As Delegaciones Dim mEjercicios As Ejercicios
Private Function sDate(fecha As Variant) As String Set mAuxiliar = New Auxiliar
sDate = mAuxiliar.sDate(fecha) Set mAuxiliar = Nothing End Function
Public Sub Insert(cn As ADODB.Connection, codigo_empresa As String, nif As String, nombre As String, direccion As String, _
cp As String, poblacion As String, provincia As String, pais As String, telefono As String, _
fax As String, correo As String, digitos As Integer, ultimo_usuario As String, transaccion_activa As Boolean)
Dim cnsys As ADODB.Connection Dim strCmd As String
Dim rs As New ADODB.Recordset Dim rsAux As New ADODB.Recordset
On Error GoTo InsertError
Set cnsys = New ADODB.Connection cnsys.Open "File name=Sistema.udl"
If Not transaccion_activa Then cn.BeginTrans
'Afegeixo l'empresa nova
strCmd = "SELECT * FROM Empresas WHERE 1 = 0" rs.Open strCmd, cn, adOpenStatic, adLockOptimistic rs.AddNew rs("codigo_empresa") = codigo_empresa rs("nif") = nif rs("nombre") = nombre rs("direccion") = direccion rs("cp") = cp rs("poblacion") = poblacion rs("provincia") = provincia rs("pais") = pais rs("telefono") = telefono rs("fax") = fax rs("correo") = correo rs("digitos") = digitos rs("ultima_modificacion") = sDate(Date) rs("ultimo_usuario") = ultimo_usuario
rs.Update rs.Close
'Afegeixo la delegació associada a l'empresa i assigno els usuaris a la nova delegació
Set mDelegaciones = New Delegaciones
mDelegaciones.Insert cn, codigo_empresa, codigo_empresa, nombre, direccion, cp, poblacion, provincia, pais, telefono, fax, correo, ultimo_usuario, True
Set mDelegaciones = Nothing
'Creo un exercici per defecte Set mEjercicios = New Ejercicios
mEjercicios.Insert cn, codigo_empresa, Year(Date), sDate("01/01/" &
Trim(str(Year(Date)))), sDate("31/12/" & Trim(str(Year(Date)))), sDate("01/01/" & Trim(str(Year(Date)))), sDate("31/12/" & Trim(str(Year(Date)))), "N", "N", ultimo_usuario, True
Set mEjercicios = Nothing
'Copio els comptes del balanç de situacio i perdues i guanys strCmd = "SELECT * FROM sysPergan"
rs.Open strCmd, cnsys, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
strCmd = "SELECT * FROM Pergan WHERE 1 = 0"
rsAux.Open strCmd, cn, adOpenStatic, adLockOptimistic
rs.MoveFirst While Not rs.EOF rsAux.AddNew rsAux("codigo_empresa") = codigo_empresa rsAux("dh") = rs("dh") rsAux("nivel_1") = rs("nivel_1") rsAux("nivel_2") = rs("nivel_2") rsAux("nivel_3") = rs("nivel_3") rsAux("nivel_4") = rs("nivel_4") rsAux("titulo") = rs("titulo") rsAux("cuentas") = rs("cuentas") rsAux("ultima_modificacion") = sDate(Date) rsAux("ultimo_usuario") = ultimo_usuario rsAux.Update rs.MoveNext Wend rsAux.Close End If rs.Close
strCmd = "SELECT * FROM sysSituacion"
rs.Open strCmd, cnsys, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
strCmd = "SELECT * FROM Situacion WHERE 1 = 0" rsAux.Open strCmd, cn, adOpenStatic, adLockOptimistic
rs.MoveFirst While Not rs.EOF rsAux.AddNew rsAux("codigo_empresa") = codigo_empresa rsAux("ap") = rs("ap") rsAux("nivel_1") = rs("nivel_1") rsAux("nivel_2") = rs("nivel_2") rsAux("nivel_3") = rs("nivel_3") rsAux("titulo") = rs("titulo") rsAux("cuentas") = rs("cuentas") rsAux("ultima_modificacion") = sDate(Date) rsAux("ultimo_usuario") = ultimo_usuario rsAux.Update rs.MoveNext Wend rsAux.Close End If
rs.Close
'Creo el plan comptable
strCmd = "SELECT * FROM sysPlanContable"
rs.Open strCmd, cnsys, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
strCmd = "SELECT * FROM Cuentas WHERE 1 = 0"
rsAux.Open strCmd, cn, adOpenStatic, adLockOptimistic
rs.MoveFirst While Not rs.EOF rsAux.AddNew rsAux("codigo_empresa") = codigo_empresa rsAux("cuenta") = rs("cuenta") rsAux("descripcion") = rs("titulo") rsAux("pases") = "N" rsAux("nivel") = rs("nivel") rsAux("ultima_modificacion") = sDate(Date) rsAux("ultimo_usuario") = ultimo_usuario rsAux.Update rs.MoveNext Wend rsAux.Close End If rs.Close
strCmd = "SELECT * FROM sysPlanContable WHERE nivel = 3" rs.Open strCmd, cnsys, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
strCmd = "SELECT * FROM Cuentas WHERE 1 = 0"
rsAux.Open strCmd, cn, adOpenStatic, adLockOptimistic
rs.MoveFirst While Not rs.EOF rsAux.AddNew
rsAux("codigo_empresa") = codigo_empresa
rsAux("cuenta") = rs("cuenta") & String(digitos - 3, "0") rsAux("descripcion") = rs("titulo") rsAux("pases") = "S" rsAux("nivel") = digitos rsAux("ultima_modificacion") = sDate(Date) rsAux("ultimo_usuario") = ultimo_usuario rsAux.Update rs.MoveNext Wend rsAux.Close End If rs.Close
If Not transaccion_activa Then cn.CommitTrans
cnsys.Close
Set rs = Nothing Set rsAux = Nothing
Exit Sub InsertError:
If Not transaccion_activa Then cn.RollbackTrans
Err.Raise iInsertError, , FormatError(cn, "Error en Insert.") End Sub
Public Sub Update(cn As ADODB.Connection, codigo_empresa As String, nif As String, nombre As String, direccion As String, _
cp As String, poblacion As String, provincia As String, pais As String, telefono As String, _
fax As String, correo As String, digitos As Integer, ultimo_usuario As String, transaccion_activa As Boolean)
Dim rs As New ADODB.Recordset
On Error GoTo UpdateError
If Not transaccion_activa Then cn.BeginTrans
strCmd = "SELECT * FROM Empresas WHERE codigo_empresa = '" & codigo_empresa & "'" rs.Open strCmd, cn, adOpenStatic, adLockOptimistic
rs("nif") = nif rs("nombre") = nombre rs("direccion") = direccion rs("cp") = cp rs("poblacion") = poblacion rs("provincia") = provincia rs("pais") = pais rs("telefono") = telefono rs("fax") = fax rs("correo") = correo rs("digitos") = digitos rs("ultima_modificacion") = sDate(Date) rs("ultimo_usuario") = ultimo_usuario rs.Update rs.Close
Set mDelegaciones = New Delegaciones
mDelegaciones.Update cn, codigo_empresa, codigo_empresa, nombre, direccion, cp, poblacion, provincia, pais, telefono, fax, correo, ultimo_usuario, True
Set mDelegaciones = Nothing
If Not transaccion_activa Then cn.CommitTrans Exit Sub
UpdateError:
If Not transaccion_activa Then cn.RollbackTrans
Err.Raise iUpdateError, , FormatError(cn, "Error en Update.") End Sub
Public Sub Delete(cn As ADODB.Connection, codigo_empresa As String, transaccion_activa As Boolean)
Dim strCmd As String
On Error GoTo DeleteError
If Not transaccion_activa Then cn.BeginTrans
strCmd = "DELETE FROM Cartera WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM RegistroIva WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM RegistroIrpf WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Apuntes WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM RestriccionesUsuariosMenus WHERE codigo_empresa = '" & codigo_empresa & "'"
cn.Execute strCmd
strCmd = "DELETE FROM UsuariosDelegaciones WHERE codigo_empresa = '" & codigo_empresa & "'"
cn.Execute strCmd
strCmd = "DELETE FROM Delegaciones WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Numeraciones WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Ejercicios WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
cn.Execute strCmd
strCmd = "DELETE FROM Cuentas WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Acrdeu WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Personal WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Situacion WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Pergan WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Irpf WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM FormasPagos WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Impuestos WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Diarios WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
strCmd = "DELETE FROM Empresas WHERE codigo_empresa = '" & codigo_empresa & "'" cn.Execute strCmd
If Not transaccion_activa Then cn.CommitTrans
Exit Sub DeleteError:
If Not transaccion_activa Then cn.RollbackTrans
Err.Raise iDeleteError, , FormatError(cn, "Error en Delete.") End Sub
Public Function GetList(cn As ADODB.Connection, Optional strWhere As String, Optional strOrder As String) As Object
Dim strCmd As String Dim rs As ADODB.Recordset
strCmd = "SELECT * FROM Empresas"
If Len(strWhere) > 0 Then
strCmd = strCmd & " WHERE " & strWhere End If
If Len(strOrder) > 0 Then
strCmd = strCmd & " ORDER BY " & strOrder End If
Set rs = New ADODB.Recordset
On Error GoTo GetListError
rs.Open strCmd, cn, adOpenStatic, adLockOptimistic
Set GetList = rs
Exit Function GetListError:
Err.Raise iListError, , FormatError(cn, "Error en GetList.") End Function
Private Function FormatError(cn As ADODB.Connection, strError As String) As String Dim eError As ADODB.Error
Dim sAux As String
If Len(strError) > 0 Then sAux = strError & vbCrLf End If
sAux = sAux & eError.Source & " (Referencia " & eError.Number & "): " & eError.Description & vbCrLf Next eError FormatError = sAux End Function