;** 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..                       
;Ultima Alteracao: 03/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes corluz,corsombra,unica imagem 
;Ultima Alteracao: 05/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao viserp barra menu superior
;Ultima Alteracao: 24/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controle de cor
;Ultima Alteracao: 24/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes barra titulo com o drive:
;Ultima Alteracao: 30/04/2013 por Bruno Carvalho
;Motivo Alteracao: Incluido Cor_Splash e controle de cores na bilbioteca 
;Ultima Alteracao: 09/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes setacor_sistema           
;Ultima Alteracao: 03/07/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_VERSAO_SO2           
;Ultima Alteracao: 31/07/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IsLockRecord() controle gravaÆo na systable
;Ultima Alteracao: 05/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Verifica_Controle_Dia()
;Ultima Alteracao: 18/06/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes UnlockRecord apos alterar senha em Usuarios
;Ultima Alteracao: 27/06/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes SYS_USUARIO_GERVEND
;Ultima Alteracao: 15/09/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Verifica_Controle_Dia() e Fechamento do controle
;Ultima Alteracao: 01/10/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Fechamento do controle de dia
;Ultima Alteracao: 06/05/2015 por Kamila Gomes
;Motivo Alteracao: Removido Fechamento do controle de dia neste script.  feito 
;                  somente no script Systable
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getrecord usuario / supervisor
;Ultima Alteracao: 19/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_NCONEXAO maximo 99, username 
;Ultima Alteracao: 16/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Modelo do Sistema                     
;Ultima Alteracao: 29/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Modelo do Sistema                     
;Ultima Alteracao: 22/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes carga lognet!     
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                    
;Ultima Alteracao: 09/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes loop islockrecord
;Ultima Alteracao: 18/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes extensÆo arquivo rois.r -> rois.log
;Ultima Alteracao: 29/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes uso fastmsg()
;Ultima Alteracao: 12/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao SO     
;Ultima Alteracao: 30/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes versao SO s¢ Windows
;Ultima Alteracao: 19/07/2018 por Bruno Carvalho
;Motivo Alteracao: Faz a verificaÆo se arquivo "arqtxt" existe, para utilizar Append ou criar um arquivo novo
;Ultima Alteracao: 18/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem denova conexÆo ao sistema
;Ultima Alteracao: 11/01/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado a criaÆo do arquivo LOGERRO p/ ser gerado apenas em seu ms atual em que os registros sÆo processados
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 02/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_VERSAO_SO2
;Ultima Alteracao: 27/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_VERSAO_SO2

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

ExibeRodape(2,"Carregando "+Barra_String+"  Verificando Verso SO")

SYS_VERSAO_SO="Windows"
SYS_VERSAO_SO2="Windows 32Bits - 10, 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
                If SearchFrom(" 7.",ELINHA,1)>0
                   Then SYS_VERSAO_SO2="Windows 7"
                EndIf
                If SearchFrom(" 10.",ELINHA,1)>0
                   Then SYS_VERSAO_SO2="Windows 10"
                EndIf
        EndIf
        CancelEdit
EndIf

EndProc

;************************************
;* Rotina para Gravar Log           *
;************************************
Proc Grava_Logsys(op)
Private s,arqtxt,LOG_MES,LOG_ANO,TXT_MES,TXT_ANO

;**** LOGSYS.TXT ***************************************************************
LOG_MES = Month(Today())
LOG_ANO = Year(Today())
TXT_MES = Ltrim(StrVal(LOG_MES))                                   If Len(TXT_MES)=1 Then TXT_MES = AlinhM(TXT_MES,2) EndIf 
TXT_ANO = SubStr(StrVal(LOG_ANO),3,2) 
arqtxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois"+TXT_MES+TXT_ANO+".log"

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 DirExists(SYS_DIR_USUARIO)=0
   Then MSG="Usu rio: "+SYS_CHAPA_USUARIO+" - "+SYS_NOME_USUARIO+"// //"
        MSG=MSG+"No encontrado a configurao 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 
        fastmsg("Usu rio no 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":
       MSG_CAMPO="Barra de espao=Marca/Desmarca  "
EndSwitch

SelectControl Campo

ExibeRodapeSD(MSG_CAMPO)
ExibeRodape(2,"Esc=Retornar  Enter=Avanar  "+TECLA)
RefreshDialog

Return Temp
EndProc

;*******************************************************************************
;* Rotina Verifica o Controle Dia                                                    *
;*******************************************************************************
Proc Verifica_Controle_Dia()
Private CONTROLE, 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"
                
                While IsLockRecord() EndWhile                   
                [Numero_Controle_Dia ]=[Contrdia->Numero_Controle_Dia]
                [Data_Ultima_Execucao]=Today()
                UnLockRecord

                Moveto "Contrdia"
                UnlockRecord
        EndIf
EndIf

If CRIAR
  Then 
       While True
         End
         Moveto [Numero_Controle_Dia]
         If Numero_Lancamento("Interno","Locked_Down")
            Then CONTROLE = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
                 quitloop
         EndIf    
       EndWhile
       
     ; 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
     ;      Else If Not IsLockRecord()
     ;              Then 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"
       While IsLockRecord() EndWhile
       [Numero_Controle_dia  ]=CONTROLE
       [Data_Ultima_Execucao ]=Today()
       UnLockRecord

       FECHA_CONTROLE=True
EndIf
Moveto "Usuarios"

Release Vars CONTROLE, CHAPA_USUARIO, NOME_USUARIO
EndProc

;*******************************************************************************
;* Rotina para fechar o Controle Dia                                                    *
;*******************************************************************************
Proc Fecha_Controle_Dia()
Private HOJE,MSG

HOJE=Today()

For wii From 1 to 6
    Lock "ContrDia" FL
    If Not RetVal 
       Then If wii <> 6
               Then Sleep 1000
                    Loop
            EndIf        
    EndIf 
    
    If wii = 6
       Then MSG="O usu rio "+Upper(ErrorUser())+" esta usando o Sistema !// //"
            MSG=MSG+Completa("- Contact -lo para liberar o Sistema;",40," ")+"//"
            MSG=MSG+"Se persistir, contacte o Suporte//"
            Mensagem(MSG)
            wii = 0
            Loop
    EndIf   
    
    If SYS_FECHA_CONTROLE_AUTOMATICAMENTE="S"
      Then 
           {Ask} {Contrdia} TypeIn "Fast"
           Moveto [Data                 ] TypeIn "<~HOJE-~SYS_FECHA_CONTROLE_NDIAS"
           Moveto [Situacao_Controle_Dia] TypeIn "L, ChangeTo B" 
           Moveto [Modulo               ] TypeIn "Blank"
           Do_It!
           ClearAll
           
    EndIf
    {Ask} {Contrdia} TypeIn "Fast"
    Moveto [Data                 ] TypeIn "<~HOJE-_ndia"
    Moveto [Situacao_Controle_Dia] TypeIn "L, ChangeTo B" 
    Moveto [Modulo               ] Example "modulo"
    {Ask} {P_Modulo}
    Moveto [Modulo               ] Example "modulo"
    Moveto [Fechamento_Automatico] TypeIn "S"
    Moveto [Dias_Controle_Aberto ] Example "ndia"
    Do_It!
    ClearAll
    
    UnLock "ContrDia" FL
    QuitLoop
EndFor
   
Release Vars CONTROLE, CRIAR, CHAPA_USUARIO, NOME_USUARIO, wii, MSG, HOJE
EndProc

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

MSG="Para sua maior segurana, observe nossa(s) recomendaes:       // //"
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 no conferem !// //Digite-as novamente !")
          Loop
  EndIf

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

EndWhile
EndProc

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

SetaCor_Sistema()
Limpa(0,0)
LimpaRodape(0)

If Not IsAssigned(Barra_String)   Then Barra(10, 4) EndIf
ExibeRodape(2,"Carregando "+Barra_String+"  Verificando Controle Dia")

If Not IsAssigned(SYS_TITULO_MENU)
Then
SYS_TITULO_MENU=""
Else
SYS_TITULO_MENU=Chr(061)+" "+Format("W11",SYS_SISTEMA)+"| "+Format("W23,AL",NOMEMPRESA)        +"| "+
                             Upper(SubSTr(Directory(),1,2))+"| "+SubStr(SYS_VERSAO_VISERP,1,6)+"| "
EndIf
ShowPullDown
  SYS_TITULO_MENU : "" : ""
EndMenu                                       



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 
        SYS_ESTACAO="[N¶O DETECTADO]"
   
        FileWrite PrivDir()+"lognet.Txt" From ""
        comando="net config workstation >"+PrivDir()+"lognet.Txt"
        Executa_Programa(comando)
       
        y=1
        while y<6
          
          FileRead PrivDir()+"lognet.Txt" To vartemp
          pos=1
          While True
            posf=searchFrom("\n",vartemp,pos)
            if posf=0 
               then Sleep 1000 
                    quitLoop 
            endif
            ss=substr(vartemp,pos,(posf-pos))
           
            posini=searchFrom("\\",ss,1)
            If posini>0
               Then SYS_ESTACAO=Upper(RTrim(SubStr(ss,posini,50)))
                    y=11
                    QuitLoop
            EndIf
            pos=posf+1
          EndWhile
          y=y+1
        endwhile  
        Release Vars pos,posf,vartemp,ss, comando, y
          
EndIf
;-------------------------------------------------------------------------------
FECHA_CONTROLE=False

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

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

ExibeRodape(2,"Carregando "+Barra_String+"  Configuraes 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

Cor_Splash()

Play "Viserp"
Sound 700 5
While True
  Show_Janela=1
  ShowDialog "[ Acesso ao sistema "+SYS_SISTEMA+" ]" Proc "SD_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC"
     @ 02,18   Height 19 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
  @ 02,29 ?? "Vise Inform tica"
  @ 09,16 ?? "Sistema integrado de gesto empresarial"

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

  PaintCanvas Attribute corluz 00,00,10,57 ; VISERP

  ;Sombras VISERP
  ;V____________________________________________________________________________ 
                                                PaintCanvas Attribute corsombra 01,19,01,19
                                                PaintCanvas Attribute corsombra 02,16,02,16
  PaintCanvas Attribute corsombra 03,06,03,06   PaintCanvas Attribute corsombra 03,15,03,15
  PaintCanvas Attribute corsombra 04,07,04,07   PaintCanvas Attribute corsombra 04,14,04,14
  PaintCanvas Attribute corsombra 05,08,05,08   PaintCanvas Attribute corsombra 05,13,05,13
                                                PaintCanvas Attribute corsombra 06,12,06,12
                                                PaintCanvas Attribute corsombra 07,11,07,11
                                                PaintCanvas Attribute corsombra 08,10,08,10
                                                PaintCanvas Attribute corsombra 09,10,09,10
  ;I____________________________________________________________________________ 
  PaintCanvas Attribute corsombra 03,19,08,19   
  ;S____________________________________________________________________________ 
                                                PaintCanvas Attribute corsombra 04,28,04,28
  PaintCanvas Attribute corsombra 05,23,05,23                                        
                                                PaintCanvas Attribute corsombra 06,27,06,27
                                                PaintCanvas Attribute corsombra 07,28,07,28
                                                PaintCanvas Attribute corsombra 08,27,08,27
  ;E____________________________________________________________________________ 
                                                PaintCanvas Attribute corsombra 04,36,04,36
  PaintCanvas Attribute corsombra 05,32,05,32                                        
                                                PaintCanvas Attribute corsombra 06,34,06,34
  PaintCanvas Attribute corsombra 07,32,07,32
                                                PaintCanvas Attribute corsombra 08,36,08,36
  ;R____________________________________________________________________________ 
                                                PaintCanvas Attribute corsombra 04,45,04,45
  PaintCanvas Attribute corsombra 05,41,05,41   PaintCanvas Attribute corsombra 05,46,05,46                                     
                                                PaintCanvas Attribute corsombra 06,45,06,45
  PaintCanvas Attribute corsombra 07,41,07,41   PaintCanvas Attribute corsombra 07,45,07,45
  PaintCanvas Attribute corsombra 08,41,08,41   PaintCanvas Attribute corsombra 08,46,08,46
  ;P____________________________________________________________________________ 
                                                PaintCanvas Attribute corsombra 04,55,04,55
  PaintCanvas Attribute corsombra 05,51,05,51   PaintCanvas Attribute corsombra 05,56,05,56                                     
                                                PaintCanvas Attribute corsombra 06,55,06,55
  PaintCanvas Attribute corsombra 07,51,07,51   
  PaintCanvas Attribute corsombra 08,52,08,52   

  ;Sombra_______________________________________________________________________ 
  PaintCanvas Attribute corsombra 00,00,10,00 ; +--
  PaintCanvas Attribute corsombra 00,00,00,57 ; Ý
  ;Luz__________________________________________________________________________ 
  PaintCanvas Attribute corluz    00,57,10,57 ;   Ý
  PaintCanvas Attribute corluz    10,01,10,57 ; --+

  PaintCanvas Attribute corvise 02,29,02,46 ; Vise Informatica
  PaintCanvas Attribute corvise 09,16,09,56 ; Sistema Integrado de Gestao Empresairal

  @ 11,01 ?? "Dados    "+NOMEMPRESA
  PaintCanvas Attribute cordados 11,09,11,49

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

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

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

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

  Pushbutton @ 15,15 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 15,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 
          fastmsg("Senha Inv lida !")
          CS_SENHA=CS_SENHA+1
          If CS_SENHA<=3
             Then Campo_Ini="TG_SENHA"
                  Loop
             Else 
                  fastmsg("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 Conexes")

          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+"        Conexo: "+Completa("["+StrVal([NConexao])+"]",30," ")+"//"
                      msg1=msg1+"Estao 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+"Se esta nova conexÆo for devido algum erro avise seu o Supervisor.    // //"

                      msg2=msg2+"Procedimentos do Supervisor do Sistema a serem analisados:            //"
                      msg2=msg2+"[1]-Verificar em Utilit rios/Conexäes ao Sistema, usu rios conectados;//"
                      msg2=msg2+"[2]-Executar VISEBOOT  no  Servidor ( atenao ao item [1] ) e conectar//"
                      msg2=msg2+"    novamente ao Sistema, se nÆo for poss¡vel  reiniciar  o  Servidor;//"
                      msg2=msg2+"[3]-Executar em Utilit rios Reestruturaco e avaliar  necessidade  de //"
                      msg2=msg2+"    executar o Reprocessamento do Estoquee ou Caixa/Banco!            //"
                    
                      SYS_NCONEXAO=[NConexao]+1
                      if SYS_NCONEXAO>99 then SYS_NCONEXAO=1 endif
                      
                      If IsBlank([Avisar_Supervisor])
                         Then 
                              While IsLockRecord() EndWhile
                              [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 conexo 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)+" conexes abertas no Sistema !// //"+msg1
                            msg2="Sua £ltima rotina era: //"+msg2
                    EndIf
                    Mensagem(msg1)
                    
                    COR_MENSAGEM="1"
                    msg2=msg2+"Deseja efetuar uma nova conexo 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 Conexo")

            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
               Else Del     
            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=[Codigo da Gerencia    ]
          

          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)+" "+Format("W11",SYS_SISTEMA)+"| "+Format("W23,AL",NOMEMPRESA)        +"| "+Upper(SubSTr(Directory(),1,2))+"| "+SubStr(SYS_VERSAO_VISERP,1,6)+"| "
                                                +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

  ;If FECHA_CONTROLE 
  ;   Then Fecha_Controle_Dia() 
  ;EndIf

  s="/"+AlinhM(StrVal(SYS_NCONEXAO),2)
  s=RTrim(SubStr(SYS_NOME_USUARIO,1,(14-len(s))))+s
  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, corluz, corsombra, corvise, cordados
             
Release Procs SD_Dialog, NovaSenha, Seta_Usuario, Ler_Usuario, Grava_LogSys, Exclui_LogNet,
              Verifica_Controle_Dia, Ver_Versao 
