;*******************************************************************************
;* Desenvolvido: 31/08/2018 por Bruno Carvalho                                 *
;*******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

Mensagem("Pacote 2018.H ! (Agosto/2018)// //"+
         "Rotina Cadastro//"+
         "//Tabelas do Sistema e Base ser„o atualizadas !!!//"+
         "// Este processo deve ser executado sem que outros Usuarios//"+
         "// estejam utilizando o Sistema, Ok !!!")

While True
  If Verifica_Usuario()
     Then QuitLoop
     Else ConfGeral("Comunicar os usuarios !// //Deseja Continuar com Atualizacao ?")
          If OK<>"S"
             Then Exit
          EndIf
  EndIf
EndWhile

;*******************************************************************************
;Rotina Corre‡Æo de Tabelas                                                    *
;*******************************************************************************
Proc Correcao_Tabelas_Cadastro()
Private arqtxt,Conta_lista_Erro,Lista_Erro,Varinner

arqtxt=SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.txt"

If Isfile(arqtxt)     
   Then Conta_lista_Erro=0
        DynArray Lista_Erro[]
   
        Tabela=Cria_Temp(PrivDir())
        Create Tabela Like "\\Sistemas\\Vendas\\Imp_Temp"
        Clearall
        
        FileRead arqtxt to Varinner
        Edit Tabela
        
        Cont = 0
        Pos  = 1 
        While True
          Cont = Cont + 1
          Aguarde("Aguarde, montando log de erro: "+StrVal(Cont))
          Posf=SearchFrom("\n",Varinner,Pos)
          If Posf=0 Then QuitLoop EndIf
          
          If Cont = 1 And Search(";",Substr(Varinner,Pos,(Posf-Pos)))>0  
             Then Do_It!
                  ClearAll
                  Delete Tabela
                  Return 
          EndIf
          
          [Field-1]=Substr(Varinner,Pos,(Posf-Pos))
          Down
          Pos=Posf+1   
        EndWhile
        Do_It!
        ClearAll  
        Release Vars Varinner
    
        ;Estrutura Anterior … 31/08/2018
        ;s=Format("D13",Today())+" "
        ;s=s+Time()+" "
        ;s=s+SYS_CHAPA_USUARIO+" "
        ;s=s+Completa(SubStr(SYS_NOME_USUARIO,1,10),11," ")
        ;s=s+Completa(SubStr(SYS_ESTACAO,1,12),13," ")
        ;s=s+Completa(infoErro["SCRIPT"],9," ")
        ;s=s+StrVal(infoErro["LINE"])+","+StrVal(infoErro["POSITION"])+","
        ;s=s+infoErro["PROC"]+" - "+StrVal(infoErro["CODE"])+" - "
        ;s=s+infoErro["USER"]+" - "+infoErro["MESSAGE"]
        
        NR=NRecords(Tabela)
        
        arqtxt=Privdir()+"logerror.txt"
        Cont=0

        Coedit Tabela
        Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, ajustando log de erro "+BARRA_STRING)
        
          Cont  = Cont + 1          
          Linha = [Field-1]
          
          DATA    = SubStr(Linha,1,10)
          HORA    = SubStr(Linha,12,8)
          CHAPA   = Rtrim(SubStr(Linha,21,4))
          
          If CHAPA<>""
             Then NOME    = Rtrim(SubStr(Linha,26,10))
                  ESTACAO = Rtrim(SubStr(Linha,37,12))
                  SCRIPT  = Rtrim(SubStr(Linha,50,9))
                  
                  LINHA  = SubStr(Linha,59,Len(Linha))
                  
             Else NOME    = Rtrim(SubStr(Linha,22,10))
                  ESTACAO = Rtrim(SubStr(Linha,33,12))
                  SCRIPT  = Rtrim(SubStr(Linha,46,9))
                  
                  LINHA  = SubStr(Linha,55,Len(Linha))
          EndIf
          
          LERRO = ""
          LPOSI = ""
          LPROC = ""
          LCODE = ""
          LUSER = ""
          LMSG  = ""
          
          PosI = Search(",",LINHA)
          If PosI>0
             Then LERRO = Ltrim(Rtrim(SubStr(LINHA,1,PosI-1)))
                  LINHA = SubStr(LINHA,PosI+1,Len(LINHA))
          EndIf
          
          PosI = Search(",",LINHA)
          If PosI>0
             Then LPOSI = Ltrim(Rtrim(SubStr(LINHA,1,PosI-1)))
                  LINHA = SubStr(LINHA,PosI+1,Len(LINHA))
          EndIf
          
          PosI = Search(" - ",LINHA)
          If PosI>0
             Then LPROC = Ltrim(Rtrim(SubStr(LINHA,1,PosI-1)))
                  LINHA = SubStr(LINHA,PosI+3,Len(LINHA))
          EndIf
          
          PosI = Search(" - ",LINHA)
          If PosI>0
             Then LCODE = Ltrim(Rtrim(SubStr(LINHA,1,PosI-1)))
                  LINHA = SubStr(LINHA,PosI+3,Len(LINHA))
          EndIf
          
          PosI = Search(" - ",LINHA)
          If PosI>0
             Then LUSER = Ltrim(Rtrim(SubStr(LINHA,1,PosI-1)))
                  LINHA = SubStr(LINHA,PosI+3,Len(LINHA))
          EndIf
          LMSG = LINHA
          
          DELIMITADOR = ";"
          
          ;DATA
          ;HORA
          ;CHAPA
          ;NOME    
          ;ESTACAO 
          ;SCRIPT  
          ;LERRO
          ;LPOSI
          ;LPROC
          ;LCODE
          ;LUSER
          ;LMSG
          
          LINHA = DATA    + DELIMITADOR +
                  HORA    + DELIMITADOR +
                  CHAPA   + DELIMITADOR +
                  NOME    + DELIMITADOR +
                  ESTACAO + DELIMITADOR +
                  SCRIPT  + DELIMITADOR +
                  LERRO   + DELIMITADOR +
                  LPOSI   + DELIMITADOR +
                  LPROC   + DELIMITADOR +
                  LCODE   + DELIMITADOR +
                  LUSER   + DELIMITADOR +
                  LMSG
                  
          If Cont=1  
             Then FileWrite        arqtxt From LINHA+"\n"
             Else FileWrite Append arqtxt From LINHA+"\n"
          EndIf   
        EndScan
        Do_It!
        ClearAll
        
        Aguarde("Aguarde, copiando arquivo para a unidade "+SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro")
        FileWrite PrivDir()+"funcop.txt" From "COP|"+arqtxt+"|"+SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.txt"+"\n" 
        ExecVisecf(PrivDir()+"funcop.txt","")
        Sleep 1000
        
        Delete Tabela
EndIf

EndProc ;Correcao_Tabelas_Cadastro()

;-------------------------------------------------------------------------------

Aguarde("Atualizando Sistema")
Password("t01avivcl")
Password("FechaSys")

View "SysTable"
SYS_CODIGO_CLIENTE = [Codigo do Cliente   ]
ClearAll

;-------------------------------------------------------------------------------

;************************* CADASTRO ************************** 
Diretorio="\\Sistemas\\Cadastro"
Aguardes("Atualizando Pasta: "+Diretorio)
{Tools} {More} {Directory} TypeIn Diretorio Enter
Correcao_Tabelas_Cadastro() 
LimpAguardes()

;-------------------------------------------------------------------------------

{Tools} {More} {Directory} {\\Sistemas\\Cadastro\\}
UnPassword("t01avivcl")
UnPassword("FechaSys")
LimpAguarde()
FastMsg("Fim da atualiza‡Æo !")

Release Vars Diretorio
Release Procs Correcao_Tabelas_Cadastro
