;******************************************************************************* 
;* Rotina para Ajustar Borrow                                                  *
;*******************************************************************************
Proc Ajusta_Borrow()       
Private uy,DIRETORIO,BACKUP      

DIRETORIO = SubStr(Directory(),13,Len(Directory())-13)
If Not IsTable(SubStr(Directory(),1,2)+"\\Base\\Sistemas\\"+DIRETORIO+"\\"+SYS_TABELA)
   Then Mensagem("N„o foi localizado "+SYS_TABELA+" no BASE referente ao diret¢rio "+DIRETORIO)
        Return
EndIf     

BACKUP    = "BK_"+Substr(SYS_TABELA,1,5)
Copy SYS_TABELA BACKUP 

CONT_BORROW = 0
DynArray ARRAY_BORROW[]
{Modify} {Restructure} TypeIn SYS_TABELA Enter
While [Field Name]<>""
  CONT_BORROW = CONT_BORROW + 1
  ARRAY_BORROW[CONT_BORROW] = AlinhM(StrVal(CONT_BORROW),3)+" "+[Field Name]
  Del
EndWhile

CONT_BORROW_BASE = 0
DynArray ARRAY_BORROW_BASE[]
{Borrow} TyPeIn SubStr(Directory(),1,2)+"\\Base\\Sistemas\\"+DIRETORIO+"\\"+SYS_TABELA Enter
Moveto [Field Name]
While [Field Name]<>""
  CONT_BORROW_BASE = CONT_BORROW_BASE + 1
  ARRAY_BORROW_BASE[CONT_BORROW_BASE] = AlinhM(StrVal(CONT_BORROW_BASE),3)+" "+[Field Name]
  Skip
EndWhile

Do_It!
While True
   Switch
     Case MenuChoice()="Trimming" : {Trimming}
     Case MenuChoice()="Delete"   : {Delete}
     OtherWise                    : QuitLoop    
   EndSwitch  
EndWhile
   
TM1 = DynArraySize(ARRAY_BORROW)
TM2 = DynArraySize(ARRAY_BORROW_BASE)

MSG=""
Switch
  Case TM1 > TM2 : MSG =       Completa("A Tabela "+SYS_TABELA+" contem mais campos que a sua estrutura no BASE",65," ")+"////"
                   MSG = MSG + Completa("- SISTEMA: "+Format("W3,AR",TM1)+" Campos",65," ")+"//"
                   MSG = MSG + Completa("-    BASE: "+Format("W3,AR",TM2)+" Campos",65," ")+"//"
                   MSG = MSG + Completa("Deseja continuar com o BORROW?",65," ")
  Case TM2 > TM1 : MSG =       Completa("A  Tabela  "+SYS_TABELA+"  no BASE contem mais campos que a sua estrutura no",69," ")+"//"
                   MSG = MSG + Completa("SISTEMA",69," ")+"////"
                   MSG = MSG + Completa("-    BASE: "+Format("W3,AR",TM2)+" Campos",69," ")+"//"
                   MSG = MSG + Completa("- SISTEMA: "+Format("W3,AR",TM1)+" Campos",69," ")+"//"
                   MSG = MSG + Completa("Deseja continuar com o BORROW?",69," ")
EndSwitch                                    
If MSG<>""
   Then ConfGeral(MSG)
        If Ok<>"S"
           Then Copy BACKUP SYS_TABELA  
                Return
        EndIf
EndIf        
   
;---- Entre Sistema e Base -----------------------------------------------------   
CONT_REGISTRO=0
DynArray ARRAY_REGISTRO[]   
For uy From 1 To TM1
  ENCONTROU=False
  LINHA = SubStr(ARRAY_BORROW[uy],5,Len(ARRAY_BORROW[uy])) 
  For ut From 1 To TM2
    LINHA_BASE = SubStr(ARRAY_BORROW_BASE[ut],5,Len(ARRAY_BORROW_BASE[ut]))
    If LINHA = LINHA_BASE
       Then ENCONTROU = True
            QuitLoop
    EndIf  
  Endfor
  If Not ENCONTROU
     Then CONT_REGISTRO = CONT_REGISTRO + 1
          ARRAY_REGISTRO[CONT_REGISTRO] = SubStr(ARRAY_BORROW[uy],5,Len(ARRAY_BORROW[uy]))
  EndIf         
EndFor

CI_15CPP="\15"
ARQIMP=PrivDir()+"TEMP_ARQ.Txt"
If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf

MSG=""
If DynArraySize(ARRAY_REGISTRO)>0
   Then Print File ARQIMP CI_15CPP
        Print File ARQIMP "\n\n\n"
        Print File ARQIMP Spaces(2)+Fill("-",135) + "\n"
        Print File ARQIMP Spaces(2)+Format("W135,AC","CAMPO(S) DO DIRETORIO SISTEMA NAO LOCALIZADO(S) NO DIRETORIO BASE REFERENTE A TABELA "+
                          SYS_TABELA)+ "\n"
        Print File ARQIMP Spaces(2)+Fill("-",135)+ "\n"
        Print File ARQIMP "\n"
        
        For uy From 1 To DynArraySize(ARRAY_REGISTRO)
          Print File ARQIMP Spaces(2)+ARRAY_REGISTRO[uy]+"\n"
        EndFor
        
        MSG = "Ser  gerado um relat¢rio com inconsistˆncias!"
        
   Else ;---- Entre Base e Sistema ---------------------------------------------   
        CONT_REGISTRO=0
        DynArray ARRAY_REGISTRO[]   
        For ut From 1 To TM2
          ENCONTROU=False
          LINHA_BASE = SubStr(ARRAY_BORROW_BASE[ut],5,Len(ARRAY_BORROW_BASE[ut]))
          For uy From 1 To TM1
            LINHA = SubStr(ARRAY_BORROW[uy],5,Len(ARRAY_BORROW[uy]))
            If LINHA_BASE = LINHA
               Then ENCONTROU = True
                    QuitLoop
            EndIf  
          Endfor
          If Not ENCONTROU
             Then CONT_REGISTRO = CONT_REGISTRO + 1
                  ARRAY_REGISTRO[CONT_REGISTRO] = SubStr(ARRAY_BORROW_BASE[ut],5,Len(ARRAY_BORROW_BASE[ut]))
          EndIf         
        EndFor
        
        If DynArraySize(ARRAY_REGISTRO)>0
           Then Print File ARQIMP CI_15CPP
                Print File ARQIMP "\n\n\n"
                Print File ARQIMP Spaces(2)+Fill("-",135) + "\n"
                Print File ARQIMP Spaces(2)+Format("W135,AC","CAMPO(S) DO DIRETORIO BASE NAO LOCALIZADO(S) NO DIRETORIO DO SISTEMA "+
                                  "REFERENTE A TABELA "+SYS_TABELA)+ "\n"
                Print File ARQIMP Spaces(2)+Fill("-",135)+ "\n"
                Print File ARQIMP "\n"
                
                For uy From 1 To DynArraySize(ARRAY_REGISTRO)
                  Print File ARQIMP Spaces(2)+ARRAY_REGISTRO[uy]+"\n"
                EndFor
                MSG = "Ser  gerado um relat¢rio com inconsistˆncias!"
           Else Mensagem("Borrow executado com sucesso!")
        EndIf        
EndIf        

If MSG<>""
   Then Mensagem(MSG)
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
EndIf        

If IsFile(ARQIMP) Then Deleta_Arquivo(ARQIMP) EndIf
Release Vars CI_15CPP,ARQIMP

EndProc ;Ajusta_Borrow()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(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"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TABELA1"         : Campo="NO"
            Case Campo="YES" Or Campo="NO"  : Campo="TG_TABELA1"
          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_TABELA1"  :      
                         SYS_TABELA = ControlValue("TG_TABELA1")
                         If Not IsBlank(SYS_TABELA)
                            Then Campo="YES"
                         EndIf   
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_TABELA1":
     MSG_CAMPO="Nivel de Acesso"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
If SysMode()="Edit" Or SysMode()="CoEdit" Or SysMode()="Main"
   Then AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
        SYS_Valor() 
        SYS_TABELA=""
        While True
          ShowDialog "Borrow Autom tico" Proc "SD_Dialog"
          Trigger "OPEN","ARRIVE"
          Key "F1","ENTER","ESC","TAB",
              -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
           @ 05,12   Height 7 Width 29
        
            Label  @ 00,00 "Tabela" For "TG_TABELA1"
            Accept @ 01,01 Width 11 "A8"  Picture "!*!" Tag "TG_TABELA1" To SYS_TABELA
        
            Pushbutton @ 03,01 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
            Pushbutton @ 03,15 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
        
          EndDialog
          If Not RetVal 
             Then QuitLoop
             Else If Not IsBlank(SYS_TABELA)
                     Then If Not IsTable(SYS_TABELA)
                             Then Mensagem("Tabela nÆo localizada no diret¢rio: "+SubStr(Directory(),3,Len(Directory())))
                                  QuitLoop
                          EnDIf
                          Ajusta_Borrow()
                     Else FastMsq("Informe a Tabela!")
                          QuitLoop
                  EndIf
          EndIf
          ClearAll
        EndWhile  
EndIf        
