;** FechaS2 ********************************************************************
;* Fechamento de Carregamento Serie 2                                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/06/2005 por Jose Luis Ameno da Silva
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")

;*******************************************************************************
;* Rotina p/ Verificar Duplicidade                                             *
;*******************************************************************************
Proc Duplicidade()

ClearAll

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
   Then
        If IsTable("Notas2c")
           Then {Ask} {Notac}
                Moveto [Codigo da Empresa  ] Example "codemp"
                Moveto [Numero do Documento] Example "ndoc"
                Moveto [Serie do Documento ] Example "sdoc"
                {Ask} {Notas2c} Check
                Moveto [Codigo da Empresa  ] Example "codemp" TypeIn ", ~VSDGEMPRESA.."
                Moveto [Numero do Documento] Example "ndoc"
                Moveto [Serie do Documento ] Example "sdoc"
                Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG"
                Do_It!
                ClearAll

                If Not IsEmpty("Answer")
                   Then MSG_NOTADUP()
                        Return False
                EndIf
        Endif
Endif

Return True

EndProc    ;(Duplicidade)

;*******************************************************************************
;* Rotina p/ Transferir Lancamentos p/ NotaC,NotaV e NotaI                     *
;*******************************************************************************
Proc Transfere()

ClearAll

{Ask} {Notas2c} Check
Moveto [Codigo da Empresa  ] TypeIn "~VSDGEMPRESA.."
Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then MSG_VAZIO()
        Return False
EndIf

DynArray Tabela1[]
DynArray Tabela2[]

Tabela1[1]="Notas2v"
Tabela2[1]="Notav"
Tabela1[2]="Notas2i"
Tabela2[2]="Notai"
Tabela1[3]="Notas2c"
Tabela2[3]="Notac"

View "Answer"

Scan

     @ 01,01 ?""

     For i From 1 To 3

         Coedit Tabela2[i]
         {TableAdd} TypeIn Tabela1[i] Enter

         Moveto [Codigo da Empresa]
         Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento]

         If RetVal
            Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa] and
                         [Numero do Documento]=[Answer->Numero do Documento] and
                         [Serie do Documento ]=[Answer->Serie do Documento]
                       CopyToArray Registro
                       Moveto Tabela2[i]
                       END DOWN
                       CopyFromArray Registro

                       Moveto Tabela1[i]
                       Skip
                       If EOT() Then QuitLoop Endif

                 EndWhile
         Endif

          Do_It!
          Moveto Tabela2[i]
          ClearImage
          Moveto Tabela1[i]
          ClearImage

          Moveto "Answer"

    EndFor

EndScan

SaveTables
Moveto "Answer"
HOME

Scan

     @ 01,01 ?""

     For i From 1 to 3

         Coedit Tabela1[i]
         Moveto [Codigo da Empresa]
         Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento]

         If RetVal
            Then While [Codigo da Empresa  ]=[Answer->Codigo da Empresa] and
                         [Numero do Documento]=[Answer->Numero do Documento] and
                         [Serie do Documento ]=[Answer->Serie do Documento]
                       Del
                 EndWhile
         Endif

         Do_It!
         Moveto Tabela1[i]
         ClearImage

     EndFor

     Moveto "Answer"

EndScan

SaveTables
Return True

EndProc    ;(Transfere)
;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll

;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
   Then
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"Notac" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..VENDA.. ..MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Condicao de Pagamento  ] Check
        Moveto [Descricao CondPagto    ] Check
        Moveto [Tipo de Pagamento      ] Check
        Moveto [Data de Emissao        ] Check
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"Notav" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Sequencia              ] Check
        Moveto [Data                   ] Check
        Moveto [Valor                  ] Check
        Moveto [Forma de Pagamento     ] Check
        Moveto [Numero de Dias         ] Check
        Do_It!
        ClearAll

        Adiciona_Dados3()
EndIf

;****** Titulos Baixados *******************************************************
If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic") And
   IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa")
   Then
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter
        Moveto [Numero do Lancamento   ] Check Example "nlan"
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Sequencia da Baixa     ] Check
        Moveto [Valor do Recebimento   ] Check
        Moveto [Valor do Juros         ] Check
        Moveto [Valor do Desconto      ] Check
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Valor Dinheiro         ] Check
        Moveto [Valor Cheque           ] Check
        Moveto [Valor Cheque Pre_Datado] Check
        Moveto [Tipo da Baixa          ] Check
        Do_It!
        ClearAll

        Adiciona_Dados4()
EndIf

EndProc   ;  (Seleciona)

;*******************************************************************************
;* Rotina Mensagem Notas Duplicadas                                            *
;*******************************************************************************
Proc MSG_NOTADUP()
MSG=    "Existem Lan‡amentos Duplicados !//"
MSG=MSG+"Verificar quais os lan‡amentos duplicados, Ok !//"
MSG=MSG+"O fechamento dos lan‡amentos ser  cancelado !// //"
MSG=MSG+" Observe a seguir as notas duplicadas !"
Mensagem(MSG)

Prompt "F2 Retornar"
View "Answer"
Wait Table
  Until "F2"
ClearImage
Echo Normal
Echo Off
EndProc ; (Msg_LancDup)

;*******************************************************************************
;* Rotina Mensagem Arquivo Vazio                                               *
;*******************************************************************************
Proc MSG_VAZIO()
MSG=    "Lancamentos n„o encontrados para o Carregamento://"
MSG=MSG+VSDGNCARREG
MSG=MSG+"O fechamento dos lan‡amentos ser  cancelado !// //"
MSG=MSG+"Verifique !"
Mensagem(MSG)

Prompt "F2 Retornar"
View "Answer"
Wait Table
  Until "F2"
ClearImage
Echo Normal
Echo Off
EndProc ; (Msg_LancDup)

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados3()
If IsEmpty("Answer")
   Then Return
EndIf
View Tabela3
CoEdit "Answer"
Scan
  Moveto Tabela3
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa    ],
         [Answer->Numero_Carregamento  ],
         "",
         [Answer->Tipo de Pagamento    ],
         [Answer->Forma de Pagamento   ]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa    ]=[Answer->Codigo da Empresa    ]
          [Numero_Carregamento  ]=[Answer->Numero_Carregamento  ]
        ;;[Condicao de Pagamento]=[Answer->Condicao de Pagamento]
          [Tipo de Pagamento    ]=[Answer->Tipo de Pagamento    ]
          [Forma de Pagamento   ]=[Answer->Forma de Pagamento   ]
  EndIf
  [Valor]=[Valor]+[Answer->Valor]

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados4()

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela4
CoEdit "Answer"
Scan
  Moveto Tabela4
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa    ],
         [Answer->Numero_Carregamento  ]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa    ]=[Answer->Codigo da Empresa    ]
          [Numero_Carregamento  ]=[Answer->Numero_Carregamento  ]
  EndIf
  [Valor do Juros         ]=[Valor do Juros         ]+[Answer->Valor do Juros         ]
  [Valor do Desconto      ]=[Valor do Desconto      ]+[Answer->Valor do Desconto      ]
  [Valor Dinheiro         ]=[Valor Dinheiro         ]+[Answer->Valor Dinheiro         ]
  [Valor Cheque           ]=[Valor Cheque           ]+[Answer->Valor Cheque           ]
  [Valor Cheque Pre_Datado]=[Valor Cheque Pre_Datado]+[Answer->Valor Cheque Pre_Datado]

  Switch
    Case [Answer->Tipo da Baixa]="NORMAL"   : [Valor do Recebimento    ]=[Valor do Recebimento    ]+[Answer->Valor do Recebimento]
                                              [Valor do Juros          ]=[Valor do Juros          ]+[Answer->Valor do Juros      ]
                                              [Valor do Desconto       ]=[Valor do Desconto       ]+[Answer->Valor do Desconto   ]
  EndSwitch

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina Processar Dados                                                      *
;*******************************************************************************
Proc Processar()

ProcessoOk=True

CoEdit "\\Sistemas\\Cadastro\\Represen",
       "\\Sistemas\\Ctacor\\MovCont",
       "\\Sistemas\\Ctacor\\SaldCont",
       "AcCarrgC", Tabela4, Tabela3

Moveto "AcCarrgC"
Moveto [Numero_Carregamento]
Locate VSDGNCARREG
If RetVal
   Then If [Situacao]="ACERTADO"
           Then Mensagem("Carregamento j  ACERTADO/FECHADO !")
                ProcessoOk=False
                Do_It!
                ClearAll
                Return
        EndIf
   Else Mensagem("Erro Carregamento !")
        ProcessoOk=False
        Do_It!
        ClearAll
        Return
EndIf

If IsFile("Cfg_fechc.sc")
   Then Play "CFG_FechC"
   Else CFG_FC_VRVENDAAVISTA=""
        CFG_FC_VRRECTOTITULO=""
        CFG_FC_VRCOMBUSTIVEL=""
        CFG_FC_VRHOSPEDAGEM =""
        CFG_FC_VRREFEICAO   =""
        CFG_FC_VRMANUTENCAO =""
        CFG_FC_VROUTRAS     =""
EndIf

Moveto "\\Sistemas\\Cadastro\\Represen"
Moveto [Codigo do Representante]
Locate [AcCarrgC->Codigo do Representante]
If RetVal
   Then CentroCusto=[Codigo CCusto Represent]
   Else CentroCusto=""
EndIf

TOTVR=0
Moveto Tabela3
Scan For Not IsBlank([Codigo da Empresa])
  If [Forma de Pagamento]="DN" Or
     [Forma de Pagamento]="CH" Or
     [Forma de Pagamento]="CP"
     Then TOTVR=TOTVR+[Valor]
  EndIf
EndScan
If TOTVR>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" VENDAS A VISTA","07","I",TOTVR,CFG_FC_VRVENDAAVISTA)
EndIf

Moveto Tabela4
Scan For Not IsBlank([Codigo da Empresa])
  Grava_Caixa("ACERTO NC "+VSDGNCARREG+" RECBTO TITULOS","07","J",[Valor do Recebimento],CFG_FC_VRRECTOTITULO)
  Moveto Tabela4
EndScan

Moveto "AcCarrgC"
[Situacao      ]="ACERTADO"
[Data do Acerto]=VSDGDTREF
UnLockRecord

If [Valor Combustivel   ]>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" DESP. COMBUSTIVEL","06","B",[Valor Combustivel   ],CFG_FC_VRCOMBUSTIVEL)
        Moveto "AcCarrgC"
EndIf
If [Despesas Hospedagem ]>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" DESP. HOSPEDAGEM" ,"06","B",[Despesas Hospedagem ],CFG_FC_VRHOSPEDAGEM)
        Moveto "AcCarrgC"
EndIf
If [Despesas Refeicao   ]>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" DESP. REFEICAO"   ,"06","B",[Despesas Refeicao   ],CFG_FC_VRREFEICAO)
        Moveto "AcCarrgC"
EndIf
If [Despesas Manutencao ]>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" DESP. MANUTENCAO" ,"06","B",[Despesas Manutencao ],CFG_FC_VRMANUTENCAO)
        Moveto "AcCarrgC"
EndIf
If [Despesas Outras     ]>0
   Then Grava_Caixa("ACERTO NC "+VSDGNCARREG+" DESP. OUTRAS"     ,"06","B",[Despesas Outras     ],CFG_FC_VROUTRAS)
        Moveto "AcCarrgC"
EndIf

Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina de Gravacao de Lancamento                                            *
;*******************************************************************************
Proc Grava_Caixa(Hist,TpOp,TpLanc,VrLanc,PlConta)
Moveto "\\Sistemas\\CtaCor\\MovCont"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then CX_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

;While True
;  End
;  Moveto [Numero do Lancamento]
;  If Numero_Lancamento("Interno","")
;     Then CX_LANC = PROXLANCTO_NLANC
;          Release Vars PROXLANCTO_NLANC
;  EndIf      
;  Locate CX_LANC
;  If Retval
;     Then Loop
;     Else End Down
;          [Numero do Lancamento ]=CX_LANC
;          If IsLockRecord()
;             Then UnLockRecord
;                  Loop
;          EndIf
;  EndIf
;  QuitLoop
;EndWhile

[Codigo da Conta       ]=VSDGCONTA
[Codigo da Empresa     ]=VSDGEMPRESA
[Tipo de Operacao      ]=TpOp
[Data                  ]=VSDGDTREF
[Valor                 ]=VrLanc
[Codigo do Documento   ]="REC"
[Numero do Documento   ]=VSDGNCARREG
[Descricao do Historico]=Hist
[Codigo do EmitDest    ]=VSDGEMPRESA
[Tipo do Lancamento    ]=TpLanc
[Codigo CCusto         ]=CentroCusto
[Codigo Plano_Conta    ]=PlConta
[Sistema Gerador       ]="DI"
[Empresa Gerador       ]=VSDGEMPRESA
Controle_Dia()
UnLockRecord

Moveto "\\Sistemas\\CtaCor\\SaldCont"
Moveto [Codigo da Conta]
Locate [\Sistemas\Ctacor\MovCont->Codigo da Conta],
       AlinhM(StrVal(Year([\Sistemas\Ctacor\MovCont->Data])),4),
       AlinhM(StrVal(Month([\Sistemas\Ctacor\MovCont->Data])),2)
If Not RetVal
   Then End
        Down
        [Codigo da Conta]=[\Sistemas\Ctacor\MovCont->Codigo da Conta]
        [Ano Referencia ]=AlinhM(StrVal(Year([\Sistemas\Ctacor\MovCont->Data])),4)
        [Mes Referencia ]=AlinhM(StrVal(Month([\Sistemas\Ctacor\MovCont->Data])),2)
EndIf
If [\Sistemas\Ctacor\MovCont->Tipo Movimento]="E" Then [Entradas]=[Entradas]+[\Sistemas\Ctacor\MovCont->Valor] EndIf
If [\Sistemas\Ctacor\MovCont->Tipo Movimento]="S" Then [Saidas  ]=[Saidas  ]+[\Sistemas\Ctacor\MovCont->Valor] EndIf
UnLockRecord
EndProc

;*******************************************************************************
;* 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_EMPRESA"       : Campo="NO"
            Case Campo="TG_CONTA"         : Campo="TG_EMPRESA"
            Case Campo="TG_NCARREG"       : Campo="TG_CONTA"
            Case Campo="TG_DTREF"         : Campo="TG_NCARREG"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          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_EMPRESA" : Campo="TG_CONTA"
                    Case Campo="TG_CONTA"   : Campo="TG_NCARREG"
                    Case Campo="TG_NCARREG" :
                         If VSDGNOMNCARREG="MANIFESTO"
                            Then Campo="TG_DTREF"
                            Else Mensagem("Tipo carregamento invalido !")
                         EndIf
                    Case Campo="TG_DTREF"   : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_NCARREG":
     MSG_CAMPO="Informe o N£mero do Carregamento"
  Case Campo="TG_CONTA":
       MSG_CAMPO="Informe o Codigo da Conta"
  Case Campo="TG_DTREF":
     MSG_CAMPO="Informe a Data Referencia para Acerto"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA =""
VSDGCONTA   =""
VSDGNCARREG =""
VSDGDTREF   =BlankDate()

While True

  ShowDialog "Fechamento de Acerto/Manifesto" 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 13 Width 56

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA"    To VSDGCONTA
    Accept @ 03,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMCONTA" To VSDGNOMCONTA

    Label  @ 04,00 "Carregamento" For "TG_NCARREG"
    Accept @ 05,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 05,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG

    Label  @ 06,00 "Data Referente" For "TG_DTREF"
    Accept @ 07,01 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Pushbutton @ 09,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA) Then Mensagem("Empresa invalida !")         Loop EndIf
  If IsBlank(VSDGCONTA)   Then Mensagem("Conta invalida !")           Loop EndIf
  If IsBlank(VSDGDTREF)   Then Mensagem("Data invalida !")            Loop EndIf
  If IsBlank(VSDGNCARREG) Then Mensagem("N.Carregamento invalido !")  Loop EndIf
  If VSDGTPCONTA<>"X"     Then Mensagem("Tipo de Conta invalida !")   Loop EndIf

  AGUARDE("Aguarde, Processando Carregamento")

  Dir_Trab=""
  ;Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  ;While Novo_Dir_Trab()

  If Not Duplicidade()
     Then Loop
  Endif
  If Not Transfere()
     Then Loop
  Endif

  Tabela3=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980c" Tabela3
  Tabela4=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980d" Tabela4

  Seleciona()

  ;EndWhile

  If IsEmpty(Tabela3) And IsEmpty(Tabela4)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela3
          Delete Tabela4
          Loop
  EndIf

  Processar()

  Delete Tabela3
  Delete Tabela4
  Delete "Answer"

  If ProcessoOk
     Then Mensagem("Fim do processo !")
  EndIf

EndWhile
ClearAll
Release Vars All
Release Procs All
