;* ACFECHAM ********************************************************************
;* Acerta Estrutura de FechaMes e FechaAno das tabelas                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)                                   
;Desenvolvido    : 27/07/2012 por Bruno Carvalho                               
;Ultima Alteracao: 21/12/2012 por Bruno Carvalho                               
;Motivo Alteracao: Ajustes Gerais                                              
;Ultima Alteracao: 29/12/2016 por Rafael Matos                                 
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                                
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Removido "NotaCF" e inclu¡do "NotaCC" 
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Removido "Notactr" e  "Notaocp"
;Ultima Alteracao: 31/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido "Altcartc" e "Altcontc" no array Ctarec

;*******************************************************************************
;                                                                              
; Tabelas acertadas do Ano de 2009 at‚ Julho de 2012                           
; Scripts dos anos ajustados apenas para tabelas de fechames e fechaano        
;                                                                              
;*******************************************************************************
;* Rotina para carregar tabelas do fechamˆs/fechaano                           *
;*******************************************************************************
Proc Carrega_Tabela()

Array CheqRec[5]
CheqRec[1]="ChequeC"
CheqRec[2]="ChequeI"          
CheqRec[3]="BordCHC"
CheqRec[4]="BordCHI"
CheqRec[5]="Bordchtx"

Array CtaPag[7]
CtaPag[1]="Titulos" 
CtaPag[2]="TitBaixa"
CtaPag[3]="TitNota" 
CtaPag[4]="TitCheq" 
CtaPag[5]="AltContC"
CtaPag[6]="AltContI"
CtaPag[7]="TitRat"  

Array Ctarec[5]
Ctarec[1]="Duplic"
Ctarec[2]="DupBaixa"
Ctarec[3]="DupNotas"
Ctarec[4]="Alttitc"
Ctarec[5]="Alttiti"

Array Ctacor[1]
Ctacor[1]="MovCont"

Array Faccao[10]
Faccao[1]="Cfacc"
Faccao[2]="Cfacp"
Faccao[3]="Cfacri"
Faccao[4]="Cfacrig"
Faccao[5]="Pfacc"
Faccao[6]="Pfacri"
Faccao[7]="Pfacrig"
Faccao[8]="Rfacc"
Faccao[9]="Rfacri"
Faccao[10]="Rfacrig"

Array Estoque[8]
Estoque[1]="NotaEC"
Estoque[2]="NotaEI"
Estoque[3]="NotaECP"
Estoque[4]="NotaECV"
Estoque[5]="RqCabeca"
Estoque[6]="RqItem"
Estoque[7]="RqMatPri"
Estoque[8]="Pecasmov"

Array Vendas[18]
Vendas[1]="NotaC"
Vendas[2]="NotaI"
Vendas[3]="NotaIC"
Vendas[4]="NotaIDD"
Vendas[5]="NotaIAD"
Vendas[6]="NotaIDV"
Vendas[7]="NotaR"
Vendas[8]="NotaV"
Vendas[9]="NotaCC"
Vendas[10]="DupC"
Vendas[11]="DupI"
Vendas[12]="DupNF"
Vendas[13]="ECF_C"
Vendas[14]="ECF_T"
Vendas[15]="ECF_S"
Vendas[16]="AcCarrgC"
Vendas[17]="AcCarrgC"
Vendas[18]="AcCarrgC"

EndProc ;Carrega_Tabela()

;*******************************************************************************
;* Rotina para regularizar estrtura das tabelas de acordo com o base atual     *
;*******************************************************************************
Proc Estrutura_Tabelas(PARAM)
Private PARAM,Contador,Final 

Switch                                                           
  Case PARAM="CheqRec" : Final = ArraySize(CheqRec) 
  Case PARAM="CtaPag"  : Final = ArraySize(CtaPag)
  Case PARAM="Ctarec"  : Final = ArraySize(Ctarec)
  Case PARAM="Ctacor"  : Final = ArraySize(Ctacor)
  Case PARAM="Faccao"  : Final = ArraySize(Faccao)
  Case PARAM="Estoque" : Final = ArraySize(Estoque)
  Case PARAM="Vendas"  : Final = ArraySize(Vendas)
EndSwitch

For Contador From 1 To Final 
  Switch                                                           
    Case PARAM="CheqRec" : TABELA = CheqRec[Contador] 
    Case PARAM="CtaPag"  : TABELA = CtaPag[Contador]
    Case PARAM="Ctarec"  : TABELA = Ctarec[Contador]
    Case PARAM="Ctacor"  : TABELA = Ctacor[Contador]
    Case PARAM="Faccao"  : TABELA = Faccao[Contador]
    Case PARAM="Estoque" : TABELA = Estoque[Contador]
    Case PARAM="Vendas"  : TABELA = Vendas[Contador]
  EndSwitch
  
  If Not IsTable(TABELA) Then Loop EndIf    
  {Tools} {Copy} {JustFamily} TypeIn "\\Base\\Sistemas\\" TypeIn PARAM "\\" TypeIn TABELA Enter TypeIn TABELA Enter
  
  Down
  Switch
    Case MenuChoice()="Replace" : {Replace}
    Case MenuChoice()="Copy"    : {Cancel}
                                   ClearAll 
                                   Corrige_Estrutura(PARAM,TABELA)
    ;OtherWise                   : Up {Cancel}
  EndSwitch                  
EndFor

EndProc ;Estrutura_Tabelas()

;*******************************************************************************
;* Rotina para corrigir estrutura de tabelas                                   *
;*******************************************************************************
Proc Corrige_Estrutura(PARAM,TABELA)
Private PARAM,TABELA

{Modify} {Restructure} TypeIn TABELA Enter

While Not Eot()
  Del 
  If [Field Name]="" And [Field Type]="" Then QuitLoop EndIf
Endwhile

{Borrow} TypeIn "\\Base\\Sistemas\\" TypeIn PARAM "\\" TypeIn TABELA Enter
Do_It!

While True
   Switch
     Case MenuChoice()="Trimming" : {Trimming}
     Case MenuChoice()="Delete"   : {Delete}
     OtherWise                    : QuitLoop    
   EndSwitch  
EndWhile

ClearAll
{Tools} {Copy} {JustFamily} TypeIn "\\Base\\Sistemas\\" TypeIn PARAM "\\" TypeIn TABELA Enter TypeIn TABELA Enter {Replace}
ClearAll

EndProc ;Corrige_Estrutura()

;*******************************************************************************
;* Corre‡Æo das Tabelas                                                        *
;*******************************************************************************
Proc Correcao_Tabelas_FechaMes()
Carrega_Tabela()

Switch
 Case Search("CheqRec",Diretorio)>0   : Estrutura_Tabelas("CheqRec")
 Case Search("CtaPag",Diretorio)>0    : Estrutura_Tabelas("CtaPag")
 Case Search("Ctarec",Diretorio)>0    : Estrutura_Tabelas("Ctarec")
 Case Search("Ctacor",Diretorio)>0    : Estrutura_Tabelas("Ctacor")
 Case Search("Faccao",Diretorio)>0    : Estrutura_Tabelas("Faccao")
 Case Search("Estoque",Diretorio)>0   : Estrutura_Tabelas("Estoque")
 Case Search("Vendas",Diretorio)>0    : Estrutura_Tabelas("Vendas")
EndSwitch 

EndProc ;Correcao_Tabelas_FechaMes()

;*******************************************************************************
;* Rotina parar selecionar diretorios                                          *
;*******************************************************************************
Proc Diretorios()

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

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

;------------------------------------------------------------------------------
;****************** Cheqrec/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\Cheqrec"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Cheqrec/FECHAMES ********************
Diretorio="\\Sistemas\\CHEQREC\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\Cheqrec"
     Else Diretorio="\\Sistemas\\Cheqrec\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;******************* Ctapag/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\Ctapag"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  LimpAguarde()
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Ctapag/FECHAMES ********************
Diretorio="\\Sistemas\\Ctapag\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\Ctapag"
     Else Diretorio="\\Sistemas\\Ctapag\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** CTAREC/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\CTAREC"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  LimpAguarde()
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** CTAREC/FECHAMES ********************
Diretorio="\\Sistemas\\CTAREC\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\Ctarec"
     Else Diretorio="\\Sistemas\\Ctarec\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** ESTOQUE/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\ESTOQUE"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  LimpAguarde()
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** ESTOQUE/FECHAMES ********************
Diretorio="\\Sistemas\\ESTOQUE\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\ESTOQUE"
     Else Diretorio="\\Sistemas\\ESTOQUE\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Fac‡Æo/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\Faccao"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  LimpAguarde()
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Fac‡Æo/FECHAMES ********************
Diretorio="\\Sistemas\\Faccao\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\Faccao"
     Else Diretorio="\\Sistemas\\Faccao\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Vendas/FECHANO ********************
DiretorioFechAno  ="\\FechAno"
Modulo            ="\\Vendas"
Diretorios_FechAno(DiretorioFechAno)
For i From 1 to DynArraySize(Array_Diretorios)
  LimpAguarde()
  DiretorioFA=DiretorioFechAno+"\\"+Array_Diretorios[i]+Modulo
  If DirExists(DiretorioFA)=0 Then Loop EndIf

  Lista_Diretorio(DiretorioFA)
  For j From 1 to DynArraySize(Array_Lista_Diretorios)
    Diretorio=DiretorioFA+"\\"+Array_Lista_Diretorios[j]+"\\"
    Aguarde("Atualizando Pasta: "+Diretorio)
    {Tools} {More} {Directory} TypeIn Diretorio Enter

   Correcao_Tabelas_FechaMes()
   LimpAguarde()
  EndFor
EndFor
LimpAguarde()

;------------------------------------------------------------------------------
;****************** Vendas/FECHAMES ********************
Diretorio="\\Sistemas\\Vendas\\"
Diretorios_Fechames_C(Diretorio)
Array_Diretorios[1]=""
For i From 2 to DynArraySize(Array_Diretorios)
  If i=1
     Then Diretorio="\\Sistemas\\Vendas"
     Else Diretorio="\\Sistemas\\Vendas\\Fechames\\"+Array_Diretorios[i]
  EndIf
  Aguarde("Atualizando Pasta: "+Diretorio)
  {Tools} {More} {Directory} TypeIn Diretorio Enter

  Correcao_Tabelas_FechaMes()
  LimpAguarde()
EndFor
LimpAguarde()

EndProc ;Diretorios()

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

Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_ANO"           : Campo="NO"
            Case Campo="TG_BASE"          : Campo="TG_ANO" 
            Case Campo="YES" Or Campo="NO": Campo="TG_ANO"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_ANO"  : Campo="TG_BASE"
                    Case Campo="TG_BASE" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_ANO":
     MensagemCheckBoxes()
  Case Campo="TG_BASE":
     MensagemCheckBoxes()
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

Array TG_ANO[4]
TG_ANO[1]="Ano 2009"
TG_ANO[2]="Ano 2010"
TG_ANO[3]="Ano 2011"
TG_ANO[4]="Ano 2012  ** Parcial (At‚ Julho)"

Array TG_BASE[1]
TG_BASE[1]="Deseja montar novamente a estrutua das tabelas dos diretorios"

Array CheckTG_ANO[ArraySize(TG_ANO)]
CheckTG_ANO[1]=True
CheckTG_ANO[2]=True
CheckTG_ANO[3]=True
CheckTG_ANO[4]=True

Array CheckTG_BASE[ArraySize(TG_BASE)]
CheckTG_BASE[1]=True

While True               

  ShowDialog "Corre‡Æo de Estruturas FechaMˆs/FechaAno" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,-68
    @ 01,07 Height 12 Width 69

    CheckBoxes @ 00,00 Height 4 Width 63 Tag "TG_ANO" 
     TG_ANO[1] to CheckTG_ANO[1],
     TG_ANO[2] to CheckTG_ANO[2],
     TG_ANO[3] to CheckTG_ANO[3],
     TG_ANO[4] to CheckTG_ANO[4]
     
    CheckBoxes @ 05,00 Height 1 Width 66 Tag "TG_BASE" 
    TG_BASE[1] to CheckTG_BASE[1]
    Label  @ 06,04 "do FechaMˆs de acordo com as tabelas do BASE Atual ?"  For "TG_BASE"   

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If Not CheckTG_ANO[1] And
     Not CheckTG_ANO[2] And
     Not CheckTG_ANO[3] And
     Not CheckTG_ANO[4] And
     Not CheckTG_BASE[1]
     Then Mensagem("Selecionar pelo menos 1 (um) ano para prosseguir com a corre‡„o!")
          Loop
  EndIf 
      
  For Cont From 5 To 5
    If Cont=5 
       Then If Not CheckTG_BASE[1]
               Then QuitLoop
            EndIf
       Else If Not CheckTG_ANO[Cont] Then Loop EndIf        
    EndIf
    
    Switch
      Case Cont=1 : Play "DAT2009F" ;Ano de 2009
      Case Cont=2 : Play "DAT2010F" ;Ano de 2010
      Case Cont=3 : Play "DAT2011F" ;Ano de 2011
      Case Cont=4 : Play "DAT2012F" ;Ano de 2012
      Case Cont=5 : Diretorios() 
    EndSwitch
  EndFor       

  {Tools} {More} {Directory} {\\Sistemas\\Cadastro\\}
  UnPassword("t01avivcl")
  LimpAguarde()
  Mensagem("Processo Realizado com Sucesso!//"+
           "//Tabelas do Sistema e Base do FechaMes foram atualizadas !!!//"+
           "// // Obrigado Vise Inform tica [SIM].")
  
  ClearAll
EndWhile

Release Vars All
Release Procs All
