;** StrBuild *******************************************************************
;*  Reconstrucao da Estrutura das Tabelas                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 21/10/2004 por Davi Pereira Carrano
;Ultima Alteracao: 15/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Run

;*******************************************************************************
; Rotina pegar posicao da linha                                                *
;*******************************************************************************
Proc Posicao()
Home
Editor Info to InfoArray
ci=InfoArraY["CHARPOS"]

End
Editor Info to InfoArray
cf=InfoArraY["CHARPOS"]

Editor Select ci cf
Editor Extract to ELinha
EndProc           ; (Posicao)


;*******************************************************************************
; Rotina Procura Diretorios                                                    *
;*******************************************************************************
Proc MontaDiretorios()
ClearAll
Aguarde("Aguarde, Verificando Pastas")
DynArray Diretorio[]
DynArray PastaAtual[]

Lista_Diretorio(SubStr(Directory(),1,2)+"\\Base\\Sistemas")
wc=0
wcs=0
While wc<DynArraySize(Array_Lista_Diretorios)
  wc=wc+1
  If Array_Lista_Diretorios[wc] <>"CADASTRO" And
     Array_Lista_Diretorios[wc] <>"CARGA"    And
     Array_Lista_Diretorios[wc] <>"CARTAOP"  And
     Array_Lista_Diretorios[wc] <>"CDBARRA"  And
     Array_Lista_Diretorios[wc] <>"COBRANCA" And
     Array_Lista_Diretorios[wc] <>"COMPRAS"  And
     Array_Lista_Diretorios[wc] <>"CONSIGNA" And
     Array_Lista_Diretorios[wc] <>"EXPORTA"  And
     Array_Lista_Diretorios[wc] <>"ICMS_IPI" And
     Array_Lista_Diretorios[wc] <>"POSTO"    And
     Array_Lista_Diretorios[wc] <>"PRODUCAO"
     Then wcs=wcs+1
          Diretorio [wcs]="\\BASE\\SISTEMAS\\"+Array_Lista_Diretorios[wc]
          PastaAtual[wcs]="\\"+Array_Lista_Diretorios[wc]
  EndIf
EndWhile
Release Vars Array_Lista_Diretorios
EndProc    ; (MontaDiretorios)


;*******************************************************************************
; Rotina para reconstrucao de estrutura das tabelas Fechano                    *
;*******************************************************************************
Proc Reconstrucao_Estrutura_Fechano()
DiretorioFechAno  ="\\FechAno\\"
Diretorios_FechAno(DiretorioFechAno)

For i From 1 to DynArraySize(Diretorio)
    {Tools} {Info} {Inventory} {Tables} TypeIn Diretorio[i]  Enter
    If IsEmpty("List") Then Loop EndIf

    For j from 1 to DynArraySize(Array_Dir_Fechano)
      DiretorioFA=DiretorioFechAno+Array_Dir_FechAno[j]+PastaAtual[i]+"\\"
      If DirExists(DiretorioFA)=0 Then Loop EndIf

      Lista_Diretorio(SubStr(Directory(),1,2)+DiretorioFA)
      For k From 1 to DynArraySize(Array_Lista_Diretorios)
        DiretorioDestino=DiretorioFA+Array_Lista_Diretorios[k]+"\\"
        Moveto "List"
        Scan For (SubStr([Name],1,3)<>"Rm_") And (SubStr([Name],1,3)<>"Gr_") And (SubStr([Name],1,3)<>"Rc_") And (SubStr([Name],1,4)<>"Temp")
             Aguarde("Atualizando Tabela: "+DiretorioDestino+[Name])
             If IsTable(DiretorioDestino+[Name])
                Then TableInfo Diretorio[i]+"\\"+[List->Name] to OTabela
                     TableInfo DiretorioDestino+[List->Name] to DTabela

                     If (OTabela["KEYFIELDS"] <>DTabela["KEYFIELDS"]) Or
                        (OTabela["FIELDS"]    <>DTabela["FIELDS"])    Or
                        (OTabela["RECORDSIZE"]<>DTabela["RECORDSIZE"])
                        Then
                             TableInfo Diretorio[i]+"\\"+[List->Name] Fields to DCampos, DTipos

                             {Modify} {Restructure} TypeIn DiretorioDestino+[List->Name] Enter
                             For nit From 1 to OTabela["FIELDS"]
                               Ins
                               Moveto [Field Name] Typein DCampos[nit]
                               Moveto [Field Type] CtrlBackSpace Typein DTipos[nit]
                               If nit <=OTabela["KEYFIELDS"]
                                  Then TypeIn "*"
                               EndIf
                               Moveto [Field Name]
                               Down
                             EndFor
                             Do_It!

                             While True
                               If MenuChoice()="Trimming"
                                  Then {Trimming}
                                  Else If MenuChoice()="Delete"
                                          Then {Delete}
                                          Else QuitLoop
                                       EndIf
                               EndIf
                             EndWhile

                             ClearImage
                     EndIf

             EndIf
        EndScan
      EndFor
    EndFor

EndFor

EndProc ;(Reconstrucao_Estrutura_Fechano)


;*******************************************************************************
; Rotina para reconstrucao de estrutura das tabelas Fechames                   *
;*******************************************************************************
Proc Reconstrucao_Estrutura_Fechames()

For i From 1 to DynArraySize(Diretorio)
    {Tools} {Info} {Inventory} {Tables} TypeIn Diretorio[i]  Enter
    If IsEmpty("List") Then Loop EndIf
    DiretorioFechames="\\Sistemas"+PastaAtual[i]+"\\Fechames\\"
    If DirExists(DiretorioFechames)=0 Then Loop EndIf
    Lista_Diretorio(SubStr(Directory(),1,2)+DiretorioFechames)


    For j from 1 to DynArraySize(Array_Lista_Diretorios)
      DiretorioDestino=DiretorioFechames+Array_Lista_Diretorios[j]+"\\"
      Moveto "List"
      Scan For (SubStr([Name],1,3)<>"Rm_") And (SubStr([Name],1,3)<>"Gr_") And (SubStr([Name],1,3)<>"Rc_") And (SubStr([Name],1,4)<>"Temp")
           Aguarde("Atualizando Tabela: "+DiretorioDestino+[Name])
           If IsTable(DiretorioDestino+[Name])
              Then TableInfo Diretorio[i]+"\\"+[List->Name] to OTabela
                   TableInfo DiretorioDestino+[List->Name] to DTabela

                   If (OTabela["KEYFIELDS"] <>DTabela["KEYFIELDS"]) Or
                      (OTabela["FIELDS"]    <>DTabela["FIELDS"])    Or
                      (OTabela["RECORDSIZE"]<>DTabela["RECORDSIZE"])
                      Then
                           TableInfo Diretorio[i]+"\\"+[List->Name] Fields to DCampos, DTipos

                           {Modify} {Restructure} TypeIn DiretorioDestino+[List->Name] Enter
                           For nit From 1 to OTabela["FIELDS"]
                             Ins
                             Moveto [Field Name] Typein DCampos[nit]
                             Moveto [Field Type] CtrlBackSpace Typein DTipos[nit]
                             If nit <=OTabela["KEYFIELDS"]
                                Then TypeIn "*"
                             EndIf
                             Moveto [Field Name]
                             Down
                           EndFor
                           Do_It!

                           While True
                             If MenuChoice()="Trimming"
                                Then {Trimming}
                                Else If MenuChoice()="Delete"
                                        Then {Delete}
                                        Else QuitLoop
                                     EndIf
                             EndIf
                           EndWhile

                           ClearImage
                   EndIf

           EndIf
      EndScan
    EndFor

EndFor

EndProc ;(Reconstrucao_Estrutura_Fechames)


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
Mensagem("As tabelas do FechAno e Fechames ser„o reconstruˇdas!")
MontaDiretorios()
Reconstrucao_Estrutura_Fechano()
Reconstrucao_Estrutura_Fechames()
Mensagem("Reconstru‡„o das tabelas do FechAno e Fechames Concluˇda!")
