Attribute VB_Name = "Mmantenimiento"
' modulo de opciones generales para el modulo de configuracion
' fecha/hora modificacion    : 6/9/2000 11:41
' modificado por             : gustavo duffoo
' modificacion               : se agrego el objeto command button a la lista de
'                             objetos que se deben desantivar en el proc.gHabilitarReg
                    
' fecha/hora modificacion    : 6/9/2000 11:41
' modificado por             : gustavo duffoo
' modificacion               : se agrego la rutina de seguridad
                    
' fecha/hora modificacion    : 9/9/2000 06:
' modificado por             : gustavo duffoo
' modificacion               : se modifico el boton salir para salir del form si hay uno activo o de la aplicacion

' fecha/hora modificacion    : 10/9/2000 12:58
' modificado por             : gustavo duffoo
' modificacion               : se modifico la activacion del boton eliminar

' fecha/hora modificacion    :11/09/2000 7:00 PM
' modificado por             : gustavo duffoo
' modificacion               : SE AGREGO EL CAPTION DEL BOTON SALIR

' fecha/hora modificacion    :11/09/2000 7:00 PM
' modificado por             : enrique franco
' modificacion               : SE AGREGO la funcion GValidarNulos

' fecha/hora modificacion    :12/09/2000 7:00 PM
' modificado por             : gustavo duffoo
' modificacion               : SE AGREGO la funcion GVDATO

' fecha/hora modificacion    :11/09/2002 8:00 pm
' modificado por             : gustavo duffoo
' modificacion               : SE cambio las llamadas al formulario mdi por una variable de referencia
                    
' fecha/hora modificacion    :12/09/2002 6:40 pm
' modificado por:              Edgar
' Modificación               : Se agrego en el procedimiento gHabilitarReg
'                              la validación para el control CtrlNumber

' fecha/hora modificacion    :17/09/2002 6:40 pm
' modificado por:             gustavo duffoo
' Modificación               : Se agrego la validacion para el boton imprmir de la barrar

' fecha/hora modificacion    :03/10/2002 12:40 pm
' modificado por:             gustavo duffoo
' Modificación               : Se agrego la FUNCION PARA VALIDAR DATOS SEGUN EL TAG


' fecha/hora modificacion    :11/10/2002 12:40 pm
' modificado por:             gustavo duffoo
' Modificación               : Se agrego la variable publica gstrcodmonedabase para leer la moneda base

' fecha/hora modificacion    :12/10/2002 12:40 pm
' modificado por:             gustavo duffoo
' Modificación               : Se agrego la variable publica gstrsiteproce para leer el almacen original


'OBSERVACION: LOS CONTROLES COMMANDBUTTON DEBEN ESTAR EN TABSTOP TRUE, EN LOS FORMULARIOS
Option Explicit
'****************************************************************************************************
'Variables de Configuracion IN_SETUP
'****************************************************************************************************
 Private MobjSetup As UTIL_SETUP.C_SETUP
 Private MOBJ_ALMACEN As DB_INV_MANTENIMIENTOS.C_ALMACEN
 Private MOBJ_moneda As DB_MA_MANTENIMIENTOS.C_MONEDA
 Private MrsTemporal As ADODB.Recordset
 
 Public GstrTipoCambioVentas As String
 Public GintDecPrecio As Integer 'Almacena los decimales del precio
 Public GintDecCosto As Integer  'Almacena los decimales de los costos
 Public GintDecStock As Integer  'Almacena los decimales del Stock
 Public GintDecResultado As Integer  'Almacena los decimales de los Resultados
 Public GstrCodMonedaBase As String  'Almacena el codigo de la moneda base
 
 Public GdblIGV As Double 'Almacena el porcentaje de IGV /Pero debe ser el codigo de la Tabla tAXS
 Public GStrCodigoIGV As String  'Guarda el código del IGV
 Public GDatFechaProceso As Date 'Almacena la Fecha de Proceso
 
 Public GstrPeriodo As String 'Almacena el periodo del Documento
 Public GstrCodTransferenciaIng As String
 Public GstrCodTransferenciaSal As String
 Public GstrReportesInv As String 'Almacena la ruta a los Reportes de Inventario
 Public GstrSiteProce As String
 Public GstrCodProveedorDefault As String
  Public GstrTipodeCambio As String
       
 Public GbytMovimiento As Byte ' 1 si es ingreso, 0 si es salida para las busquedas de movimientos
'****************************************************************************************************
 
 Public GCUSERID As String   'codigo de usuario
 Public gformmdi As MDIForm  ' referencia al formulario mdi
 Private mobj_cseguridad As DB_SE_MANTENIMIENTOS.c_seguridad

 
 '****************************************************************************************************
 ' Para Controlar el Estado del Cliente
 
 Public Const GC_CLIENTEACTIVO = "A"
 Public Const GC_CLIENTERETENCIONADMI = "H"
 Public Const GC_CLIENTERETENCIONCRED = "R"
 Public Const GC_CLIENTEINACTIVO = "I"
 Public Const GC_CLIENTEOTROS = "O"
 
 ' Para Controlar los Tipos de Pagos
 
 Public Const GC_PAGOEFECTIVO = "01"
 Public Const GC_TARJETACRED = "02"
 Public Const GC_CHEQUEGERENCIA = "03"
 Public Const GC_CHEQUECOMERCIAL = "04"
 Public Const GC_CHEQUEDIFERIDOCRED = "05"
 Public Const GC_VALESCRED = "06"
 Public Const GC_OTROS = "07"
 
 
Sub Main()
        
        Set MOBJ_ALMACEN = New DB_INV_MANTENIMIENTOS.C_ALMACEN
        Set MOBJ_moneda = New DB_MA_MANTENIMIENTOS.C_MONEDA
        Set MobjSetup = New UTIL_SETUP.C_SETUP
        
        Set mobj_cseguridad = New DB_SE_MANTENIMIENTOS.c_seguridad
        
        Set MrsTemporal = MobjSetup.ObtenerSetupGeneral
        
        If MrsTemporal.EOF Or MrsTemporal.RecordCount = 0 Then
            MsgBox "No se encontraron los datos de configuracion", vbCritical, "Error"
            End
        End If
        
        '************************************************************
        'Cargar Variables del Setup General
        '************************************************************
        GstrTipoCambioVentas = MrsTemporal!CURYTYPEIDSALES
        GintDecPrecio = MrsTemporal!FLOATPRICE
        GintDecCosto = MrsTemporal!FLOATCOST
        GintDecStock = MrsTemporal!FLOATQTY
        GintDecResultado = MrsTemporal!FLOATOUTPUT
        GdblIGV = MrsTemporal!TAXVALUEigv
        GStrCodigoIGV = MrsTemporal!TAXID
        GstrCodMonedaBase = MOBJ_moneda.MONEDAoriginal()
        GstrSiteProce = MOBJ_ALMACEN.Almacenoriginal()
        GStrCodigoIGV = MrsTemporal!TAXID
        GDatFechaProceso = MrsTemporal!DATEPROCE
        GstrTipodeCambio = MrsTemporal!SOURCECURYTYPEID
        GintTurnoActual = MrsTemporal!SALESPERSONTURN
        
        '************************************************************
        'Cargar Variables del Setup de Inventarios
        '************************************************************
        Set MrsTemporal = MobjSetup.ObtenerSetupInventarios
        
        'GstrPeriodo = MrsTemporal!PERPOST
        GstrCodTransferenciaIng = MrsTemporal!INTYPETRANSFERIN
        GstrCodTransferenciaSal = MrsTemporal!INTYPETRANSFEROUT
        GstrReportesInv = Trim(MrsTemporal!REPORTPATH)
        GstrCodProveedorDefault = MrsTemporal!IDVENDORSS
        
                
        Set MOBJ_ALMACEN = Nothing
        Set MOBJ_moneda = Nothing
        Set MobjSetup = Nothing
        Set MrsTemporal = Nothing

        fseguridad.Show
End Sub
Public Sub gHabilitarReg(frmformulario As Form, ByVal Valor As Boolean)
' funcionabilidad    : activa o desactiva los objetos de un formulario
' parametros entrada: formulario donde se activan/desantivan los controles
Dim curcontrol As Control
With frmformulario
For Each curcontrol In .Controls
    If TypeOf curcontrol Is TextBox Then
            curcontrol.Enabled = Valor
    End If
     If TypeOf curcontrol Is DataCombo Then
             curcontrol.Enabled = Valor
    End If
     If TypeOf curcontrol Is ComboBox Then
          curcontrol.Enabled = Valor
    End If
     If TypeOf curcontrol Is CommandButton Then
          curcontrol.Enabled = Not curcontrol.Enabled
    End If
    
    If TypeOf curcontrol Is CheckBox Then
          curcontrol.Enabled = Valor
    End If
    If TypeOf curcontrol Is OptionButton Then
          curcontrol.Enabled = Valor
    End If
    If TypeOf curcontrol Is Frame Then
          curcontrol.Enabled = Not curcontrol.Enabled
    End If
    If TypeOf curcontrol Is CtrlNumber Then
          curcontrol.Enabled = Not curcontrol.Enabled
    End If
    If TypeOf curcontrol Is DTPicker Then
          curcontrol.Enabled = Not curcontrol.Enabled
    End If
Next
End With
End Sub

Public Sub gactualiza_barra(frm As Form)
'editar, primerregistro, ultimoregistro)
' funcionabilidad   : actualiza el status bar activando o desactivando
'                     los botones segun el valor pasado
    gformmdi.Toolbar1.Buttons(18).Caption = "Cerrar"    ' boton salir
'pb_editar , pb_primerregistro, pb_ultimoregistro

Select Case frm.pb_tiposcreen
    Case "M"
        If frm.pb_editar = True Then
            gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
            gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
            gformmdi.Toolbar1.Buttons(3).Enabled = True     ' boton Grabar
            gformmdi.Toolbar1.Buttons(4).Enabled = True     ' boton Descartar
            gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
            gformmdi.Toolbar1.Buttons(8).Enabled = False    'Boton Refrescar
            gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
            gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
            gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
            gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
            gformmdi.Toolbar1.Buttons(15).Enabled = False   ' Boton Ultimo
        Else
            gformmdi.Toolbar1.Buttons(3).Enabled = False ' boton Grabar
            gformmdi.Toolbar1.Buttons(4).Enabled = False  ' boton Descartar
            gformmdi.Toolbar1.Buttons(8).Enabled = True 'Boton Refrescar
        End If
        If frm.pb_primerregistro = True And (Not frm.pb_editar) Then
            gformmdi.Toolbar1.Buttons(10).Enabled = False ' Boton Primero
            gformmdi.Toolbar1.Buttons(11).Enabled = False ' Boton Anterior
            gformmdi.Toolbar1.Buttons(12).Enabled = True  ' Boton Siguiente
            gformmdi.Toolbar1.Buttons(13).Enabled = True   ' Boton Ultimo
        End If
        If frm.pb_ultimoregistro = True And (Not frm.pb_editar) Then
            gformmdi.Toolbar1.Buttons(10).Enabled = True ' Boton Primero
            gformmdi.Toolbar1.Buttons(11).Enabled = True ' Boton Anterior
            gformmdi.Toolbar1.Buttons(12).Enabled = False ' Boton Siguiente
            gformmdi.Toolbar1.Buttons(13).Enabled = False ' Boton Ultimo
        End If
        If (Not frm.pb_primerregistro) And (Not frm.pb_ultimoregistro) And (Not frm.pb_editar) Then
            gformmdi.Toolbar1.Buttons(10).Enabled = True ' Boton Primero
            gformmdi.Toolbar1.Buttons(11).Enabled = True ' Boton Anterior
            gformmdi.Toolbar1.Buttons(12).Enabled = True ' Boton Siguiente
            gformmdi.Toolbar1.Buttons(13).Enabled = True ' Boton Ultimo
        End If
    Case "P"
        gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
        gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
        gformmdi.Toolbar1.Buttons(3).Enabled = False     ' boton Grabar
        gformmdi.Toolbar1.Buttons(4).Enabled = False     ' boton Descartar
        gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
        gformmdi.Toolbar1.Buttons(8).Enabled = True    'Boton Refrescar
        gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
        gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
        gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
        gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
        gformmdi.Toolbar1.Buttons(15).Enabled = False   ' Boton imprimir
    Case "R"
        gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
        gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
        gformmdi.Toolbar1.Buttons(3).Enabled = False     ' boton Grabar
        gformmdi.Toolbar1.Buttons(4).Enabled = False     ' boton Descartar
        gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
        gformmdi.Toolbar1.Buttons(8).Enabled = True    'Boton Refrescar
        gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
        gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
        gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
        gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
        gformmdi.Toolbar1.Buttons(15).Enabled = True  ' Boton imprimir
    Case "T"
        If frm.pb_editar = True Then
            gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
            gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
            gformmdi.Toolbar1.Buttons(3).Enabled = True     ' boton Grabar
            gformmdi.Toolbar1.Buttons(4).Enabled = True     ' boton Descartar
            gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
            gformmdi.Toolbar1.Buttons(8).Enabled = False    'Boton Refrescar
            gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
            gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
            gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
            gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
            gformmdi.Toolbar1.Buttons(15).Enabled = True  ' Boton imprimir
        Else
            gformmdi.Toolbar1.Buttons(3).Enabled = False ' boton Grabar
            gformmdi.Toolbar1.Buttons(4).Enabled = False  ' boton Descartar
            gformmdi.Toolbar1.Buttons(8).Enabled = True 'Boton Refrescar
        End If
    Case Else
        gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
        gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
        gformmdi.Toolbar1.Buttons(3).Enabled = False     ' boton Grabar
        gformmdi.Toolbar1.Buttons(4).Enabled = False     ' boton Descartar
        gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
        gformmdi.Toolbar1.Buttons(8).Enabled = False    'Boton Refrescar
        gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
        gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
        gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
        gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
        gformmdi.Toolbar1.Buttons(15).Enabled = False  ' Boton imprimir
        
    End Select
    
    gformmdi.Toolbar1.Buttons(18).Caption = "Cerrar"
End Sub
Sub Gprimer_registro(frm As Form, irst As ADODB.Recordset)
'FUNCIONABILIDAD        : MOVERSE AL PRIMER REGISTRO DE UN ADODB.Recordset
'argumento de entrada   : formulario y ADODB.Recordset
If Not irst.EOF Then
    frm.pb_primerregistro = True
    frm.pb_ultimoregistro = False
    irst.MoveFirst
    Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
End If
End Sub
Sub Gregistro_siguiente(frm As Form, irst As ADODB.Recordset)
'FUNCIONABILIDAD        : MOVERSE AL SIGUIENTE REGISTRO DE UN ADODB.ADODB.Recordset
'argumento de entrada   : formulario y ADODB.ADODB.Recordset
If Not irst.EOF Then
    frm.pb_primerregistro = False
    irst.MoveNext
    If irst.EOF Then
        MsgBox ("Ùltimo registro"), vbInformation + vbDefaultButton1, "Mensaje"
        frm.pb_ultimoregistro = True
        irst.MoveLast
    End If
    Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
End If
End Sub

Sub Gregistro_anterior(frm As Form, irst As ADODB.Recordset)
'FUNCIONABILIDAD        : MOVERSE AL SIGUIENTE REGISTRO DE UN ADODB.Recordset
'argumento de entrada   : formulario y ADODB.Recordset
If Not irst.EOF Then
    frm.pb_ultimoregistro = False
    irst.MovePrevious
    If irst.BOF Then
        MsgBox ("Primer Registro"), vbInformation + vbDefaultButton1, "Mensaje"
        frm.pb_primerregistro = True
        irst.MoveFirst
    End If
    Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
End If
End Sub
Sub Gultimo_registro(frm As Form, irst As ADODB.Recordset)
'FUNCIONABILIDAD        : MOVERSE AL SIGUIENTE REGISTRO DE UN ADODB.Recordset
'argumento de entrada   : formulario y ADODB.Recordset
If Not irst.EOF Then
    frm.pb_ultimoregistro = True
    frm.pb_primerregistro = False
    irst.MoveLast
    Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
End If
End Sub
Sub ggrabar_registro(frm As Form)
'funcionabilidad      : actualizar los flags
'parametros de entrada : formulario que se esta grabando
frm.pb_agregar = False
frm.pb_editar = False
Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
Call gHabilitarReg(frm, frm.pb_editar)
Call gactualizaopcion(frm.pbderecho_agregar, frm.pbderecho_editar, frm.pbderecho_borrar, frm.pbderecho_imprimir)
MsgBox ("Registro Grabado"), vbInformation + vbDefaultButton1, "Mensaje"
End Sub
Public Sub gnuevoReg(frmformulario As Form)
'funcionabilidad    : pone en blanco todos los controles de un formulario
' parametros entrada: formulario donde se agregaran un registro
Dim curcontrol As Control
With frmformulario
For Each curcontrol In .Controls
    If TypeOf curcontrol Is TextBox Then
            curcontrol.Text = ""
    End If
     If TypeOf curcontrol Is DataCombo Then
             curcontrol.Text = ""
    End If
     If TypeOf curcontrol Is ComboBox Then
          curcontrol.Text = ""
    End If
    If TypeOf curcontrol Is CtrlNumber Then
          curcontrol.Text = "0"
    End If
    If TypeOf curcontrol Is CheckBox Then
          curcontrol.Value = 0
    End If
Next
End With
End Sub
Sub gagregar_registro(frm As Form, obj As Control)
'funcionabilidad    : agregar registros a un ADODB.Recordset
'parametros de entrada  : obj dbe ser el pk para dar el enfoque
'                         frm formulario donde se encuentra el ADODB.Recordset
Dim curcontrol As Control
frm.pb_agregar = True
frm.pb_editar = True
Call gHabilitarReg(frm, frm.pb_editar)
Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
With frm
For Each curcontrol In .Controls
    If TypeOf curcontrol Is TextBox Then
            curcontrol.Text = ""
    End If
     If TypeOf curcontrol Is DataCombo Then
             curcontrol.Text = ""
    End If
    If TypeOf curcontrol Is ComboBox Then
        If curcontrol.Style <> 2 Then
          curcontrol.Text = ""
        End If
    End If
    If TypeOf curcontrol Is CtrlNumber Then
          curcontrol.ValorPorDefecto
    End If
    If TypeOf curcontrol Is CheckBox Then
          curcontrol.Value = 0
    End If
Next
obj.SetFocus
End With
End Sub
Sub gmodificar_registro(frm As Form, obj As Control)
'funcionabilidad : activa los campos de un formulario y actualiza el status bar
'parametros de entrada: obj debe ser el pk para bloquer
'                       frm el formulario donde se encuentra el ADODB.Recordset

frm.pb_editar = True
Call gHabilitarReg(frm, frm.pb_editar)
Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
obj.Enabled = False
End Sub
Sub gdescartar_registro(frm As Form)
'funcionabilidad : desactiva los campos de un formulario y actualiza el status bar
'parametros de entrada: frm el formulario donde se encuentra el ADODB.Recordset

frm.pb_agregar = False
frm.pb_editar = False
Call gHabilitarReg(frm, frm.pb_editar)
Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
Call gactualizaopcion(frm.pbderecho_agregar, frm.pbderecho_editar, frm.pbderecho_borrar, frm.pbderecho_imprimir)
MsgBox ("Cambios Descartados"), vbInformation + vbDefaultButton1, "Mensaje"
End Sub
Sub gborrar_Registro(frm As Form, Optional rst As ADODB.Recordset, Optional obj As Control)
'funcionabilidad    :llamar al proc. de borrado,
' parametros de entrada frm formulario donde se desea eliminar
'                           rst ADODB.Recordset donde se va a eliminar
'                           obj control que contiene el pk
'llamada al procedimiento de borrado
'if not error then
    MsgBox ("Registro Borrado"), vbInformation + vbDefaultButton1, "Mensaje"
    Call gactualiza_barra(frm) 'frm.pb_editar, frm.pb_primerregistro, frm.pb_ultimoregistro)
'End If
End Sub
Function gseguridad(frm As Form)
'funcionabilidad        : determinar los derechos que el usuario tiene con ese formualario
' parametros de entrada : frm formulario donde se desea saber los derechos
' la sintaxis del titulo del formulario debe ser "descripcion ( MM NNN.NNN)
' MM modulo
' NNNN.NNN identificador de screen
Dim stitulo As String       'titulo del formulario
Dim sid As String        ' id del formulario
Dim rs_derechos As ADODB.Recordset  'derechos que tiene el usuario sobre el formualario
Dim scade As String 'cadena de conexion
stitulo = frm.Caption
sid = Mid(frm.Caption, Len(stitulo) - 9, 9)
sid = Mid(sid, 1, 2) + Mid(sid, 4, 3) + Mid(sid, 8, 2)
'Set rs_derechos = New adodb.Recordset

Set rs_derechos = mobj_cseguridad.listar_derechosUsuario(GCUSERID, sid)

' identifica los derechos del usuario
If rs_derechos.EOF Then
    frm.pbderecho_agregar = False
    frm.pbderecho_consultar = False
    frm.pbderecho_editar = False
    frm.pbderecho_borrar = False
    frm.pbderecho_imprimir = False
    gseguridad = False
    frm.pb_tiposcreen = ""
Else
    rs_derechos.MoveFirst
    frm.pb_tiposcreen = rs_derechos!screentype
    Do Until rs_derechos.EOF
        Select Case rs_derechos!screentype
            Case "T"        'transacciones
                frm.pbderecho_anular = IIf(Not frm.pbderecho_anular, rs_derechos!nullRIGHTS, True)
                frm.pbderecho_emitir = IIf(Not frm.pbderecho_emitir, rs_derechos!closeRIGHTS, True)
                frm.pbderecho_consultar = IIf(Not frm.pbderecho_consultar, rs_derechos!ViewRIGHTS, True)
                frm.pbderecho_agregar = IIf(Not frm.pbderecho_agregar, rs_derechos!iNSERTRIGHTS, True)
                frm.pbderecho_editar = IIf(Not frm.pbderecho_editar, rs_derechos!uPDATERIGHTS, True)
                frm.pbderecho_borrar = IIf(Not frm.pbderecho_borrar, rs_derechos!dELETERIGHTS, True)
                frm.pbderecho_imprimir = IIf(Not frm.pbderecho_imprimir, rs_derechos!pRINTRIGHTS, True)
            Case "M"        'maestros
                frm.pbderecho_consultar = IIf(Not frm.pbderecho_consultar, rs_derechos!ViewRIGHTS, True)
                frm.pbderecho_agregar = IIf(Not frm.pbderecho_agregar, rs_derechos!iNSERTRIGHTS, True)
                frm.pbderecho_editar = IIf(Not frm.pbderecho_editar, rs_derechos!uPDATERIGHTS, True)
                frm.pbderecho_borrar = IIf(Not frm.pbderecho_borrar, rs_derechos!dELETERIGHTS, True)
                frm.pbderecho_imprimir = IIf(Not frm.pbderecho_imprimir, rs_derechos!pRINTRIGHTS, True)
            Case "P"        'procesos
                frm.pbderecho_consultar = IIf(Not frm.pbderecho_consultar, rs_derechos!ViewRIGHTS, True)
                frm.pbderecho_agregar = False
                frm.pbderecho_editar = False
                frm.pbderecho_borrar = False
                frm.pbderecho_imprimir = IIf(Not frm.pbderecho_imprimir, rs_derechos!pRINTRIGHTS, True)
            Case "R"        'REPORTE
                frm.pbderecho_consultar = IIf(Not frm.pbderecho_consultar, rs_derechos!ViewRIGHTS, True)
                frm.pbderecho_agregar = False
                frm.pbderecho_editar = False
                frm.pbderecho_borrar = False
                frm.pbderecho_imprimir = IIf(Not frm.pbderecho_imprimir, rs_derechos!pRINTRIGHTS, True)
        End Select
        rs_derechos.MoveNext
    Loop
    gseguridad = frm.pbderecho_consultar
End If
End Function
Sub gsalir()
Unload gformmdi
End
End Sub
Sub gactualizaopcion(agregar, editar, borrar, imprimir)
gformmdi.Toolbar1.Buttons(1).Enabled = agregar ' Boton agregar
gformmdi.Toolbar1.Buttons(2).Enabled = editar ' Boton editar
gformmdi.Toolbar1.Buttons(6).Enabled = borrar ' Boton borrar
gformmdi.Toolbar1.Buttons(15).Enabled = imprimir ' Boton imprimir
End Sub

Public Sub gdesactiva_barra()
' funcionabilidad   : desactiva todos los gbotones de la barra
gformmdi.Toolbar1.Buttons(18).Caption = "Salir"    ' boton salir
gformmdi.Toolbar1.Buttons(1).Enabled = False    ' boton agregar
gformmdi.Toolbar1.Buttons(2).Enabled = False    ' boton modificar
gformmdi.Toolbar1.Buttons(3).Enabled = False    ' boton Grabar
gformmdi.Toolbar1.Buttons(4).Enabled = False     ' boton Descartar
gformmdi.Toolbar1.Buttons(6).Enabled = False    'Boton Borrar
gformmdi.Toolbar1.Buttons(8).Enabled = False    'Boton Refrescar
gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
gformmdi.Toolbar1.Buttons(15).Enabled = False   ' Boton imprimir
End Sub
Sub gestadoactualrs(frm As Form, rs As ADODB.Recordset)
If rs.EOF Then  'no hay registros
   Exit Sub
End If

If rs.AbsolutePosition = 1 Then
    frm.pb_ultimoregistro = False
    frm.pb_primerregistro = True
Else
    frm.pb_primerregistro = False
End If
If rs.AbsolutePosition = rs.RecordCount Then
    frm.pb_primerregistro = False
    frm.pb_ultimoregistro = True
Else
    frm.pb_ultimoregistro = False
End If
End Sub

Public Function GBloqueaCaracter(KeyAscii As Integer) As Integer
'autor : emnrique franco
'funcion evita que se digiten caracteres invalidos
If KeyAscii = 39 Or KeyAscii = 124 Then
    GBloqueaCaracter = 0
Else
    If KeyAscii >= 97 And KeyAscii <= 122 Then
       GBloqueaCaracter = KeyAscii - 32
    Else
       GBloqueaCaracter = KeyAscii
    End If
End If
End Function
Public Function GValidarNulos(ByVal IVarDato As Variant) As Variant
'autor : enrique franco
' funcion validas los datos obtenidos, si es null devuelve una cadena vacia
' de lo contrario devuelve el mismo datos
'parametro ingreso  : valor a evaluar
   If IsNull(IVarDato) Then
      GValidarNulos = Empty
   Else
      GValidarNulos = IVarDato
   End If
End Function
Public Function GVDATO(ByVal IVarDato As Variant) As String
'autor      : gustavo duffoo
'funcion    : validas los datos obtenidos, elimina mayusculas y espacios
'               en blanco, elimina los nulos
'parametro ingreso  : valor a cambiar
'parametro salida  : cadena sin espacios ni nulos y en mayusculas
'fecha          : 12/09/20002
   IVarDato = Trim(UCase(GValidarNulos(IVarDato)))
   GVDATO = IVarDato
End Function

'Autor : enrique franco
'Funcionalidad : Devuelve Cadena para formatear Números
'Parametro de Entrada :Numero de Decimales a Formatear

Public Function GMascara(IintNumerodeDecimales As Integer) As String
  Select Case IintNumerodeDecimales
     Case 0
          GMascara = "##,###,##0"
     Case 1
          GMascara = "##,###,##0.0"
     Case 2
          GMascara = "##,###,##0.00"
     Case 3
          GMascara = "##,###,##0.000"
     Case 4
          GMascara = "##,###,##0.0000"
     Case 5
          GMascara = "##,###,##0.00000"
     Case 6
          GMascara = "##,###,##0.000000"
     Case 7
          GMascara = "##,###,##0.0000000"
     Case 8
          GMascara = "##,###,##0.00000000"
End Select
End Function
'Autor : enrique franco
'Funcionalidad : Devuelve el Número Formateado
'Parametro de Entrada :Numero a Formatear ,Decimales

Public Function GFormatodeNumero(IdblValor As Double, IintDecimales As Integer) As Variant
     GFormatodeNumero = Format(IdblValor, GMascara(IintDecimales))
End Function
'Autor : GUSTAVO DUFFOO
'Funcionalidad : VALIDA LOS CAMPOS DE UN FORMULARIO SEGUN EL TAG
'                CONVIERTE TODOS LOS VALORES DE TEXTO A MAYUSCULA, SIN BLANCOS
'                VERIFICA LOS TEXTBOX, COMBOBOX, DATACOMBO,
'                SI EL TAG EMPIEZA CON R ES UN CAMPO REQUERIDO QUE NO DEBE ESTAR EN BLANCO
'                SI ESTA EN BLANCO Y ES REQUERIDO MUESTRA EL MENSAJE QUE ESTA A CONTINUANCION DEL TAG
'
'Parametro de Entrada :FORMULARIO
'Parametro de SALIDAS :BOOLEANO, TRUE SI ENCONTRO ERRORES, FALSE SI TODO ESTA OK
Public Function GVAL(frm As Form) As Boolean
Dim LS_TAG As String
GVAL = True
End Function

'Autor : Enriqueta Franco
'Funcionalidad : Retorna un mensaje de Error De acuerdo a el Número Recibido

Public Function MensajedeError(IVarnumeroError As Variant, Optional ISTRMensajeadicional As String) As String

    Select Case IVarnumeroError
       Case 20000
            MensajedeError = Mid(ISTRMensajeadicional, 48, Len(ISTRMensajeadicional))
       Case 20001
            MensajedeError = Mid(ISTRMensajeadicional, 48, Len(ISTRMensajeadicional))
       Case 20002
            MensajedeError = Mid(ISTRMensajeadicional, 48, Len(ISTRMensajeadicional))
       Case Else
            MensajedeError = ISTRMensajeadicional
    End Select
End Function
'Autor : EDGAR CANCHO
'Funcionalidad : LLENA LOS DATOS EN UN DATACOMPO
'PARAMETROS DE INGRESO :    DATACOMBO , OBJETO A LLENAR datalist o datacombo
'                           Rssource DEL CUAL SE OBTIENEN LOS DATOS
'                           istrCampo1 campo a devolver
'                           istrCampo2 campo a mostrar
Public Sub CargaDataCombo(objDataCombo As Object, rsSource As Recordset, istrCampo1 As String, istrCampo2 As String)
    Set objDataCombo.RowSource = rsSource
    objDataCombo.ListField = istrCampo2
    objDataCombo.BoundColumn = istrCampo1
    If Not rsSource.EOF Then
        objDataCombo.BoundText = rsSource.Fields(istrCampo2)
    End If
End Sub
Public Sub MENSAJES_USUARIO(validar As Integer)
If validar = 1 Then
    MsgBox ("No existe Usuario")
    Exit Sub
End If
If validar = 2 Then
    MsgBox ("Clave Incorrecta")
    Exit Sub
End If
If validar = 3 Then
    MsgBox ("Su clave ha expirado")
    Exit Sub
End If
If validar = 4 Then
    MsgBox ("Usuario Desactivado")
    Exit Sub
End If
If validar = 5 Then
    MsgBox ("Usuario Suspendido")
    Exit Sub
End If
End Sub
