;*******************************************************************************
;* Desenvolvido: 07/03/2019 por Bruno Carvalho                                 *
;*******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

Mensagem("Rotina para ajustar o arquivo ROIS !!!")
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 para processar registros                                             *
;*******************************************************************************
Proc Correcao_Tabelas_Cadastro(PROCESSO)
Private ii,ArqTxt,ARQ,DATA,LOG_MES,LOG_ANO,TXT_MES,TXT_ANO,pos,cont,FAZ_PROCESSO,PROCESSO,ARQUIVO

;---- Em 11/01/2019 por Bruno Carvalho -----------------------------------------
Switch
   Case PROCESSO = 1 :
        TXT_ANO = NumVal(StrVal(Year(Today())))
        TXT_MES = NumVal(Ltrim(StrVal(Month(Today()))))
        
        ;**** LOGSYS.TXT ***************************************************************
        For ii From 1 To 2
          ARQUIVO      = ""
          FAZ_PROCESSO = True
          
          Aguarde("Aguarde, preparando dados")
          If IsAssigned(varinner) Then release vars varinner  EndIf
        
          If ii=2
             Then ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.txt"
             Else ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois.log" 
          EndIf
          
          If Not Isfile(ArqTxt)
             Then If ii=2
                     Then ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.log"
                     Else ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois.txt" 
                  EndIf  
          EndIf
          
          If Isfile(ArqTxt)
             Then ARQUIVO = ArqTxt
                  LOG_MES = ""
                  LOG_ANO = ""
                  FileRead ArqTxt to varinner
                  pos  = 1
                  cont = 0
                  While True
                    
                    cont = cont + 1
                    Aguarde("Aguarde, montando base de log "+StrVal(cont))
                    
                    posf=searchFrom("\n",varinner,pos)
                    if posf=0 Then QuitLoop EndIf
                    
                    TEXTO = substr(varinner,pos,(posf-pos))
                    
                    DATA=Ltrim(SubStr(TEXTO,1,10)) If Len(DATA)=9 Then DATA = "0"+DATA EndIf 
                    DATA=SubStr(DATA,1,2)+"."+LTrim(SubStr(DATA,4,2))+"."+SubStr(DATA,7,4)
                    DATA=DateVal(DATA)
                    
                    If Type(DATA)<>"D" Then Loop EndIf                                  ;Lixo na Tabela
                    
                    If NumVal(StrVal(LOG_MES))<>NumVal((StrVal(Month(DATA)))) Or NumVal(StrVal(LOG_ANO))<>NumVal(StrVal(Year(DATA)))  
                       Then LOG_MES = Month(DATA)
                            LOG_ANO = Year(DATA)
                            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) 
                            If ii=2
                               Then ;lgerXXXX sendo XXXX mˆs e ano
                                    ArqTxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\lger"+TXT_MES+TXT_ANO+".log"
                               Else ;roisXXXX sendo XXXX mˆs e ano
                                    ArqTxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois"+TXT_MES+TXT_ANO+".log"
                            EndIf
                    EnDIf
                    If ArqTxt<>"" 
                       Then If Isfile(ArqTxt)
                               Then FileWrite Append arqtxt From TEXTO+"\n"
                               Else FileWrite        arqtxt From TEXTO+"\n" 
                            EndIf  
                    EndIf
                    pos=posf+1
                  EndWhile
                  Do_It!
                  ClearAll
          
                  If ARQUIVO<>"" Then Deleta_Arquivo(ARQUIVO) EndIf
          EndIf
        EndFor
   Case PROCESSO = 2 :
        TXT_ANO = NumVal(StrVal(Year(Today())))
        TXT_MES = NumVal(Ltrim(StrVal(Month(Today()))))
        
        For ii From 1 To 2
          ARQUIVO      = ""
          FAZ_PROCESSO = True
          
          ARQ=PrivDir()+"tmplog"
          If IsTable(ARQ)
             Then Delete ARQ
          EndIf
          Copy "\\Base\\Sistemas\\Cadastro\\Rm_txlog" ARQ
        
          Aguarde("Aguarde, preparando dados")
          Empty(ARQ)
          If IsAssigned(varinner) Then release vars varinner  EndIf
        
          If ii=2
             Then ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.txt"
             Else ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois.log" 
          EndIf
          
          If Not Isfile(ArqTxt)
             Then If ii=2
                     Then ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.log"
                     Else ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois.txt" 
                  EndIf  
          EndIf
          
          If Isfile(ArqTxt)
             Then ARQUIVO = ArqTxt
                  FileRead ArqTxt to varinner
                  Edit ARQ
                  pos  = 1
                  cont = 0
                  While True
                    cont = cont + 1
                    Aguarde("Aguarde, montando base de log "+StrVal(cont))
                    
                    posf=searchFrom("\n",varinner,pos)
                    if posf=0 then quitLoop endif
                    
                    TEXTO = substr(varinner,pos,(posf-pos))
                    [Text]=TEXTO 
                    Down
                    
                    pos=posf+1
                  EndWhile
                  Do_It!
                  ClearAll 
          EndIf
          
          Sort ARQ On "Text"   
          ClearAll
          
          LOG_MES=""
          LOG_ANO=""
          
          If IsTable(ARQ) And Not IsEmpty(ARQ)
             Then Coedit ARQ
                  Scan
                    Barra(NRecords(ARQ), RecNo())
                    Aguarde("Aguarde, montando base de log 1/2 "+BARRA_STRING)
                    
                    Texto=[Text]
                    DATA=Ltrim(SubStr(TEXTO,1,10)) If Len(DATA)=9 Then DATA = "0"+DATA EndIf 
                    DATA=SubStr(DATA,1,2)+"."+LTrim(SubStr(DATA,4,2))+"."+SubStr(DATA,7,4)
                    DATA=DateVal(DATA)
                    
                    If Type(DATA)<>"D" Then Loop EndIf  ;Lixo na Tabela
                    
                    If NumVal(StrVal(LOG_MES))<>NumVal((StrVal(Month(DATA)))) Or NumVal(StrVal(LOG_ANO))<>NumVal(StrVal(Year(DATA)))  
                       Then LOG_MES = Month(DATA)
                            LOG_ANO = Year(DATA)
                            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) 
                            If ii=2
                               Then ;lgerXXXX sendo XXXX mˆs e ano
                                    ArqTxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\lger"+TXT_MES+TXT_ANO+".log"
                               Else ;roisXXXX sendo XXXX mˆs e ano
                                    ArqTxt  = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois"+TXT_MES+TXT_ANO+".log"
                            EndIf
                    EnDIf
                    If ArqTxt="" 
                       Then Mensagem("Ocorreu um erro durante o processo de inicializa‡Æo do sistema!")
                            Do_It!
                            ClearAll
                            FAZ_PROCESSO=False
                            QuitLoop 
                    EndIf
                    If Isfile(ArqTxt)
                       Then FileWrite Append arqtxt From TEXTO+"\n"
                       Else FileWrite        arqtxt From TEXTO+"\n" 
                    EndIf
                    [Text] = "" 
                  EndScan
                  Do_It!
                  ClearAll
                  
                  Aguarde("Aguarde, montando base de log")
                  {Ask} TypeIn ARQ Enter TypeIn "Fast Delete"
                  Moveto [Text] TypeIn "Blank"
                  Do_It!
                  ClearAll
                  
                  ;---- Mantendo o ROIS que nÆo foi desmembrado ------------------------ 
                  If ii=2
                     Then ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\logerror.txt"
                     Else ArqTxt = SubStr(Directory(),1,2)+"\\Sistemas\\Cadastro\\rois.log" 
                  EndIf
                  If Isfile(ArqTxt)
                     Then ;Limpando o ROIS ou o LOGERROR
                          Deleta_Arquivo(ArqTxt) 
                  EndIf
                  
                  If IsTable(ARQ)
                     Then Coedit ARQ
                          Scan
                            Barra(NRecords(ARQ), RecNo())
                            Aguarde("Aguarde, montando base de log 2/3 "+BARRA_STRING)
                            
                            TEXTO = [Text]
                            
                            If Isfile(ArqTxt)
                               Then FileWrite Append arqtxt From TEXTO+"\n"
                               Else FileWrite        arqtxt From TEXTO+"\n" 
                            EndIf  
                          EndScan
                          Do_it!   
                          ClearAll
                  EnDIf   
          EndIf
          If ARQUIVO<>"" Then Deleta_Arquivo(ARQUIVO) EndIf
        EndFor
EndSwitch

EndProc ;Correcao_Tabelas_Cadastro()

;*******************************************************************************
;Rotina Principal                                                              *
;*******************************************************************************
Aguarde("Atualizando Sistema")
Password("t01avivcl")
Password("FechaSys")

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

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

;************************ CADASTRO *************************
Diretorio="\\Sistemas\\Estoque\\"
Aguarde("Atualizando Pasta: "+Diretorio)
{Tools} {More} {Directory} TypeIn Diretorio Enter
Correcao_Tabelas_Cadastro(2)

;Parƒmetro 1 = PRCESSO DIRETO. SEM JOGAR OS DADOS NA TABELA -> DESMEMBRAMENTO DIRETO   **Processo testado, mais demorado
;Parƒmetro 2 = PROCESSO JOGANDO EM UMA TABELA PARA DEPOIS DESMEMBRAR **Esta sendo mais rapido ao executar

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

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

Release Vars Diretorio
Release Procs Correcao_Tabelas_Cadastro
