;** Senha **********************************************************************
;*  Controle de Acesso ao Sistema                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/09/1996 por Anivel Augusto Rodrigues
;Ultima Alteracao: 09/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VERSAO Windows VISTA ?
;Ultima Alteracao: 14/09/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Net Config XP/98
;Ultima Alteracao: 29/09/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Logo
;Ultima Alteracao: 05/11/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout
;Ultima Alteracao: 27/11/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Senha
;Ultima Alteracao: 08/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Senha
;Ultima Alteracao: 25/06/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Senha+enter acesso direto sem OK
;Ultima Alteracao: 11/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Nome Usuario sem CFG privir()
;Ultima Alteracao: 28/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Usuario/Vendedor
;Ultima Alteracao: 07/12/2009 por Cleber Alves
;Motivo Alteracao: Acrescimo SYS_USUARIO_BALCAO
;Ultima Alteracao: 10/06/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes VSDGUSUARIO
;Ultima Alteracao: 30/06/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para bloquear usuario Inativo
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 21/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes release vars e procs desnecesarias
;Ultima Alteracao: 21/12/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Titulo barra superior e cor         
;Ultima Alteracao: 03/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_USUARIO_CODEMPR                
;Ultima Alteracao: 05/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_TITULO_MENU
;Ultima Alteracao: 08/11/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ExibeRodape()e LimpaRodape()
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SD_Dialog()
;Ultima Alteracao: 12/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sound..                       

;*******************************************************************************
;* Rotina verificar versao Windows/Linux                                       *
;*******************************************************************************
Proc Ver_Versao()

ExibeRodape(2,"Carregando "+Barra_String+"  Verificando Vers„o SO")

SYS_VERSAO_SO="Windows"
SYS_VERSAO_SO2="Windows 95/98/XP/7/Server"
If IsFile("C:\\VISE\\VER_SO.sc")
   Then SYS_VERSAO_SO2="Linux ??"
        PLay "C:\\VISE\\VER_SO"
        Return
EndIf

If IsFile("C:\\VISE\\VERSAOSO.TXT")
   Then Editor Open "C:\\VISE\\VERSAOSO.TXT"
        {Edit} {Goto} {1}
        Editor Find "vers"
        If RetVal
           Then Extrair_Linha()
                If SearchFrom(" 5.",ELINHA,1)>0
                   Then SYS_VERSAO_SO2="Windows XP"
                EndIf
                If SearchFrom(" 6.",ELINHA,1)>0
                   Then SYS_VERSAO_SO2="Windows Vista"
                EndIf
        EndIf
        CancelEdit
EndIf

EndProc

;************************************
;* Rotina para Gravar Log           *
;************************************
Proc Grava_Logsys(op)
Private s,arqtxt

;**** LOGSYS.TXT ***************************************************************
arqtxt="\\Sistemas\\Cadastro\\rois.r"
s=Format("D13",Today())+" "
s=s+Time()+" "
s=s+SYS_CHAPA_USUARIO+" "
s=s+Completa(SubStr(SYS_NOME_USUARIO,1,10),11," ")
s=s+SYS_NIVEL_USUARIO+" "
s=s+Format("W2,AL",SYS_NCONEXAO)+" "
s=s+Completa(SubStr(SYS_ESTACAO,1,12),13," ")
s=s+">[Menu    ]"+op
FileWrite Append arqtxt From s+"\n"

Release Vars s, arqtxt
EndProc

;************************************
;* Rotina para Gravar Log           *
;************************************
Proc Exclui_LogNet(op)
Private op

Moveto "LogNet"
Moveto [Chapa]
Locate SYS_CHAPA_USUARIO, SYS_NCONEXAO
If RetVal
   Then If Not IsLockRecord()
           Then Del
        EndIf
EndIf

Grava_LogSys(op)
EndProc

;*******************************************************************************
;*           Rotina Inicializacao                                              *
;*******************************************************************************
Proc Seta_Usuario()
Private wx, MSG

If IsAssigned(SYS_SUPERVISORES_DADOS) Then  Release Vars SYS_SUPERVISORES_DADOS EndIf

DynArray SYS_SUPERVISORES_DADOS[]
wx=1
View NoWindow "\\Sistemas\\Cadastro\\Usuarios"
Scan For ([Nivel de Acesso]="S" Or [Nivel de Acesso]="E")
  SYS_SUPERVISORES_DADOS[wx]=Completa([Chapa],4," ")+Completa([Senha],6," ")+Completa([Nome],30," ")+[Nivel de Acesso]
  wx=wx+1
EndScan
ClearImage

If DirExists(SYS_DIR_USUARIO)=0
   Then MSG="Usu rio: "+SYS_CHAPA_USUARIO+" - "+SYS_NOME_USUARIO+"// //"
        MSG=MSG+"N„o encontrado a configura‡„o para trabalho !//"
        MSG=MSG+"Verificar com o Supervisor !"
        Mensagem(MSG)
        ClearAll
        UnPassword "t01avivcl"
        Exit
EndIf

Monta_Array_Teclas_Atalho()
SetDir SYS_DIR_USUARIO

Release Vars wx, MSG
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Ler_Usuario()
Moveto [Chapa]
Locate VSDGUSUARIO
If RetVal
   Then VSDGNOMUSUARIO=[Nome]
        Campo="TG_SENHA"
   Else MENSAGEM("Usu rio n„o cadastrado p/ uso do Sistema !")
Endif
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento, temp, TECLA, MSG_CAMPO

Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN" And SHOW_JANELA=1
   Then AoCriarShowDialog()
        Campo=Campo_Ini
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_USUARIO"       : Campo="NO"
            Case Campo="TG_SENHA"         : Campo="TG_USUARIO"
            Case Campo="TG_MUDARSENHA"    : Campo="TG_SENHA"
            Case Campo="TG_SENHA1"        : Campo="NO"
            Case Campo="TG_SENHA2"        : Campo="TG_SENHA1"
            Case (Campo="YES" Or Campo="NO") And SHOW_JANELA=1 : Campo="TG_USUARIO"
            Case (Campo="YES" Or Campo="NO") And SHOW_JANELA=2 : Campo="TG_SENHA1"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_USUARIO"     :
                         VSDGUSUARIO=ALINHM(ControlValue("TG_USUARIO"),4)
                         Ler_Usuario()
                         If VSDGUSUARIO<>USUARIOANT
                            Then USUARIOANT=VSDGUSUARIO
                                 CS_SENHA=1
                         EndIf
                    Case Campo="TG_SENHA"       : Campo="YES"
                         VSDGSENHA  =ControlValue("TG_SENHA")
                         AcceptDialog

                    Case Campo="TG_SENHA1"      : Campo="TG_SENHA2"
                         VSDGSENHA1 =ControlValue("TG_SENHA1")
                    Case Campo="TG_SENHA2"      : Campo="YES"
                         VSDGSENHA2 =ControlValue("TG_SENHA2")
                    Case Campo="TG_MUDARSENHA"  : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_USUARIO":
       MSG_CAMPO="Informe o c¢digo do usu rio"
  Case Campo="TG_SENHA":
       MSG_CAMPO="Informe a senha do usu rio"
  Case Campo="TG_SENHA1":
       MSG_CAMPO="Informe a nova senha com at‚ 6 caracteres"
  Case Campo="TG_SENHA2":
       MSG_CAMPO="Confirme a nova senha"
  Case Campo="NO" And SHOW_JANELA=1:
       MSG_CAMPO="Cancelar/Sair !"
  Case Campo="NO" And SHOW_JANELA=2:
       MSG_CAMPO="Cancelar/Retornar !"
  Case Campo="YES":
       MSG_CAMPO="Confirmar Dados/Entrar !"
  Case Campo="TG_MUDARSENHA":
       TECLA    ="Barra de espa‡o=Marca/Desmarca  "
EndSwitch

SelectControl Campo

ExibeRodapeSD(MSG_CAMPO)
ExibeRodape(2,"Esc=Retornar  Enter=Avan‡ar  "+TECLA)
RefreshDialog

Return Temp
EndProc

;*******************************************************************************
;* Rotina Verifica o Controle Dia                                                    *
;*******************************************************************************
Proc Verifica_Controle_Dia()
Private CONTROLE, CRIAR, CHAPA_USUARIO, NOME_USUARIO

SYS_FECHA_CONTROLE_AUTOMATICAMENTE = "N"
SYS_FECHA_CONTROLE_NDIAS           = 0
If IsFile("\\Sistemas\\Cadastro\\Contrdia.cfg")
   Then Copia_Arquivo("\\Sistemas\\Cadastro\\Contrdia.cfg "+PrivDir()+"a.sc")
        Play PrivDir()+"a"
EndIf

If SYS_TIPO_CONTRDIA="G"
   Then CHAPA_USUARIO=""
        NOME_USUARIO ="CONTROLE GERAL"
   Else CHAPA_USUARIO=SYS_CHAPA_USUARIO
        NOME_USUARIO =SYS_NOME_USUARIO
EndIf

If IsEmpty("ContrDia")
   Then CRIAR=True
   Else CRIAR=False
EndIf

Moveto "Contrdia"
If Not CRIAR
   Then Moveto [Chapa]
        Locate IndexOrder by "Indctdia" CHAPA_USUARIO,Today()
        If Not RetVal
           Then CRIAR=True
           Else Moveto "Usuarios"
                [Numero_Controle_Dia ]=[Contrdia->Numero_Controle_Dia]
                [Data_Ultima_Execucao]=Today()
                UnLockRecord
                Moveto "Contrdia"
        EndIf
EndIf

If CRIAR
  Then If SYS_FECHA_CONTROLE_AUTOMATICAMENTE="S"
          Then Scan For ([Situacao_Controle_Dia]="L") And ([Data]<(Today()-SYS_FECHA_CONTROLE_NDIAS))
                    [Situacao_Controle_Dia]="B"
               EndScan
       EndIf

       While True
         End
         If IsBlank([Numero_Controle_Dia])
            Then CONTROLE="000001"
            Else CONTROLE=AlinhM(StrVal(NumVal([Numero_Controle_Dia])+1),6)
         EndIf
         Moveto [Numero_Controle_Dia]
         Locate CONTROLE
         If Not RetVal
            Then End
                 Down
                 [Numero_Controle_Dia  ]=CONTROLE
                 If IsLockRecord()
                    Then Del
                    Else QuitLoop
                 EndIf
         EndIf
       EndWhile

       [Chapa                ]=CHAPA_USUARIO
       [Nome                 ]=NOME_USUARIO
       [Data                 ]=Today()
       [Hora                 ]=Time()
       [Situacao_Controle_Dia]="L"
       [Observacao           ]="Criar: "+CHAPA_USUARIO+" "+Format("D13",Today())+" "+Time()+" "+";"
       UnLockRecord

       Moveto "Usuarios"
       [Numero_Controle_dia  ]=CONTROLE
       [Data_Ultima_Execucao ]=Today()
       UnLockRecord

EndIf
Moveto "Usuarios"

Release Vars CONTROLE, CRIAR, CHAPA_USUARIO, NOME_USUARIO
EndProc


;*******************************************************************************
;* Rotina Monta Janela Digitacao De Senha/Vencida                              *
;*******************************************************************************
Proc NovaSenha()
Private wii,senhaok

MSG="Para sua maior seguran‡a, observe nossa(s) recomenda‡”es:       // //"
MSG=MSG+"- Evite utilizar sempre a mesma senha.                      //"
MSG=MSG+"- Procure utilizar os 6 caracteres dispon¡veis em sua senha.//"
MSG=MSG+"- Evite utililzar mais de 2 caracters iguais consecutivos.  //"
Mensagem(MSG)

While True
  Show_Janela=2
  ShowDialog "Alterar a senha do usu rio" Proc "SD_Dialog"
    Trigger "OPEN","ARRIVE"
      Key "ENTER","ESC"
       @ 07,22   Height 09 Width 37

       Label  @ 1,00 "Nova senha: " for "TG_SENHA1"
       Accept @ 1,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA1" to VSDGSENHA1

       Label  @ 3,00 "Confirmar nova senha: " for "TG_SENHA2"
       Accept @ 3,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA2" to VSDGSENHA2

       Pushbutton @ 05,05 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
       Pushbutton @ 05,18 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  Enddialog
  If Not RetVal
     Then Return False
  EndIf

  If (VSDGSENHA1<>VSDGSENHA2) Or
     IsBlank(VSDGSENHA1) or
     IsBlank(VSDGSENHA2)
     Then MENSAGEM("A nova senha e a senha confirmada n„o conferem !// //Digite-as novamente !")
          Loop
  EndIf

  ENCRIPTASENHA(VSDGSENHA1)
  [Senha        ]=SENHAENC
  [Data da Senha]=Today()+60
  Return True

EndWhile
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\BibMenu"

If Not IsAssigned(SYS_TITULO_MENU)
   Then SYS_TITULO_MENU=""
   Else SYS_TITULO_MENU=Chr(061)+" VISERP | "+Format("W40,AL",NOMEMPRESA)+"| "
EndIf
ShowPullDown
  SYS_TITULO_MENU : "" : ""
EndMenu                                       

If Not IsAssigned(Barra_String)   Then Barra(10, 4) EndIf

ExibeRodape(2,"Carregando "+Barra_String+"  Verificando Controle Dia")

DynArray Indices[]
TableInfo "Contrdia" Indexes to Indices
If Not IsAssigned(Indices["Indctdia"])
   Then
        While True
          Lock "\\Sistemas\\Cadastro\\Contrdia" FL
          If Retval Then Quitloop EndIf
        EndWhile

        XCopia_Arquivo("\\BASE\\SISTEMAS\\CADASTRO\\CONTRDIA.Y*")
        XCopia_Arquivo("\\BASE\\SISTEMAS\\CADASTRO\\CONTRDIA.X*")
        {Modify} {Restructure} TypeIn "Contrdia" Enter Do_It! ClearImage

        UnLock "\\Sistemas\\Cadastro\\Contrdia" FL

EndIf
Release Vars Indices

;--- Versao SO -----------------------------------------------------------------

Ver_Versao()

;--- LogNet --------------------------------------------------------------------

ExibeRodape(2,"Carregando "+Barra_String+"  Verificando net config \"lognet\"")

SYS_ESTACAO=""
SYS_LOGIN  =Upper(UserName())

If SYS_VERSAO_SO<>"Windows"
   Then SYS_ESTACAO="Linux ??"
   Else Deleta_Arquivo(PrivDir()+"lognet.Txt")
        comando="net config workstation >"+PrivDir()+"lognet.Txt"
        While True
          Executa_Programa(comando)
          Sleep 1000
          If IsFile(PrivDir()+"lognet.Txt")
             Then Editor Open PrivDir()+"Lognet.txt"
                  {Edit} {Goto} {1}
                  Editor Find "\\"
                  If not RetVal
                     Then CancelEdit
                          comando="net config >"+PrivDir()+"lognet.Txt"
                          Loop
                     Else Extrair_Linha()
                          pos_ini=SearchFrom("\\",ELINHA,1)
                          If pos_ini>0
                             Then SYS_ESTACAO=Upper(RTrim(SubStr(ELINHA,pos_ini+2,80)))
                                  SYS_ESTACAO=SubStr(SYS_ESTACAO,1,Len(SYS_ESTACAO)-1)
                          EndIf
                  EndIf
                  CancelEdit
                  QuitLoop
          EndIf
        EndWhile
        Release Vars pos_ini, comando
EndIf
;-------------------------------------------------------------------------------

CS_SENHA=1
USUARIOANT=""
Array VSDGMUDARSENHA[1]
VSDGMUDARSENHA[1]=False

While True
  View NoWindow "Contrdia"
  If ErrorCode()<>4 Then QuitLoop EndIf
EndWhile

ExibeRodape(2,"Carregando "+Barra_String+"  Configura‡”es do usu rio")

If Not IsAssigned(VSDGUSUARIO)    Then  VSDGUSUARIO   ="" EndIf
If Not IsAssigned(VSDGNOMUSUARIO) Then  VSDGNOMUSUARIO="" EndIf
If Not IsAssigned(NOMEMPRESA)     Then  NOMEMPRESA    ="" EndIf

View NoWindow "LogNet"
CoEdit NoWindow "Usuarios"
If IsFile(PrivDir()+"cfg_user.sc")
   Then Play PrivDir()+"cfg_user"
        Ler_Usuario()
        Campo_Ini="TG_SENHA"
   Else Campo_Ini="TG_USUARIO"
EndIf

Play "Viserp"
Sound 700 5
While True
  Show_Janela=1
  ShowDialog "[ Acesso ao Sistema ]" Proc "SD_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC"
     @ 02,18   Height 20 Width 60

  @ 01,01 ?? vl01
  @ 02,01 ?? vl02
  @ 03,01 ?? vl03
  @ 04,01 ?? vl04
  @ 05,01 ?? vl05
  @ 06,01 ?? vl06
  @ 07,01 ?? vl07
  @ 08,01 ?? vl08
  @ 09,01 ?? vl09
  @ 01,39 ?? "Vise Inform tica"
  @ 10,10 ?? "Sistema Integrado de Gest„o Empresarial"

  Frame Single From 00,00 to 11,57
  @ 11,00 ?? " "
  @ 00,57 ?? " "

  PaintCanvas Attribute sys_cviserp 00,00,11,57 ; VISERP

  PaintCanvas Attribute 16 00,00,11,00 ; +--
  PaintCanvas Attribute 16 00,00,00,57 ; Ý

  PaintCanvas Attribute 25 00,57,11,57 ;   Ý
  PaintCanvas Attribute 25 11,01,11,57 ; --+

  PaintCanvas Attribute 31 01,39,01,56 ; Vise Informatica
  PaintCanvas Attribute 31 10,10,10,56 ; Sistema Integrado de Gestao Empresairal

  @ 12,01 ?? "Dados    "+NOMEMPRESA
  PaintCanvas Attribute 112 12,09,12,49

  Label  @ 13,00 "~U~su rio" for "TG_USUARIO"
  Accept @ 13,09 Width 7 "A4" picture "#*#" Tag "TG_USUARIO" to VSDGUSUARIO

  @ 13,16 ?? VSDGNOMUSUARIO
  PaintCanvas Attribute 112 13,14,13,49

  Label  @ 14,00 "~S~enha" for "TG_SENHA"
  Accept @ 14,09 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA" to VSDGSENHA

  CheckBoxes @14,34 Height 1 Width 17 Tag "TG_MUDARSENHA"
  "~M~udar Senha" to VSDGMUDARSENHA[1]

  Pushbutton @ 16,15 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 16,32 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal
     Then 
          If IsAssigned(SYS_CHAPA_USUARIO) And
             IsAssigned(SYS_NCONEXAO)
             Then Exclui_LogNet("* FINALIZADO SISTEMA")
          EndIf

          Do_It!
          ClearAll

          EXIT

        ;;If IsAssigned(OW)
        ;;   Then Retorno_Senha=False
        ;;        QuitLoop
        ;;   Else Exit
        ;;EndIf
  EndIf

  LimpaRodape(0)
  ExibeRodape(2,"Carregando "+Barra(13, 05)+"  Verificando Usu rio")

  If [Nivel de Acesso]="I"
     Then Mensagem("Usu rio Bloqueado ! [INATIVO]")
          Campo_Ini="TG_SENHA"
          Loop
  EndIF 

  ENCRIPTASENHA(VSDGSENHA)
  If ([Senha]<>SENHAENC) Or IsBlank(VSDGSENHA)
     Then MENSAGEM("Senha Inv lida !")
          CS_SENHA=CS_SENHA+1
          If CS_SENHA<=3
             Then Campo_Ini="TG_SENHA"
                  Loop
             Else Mensagem("Acesso negado !")

                  If IsAssigned(SYS_CHAPA_USUARIO) And
                     IsAssigned(SYS_NCONEXAO)
                     Then Exclui_LogNet("* FINALIZADO SISTEMA")
                  EndIf

                  Moveto "Usuarios"
                  SYS_CHAPA_USUARIO=[Chapa]
                  SYS_NIVEL_USUARIO=[Nivel de Acesso]
                  SYS_NOME_USUARIO =[Nome]
                  SYS_NCONEXAO     ="??"
                  Grava_LogSys("* NEGADO ACESSO AO SISTEMA")

                  Do_It!
                  ClearAll
                  Exit
          Endif
     Else If VSDGMUDARSENHA[1]
             Then If Not NovaSenha()
                     Then Loop
                  EndIf
          EndIf
          If Today()>[Data da Senha]
             Then Mensagem("Sua senha esta vencida !// //Informar uma nova senha ?")
                  If Not NovaSenha()
                     Then Loop
                  EndIf
          Endif

          If IsAssigned(SYS_CHAPA_USUARIO) And
             IsAssigned(SYS_NCONEXAO)
             Then Exclui_LogNet("* FINALIZADO SISTEMA")
          EndIf

          LimpaRodape(0)
          ExibeRodape(2,"Carregando "+Barra(13, 06)+"  Verificando Conex”es")

          SYS_NCONEXAO=1
          TMP_C       =0
          While True
            Moveto "LogNet"
            Moveto [Chapa]
            Locate [Usuarios->Chapa]
            If Not RetVal
               Then UsuarioOk=True
               Else While True
                      UsuarioOk=True
                      TMP_C=TMP_C+1

                      msg1=""
                      msg1=msg1+"        Usu rio: "+Completa([Usuarios->Chapa]+" "+[Usuarios->Nome],30," ")+"//"
                      msg1=msg1+"        Conex„o: "+Completa("["+StrVal([NConexao])+"]",30," ")+"//"
                      msg1=msg1+"Esta‡„o da rede: "+Completa([Estacao],30," ")+"//"
                      msg1=msg1+"          Login: "+Completa([Login  ],30," ")+"//"
                      msg1=msg1+"    Efetuado em: "+Completa(Format("D13",[Data])+" - "+[Hora],30," ")+"//"

                      msg2=""
                      msg2=msg2+"[ "+Upper(RTrim(SubStr([Rotina],1,70)))+" ]//"
                      msg2=msg2+"[ em "+Format("D13",[Data_Rotina])+" as "+[Hora_Rotina]+"] // //"
                      msg2=msg2+"Evite de ter mais de uma conex„o em aberto !//"
                      msg2=msg2+"Se vocˆ realmente necessita abrir outra conex„o devido//"
                      msg2=msg2+"algum erro ocorrido, comunique imediatamente o Supervisor,//"
                      msg2=msg2+"talvez seja necess rio executar a Reestruturac„o/Reprocessamento !// //"
                    
                      SYS_NCONEXAO=[NConexao]+1
                      If IsBlank([Avisar_Supervisor])
                         Then [Avisar_Supervisor]="S"
                              UnLockRecord
                      EndIf
                      Skip
                      If EOT() Then QuitLoop EndIf
                      If [Chapa]<>[Usuarios->Chapa] Then QuitLoop EndIf
                    EndWhile
                    If TMP_C=1
                       Then msg1="O Sistema detectou que vocˆ j  esta conectado !//"+
                                 "J  existe uma conex„o sua em aberto no Sistema !// //"+msg1
                            msg2="Vocˆ est (va) na rotina: //"+msg2
                       Else msg1="O Sistema detectou que vocˆ j  esta conectado !//"+
                                 "Existem "+StrVal(TMP_C)+" conex”es abertas no Sistema !// //"+msg1
                            msg2="Sua £ltima rotina era: //"+msg2
                    EndIf
                    Mensagem(msg1)
                    
                    msg2=msg2+"Deseja efetuar uma nova conex„o ao Sistema ?"
                    Confgeral(msg2)
                    If Ok<>"S"
                       Then UsuarioOk=False
                            QuitLoop
                    EndIf
            EndIf
            If Not UsuarioOk Then QuitLoop EndIf

            LimpaRodape(0)
            ExibeRodape(2,"Carregando "+Barra_String+"  Criando Conex„o")

            End Down
            [Chapa   ]=[Usuarios->Chapa]
            [NConexao]=SYS_NCONEXAO
            If Not IsLockRecord()
               Then UsuarioOk=True

                    [Nome   ]=[Usuarios->Nome]
                    [Estacao]=SYS_ESTACAO
                    [Login  ]=SYS_LOGIN
                    [Data   ]=Today()
                    [Hora   ]=Time()
                    [Rotina ]="MENU"
                    [Data_Rotina]=Today()
                    [Hora_Rotina]=Time()

                    UnLockRecord

                    QuitLoop
            EndIf

          EndWhile
          Moveto "Usuarios"
          If Not UsuarioOk Then Loop EndIf
          Release Vars pos_ini, comando, TMP_C
;-------------------------------------------------------------------------------

          SYS_CHAPA_USUARIO  =[Chapa                 ]
          SYS_NIVEL_USUARIO  =[Nivel de Acesso       ]
          SYS_NOME_USUARIO   =[Nome                  ]
          SYS_TIPO_CONTRDIA  =[Tipo_Controle_Dia     ]
          
          SYS_USUARIO_BALCAO =[Usuario_Balcao        ]
          SYS_USUARIO_CODEMPR=[Cod_Empresa           ]
          SYS_USUARIO_CODVEND=[Codigo_Representante  ]
          SYS_USUARIO_GERVEND=[Gerencia_Representante]
          

          Verifica_Controle_Dia()

          SYS_CONTROLE_DIA =[Numero_Controle_Dia]
          If IsBlank([Modo Rodape Menu])
             Then [Modo Rodape Menu]="N"
          EndIf
          SYS_MODO_RODAPE  =[Modo Rodape Menu]
          If [Nivel de Acesso]="P" Or [Nivel de Acesso]="E"
             Then SYS_DIR_USUARIO="\\Sistemas\\Usuarios\\"+[CHAPA]
             Else SYS_DIR_USUARIO="\\Sistemas\\Cadastro"
          EndIf

          SYS_TITULO_MENU=Chr(061)+" VISERP | "+Format("W40,AL",NOMEMPRESA)+"| "+SYS_CHAPA_USUARIO+"/"+AlinhM(StrVal(SYS_NCONEXAO),2)+"| "+SYS_CONTROLE_DIA+"| "

          Editor Open "Savevars.sc"
          Editor Find "SYS_TITULO_MENU"
          If RetVal
             Then DELETELINE
                  ENTER
                  UP
                  TypeIn "SYS_TITULO_MENU = \""
                  TypeIn SYS_TITULO_MENU
                  TypeIn "\""
                  DOWN
          EndIf
          Do_It!

          Grava_LogSys("* ACESSO AO SISTEMA")
  EndIf
  Do_It!

  FileWrite        PrivDir()+"cfg_user.sc" From "VSDGUSUARIO  ="+Chr(34)+VSDGUSUARIO+Chr(34)+"\n"
  ClearAll

  s=RTrim(SubStr(SYS_NOME_USUARIO,1,12))+"/"+StrVal(SYS_NCONEXAO)
  SetUserName S

  Seta_Usuario()
  Retorno_Senha=True
  QuitLoop
EndWhile
LimpaRodape(0)
ClearAll
Release Vars TEMP, VSDGUSUARIO, VSDGNOMUSUARIO, VSDGSENHA, s,
             USUARIOANT, CAMPO_INI, SHOW_JANELA, MSG_CAMPO, TECLA,
             VSDGSENHA1, VSDGSENHA2, SENHAENC, CS_SENHA, VSDGMUDARSENHA,
             UsuarioOK, MSG1, MSG2, MSG
             
Release Procs SD_Dialog, NovaSenha, Seta_Usuario, Ler_Usuario, Grava_LogSys, Exclui_LogNet,
              Verifica_Controle_Dia, Ver_Versao
