;** BordCheq *******************************************************************
;*  Bordero de Cheques                                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 18/11/1998 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/03/2006 por Davi Pereira Carrano
;Motivo Alteracao: Fazer Leitura de Cheque                          
;Ultima Alteracao: 29/01/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Selecao() somenta para LIQUIDAR
;Ultima Alteracao: 21/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao taxa de juros real
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 31/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Novo Layout
;Ultima Alteracao: 06/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes EM COBRANCA
;Ultima Alteracao: 01/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Tp/Tx Juros
;Ultima Alteracao: 05/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 02/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TROCADO       
;Ultima Alteracao: 27/09/2010 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Leitura_Cheque
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas                           
;Ultima Alteracao: 17/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data Entrada Duplic= Dt lote Bordero
;Ultima Alteracao: 24/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Estorno Duplic/Regravando lan‡amento
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Localizar cheque pelo CMC7 primeiro
;Ultima Alteracao: 13/10/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta() atualiza cx/bco e ctarec    
;Ultima Alteracao: 28/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Localizar CMC7 < ou ,              
;Ultima Alteracao: 28/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao executar LerCheque(), condi‡Æo de acordo com parametro              
;Ultima Alteracao: 01/02/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Mensagem estorno caixa/banco, checagem da conta
;Ultima Alteracao: 13/02/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes rotina ap¢s a impressÆo, ao entrar no form "BordchqC"
;Ultima Alteracao: 24/08/2012 por Kamila Gomes
;Motivo Alteracao: Ajustes tipos de destino, cobrancapgto e devolvido_bco_transf
;Ultima Alteracao: 05/12/2012 por Bruno Carvalho  
;Ultima Alteracao: Ajustes PermissÆo de Usu rio para ExclusÆo no "ChaveC" e "DigitaC"
;Ultima Alteracao: 18/01/2013 por Bruno Carvalho  
;Ultima Alteracao: Adicionado fun‡Æo p/ gerar layout de cheques
;Ultima Alteracao: 06/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes               
;Ultima Alteracao: 21/02/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 12/03/2013 por Kamila Gomes
;Motivo Alteracao: Adicionadas opcoes de impressao de bordero(F5)
;Ultima Alteracao: 18/03/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes CALC_MEDIA() "Answer"  
;Ultima Alteracao: 19/03/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Imprimir() "Op‡Æo 4"
;Ultima Alteracao: 22/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes retirar Opcao 4
;Ultima Alteracao: 12/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout showdialog imprimir
;Ultima Alteracao: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado leitura de variavel em arquivo "LER_CHQ.ini"
;Ultima Alteracao: 24/06/2013 por Bruno Carvalho
;Motivo Alteracao: Add DTMEDIA e NDIAS nos reports "R" e "1" do RM_0020  #0236#
;Ultima Alteracao: 02/12/2013 por Bruno Carvalho/Andrey Fillipe
;Motivo Alteracao: Filtro para aparecer apenas os cheques do N§ e Banco correspondente
;Ultima Alteracao: 22/01/2014 por Bruno Carvalho
;Motivo Alteracao: Filtro para aparecer apenas os cheques do N§ e Banco correspondente -> Ao LER o cheque  
;Ultima Alteracao: 08/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes Relacao_Cheques() caso ¤ existisse o cheque, estava excluindo cheques lan‡ados manualmente 
;Ultima Alteracao: 09/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao informar o cheque manualmente
;Ultima Alteracao: 09/04/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado Verifica_NLancto() 
;Ultima Alteracao: 10/04/2014 por Bruno Carvalho
;Motivo Alteracao: Add Verifica_NRegistros() onde ir  informar limite de registros
;Ultima Alteracao: 23/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao informar o numero do lancamento
;Ultima Alteracao: 24/04/2014 por Bruno Carvalho
;Motivo Alteracao: Comentado o novo procedimento de numero de lan‡amento at‚ finaliza‡Æo de testes
;Ultima Alteracao: 07/07/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Relacao_Cheques()
;Ultima Alteracao: 16/10/2014 por Bruno Carvalho
;Motivo Alteracao: Removido o processo Verifica_NLancto(), devido a erro em acesso simultaneo e ajustado nova rotina para verifica‡Æo do Lancto
;Ultima Alteracao: 21/10/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes no lan‡amento do cheque manual e por CMC7
;Ultima Alteracao: 13/11/2015 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo no processo dos Numero do Lan‡amento - Numero_Lancamento()
;Ultima Alteracao: 22/12/2015 por Kamila Gomes
;Motivo Alteracao: Ajuste Ler_Cheque() para destino DEVOLVIDO_BCO_TRANSF
;Ultima Alteracao: 28/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes erro fun‡äes, registro novo
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getp_titulo(), getp_cheq() em Carrega_Parametros()
;Ultima Alteracao: 02/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema Gerador
;Ultima Alteracao: 18/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LeiaINI cheque        
;Ultima Alteracao: 19/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowDialog Cheques    
;Ultima Alteracao: 13/05/2016 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Inclusao Opera‡Æo TRANSFERIDO                        
;Ultima Alteracao: 13/05/2016 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Ajustes Checacheq()
;Ultima Alteracao: 27/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema Gerador
;Ultima Alteracao: 05/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_CxBco()
;Ultima Alteracao: 15/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema Gerador e desfazimento do bordero
;Ultima Alteracao: 06/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo_Cliente bordchi
;Ultima Alteracao: 18/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos reportïs para DEVOLVIDO??
;Ultima Alteracao: 20/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Destinat" na proc Carrega_Tabelas() -> **saindo do sistema ao informar a pessoa
;Ultima Alteracao: 25/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar titulo do cheque a pagar  
;Ultima Alteracao: 26/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog      
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()              
;Ultima Alteracao: 08/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo poder alterar os dados quando CHAVEC=0
;Ultima Alteracao: 29/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Verifica_Cheque_NaRelacao() para verificar a existˆncia de cheques j  lan‡ados na rela‡Æo
;Ultima Alteracao: 30/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes Verifica_Cheque_NaRelacao()
;Ultima Alteracao: 10/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tramento registro em branco bordchi, saida por pgnd e esc
;Ultima Alteracao: 23/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gera‡Æo cheque no duplic obs
;Ultima Alteracao: 22/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CONTA() -> Verificando registros no BordChI com o RecordStatus("New") 
;Ultima Alteracao: 31/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ch devolvido no contas a receber tipo de carteira= Z
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 08/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo bordero sem cheques excluir bordero
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta corrente cheque            
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 28/06/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes Grava_LogEx("BordChqI") e Grava_LogEx("BordChqC")
;Ultima Alteracao: 17/07/2019 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado verificador, se lan‡amento no caixa/banco foi realmente excluido -> Estorno_CxBco()
;Ultima Alteracao: 25/09/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes nÆo usa mais sequencai no caixa/banco quando vindo do bordchi
;Ultima Alteracao: 07/10/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajutes UnLockRecord e adicionado novo processo de numero do lancamento -> PROXLANCTO_NLANC 
;Ultima Alteracao: 24/10/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CHAVECH() informar o valor do campo 1 da chave primaria
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 03/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 09/10/2020 por Bruno Carvalho                       
;Motivo Alteracao: Ajustes para avisar a execu‡Æo do FechaMes
;Ultima Alteracao: 19/10/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Relacao_Cheques()      
;Ultima Alteracao: 11/11/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ exibir mensagem com informativo de desempenho somente quando quantidade de registros for maior que zero
;Ultima Alteracao: 23/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de filtro
;Ultima Alteracao: 08/02/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao filtrar os lan‡amentos para melhorar o desempenho do sistema, De 547 dias p/ 730 dias 

;*******************************************************************************
;* Rotina para Localizar Registro Cabeca                                       *
;*******************************************************************************
Proc CHAVEC()

COPIOU_REGISTRO=False
While True
  Moveto TabelaControle
  Moveto [Numero do Lote]
  End
  NLANC=[Numero do Lote]
  If OPCAO_FORM="1"
     Then Down
     Else PgDn PgDn
  EndIf

  SetaCorRegistro("Editar")
  While true
      VCITENS=0
      
  TECLA=""
  AguardaTeclasPadraoCF()
  
  If RetVal="F5" 
     Then RetVal = MenuFiltrar()
          Release Vars MfOpcao
  EndIf      

  Switch
      ;---- FILTRO -------------------------------------------------------------
      Case RetVal="MENUFILTRAR" :
           CHAVEC=99
           Del
           Return
      Case RetVal="MENUFILTROTODOS" :
           MODOFILTRAR=False
           CHAVEC=98
           Del
           Return
      ;-------------------------------------------------------------------------    
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           MODOPAGINA = True
           While True
             VCITENS=0
             If OPCAO_FORM="1"
                Then PAGINA(TabelaControle,"MR")
                Else PAGINA(TabelaControle,"MT")
             EndIf
             NLANC  =[Numero do Lote]
             If EDITAR="S"
                Then If PegaRegistroControle("Numero do Lote",NLANC)
                        Then PickForm "F"
                             Echo Normal
                             Echo Off
                             
                             If [Sistema Gerador]<>"MA"
                                Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                     FastMsg(MSG)
                             EndIf
                             
                             If Checa_Controle([Numero_Controle_Dia])
                                Then CHAVEC=0
                                     Controla_EdicaoC()
                                Else UnLockRecord
                                     AtualizaRegistroControle("Numero do Lote",NLANC,MODOPAGINA)
                             EndIf
                     EndIf        
                Else If EXCLUIR="S"
                          Then If MODOFILTRAR 
                                  Then FastMsg("Modo [FILTRO] exclusÆo nÆo permitida !")
                                       UnLockRecord 
                                  Else If PegaRegistroControle("Numero do Lote",NLANC)
                                          Then PickForm "F"
                                               Echo Normal
                                               Echo Off
                                              
                                               If Checa_Supervisor()
                                                  Then If QuerExcluir("")
                                                          Then OK="S"
                                                          Else OK="N"
                                                       EndIf
                                                       If OK="S"
                                                          Then If [Sistema Gerador]<>"MA"
                                                                  Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                                                       MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                                                       MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                                                                       MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                                                                       CONFGERAL(MSG)
                                                               EndIf
                                                       Endif
                                                       If OK="S"
                                                          Then Carrega_Parametros()
                                                               CopytoArray REG_BORD
                                                               EXCLUSAO()
                                                          Else UnLockRecord
                                                       EndIf
                                               endif
                                               AtualizaRegistroControle("Numero do Lote",NLANC,MODOPAGINA)
                                       EndIf        
                               EndIf               
                          Else QuitLoop
                     EndIf
             EndIf
             If OPCAO_FORM="1"
                Then PickForm OPCAO_FORM
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVEC=6
           Return
      Case Retval="ESC":
           CHAVEC=9
           Del
           Return
      Case Retval="ENTER": 
           ;---- Modo Filtrar ------------------------------------------------
           If MODOFILTRAR  
              Then If TabelaControle<>TabelaPrincipal
                      Then NLANC=[Numero do Lote]
                           FormKey Moveto TabelaPrincipal End Down FormKey
                           [Numero do Lote] = NLANC 
                           SetaCorRegistro("Editar")
                   EndIf
           EndIf
           MODOPAGINA = False           
           If Numero_Lancamento("","1")
              Then NLANC = PROXLANCTO_NLANC
                   Release Vars PROXLANCTO_NLANC 
              Else QuitLoop
           EndIf
           PickForm "F"
           Moveto [Numero do Lote]
           If PROXIMO_LANCTO_REG_ACHOU
              Then CHAVEC=0
                   Echo Normal
                   Echo Off
                   If [Sistema Gerador]<>"MA"
                       Then FastMsg("Sistema Origem = "+PegaNomeSistemaGerador())
                   EndIf
                   If Checa_Controle([Numero_Controle_Dia])
                      Then Return
                   EndIf
              Else CHAVEC=1
                   [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                   [Sistema Gerador  ]="MA"
                   If Checa_Controle(SYS_CONTROLE_DIA)
                      Then Return  
                      Else OPCAO_FORM="1"
                   EndIf
           EndIf
           If TabelaControle<>TabelaPrincipal
              Then FormKey
                   Moveto TabelaControle
           EndIf
           QuitLoop
      EndSwitch          
  EndWhile
EndWhile
EndProc  ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()

Moveto "BordChI" 
SetaCorRegistro("Padrao")

Moveto "BordChC" 
SetaCorRegistro("Editar")

DIGITAC=True

If CHAVEC=1
   Then 
        Moveto [Codigo da Empresa]
   Else 
        
        EMPRESA=[Codigo da Empresa]
        
        If [Sistema Gerador]<>"MA"
           Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                FastMsg(MSG)
        EndIf
        
        Moveto [Observacao do Lote]
EndIf

While True
  TECLA=" Esc=Retornar  "

  If CHAVEC=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf

  If Field()="Codigo da Empresa"   Or
     Field()="Codigo"              Or
     Field()="Tipo de Destino"     Or
     Field()="Codigo da Conta"     Or
     Field()="Codigo da Conta Trf"
     Then TECLA=TECLA+"F1=Tabelas  "
  EndIf

  If Field()="Codigo da Conta"
     Then Monta_Opcoes("Codigo da Conta","")
  EndIf
  If Field()="Codigo da Conta Trf"
     Then Monta_Opcoes("Codigo da Conta Trf","")
  EndIf

  Prompt TECLA

  Wait Field
       Until "F1","ESC","ENTER","F8","DEL","FIELDVIEW","F35","DOWN"

  Switch
  Case RetVal="F1":
       If Field()="Codigo da Empresa"
          Then CONSULTAF1()
       EndIf
       If Field()="Tipo de Destino"
          Then ShowDialog_Operacao("")                  
       EndIf
       If Field()="Codigo da Conta"
          Then Seleciona_Opcoes("Codigo da Conta","CR")
       Endif
       If Field()="Codigo da Conta Trf"
          Then Seleciona_Opcoes("Codigo da Conta Trf","CR")
       Endif
       If Field()="Codigo"
          Then CONSULTAF1()
       Endif

  Case RetVal="F8" or RetVal="DOWN":
       If CHAVEC = 0
          Then QuitLoop
          Else Loop
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa": 
            If QuerDesfazer("")
               Then If CHAVEC=1
                       Then Exclusao()
                       Else Undo
                    EndIf
                    CHAVEC=9
                    QuitLoop
            EndIf
       Case Field()="Tipo de Destino"    : Moveto [Codigo da Empresa]
       Case Field()="Data do Lote":
            If CHAVEC=1
               Then Left
               Else If QuerDesfazer("")
                       Then Undo
                            CHAVEC=9
                            QuitLoop
                    Endif
            EndIf
       Case Field()="Codigo da Conta"    : Moveto [Data do Lote     ]
       Case Field()="Codigo da Conta Trf": Moveto [Codigo da Conta  ]
       Case Field()="Codigo"             : Moveto [Codigo da Conta  ]
       Case Field()="Observacao do Lote" : 
         if CHAVEC=1
            then Moveto [Data do Lote     ]
            else loop ; altera‡Æo da cabe‡a nÆo permitida quando chavec=0
         endif   
       Otherwise:
            Left
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If MODOFILTRAR 
                  Then FastMsg("Modo [FILTRO] fun‡Æo nÆo permitida !")
                  Else If Checa_Supervisor()
                          Then If QuerExcluir("")
                                  Then OK="S"
                                  Else OK="N"
                               EndIf
                               If OK="S"
                                  Then If [Sistema Gerador]<>"MA"
                                          Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                               MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                               MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                                               MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                                               CONFGERAL(MSG)
                                       EndIf
                               Endif
                               If OK="S"
                                  Then EXCLUSAO()
                                       CHAVEC=9
                                       QuitLoop
                               EndIf
                       endif
               EndIf
       EndIf
  Case Retval="ENTER":
       Switch
       Case Field()="Codigo da Empresa":
            If Not Isblank([]) And Carrega_Parametros()
               Then EMPRESA=[]
                    Moveto [Tipo de Destino] 
            EndIf
            
       Case Field()="Tipo de Destino":
            SitOk=False
            Switch
              Case [Tipo de Destino]="DEPOSITADO"           : SitOk=True
              Case [Tipo de Destino]="DESCONTADO_BANCO"     : SitOk=True
              Case [Tipo de Destino]="DESCONTADO_OUTROS"    : SitOk=True
              Case [Tipo de Destino]="PAGAMENTO"            : SitOk=True
              Case [Tipo de Destino]="TROCADO"              : SitOk=True
              Case [Tipo de Destino]="DEVOLVIDO_BCO_ABERTO" : SitOk=True
              Case [Tipo de Destino]="DEVOLVIDO_BCO_SFUNDO" : SitOk=True
              Case [Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" : SitOk=True
              Case [Tipo de Destino]="DEVOLVIDO_OUT_SFUNDO" : SitOk=True
              Case [Tipo de Destino]="DEVOLVIDO_OUT_TRANSF" : SitOk=True
              Case [Tipo de Destino]="PRORROGADO"           : SitOk=True
              Case [Tipo de Destino]="SEM FUNDO"            : SitOk=True
              Case [Tipo de Destino]="RETORNO"              : SitOk=True
              Case [Tipo de Destino]="COBRANCAPGTO"         : SitOk=True
              Case [Tipo de Destino]="TRANSFERIDO"          : SitOk=True
            EndSwitch
            If Not SitOk
               Then Mensagem("Opera‡„o Inv lida, use [F1] p/ consultar !")
                    Loop
            EndIf

            If PARAM_UTILIZA_GERAREC<>"S"
               Then If [Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" Or
                       [Tipo de Destino]="DEVOLVIDO_OUT_TRANSF"
                       Then Mensagem("Opera‡„o Inv lida, transferencia p/ cobran‡a n„o configurada !")
                            Loop
                    EndIf
            EndIf

            Moveto [Data do Lote]
       Case Field()="Data do Lote":
            If IsBlank([])
               Then [Data do Lote]=Today()
            EndIf
            If Not IntervaloData([Data do Lote])
               Then Loop
            EndIf
            
            if CHAVEC=1
               then Moveto [Codigo da Conta]
               else Moveto [Observacao do Lote]
            endif   
       Case Field()="Codigo da Conta":
            If Not Checa_Opcoes("Codigo da Conta",[])
               Then [Codigo da Empresa]=EMPRESA
                    Mensagem("Conta inv lida !")
                    Loop
            EndIf
            
            Switch
              Case [Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" :
                   [Codigo da Conta Trf   ]=""
                   [Tipo da Conta Trf     ]=""
                   [Descricao da Conta Trf]=""
                   [Codigo                ]=""
                   [Razao Social          ]=""
                   Moveto [Observacao do Lote]
                   
              Case [Tipo de Destino]="DEVOLVIDO_OUT_TRANSF" :
                   [Codigo da Conta Trf   ]=""
                   [Tipo da Conta Trf     ]=""
                   [Descricao da Conta Trf]=""
                   Moveto [Codigo]
                  
              Case [Tipo de Destino]="DEPOSITADO"       Or
                   [Tipo de Destino]="DESCONTADO_BANCO" Or
                   [Tipo de Destino]="TRANSFERIDO"      Or
                   SubStr([Tipo de Destino],1,13)="DEVOLVIDO_BCO":
                Moveto [Codigo da Conta Trf]
                
              Case [Tipo de Destino]="DESCONTADO_OUTROS" Or
                   SubStr([Tipo de Destino],1,13)="DEVOLVIDO_OUT" Or
                   [Tipo de Destino]="PAGAMENTO"     :
                [Codigo da Conta Trf   ]=""
                [Tipo da Conta Trf     ]=""
                [Descricao da Conta Trf]=""

                If [Tipo de Destino]="DESCONTADO_OUTROS"
                   Then Moveto [Taxa Mensal]
                   Else [Taxa Mensal]=BlankNum()
                        Moveto [Codigo]
                EndIf
              OtherWise:
                [Codigo da Conta Trf   ]=""
                [Tipo da Conta Trf     ]=""
                [Descricao da Conta Trf]=""
                [Codigo                ]=""
                [Razao Social          ]=""
                [Taxa Mensal           ]=BlankNum()
                Moveto [Observacao do Lote]
            EndSwitch
       Case Field()="Codigo da Conta Trf":
            If Checa_Opcoes("Codigo da Conta Trf",[])
               Then
                    If [Tipo de Destino]="DESCONTADO_BANCO"
                       Then Moveto [Taxa Mensal]
                       Else [Taxa Mensal ]=BlankNum()
                            [Codigo      ]=""
                            [Razao Social]=""
                            Moveto [Observacao do Lote]
                    EndIf
               Else [Codigo da Empresa Trf]=EMPRESA
                    Mensagem("Conta inv lida !")
                    Loop
            EndIf
       Case Field()="Taxa Mensal":
            Moveto [Codigo da Conta]
            If [Tipo de Destino]="DESCONTADO_OUTROS"
               Then Moveto [Codigo]
               Else [Codigo      ]=""
                    [Razao Social]=""
                    Moveto [Observacao do Lote]
            EndIf
       Case Field()="Codigo":
            If Isblank([])
               Then Moveto [Razao Social]
               Else If CHAVEC=1
                       Then If Cliente_Inativo([Codigo])
                               Then Loop
                            EndIf   
                    EndIf
                    Moveto [Observacao do Lote]
            Endif
       Case Field()="Razao Social":
            If Isblank([])
               Then Loop
               Else Moveto [Observacao do Lote]
            Endif
       Case Field()="Observacao do Lote":
            QuitLoop
       Otherwise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaC)

;*******************************************************************************
;* ShowDialog Opera‡äes do Border“                                             *
;*******************************************************************************
Proc ShowDialog_Operacao(PARAM)

ShowPopup " Op‡”es " Centered
  "  ~D~epositado                                CH->LIQUIDADO  " :
  " Depositado em banco                                         * Gera Caixa/Banco" : "DEPOSITADO",
  "~1~_Descontado/Banco                          CH->LIQUIDADO  "
  : " Descontado em banco                                       * Gera Caixa/Banco" : "DESCONTADO_BANCO",
  "~2~_Descontado/Outros                         CH->LIQUIDADO  "
  : " Descontado com outros                                                       " : "DESCONTADO_OUTROS",
  "  ~P~agamento                                 CH->LIQUIDADO  "
  : " P/ pagamento                                                                " : "PAGAMENTO",
  "  ~T~rocado                                   CH->TROCADO    "
  : " Trocado                                                                     " : "TROCADO",
  "  Trans~f~erido                               CH->EM ABERTO  "
  : " Transferido para outra Conta Caixa                        * Gera Caixa/Banco" : "TRANSFERIDO",
  
   Separator,
  "~4~_Devolvido/Banco  p/ Reapresenta‡„o        CH->EM ABERTO  "
  : " Devolu‡„o banco p/ reapresenta‡„o                         * Gera Caixa/Banco" : "DEVOLVIDO_BCO_ABERTO",
  "~5~_Devolvido/Banco  Sem Fundo                CH->SEM FUNDO  "
  : " Devolu‡„o banco                                           * Gera Caixa/Banco" : "DEVOLVIDO_BCO_SFUNDO",
  "~6~_Devolvido/Banco  Transferido p/ Cobran‡a  CH->EM COBRANCA"
  : " Devolu‡„o banco transferido p/ Cobran‡a    * Gera Caixa/Banco/Ctas a Receber" : "DEVOLVIDO_BCO_TRANSF",
  "~7~_Devolvido/Outros Sem Fundo                CH->SEM FUNDO  "
  : " Outras devolu‡”es                                                           " : "DEVOLVIDO_OUT_SFUNDO",
  "~8~_Devolvido/Outros Transferido p/ Cobran‡a  CH->EM COBRANCA"
  : " Outras devolu‡”es transferido p/ Cobran‡a      * Gera Ctas a Receber/a Pagar" : "DEVOLVIDO_OUT_TRANSF",
  "~9~_Em Cobran‡a/Pagamento Efetuado            CH->COBRANCAPGTO"
  : " Em cobran‡a pagamento efetuado                                              " : "COBRANCAPGTO",
   Separator,
  "  P~r~orrogado                                CH->PRORROGADO "
  : " Prorroga‡„o       " : "PRORROGADO",
  "  ~S~em Fundo                                 CH->SEM FUNDO  "
  : " Sem Fundo         " : "SEM FUNDO",
  "  Ret~o~rno                                   CH->EM ABERTO  "
  : " Retorno de cheque " : "RETORNO"
EndMenu
To MenuVar
If MenuVar<>"Esc"
   Then If PARAM=""
           Then [Tipo de Destino]=MenuVar
           Else VSDGOPBORD=MenuVar 
        EndIf   
EndIf  

EndProc ;ShowDialog_Operacao()

;*******************************************************************************
;* Rotina para Digitacao da Taxas/Desctos/Tarifas                              *
;*******************************************************************************
Proc Carrega_Verifica_Operacao(PARAM)
Private TEMP

TEMP=True
IF PARAM="Carrega"                       
   Then Array ARRAY_OPERACAO[15]

        ARRAY_OPERACAO[1]  ="DEPOSITADO"
        ARRAY_OPERACAO[2]  ="DESCONTADO_BANCO"
        ARRAY_OPERACAO[3]  ="DESCONTADO_OUTROS"
        ARRAY_OPERACAO[4]  ="PAGAMENTO"
        ARRAY_OPERACAO[5]  ="TROCADO"
        ARRAY_OPERACAO[6]  ="TRANSFERIDO"
        ARRAY_OPERACAO[7]  ="DEVOLVIDO_BCO_ABERTO"
        ARRAY_OPERACAO[8]  ="DEVOLVIDO_BCO_SFUNDO"
        ARRAY_OPERACAO[9]  ="DEVOLVIDO_BCO_TRANSF"
        ARRAY_OPERACAO[10] ="DEVOLVIDO_OUT_SFUNDO"
        ARRAY_OPERACAO[11] ="DEVOLVIDO_OUT_TRANSF"
        ARRAY_OPERACAO[12] ="COBRANCAPGTO"
        ARRAY_OPERACAO[13] ="PRORROGADO"
        ARRAY_OPERACAO[14] ="SEM FUNDO"
        ARRAY_OPERACAO[15] ="RETORNO"
        
   Else ACHOU_OPERACAO=False
        For wi From 1 To ArraySize(ARRAY_OPERACAO)
          If Rtrim(Ltrim(VSDGOPBORD))=ARRAY_OPERACAO[wi]
             Then ACHOU_OPERACAO=True
                  QuitLoop
          EndIf
        Endfor
        TEMP=ACHOU_OPERACAO          
EndIf     

Return TEMP

EndProc ;Carrega_Verifica_Operacao()

;*******************************************************************************
;* Rotina para Digitacao da Taxas/Desctos/Tarifas                              *
;*******************************************************************************
Proc DIGITAT()
Moveto "BordChC"
SetaCorRegistro("Padrao")

Moveto "BordChTx"
SetaCorRegistro("Editar")

Calc_Composicao()
Moveto [Vr_Liquido]

While True
  TECLA=" Esc=Retornar  "

  dcampo=Field()
  Switch
    Case Field()="Vr_Liquido"               : dcampo="Valor liquido da opera‡„o"
    Case Field()="Vr_Tarifas_OutrasDespesas": dcampo="Valor total das tarifas indiretas ao desconto"
    Case Field()="Data_Operacao_Banco"      : dcampo="Data da opera‡„o no Banco"
    Case Field()="Flag1"                    : dcampo="pausa [Enter] pra prosseguir"
  EndSwitch

  Prompt TECLA

  Wait Field
       Message dcampo
       Until "F1","ESC","ENTER","F5","F8","DEL","FIELDVIEW","F35","DOWN"

  Switch
  Case Retval="ESC":
       Switch
       Case Field()="Vr_Liquido"               : QuitLoop
       Case Field()="Data_Operacao_Banco"      : Moveto [Vr_Liquido]
       Case Field()="Vr_Tarifas_OutrasDespesas": Moveto [Data_Operacao_Banco]
       Case Field()="Flag1"                    : Moveto [Vr_Tarifas_OutrasDespesas]
       Otherwise:
            Left
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="ENTER":
       Switch
       Case Field()="Vr_Liquido":
            Calc_Composicao()
            Moveto [Data_Operacao_Banco]
       Case Field()="Data_Operacao_Banco":
            Calc_Composicao()
            Moveto [Vr_Tarifas_OutrasDespesas]
       Case Field()="Vr_Tarifas_OutrasDespesas":
            Calc_Composicao()
            Moveto [Flag1]
       Case Field()="Flag1":
            QuitLoop
       Otherwise:
            Right
       EndSwitch
  EndSwitch
EndWhile
SetaCorRegistro("PadrÆo")

Moveto "BordChC"
EndProc  ; (DigitaC)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Calc_Composicao()
Private vrdescto

vrdescto=0
[Vr_Total_Lote       ]=[BordChC->Total Lote]
[Data_Media_Cheques  ]=BlankDate()
[Numero_Dias_Cheques ]=BlankNum()
[Taxa_Juros_Descontos]=BlankNum()
[Taxa_Juros_Real     ]=BlankNum()

If [Vr_Total_Lote]>[Vr_Liquido]
   Then vrdescto=[Vr_Total_Lote]-[Vr_Liquido]
Endif

If [Vr_Liquido]>0 And [Vr_Total_Lote]>0
   Then [Taxa_Juros_Descontos]=(VrDescto/[Vr_Total_Lote])*100
EndIf
If [Vr_Liquido]>0 And [Vr_Total_Lote]>0
   Then [Taxa_Juros_Real]=((VrDescto+[Vr_Tarifas_OutrasDespesas])/[Vr_Total_Lote])*100
EndIf
If Not IsBlank([Data_Operacao_Banco])
   Then VSDGDTREF=[Data_Operacao_Banco]
        Calc_Media("Bordchi")
        Moveto "Bordchtx"
        [Data_Media_Cheques  ]=DTMEDIA
        [Numero_Dias_Cheques ]=NDIAS
        UnLockRecord
EndIf
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro Item                                         *
;*******************************************************************************
Proc CHAVECH()

While True
  Moveto "BordChI"
  Moveto [Valor              ]  TOTVALOR=ImageCSum()
  Moveto [Sequencia do Lote  ]  VCITENS =ImageCCount()

  Moveto "BordChC"
  [BordChC->Total Lote]=TOTVALOR
;;UnLockRecord
;;ResyncKey

  Moveto "BordChI"
  Moveto [Sequencia do Lote]
  End
  ITEM = [Sequencia do Lote]
  Down
  [Numero do Lote   ]=NLANC
  Moveto [Sequencia do Lote]

  Opcao_Ver=False
  Opcao_Ler_Cheque=False

  Seta_Sequencia(ITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While True

      Prompt " Esc=Retornar  Alt+F=Fun‡”es  PgDn=Finalizar "

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN","F3",
                 "F4","F5","F8","F9","F6","F8",-33

      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
               "~V~er Ficha  [F3]" : " Ver modo Ficha                    " : "F3",
               "~L~er Cheque [F4]" : " Ativar leitura de cheque"           : "F4",
               "~I~mprimir   [F5]" : " Imprimir bordero                  " : "F5",
               "~S~ele‡„o    [F6]" : " Selecionar cheques para bordero   " : "F6",
               "~E~xportar   [F8]" : " Exportacao para Banco do Brasil   " : "F8",
               "~J~uros real [F9]" : " Calculo do juros real             " : "F9",
               "~C~ancelar       " : " Cancelar a Opera‡„o               " : "CANCELAR"
              EndMenu
               To MenuVar

              echo off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                  Then Loop
                  Else RetVal=MenuVar
              EndIf
      EndIf

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del                                                                                 
           While True
             Moveto [Valor              ]  TOTVALOR=ImageCSum()
             Moveto [Sequencia do Lote  ]  VCITENS =ImageCCount()
            
             Moveto "BordChC"
             [BordChC->Total Lote]=TOTVALOR
             UnLockrecord
             ResyncKey

             Moveto "BordchI"
             Moveto [Sequencia do Lote]

             PAGINA("BordchI","MR")
             If EDITAR="S"
                Then If IsBlank([Numero do Lancamento])
                        Then CHAVECH = 0
                             ITEM   = [Sequencia do Lote]
                             Controla_EdicaoCH()
                        Else Mensagem("Cheque cadastrado edi‡„o n„o permitida !")
                             UnLockRecord
                     EndIf
                Else If EXCLUIR="S"
                        Then If QuerExcluir("") And Checa_Supervisor()
                                Then NLANCCH=[Numero do Lancamento]
                                     SITEMCH=[Sequencia do Cheque ]
                                     CopytoArray REG_BORDI
                                     Grava_LogEx("BordChqI")
                                     ALTERA_CH()
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F4":  
           Del
           Ler_Cheque()
           QuitLoop

      Case RetVal="F5":
           LOTE=[Numero do Lote]
           TxMensal=[BordChC->Taxa Mensal]
           Del
           FormKey
           Do_It!

           Imprimir()
           ClearAll
           
           Carrega_Tabelas("")
           Moveto [Numero do Lote]
           Locate LOTE
           PickForm "F"
           DIGITAC =False
           CHAVECH =99
           Return

      Case RetVal="F6":
           if [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_ABERTO" or
              [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_SFUNDO" or
              [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" or
              [BordChc->Tipo de Destino]="DEVOLVIDO_OUT_SFUNDO" or
              [BordChc->Tipo de Destino]="DEVOLVIDO_OUT_TRANSF" or
              [BordChc->Tipo de Destino]="PRORROGADO"           or
              [BordChc->Tipo de Destino]="SEM FUNDO"            or
              [BordChc->Tipo de Destino]="COBRANCAPGTO"                         
              then Mensagem("Sele‡Æo nÆo dispon¡vel para o Destino desejado !")
                   loop
           endif         
           Del
           Selecao()
           QuitLoop

      Case RetVal="F8": 
           If [BordChc->Tipo de Destino]<>"DEPOSITADO"
              Then Mensagem("Fun‡Æo dispon¡vel somente para deposito !")
                   Loop
           EndIf        

           LOTE=[Numero do Lote]
           Del
           FormKey
           Do_It!

           Play "ExpBord"
           ClearAll
           
           Carrega_Tabelas("")
           Moveto [Numero do Lote]
           Locate LOTE
           PickForm "F"
           DIGITAC =False
           CHAVECH =99
           Return
      Case RetVal="F9":
      
           if search("DESCONTADO",[BordChc->Tipo de Destino])=0
              then Mensagem("Fun‡Æo s¢ dispon¡vel para Opera‡Æo de Desconto !")
                   loop
           endif         
                 
           Del   
           DIGITAT()
           QuitLoop
      Case Retval="ESC": ; nÆo pode alterar a cabeca quando CHAVEC=0
           Del

           if recordstatus("New") and CHAVEC=1 and [BordchC->Sistema Gerador]="MA"
              then If ConfGeral("NÆo h  cheques(s) neste bordˆro ! // //Deseja cancelar este bordˆro ?")
                      then CHAVEC=8 
                           Moveto "BordCHC"
                           EXCLUSAO()
                      else quitloop
                   endif   
           endif

           DIGITAC =False
           CHAVECH =99
           Return
           
      Case Retval="PGDN":
           Del

           if recordstatus("New") and CHAVEC=1 and [BordchC->Sistema Gerador]="MA"
              then If ConfGeral("NÆo h  cheques(s) neste bordˆro ! // //Deseja cancelar este bordˆro ?")
                      then CHAVEC=8 
                           Moveto "BordCHC"
                           EXCLUSAO()
                      else quitloop
                   endif   
           endif

           DIGITAC =False
           CHAVECH =99
           Return
      Case RetVal="F3":
           Del
           Moveto [Sequencia do Lote]
           If RecordStatus("New")
              Then MENSAGEM("Sem Item p/ ver !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVECH=0
           Home
           ITEM=[Sequencia do Lote]
           Controla_EdicaoCh()
           QuitLoop
      Case Retval="ENTER":
           If Not Seta_Sequencia(ITEM,True)
              Then Del
                   QuitLoop
           EndIf
           ITEM=[]
           Del
           Locate NLANC,ITEM
           If Retval
              Then CHAVECH=0
                   If Not IsBlank([Numero do Lancamento])
                      Then Mensagem("Cheque cadastrado edi‡„o n„o permitida !")
                           QuitLoop
                   EndIf
              Else CHAVECH=1
                   End Down
                   [Numero do Lote   ]=NLANC
                   [Sequencia do Lote]=ITEM
                   UnLockRecord
                   Locate NLANC,ITEM
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVECH)
                                                                    
;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogCH(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"] <= -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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_I_CHEQUE"         : Campo="NO"
            Case Campo="YES" Or Campo="NO"   : Campo="TG_I_CHEQUE"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_I_CHEQUE" : Campo="YES"
                  EndSwitch
          EndIf                     
   EndSwitch 
EndIf

Switch  
  Case Campo="TG_Registro":
       MSG_CAMPO="Selecione o arquivo"
       TECLA="Barra de Espa‡o=Marca/Desmarca"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc
           
;*******************************************************************************
;* Rela‡Æo de cheques                                                          *
;*******************************************************************************
Proc Relacao_Cheques(CODBC,NUMCH,CMC7)
Private CODBC,NUMCH,FAZ

;CODBC = Banco que deseja localizar
;NUMCH = Numero do Cheque que deseja localizar
;CMC7  = Diferente de vazio para localizar por CMC7, o valor vai vir na var Dados_Cheque 

FAZ  = True
CH_N_CADASTRADO = False
CONTCH    = 0
DynArray I_CHEQUE[]
Moveto "\\Sistemas\\Cheqrec\\ChequeI"

If CMC7<>""
   Then For i From 1 To 2
            If i=1 
               Then Dados_Cheque="<"+SubStr(Dados_Cheque,02,08)+
                                 "<"+SubStr(Dados_Cheque,11,10)+
                                 ">"+SubStr(Dados_Cheque,22,12)+
                                 ":" 
               Else Dados_Cheque=","+SubStr(Dados_Cheque,02,08)+
                                 ","+SubStr(Dados_Cheque,11,10)+
                                 "."+SubStr(Dados_Cheque,22,12)+
                                 "/"
            EndIf                     
            Moveto [Codigo CMC7]
            Locate IndexOrder By "Indchi02" Dados_Cheque
            If Retval
               Then While Dados_Cheque=[Codigo CMC7]
                         CONTCH = CONTCH + 1
                         I_CHEQUE[CONTCH]=Format("W10",[Numero_Cheque])+" "+Format("W15",[Titular_Cheque])+" "+Format("W12.2",[Valor])+" "+
                                          Format("D13",[Data Vencimento])+" "+Format("W12,AL",[Situacao])+" "+Format("W10,AL",[Numero_Conta])+" "+
                                          Format("W10,AL",[Numero do Lancamento])+" "+Format("W8,AL",[Sequencia do Cheque])
                         Skip
                         If Eot() Then QuitLoop EndIf
                   
                         Locate Next IndexOrder By "Indchi02" Dados_Cheque
                         If Not RetVal
                            Then QuitLoop
                         EndIf
                     EndWhile
                     FAZ = False
            EndIf
        EndFor
EndIf

If FAZ
   Then Moveto [Codigo_Banco]
        Locate IndexOrder By "Indchi00" CODBC,NUMCH
        If RetVal
            Then While CODBC=[Codigo_Banco] And NUMCH=[Numero_Cheque] 
                    CONTCH = CONTCH + 1
                    I_CHEQUE[CONTCH]=Format("W10",[Numero_Cheque])+" "+Format("W15",[Titular_Cheque])+" "+Format("W12.2",[Valor])+" "+
                                     Format("D13",[Data Vencimento])+" "+Format("W12,AL",[Situacao])+" "+Format("W10,AL",[Numero_Conta])+" "+
                                     Format("W10,AL",[Numero do Lancamento])+" "+Format("W8,AL",[Sequencia do Cheque])
                    Skip
                    If Eot() Then QuitLoop EndIf
              
                    Locate Next IndexOrder By "Indchi00" CODBC,NUMCH
                    If Not RetVal
                       Then QuitLoop
                    EndIf
                 EndWhile                                                               
        EndIf 
EndIf                                

Switch
  Case DynArraySize(I_CHEQUE)=1 :
       CH_NL  = NumVal(Rtrim(SubStr(I_CHEQUE[1],76,10))) 
       CH_SEQ = NumVal(Rtrim(SubStr(I_CHEQUE[1],87,08)))
       
       Moveto "\\Sistemas\\Cheqrec\\ChequeI"
       Moveto [Numero do Lancamento]
       Locate CH_NL,CH_SEQ
       If RetVal
          Then CopyToArray Regchequei
               If CHECACHEQ("VerificaNaRelacao")
                  Then Return True
                  Else If Verifica_Cheque_NaRelacao()
                          Then Mensagem(AUX_MSG)
                       EndIf      
                       Return False
               EndIf
       EndIf    
  Case DynArraySize(I_CHEQUE)>1 :
       While True
         ShowDialog "Cheques" Proc "SD_DialogCH"
         Trigger "OPEN","ARRIVE"
         Key "F1","ENTER","ESC",32,
         -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
         @ 02,12   Height 14 Width 69
       
         @ 00,02 ?? "N§ Cheque  Titular                Valor DtVencto   Situa‡„o"
         PickDynArray @01,01 Height 08 width 65
         Columns 1
         I_CHEQUE
         Tag "TG_I_CHEQUE"
         To ArrayElement
         
         Pushbutton @ 10,23 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
         Pushbutton @ 10,35 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
         
         EndDialog
         
         If Not RetVal
            Then Return False   
            Else a=I_CHEQUE[ArrayElement]
                 CH_NL  = NumVal(Rtrim(SubStr(I_CHEQUE[ArrayElement],76,10))) 
                 CH_SEQ = NumVal(Rtrim(SubStr(I_CHEQUE[ArrayElement],87,08)))
                 
                 Moveto "\\Sistemas\\Cheqrec\\ChequeI"
                 Moveto [Numero do Lancamento]
                 Locate CH_NL,CH_SEQ
                 If RetVal
                    Then CopyToArray Regchequei
                         If CHECACHEQ("VerificaNaRelacao")
                            Then Return True
                            Else If Verifica_Cheque_NaRelacao()
                                    Then Mensagem(AUX_MSG)
                                 EndIf      
                                 Return False   
                         EndIf
                 EndIf        
         EndIf
         QuitLoop
       EndWhile
EndSwitch 

Mensagem("Cheque n„o encontrado !")
CH_N_CADASTRADO = True
Return False
                           
EndProc ;

;*******************************************************************************
;* Rotina para verificar a existˆncia de cheque na rela‡Æo                     *
;*******************************************************************************
Proc Verifica_Cheque_NaRelacao() 
Private TEMP              

Moveto "BordChI"

TEMP = True
AUX_SEQ_CHEQUE = [Sequencia do Lote]
AUX_COD_BANCO  = [Codigo_Banco     ]
AUX_NUM_CHEQUE = [Numero_Cheque    ] 
                                                                                                                           
ACHOU_CHEQUE = ""
Del
Home
Scan
  If AUX_COD_BANCO=[Codigo_Banco] And AUX_NUM_CHEQUE = [Numero_Cheque] And AUX_SEQ_CHEQUE <> [Sequencia do Lote]
     Then ACHOU_CHEQUE = [Sequencia do Lote]
          QuitLoop
  EndIf                    
EndScan
End Down                  
[Sequencia do Lote] = AUX_SEQ_CHEQUE
[Codigo_Banco     ] = AUX_COD_BANCO
[Numero_Cheque    ] = AUX_NUM_CHEQUE
UnlockRecord

Moveto [Numero_Cheque]

If ACHOU_CHEQUE<>"" 
   Then MSG=    Completa("Banco..: "+AUX_COD_BANCO,50," ")+"//"
        MSG=MSG+Completa("Cheque.: "+AUX_NUM_CHEQUE,50," ")+"// //"
        MSG=MSG+"Localizado na sequˆncia "+StrVal(ACHOU_CHEQUE)+" desta rela‡„o!"
        Mensagem(MSG) 
        TEMP = False
EndIf
Release Vars AUX_COD_BANCO,AUX_NUM_CHEQUE

Return TEMP
              
EndProc ;Verifica_Cheque_NaRelacao()  
                                                                    
;*******************************************************************************
;* Rotina para Pesquisa Cheque                                                 *
;*******************************************************************************
Proc DIGITACH1()
Moveto [Codigo_Banco]

While True

     Prompt " Esc=Retornar  F1=Tabelas  Insert=CH NAO CADASTRADO "
     MSGCAMPO=""

     Wait Field
          Message MSGCAMPO
          Until "ESC","ENTER","F1","INS"
     Switch

     Case RetVal="ESC":
          Switch
             Case Field()="Codigo_Banco":
                  Del
                  CHAVECH=9
                  QuitLoop
             Case Field()="Numero_Cheque":
                  Moveto [Codigo_Banco]
          EndSwitch       
     Case RetVal="ENTER": 
          Switch
            Case Field()="Codigo_Banco":
              If Not IsBlank([Codigo_Banco])
                 Then Moveto [Numero_Cheque]
              EndIf
            Case Field()="Numero_Cheque": 
              If IsBlank([Numero_Cheque])        Then Loop EndIf
              ;If Not Verifica_Cheque_NaRelacao() Then Loop EndIf
              If Relacao_Cheques([Bordchi->Codigo_Banco],[Bordchi->Numero_Cheque],"")
                 Then Moveto "BordchI"
                      Moveto [Sequencia do Lote]
                      Locate NLANC,ITEM
                      Moveto [Numero_Cheque]
                      QuitLoop
              EndIf
              Moveto "BordchI" 
              Moveto [Sequencia do Lote]
              Locate NLANC,ITEM
              Moveto [Numero_Cheque]
          EndSwitch
     Case RetVal="INS":
          If [BordChc->Tipo de Destino]="DEPOSITADO" Or
             [BordChc->Tipo de Destino]="DESCONTADO_BANCO" Or
             [BordChc->Tipo de Destino]="DESCONTADO_OUTROS" Or
             [BordChc->Tipo de Destino]="PAGAMENTO"
             Then If PARAM_UTILIZA_CHLIVRE="S"
                     Then Controla_EdicaoCh()
                          CHAVECH=9
                          QuitLoop
                     Else Mensagem("Fun‡„o n„o permitida, Verificar Supervisor !")
                  EndIf
             Else Mensagem("Lan‡amento de cheque inv lido p/ Opera‡„o !")
          EndIf
     Case RetVal="F1":
          vrcampo=Field()
          Moveto [Numero do Lancamento]
          If ConsultaF1()
             Then Moveto "\\Sistemas\\Cheqrec\\ChequeI"
                  Moveto [Numero do Lancamento]
                  Locate Reg_ConsultaF1["Numero do Lancamento"],
                         Reg_ConsultaF1["Sequencia do Cheque" ]
                  If Retval
                     Then CopyToArray Regchequei
                          If CHECACHEQ("")
                             Then Return
                          EndIf
                  EndIf
          EndIf
          Moveto "BordchI"
          Moveto Field vrcampo
     EndSwitch
EndWhile
EndProc   ; (DigitaI)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Data_Prorrogada()
Moveto [Data Vencimento]

While True

     Prompt " Esc=Retornar  "
     MSGCAMPO=""

     If Field()="Data Vencimento"
        Then MSGCAMPO="Informe a Nova Data de Vencimento"
     EndIf                               

     Wait Field
          Message MSGCAMPO
          Until "ESC","ENTER"
     Switch
     Case RetVal="ESC":
          Return False
     Case RetVal="ENTER":
          If IsBlank([Data Vencimento]) Or
             [Data Vencimento]<[ChequeI->Data Vencimento]
             Then Mensagem("Data Inv lida !")
                  Loop
          EndIf
          Return True
     EndSwitch
EndWhile
Endproc

;*******************************************************************************
;* Rotina para Leitura do Cheque                                               *
;*******************************************************************************
Proc Ler_Cheque()
Private ChOk, wii, wcp1, wcp2
 
While True
  Moveto "BordChI"
  Moveto [Valor              ]  TOTVALOR=ImageCSum()
  Moveto [Sequencia do Lote  ]  VCITENS =ImageCCount()

  Moveto "BordChC"
  [BordChC->Total Lote]=TOTVALOR
  UnLockRecord

  Moveto "BordChi"
  Moveto [Sequencia do Lote]
  ITEM=[]
  If IsBlank(ITEM)
     Then ITEM=1
     Else ITEM=ITEM+1
  EndIf
  End Down
  CHAVECH=1

  [Numero do Lote   ]=NLANC
  [Sequencia do Lote]=ITEM
  UnLockRecord

  Moveto [Sequencia do Lote]
                                     
  If Not Leitura_Cheque(7,0)
     Then Del
          Return False
  EndIf
  
  COD_BANCO  = ""
  NUM_CHEQUE = ""
  
  If Relacao_Cheques(CODIGO_BANCO,NUMERO_CHEQUE,"1")
     Then Loop
  EndIf   
  If Not CH_N_CADASTRADO
     Then Moveto "BordchI"
          Del
          Loop
  EndIf
  
  If PARAM_UTILIZA_CHLIVRE="S" And
     [BordChc->Tipo de Destino]<>"DEVOLVIDO_BCO_TRANSF" And
     [BordChc->Tipo de Destino]<>"DEVOLVIDO_OUT_TRANSF"
     Then ConfGeral("Deseja incluir cheque livre ?")
          If OK<>"S"
             Then Moveto "BordchI"
                  Del
                  Loop
          EndIf
     Else Moveto "BordchI"
          Del
          Loop
  EndIf 
           
  Moveto "BordchI"
  Moveto [Sequencia do Lote]
  Locate NLANC,ITEM
  
  Moveto [Codigo_Banco]
  Ativa_Lookup()
  Moveto [Codigo_Banco]
  Locate CODIGO_BANCO
  If RetVal
     Then NOME_BANCO=[Nome_banco]
  EndIf
  KeyPress "Esc"
  
  MSG = ""
  [Numero_cheque]=NUMERO_CHEQUE
  [Agencia      ]=AGENCIA_CHEQUE
  [Numero_Conta ]=CONTA_CHEQUE
  [Nome_Banco   ]=NOME_BANCO
  [Codigo CMC7  ]=Dados_Cheque
  
  VSD_CBanco     =CODIGO_BANCO
  If IsBlank(NOME_BANCO)
     Then Opcao_Ler_Cheque=False
          MSG = "Banco "+CODIGO_BANCO+" nÆo cadastrado !"
     Else Opcao_Ler_Cheque=True
          [Codigo_Banco ]=CODIGO_BANCO
  EndIf
  UnLockRecord
  
  If MSG<>"" Then Mensagem(MSG) EndIf
  
  AchouPessoa=False
  wcp2       =CONTA_CHEQUE
  for wcp1 from 1 to 2
    Moveto "\\Sistemas\\CheqRec\\CDPessoa"
    Moveto [Codigo_Banco]
    Locate CODIGO_BANCO, AGENCIA_CHEQUE, wcp2
    If RetVal
       Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
            VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
            VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
            VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
            VSD_TipoEmit="TERCEIRO"
            AchouPessoa=True
            quitloop
    EndIf           
    if wcp1=1 and len(CONTA_CHEQUE)=10
       then wcp2=substr(CONTA_CHEQUE,3,8)
       else quitloop
    endif
  endfor  

  Moveto "BordchI"
  If AChouPessoa
     Then Moveto [Sequencia do Lote]
          Locate NLANC,ITEM
          [Tipo_Emitente       ]=VSD_TipoEmit
          [Titular_Cheque      ]=VSD_Nome
          [Cidade              ]=VSD_Cidade
          [UF                  ]=VSD_UF
          [CPF                 ]=VSD_CPF
          UnLockRecord
  EndIf
  
  Controla_EdicaoCH()

EndWhile
EndProc

;*******************************************************************************
;* Checagem de Cheques                                                         *
;*******************************************************************************
Proc CHECACHEQ(tipo)
Private tipo, SitChOk, REG_BORDCHI

While IsLockRecord() EndWhile

SitChOk=False
Switch
  Case [BordChc->Tipo de Destino]="PRORROGADO":
       Switch
         Case [ChequeI->Situacao]<>"LIQUIDADO"    And
              [ChequeI->Situacao]<>"EM COBRANCA"  And
              [ChequeI->Situacao]<>"TROCADO"      And
              [ChequeI->Situacao]<>"SEM FUNDO"    And
              [ChequeI->Situacao]<>"COBRANCAPGTO" : SitChOk=True
       EndSwitch

  Case [BordChc->Tipo de Destino]="RETORNO"   :
       Switch
         Case [ChequeI->Situacao]="LIQUIDADO" : SitChOk=True
         Case [ChequeI->Situacao]="SEM FUNDO" : SitChOk=True
       EndSwitch

  Case [BordChc->Tipo de Destino]="SEM FUNDO" :
       Switch
         Case [ChequeI->Situacao]="LIQUIDADO" : SitChOk=True
       EndSwitch

  Case [BordChc->Tipo de Destino]="COBRANCAPGTO" :
       Switch
         Case [ChequeI->Situacao]="EM COBRANCA" : SitChOk=True
       EndSwitch     

  Case [BordChc->Tipo de Destino]="TROCADO"   :
       Switch
      ;;;;Case [ChequeI->Situacao]="SEM FUNDO"   : SitChOk=True
      ;;;;Case [ChequeI->Situacao]="EM COBRANCA" : SitChOk=True
         Case [ChequeI->Situacao]="EM ABERTO"   : SitChOk=True
       EndSwitch

  Case SubStr([BordChc->Tipo de Destino],1,9)="DEVOLVIDO":
       Switch
         Case [ChequeI->Situacao]="LIQUIDADO"   : SitChOk=True
       EndSwitch
       
  OtherWise:
       Switch
         Case [ChequeI->Situacao]<>"LIQUIDADO"    And
              [ChequeI->Situacao]<>"EM COBRANCA"  And
              [ChequeI->Situacao]<>"TROCADO"      And
              [ChequeI->Situacao]<>"SEM FUNDO"    And
              [ChequeI->Situacao]<>"COBRANCAPGTO" : SitChOk=True
       EndSwitch
EndSwitch
If Not SitChOk
   Then if tipo<>"SELECAO"
           then 
                MSG=    Completa("Cheque.: "+[Numero_Cheque],50," ")+"//"
                MSG=MSG+Completa("Banco..: "+[Codigo_Banco ]+" "+[Nome_Banco],50," ")+"//"
                MSG=MSG+Completa("Agencia: "+[Agencia],50," ")+"//"
                MSG=MSG+Completa("Titular: "+[Titular_Cheque],50," ")+"//"
                MSG=MSG+Completa("Vencto.: "+Format("D13",[Data Vencimento]),50," ")+"//"
                MSG=MSG+Completa("Valor..: "+Format("W10.2,EIC",[Valor]),50," ")+"// //"
                MSG=MSG+"Situa‡„o: [ "+[Situacao]+" ] em "+Format("D13",[Data_Liquidado])
                
                If Tipo="VerificaNaRelacao"
                   Then AUX_MSG = MSG
                   Else Mensagem(MSG)
                EndIf   
        endif   
        Return False
EndIf

Switch
  Case [BordChc->Tipo de Destino]="PRORROGADO":
       Moveto "BordchI"
       CopyToArray REG_BORDCHI

  Case [BordChc->Tipo de Destino]="RETORNO"               Or
       [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_ABERTO":
       [Situacao                ]="EM ABERTO"
       [Numero do Lote Bordero  ]=BlankNum()
       [Tipo de Destino         ]=""
       [Sistema Destino         ]=""
       [Data_Liquidado          ]=BlankDate()
       
  Case [BordChc->Tipo de Destino]="TRANSFERIDO":
       [Codigo da Conta         ]=[BordchC->Codigo da Conta Trf]

  OtherWise:
       Switch
         Case [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_SFUNDO"  Or
              [BordChc->Tipo de Destino]="DEVOLVIDO_OUT_SFUNDO"  Or
              [BordChc->Tipo de Destino]="SEM FUNDO":
           [Situacao                ]="SEM FUNDO"

         Case [BordChc->Tipo de Destino]="DEVOLVIDO_BCO_TRANSF"  Or
              [BordChc->Tipo de Destino]="DEVOLVIDO_OUT_TRANSF":
           [Situacao                ]="EM COBRANCA"

         Case [BordChc->Tipo de Destino]="TROCADO":
           [Situacao                ]="TROCADO"

         Case [BordChc->Tipo de Destino]="COBRANCAPGTO":
           [Situacao                ]="COBRANCAPGTO"
           
         OtherWise:
           [Situacao                ]="LIQUIDADO"
           [Numero do Lote Bordero  ]=[BordChc->Numero do Lote ]
           [Data_Liquidado          ]=[BordChc->Data do Lote   ]
           [Tipo de Destino         ]=[BordChC->Tipo de Destino]
           [Sistema Destino         ]="BO"
           
       EndSwitch
       
EndSwitch
UnLockRecord

Moveto "BordchI"
if tipo="SELECAO"
   then 
        If IsBlank(ITEM)
           Then ITEM=1
           Else ITEM=ITEM+1
        EndIf

        End
        Down
        [Numero do Lote   ]=NLANC
        [Sequencia do Lote]=ITEM
endif   
[Numero do Lancamento     ]=Regchequei["Numero do Lancamento"]
[Sequencia do Cheque      ]=Regchequei["Sequencia do Cheque"]
[Codigo_Banco             ]=Regchequei["Codigo_Banco"]
[Nome_Banco               ]=Regchequei["Nome_Banco"]
[Agencia                  ]=Regchequei["Agencia"]
[Numero_Conta             ]=Regchequei["Numero_Conta"]
[Numero_Cheque            ]=Regchequei["Numero_Cheque"]
[CPF                      ]=Regchequei["CPF"]
[Tipo_Emitente            ]=Regchequei["Tipo_Emitente"]
[Titular_Cheque           ]=Regchequei["Titular_Cheque"]
[Cidade                   ]=Regchequei["Cidade"]
[UF                       ]=Regchequei["UF"]
[Data Vencimento          ]=Regchequei["Data Vencimento"]
[Valor                    ]=Regchequei["Valor"]
[Codigo_Cliente           ]=Regchequei["Codigo_Cliente"]
[Observacao do Cheque     ]=Regchequei["Observacao do Cheque"]
[Codigo CMC7              ]=Regchequei["Codigo CMC7"]
Controle_Dia()
UnLockRecord

If [BordChc->Tipo de Destino]="PRORROGADO"
   Then If Not Data_Prorrogada()
           Then CopyFromArray REG_BORDCHI
                Return False
        EndIf

        Moveto "\\Sistemas\\Cheqrec\\ChequeI"
        [Situacao                ]="PRORROGADO"
        [Data Vencimento Anterior]=[Data Vencimento]
        [Data Vencimento         ]=[BordChi->Data Vencimento]
        [Numero do Lote Bordero  ]=BlankNum()
        [Data_Liquidado          ]=BlankDate()
        [Tipo de Destino         ]=""
        [Sistema Destino         ]=""
        UnLockRecord

        Moveto "BordChI"
EndIf
SaveTables
              
Return True
EndProc ; (ChecaCHEQ)

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc Item_DialogCH(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5, wcp1, wcp2

TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True
If INICIO_DIALOG
   Then INICIO_DIALOG=False
        If Opcao_Ler_Cheque = True
           Then If AchouPessoa
                   Then Campo ="DataV"
                   Else Campo ="CPF"
                Endif   
           Else Campo ="CBanco"
        EndIf
EndIf      
      
If Opcao_Ver        =True  Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then ITEM=[Sequencia do Lote]
                      Inicia_RegistroCH()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -46:
          If COPIOU_REGISTRO And CHAVECH=1
             Then CopyFromArray REGISTRO
                  [Numero do Lote      ]=NLANC
                  [Sequencia do Lote   ]=ITEM
                  [Codigo_Banco        ]=VSD_CBanco
                  [Numero_Cheque       ]=VSD_NCheque
                  [Data Vencimento     ]=BlankDate()
                  Registro_ItemCH("Ler")
          EndIf
     Case Evento["KeyCode"] = -59:
          If Campo="CBanco" Or
             Campo="Cidade" Or
             Campo="UF"
             Then
                  Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5

                  If Campo="CBanco" Then Moveto [Codigo_Banco] EndIf
                  If Campo="Cidade" Then Moveto [Cidade      ] EndIf
                  If Campo="UF"     Then Moveto [UF          ] EndIf
                  If ConsultaF1()
                     Then If Campo="Cidade"
                             Then [UF  ]=Reg_ConsultaF1["UF"]
                                  VSD_UF=[UF]
                          EndIf
                  EndIf        

                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5

                  echo Normal
                  echo off

                  If Campo="CBanco"
                     Then VSD_CBanco=[Codigo_Banco]
                          VSD_NBanco=[Nome_Banco  ]
                  EndIf
                  If Campo="Cidade"
                     Then VSD_Cidade=[Cidade]
                  EndIf
                  If Campo="UF"
                     Then VSD_UF=[UF]
                  EndIf
                  Moveto "BordchI"
          EndIf

     Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
          If CHAVECH=0
             Then If QuerExcluir("") And Checa_Supervisor()
                     Then CHAVECH=8
                          CancelDialog
                  EndIf
          EndIf
     Case Evento["KeyCode"] = -81:
            VSD_CBanco   =ControlValue("CBanco")
            VSD_NCheque  =ControlValue("NCheque")
            VSD_Nome     =ControlValue("Nome")
            VSD_Agencia  =ControlValue("Agencia")
            VSD_CCorrente=ControlValue("CCorrente")
            VSD_TipoEmit ="TERCEIRO"
            VSD_Cidade   =ControlValue("Cidade")
            VSD_UF       =ControlValue("UF")
            VSD_DataV    =ControlValue("DataV")
            VSD_Valor    =ControlValue("Valor")
            VSD_Obs      =ControlValue("Obs")
            VSD_CPF      =ControlValue("CPF")

            Pode_Gravar=True
            If IsBlank(VSD_DataV)
               Then Mensagem("Data Vencimento Invalida !")
                    Pode_Gravar=False
            EndIf
            If IsBlank(VSD_Valor)
               Then Mensagem("Valor Invalido !")
                    Pode_Gravar=False
            EndIf

            If Pode_Gravar
               Then AcceptDialog
            EndIf
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="CBanco"   :
                 If QuerDesfazer("")
                    Then If CHAVECH=1
                            Then Del
                            Else CopyFromArray RegItem
                         EndIf
                         CHAVECH=9
                         CancelDialog
                 EndIf
            Case Campo="Agencia"  : Campo="CBanco"
            Case Campo="CCorrente": Campo="Agencia"
            Case Campo="NCheque"  : Campo="CCorrente"
            Case Campo="CPF"      : Campo="NCheque"
            Case Campo="Nome"     : Campo="CPF"
            Case Campo="Cidade"   : Campo="Nome"
            Case Campo="UF"       : Campo="Cidade"
            Case Campo="DataV"    : Campo="UF"
            Case Campo="Valor"    : Campo="DataV"
            Case Campo="Obs"      : Campo="Valor"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Switch
            Case Campo="CBanco":
                 VSD_CBanco=ControlValue("CBanco")
                 If Not IsBlank(VSD_CBanco)
                    Then Moveto [Codigo_Banco]
                         Ativa_Lookup()
                         Moveto [Codigo_Banco]
                         Locate VSD_CBanco
                         If RetVal
                            Then VSD_CBanco=[Codigo_Banco      ]
                                 VSD_NBanco=[Nome_Banco        ]
                                 KeyPress "ESC"
                                 Moveto "BordchI"
                                 [Codigo_Banco]=VSD_CBanco
                                 Campo="Agencia"
                            Else Mensagem("Banco n„o Cadastrado !")
                                 VSD_CBanco=""
                                 VSD_NBanco=""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                 EndIf
            Case Campo="Agencia":
                 VSD_Agencia=ControlValue("Agencia")
                 Campo="CCorrente"
             Case Campo="CCorrente": Campo="NCheque"
                  VSD_CCorrente=ControlValue("CCorrente")

                  AchouPessoa=False
                  If CHAVECH=1 And
                     Not IsBlank(VSD_AGENCIA) And
                     Not IsBlank(VSD_CCORRENTE)
                     Then ITEM = [Sequencia do Lote]
                          wcp2       =VSD_CCORRENTE
                          for wcp1 from 1 to 2
                            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                            Moveto [Codigo_Banco]
                            Locate VSD_CBANCO, VSD_AGENCIA, wcp2
                            If RetVal
                               Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
                                    VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                    VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                    VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                    VSD_TIPOEmit="TERCEIRO"
                                    AchouPessoa=True
                                    quitloop
                            EndIf                       
                            if wcp1=1 and len(VSD_CCORRENTE)=10
                               then wcp2=substr(VSD_CCORRENTE,3,8)
                               else quitloop
                            endif
                          endfor  
                          
                          Moveto "BordchI"
                          If AchouPessoa
                             Then [Tipo_Emitente       ]=VSD_TipoEmit
                                  [Titular_Cheque      ]=VSD_Nome
                                  [Cidade              ]=VSD_Cidade
                                  [UF                  ]=VSD_UF
                                  [CPF                 ]=VSD_CPF
                                  UnLockRecord
                                  
                                  Moveto [Sequencia do Lote]
                                  Locate NLANC,ITEM
                          EndIf
                  EndIf   
            Case Campo="NCheque":
                 VSD_NCheque=ControlValue("NCheque")
                 VSD_TipoEmit="TERCEIRO"
                 Campo="CPF"
             Case Campo="CPF":
                  VSD_CPF=ControlValue("CPF")
                  wok=true
                  If Not IsBlank(VSD_CPF)
                     Then If Tipo_CGC_CPF(VSD_CPF)<>"CGC" And
                             Tipo_CGC_CPF(VSD_CPF)<>"CPF"
                             Then Mensagem("CPF/CGC Invalido !")
                                  wok=false
                          EndIf
                  EndIf
                  If wok
                     Then Campo="Nome"
                          If CHAVECH=1 And
                             Not AchouPessoa And
                             Not IsBlank(VSD_CPF)
                             Then ITEM = [Sequencia do Lote]
                             
                                  AchouPessoa=False
                                  Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                                  Moveto [CPF]
                                  Locate IndexOrder by "Ind_CPF1" VSD_CPF
                                  If RetVal
                                     Then VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                          VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                          VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                          AchouPessoa=True
                                          Campo="DataV"
                                  EndIf                       

                                  Moveto "BordchI"
                                  If AchouPessoa
                                     Then [Titular_Cheque      ]=VSD_Nome
                                          [Cidade              ]=VSD_Cidade
                                          [UF                  ]=VSD_UF
                                          UnLockRecord
                                          
                                          Moveto [Sequencia do Lote]
                                          Locate NLANC,ITEM
                                  EndIf
                          EndIf   
                  EndIf

            Case Campo="Nome":
                 VSD_Nome=ControlValue("Nome")
                 Campo="Cidade"
            Case Campo="Cidade":
                 VSD_Cidade=ControlValue("Cidade")                      
                 If IsBlank(VSD_Cidade) 
                    Then Campo="Cidade"                     
                    Else Campo="UF"     
                 EndIf  
            Case Campo="UF":
                 VSD_UF=ControlValue("UF")
                 If IsBlank(VSD_UF) 
                    Then Campo="UF"                     
                    Else Campo="DataV"     
                 EndIf                  
                 If Not IsBlank(VSD_Cidade)
                    Then Moveto [Cidade]
                         Ativa_Lookup()
                         Moveto [Cidade]
                         Locate VSD_Cidade,VSD_UF
                         If RetVal
                            Then VSD_Cidade=[Cidade ]
                                 VSD_UF=[UF]
                                 KeyPress "ESC"
                                 Moveto "BordChi"
                                 [Cidade]=VSD_Cidade
                                 [UF    ]=VSD_UF                                
                            Else Mensagem("Cidade/UF n„o Cadastrada !")
                                 VSD_Cidade=""
                                 Campo="Cidade"
                                 KeyPress "ESC"
                         EndIf
                         Echo Off                  
                 EndIf
            Case Campo="DataV":
                 VSD_DataV=ControlValue("DataV")
                 If Not IsBlank(VSD_DataV)
                    Then Campo="Valor"
                 EndIf
            Case Campo="Valor":
                 VSD_Valor=ControlValue("Valor")
                 If Not IsBlank(VSD_Valor)
                    Then Campo="Obs"
                 EndIf
            Case Campo="Obs":
                 VSD_Obs=ControlValue("Obs")
                 AcceptDialog
          EndSwitch
          Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="CBanco"      Or
   Campo="Cidade"      Or
   Campo="UF"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf
If CHAVECH=0
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
EndIf

If CHAVECH=1 And COPIOU_REGISTRO
   Then TECLA=TECLA+"Alt+C=Copiar  PgDn=Finalizar  "
EndIf

Switch
  Case Campo="CCorrente":
       MSGCAMPO="Conta Corrente"
  Case Campo="DataV":
       MSGCAMPO="Data do Vencimento"
  OtherWise:
       MSGCAMPO=""
EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
Mouse Hide
RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_ItemCH(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_SEQ    =[Sequencia do Lote           ]
       If IsBlank([Numero do Lancamento])
          Then VSD_Lanctoch ="CH NAO CADASTRADO"
          Else VSD_Lanctoch =StrVal([Numero do Lancamento])+"/"+StrVal([Sequencia do Cheque])
       EndIf
       VSD_DataV    =[Data Vencimento     ]
       VSD_CBanco   =[Codigo_Banco        ]
       VSD_NBanco   =[Nome_Banco          ]
       VSD_Agencia  =[Agencia             ]
       VSD_CCorrente=[Numero_Conta        ]
       VSD_NCheque  =[Numero_Cheque       ]
       VSD_TipoEmit =[Tipo_Emitente       ]
       VSD_Nome     =[Titular_Cheque      ]
       VSD_Cidade   =[Cidade              ]
       VSD_UF       =[UF                  ]
       VSD_Valor    =[Valor               ]
       VSD_Obs      =[Observacao do Cheque]
       VSD_CPF      =[CPF                 ]
       VSD_CBChq    =[Codigo CMC7         ]

       VSDGU_USUARIO = [Codigo_Usuario     ]
       VSDGU_DATA    = [Data_Inclusao      ]
       VSDGU_HORA    = [Hora_Inclusao      ]
       VSDGU_CONTROLE= [Numero_Controle_Dia]

  Case Opcao="Gravar":
       [Data Vencimento     ]=VSD_DataV
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [Tipo_Emitente       ]=VSD_TipoEmit
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Observacao do Cheque]=VSD_Obs
       [Valor               ]=VSD_Valor
       [CPF                 ]=VSD_CPF
       [Codigo CMC7         ]=VSD_CBChq

       If CHAVECH=1 Then Controle_Dia() EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True
       UnLockRecord

       If Not IsBlank(VSD_Agencia) And
          Not IsBlank(VSD_CCorrente) And
          Not IsBlank(VSD_CPF) Then
          For wi From 1 To 5
            CDPessoaNova=False
            
            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
            Moveto [Codigo_Banco]
            Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
            If Not RetVal
               Then 
                    CDPessoaNova=True

                    if len(VSD_CCORRENTE)=10
                       then Locate VSD_CBANCO, VSD_AGENCIA, substr(VSD_CCORRENTE,3,8)
                            if retval
                               then while islockrecord() endwhile 
                                    [Numero_Conta        ]=VSD_CCorrente
                                    unlockrecord
                                    loop
                            endif
                    endif

                    if CDPessoaNova
                       then
                            End
                            Down
                            [Codigo_Banco        ]=VSD_CBanco
                            [Agencia             ]=VSD_Agencia
                            [Numero_Conta        ]=VSD_CCorrente
                    endif
            EndIf
                                   
            If IsLockRecord()
               Then If CDPessoaNova
                       Then Del
                    EndIf
                    If wi=5 
                       Then QuitLoop
                       Else Loop 
                    EndIf
            EndIF   
            [CPF                 ]=VSD_CPF
            [Titular_Cheque      ]=VSD_Nome
            [Cidade              ]=VSD_Cidade
            [UF                  ]=VSD_UF
            [Numero_Cheque       ]=VSD_NCheque
            [Data Vencimento     ]=VSD_DataV
            UnLockRecord
            QuitLoop
          EndFor
       EndIf
       Moveto "BordchI"

EndSwitch
EndProc  ; (Registro_ItemCH)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_RegistroCH()

INICIO_DIALOG=True
Moveto [Sequencia do Lote]
Locate NLANC,ITEM
CopyToArray RegItem
Registro_ItemCH("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Digitacao de Cheques                                                        *
;*******************************************************************************
Proc DigitaCH()

Showdialog "Dados do Cheque [      ]" Proc "Item_DialogCH"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP",-46, -6, -147
     @ 08,2 height 13 width 76

   Accept @ -01,42 Width 6 "A3" Tag "I_Seq" To VSD_I_SEQ

  Label  @ 0,00 "C¢digo CMC7" for "CBChq"
  Accept @ 1,01 Width 37 "A34"  Picture ";#########;###########;#############;#" Tag "CBChq" To VSD_CBChq

  ;Label  @ 0,43 "Situa‡„o" for "Situacao"
  ;Accept @ 1,44  Width 15 "A12" picture "!*!" Tag "Situacao" to VSD_Situacao
                
  ;Label  @ 0,59 "Dt.Liquida‡Æo" for "DataL"
  ;Accept @ 1,60  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataL" to VSD_DataL
                                          
   Label  @ 2,00 "Banco" for "CBanco"
   Accept @ 3,01  Width 6 "A3" picture "!*!" Tag "CBanco" to VSD_CBanco
   Accept @ 3,06  Width 18 "A18" picture "!*!" Tag "NBanco" to VSD_NBanco

   Label  @ 2,24 "Agˆncia" for "Agencia"
   Accept @ 3,25  Width 7 "A6" picture "!*!" Tag "Agencia" to VSD_Agencia

   Label  @ 2,32 "C/C" for "CCorrente"
   Accept @ 3,33  Width 13 "A10" picture "!*!" Tag "CCorrente" to VSD_CCorrente

   Label  @ 2,46 "Cheque" for "NCheque"
   Accept @ 3,47 Width 12 "A9" picture "!*!" Tag "NCheque" to VSD_NCheque

   Label  @ 2,59 "Emitente" for "TipoEmit"
   Accept @ 3,60  Width 13 "A8" picture "PROPRIO,TERCEIRO" Tag "TipoEmit" to VSD_TipoEmit
   
   Label  @ 4,00 "CPF/CNPJ" for "CPF"
   Accept @ 5,01  Width 23 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "CPF" to VSD_CPF

   Label  @ 4,24 "Nome do Titular" for "Nome"
   Accept @ 5,25  Width 48 "A40" picture "!*!" Tag "Nome" to VSD_Nome

   Label  @ 6,00 "Cidade" for "Cidade"
   Accept @ 7,01  Width 23 "A20" picture "!*!" Tag "Cidade" to VSD_Cidade

   Label  @ 6,24 "UF" for "UF"
   Accept @ 7,25  Width 5  "A2" picture "!*!" Tag "UF" to VSD_UF

   Label  @ 6,32 "Dt.Vencimento" for "DataV"
   Accept @ 7,33  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataV" to VSD_DataV

   Label  @ 6,46 "Valor" for "Valor"
   Accept @ 7,47  Width 12 "$" picture "#*#.[##]" Tag "Valor" to VSD_Valor

  ;Label  @ 6,59 "Dt.Entrada " for "DataE"
  ;Accept @ 7,60  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataE" to VSD_DataE

   Label  @ 08,00 "Observa‡„o do Cheque" for "Obs"
   Accept @ 09,01  Width 72 "A70" picture "!*!" Tag "Obs" to VSD_Obs

   @ 10,00 ?? Format("W52,AL","[Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+
              " "+VSDGU_HORA+" "+VSDGU_CONTROLE)+
              "Origem: "+Format("W13,AL","CT/"+VSD_Lanctoch)+"]"
   PaintCanvas Attribute 10 10, 01, 10, 72

Enddialog

Mouse Show
If RetVal
   Then Finaliza_RegistroCH(True)
   Else Finaliza_RegistroCH(False)
EndIf
EndProc ; (DigitaCH)

;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_RegistroCH(ok)
Private ok
If Ok
   Then Registro_ItemCH("Gravar")
   Else If CHAVECH=8
           Then Grava_LogEx("BordChqI")
                ALTERA_CH()
        EndIf
EndIf
EndProc   ; (Finaliza_RegistroCH)

;*******************************************************************************
;* Exclusao de Baixas e Lancamento                                             *
;*******************************************************************************
Proc EXCLUSAO()
Moveto "\\Sistemas\\CheqRec\\BordChTx"
If RecordStatus("New")=False
   Then If RecordStatus("Locked") Then UnLockRecord EndIf
        Del
EndIf

Moveto "\\Sistemas\\CheqRec\\BordChI"
While RecordStatus("New")=False
   CopytoArray REG_BORDI
   Grava_LogEx("BordChqI")
   ALTERA_CH()
EndWhile

Moveto "\\Sistemas\\CheqRec\\BordChC"
Estorno_CxBco("Todos")       
Moveto "\\Sistemas\\CheqRec\\BordChC"
Grava_LogEx("BordChqC")
If RecordStatus("Locked") Then UnLockRecord EndIf
Del
EndProc  ; (Exclusao)

;*******************************************************************************
;* Rotina Altera Situacao do ChequeI                                           *
;*******************************************************************************
Proc ALTERA_CH()

Moveto "ChequeI"
Moveto [Numero do Lancamento]
Locate [BordChI->Numero do Lancamento],
       [BordChI->Sequencia do Cheque ]
If RetVal
   Then While IsLockRecord() EndWhile
        Switch
          Case SubStr([BordChc->Tipo de Destino],1,9)="DEVOLVIDO"  Or
               [BordChc->Tipo de Destino]="SEM FUNDO":
            [Situacao                ]="LIQUIDADO"
            
          Case [BordChc->Tipo de Destino]="RETORNO":
            [Situacao                ]="SEM FUNDO"
            
          Case [BordChc->Tipo de Destino]="COBRANCAPGTO":
            [Situacao                ]="EM COBRANCA"
              
          Case [BordChc->Tipo de Destino]="TRANSFERIDO":
            [Codigo da Conta         ]=[BordChc->Codigo da Conta   ]
          
          Otherwise:
            [Situacao                ]="EM ABERTO"
            [Tipo de Destino         ]=""
            [Sistema Destino         ]=""
            [Lancamento Destino      ]=""
            [Numero do Lote Bordero  ]=BlankNum()
            [Data_Liquidado          ]=BlankDate()

        EndSwitch
        UnLockRecord
EndIf

Moveto "BordChI"
ContaRef =REG_BORD["Codigo da Conta"          ]
ContaTRef=REG_BORD["Codigo da Conta Trf"      ]
Estorno_CxBco_Cheque("Todos")
Moveto "BordchI"
If RecordStatus("Locked") Then UnLockRecord EndIf
Del
EndProc  ; (Altera_Ch)

;*******************************************************************************
;* Calculo da Data Media                                                       *
;*******************************************************************************
Proc CALC_MEDIA(Tabela)
Private Tabela

M_VALORM   =0
VALOR_TOTAL=0

If Tabela="Answer"
   Then View "Answer"
   Else Moveto "BordChI"
EndIf
Scan
  if not isblank([Data Vencimento])
     then 
          MDIA=[Data Vencimento]-VSDGDTREF
          If MDIA=0
             Then M_VALORM   =M_VALORM   + [Valor]
             Else M_VALORM   =M_VALORM   +([Valor]*MDIA)
          EndIf
        
          VALOR_TOTAL=VALOR_TOTAL+[Valor]
  endif
EndScan
If Tabela="Answer"
   Then ClearAll
EndIf
M_DIAREF     = Round( ( M_VALORM / VALOR_TOTAL ), 3 )
M_DIAREFI    = Int( M_DIAREF )
M_DIAREFD    = M_DIAREF - M_DIAREFI
If M_DIAREFD > 0.51
   Then M_DIAREFI = M_DIAREFI + 1
EndIf

DTMEDIA=VSDGDTREF+M_DIAREFI
NDIAS  =M_DIAREFI
EndProc  ; (Calcula)

;*******************************************************************************
;* Inclusao de Cheques automatico por periodo de vencimento                    *
;*******************************************************************************
Proc Incluir_ChequesDtV()
Aguarde("Selecionado Cheques por Data Vencimento")

NR = NRecords("ChequeI")

Moveto "ChequeI"
Scan For [Data Vencimento]>=VSDGDTINI And [Data Vencimento]<=VSDGDTFIM

  Barra(NR, RecNo())
  Aguarde("Selecionado Cheques Data Vencimento "+BARRA_STRING)

  copytoarray Regchequei
  CHECACHEQ("SELECAO")
  
  Moveto "ChequeI"
EndScan
LimpAguarde()
Moveto "BordChC"
EndProc  ; (Incluir_ChequesDtV)

;*******************************************************************************
;* Inclusao de Cheques automatico por data de Inclusao                         *
;*******************************************************************************
Proc Incluir_ChequesDtI()
Aguarde("Selecionado Cheques por Data de Inclusao")

NR = NRecords("ChequeI")

Moveto "ChequeI"
Scan For [Data_Inclusao]>=VSDGDTINI And [Data_Inclusao]<=VSDGDTFIM

  Barra(NR, RecNo())
  Aguarde("Selecionado Cheques Data de Inclusao "+BARRA_STRING)

  copytoarray Regchequei
  CHECACHEQ("SELECAO")
  
  Moveto "ChequeI"
EndScan
LimpAguarde()
Moveto "BordChC"
EndProc  ; (Incluir_ChequesDtE)

;*******************************************************************************
;* Inclusao de Cheques automatico por numero de Lancamento                     *
;*******************************************************************************
Proc Incluir_ChequesNL()
Aguarde("Selecionado Cheques por Numero de Lan‡amento")

NR = NRecords("ChequeI")

Moveto "ChequeI"
Scan For [Numero do Lancamento]=VSDGLANC

  Barra(NR, RecNo())
  Aguarde("Selecionado Cheques n§ lan‡amento "+BARRA_STRING)

  copytoarray Regchequei
  CHECACHEQ("SELECAO")
  
  Moveto "ChequeI"
EndScan
LimpAguarde()
Moveto "BordChC"
EndProc  ; (Incluir_ChequesNL)

;*******************************************************************************
;* Inclusao de Cheques automatico por periodo de vencimento                    *
;*******************************************************************************
Proc Incluir_ChequesNLDtV()
Aguarde("Selecionado Cheques por Data Vencimento/Numero de Lancamento")

NR = NRecords("ChequeI")

Moveto "ChequeI"
Scan For [Data Vencimento]>=VSDGDTINI And [Data Vencimento]<=VSDGDTFIM And
         [Numero do Lancamento]=NumVal(VSDGLANC)
                                                                      
  Barra(NR, RecNo())
  Aguarde("Selecionado Cheques Data Vencto/n§ lan‡to "+BARRA_STRING)

  copytoarray Regchequei
  CHECACHEQ("SELECAO")
  
  Moveto "ChequeI"
EndScan
LimpAguarde()
Moveto "BordChC"
EndProc  ; (Incluir_ChequesNLDtV)

;*******************************************************************************
;* Rotina p/ Montar Opcoes p/ Grade                                            *
;*******************************************************************************
Proc Monta_Opcoes(OPCAODIVERSAS, ITEMDESEJADO)
Private OPCAODIVERSAS, ITEMDESEJADO, wcg, icg, icgt, tnovo, nomecampo,ContaOk
nomecampo=Field()
If IsAssigned(Opcoes)
   Then Release Vars Opcoes
EndIf
DynArray Opcoes[]
Switch
  Case OPCAODIVERSAS="Codigo da Conta":
       Moveto [Codigo da Conta]
  Case OPCAODIVERSAS="Codigo da Conta Trf":
       Moveto [Codigo da Conta Trf]
EndSwitch
Ativa_Lookup()
wcg=0

While Not EOT()
  Switch
    Case OPCAODIVERSAS="Codigo da Conta":
         Contaok=False
         Switch
           Case ([BordCHC->Tipo de Destino]="DEPOSITADO" Or
                 [BordCHC->Tipo de Destino]="DESCONTADO_BANCO" Or
                 [BordCHC->Tipo de Destino]="DESCONTADO_OUTROS" Or
                 [BordCHC->Tipo de Destino]="TRANSFERIDO" Or
                 [BordCHC->Tipo de Destino]="PAGAMENTO"):
                If [Tipo da Conta    ]="X"
                   Then ContaOk=True
                EndIf
           Case SuBstr([BordCHC->Tipo de Destino],1,13)="DEVOLVIDO_BCO":
                If [Tipo da Conta    ]="C"
                   Then ContaOk=True
                EndIf
           Case [Tipo da Conta    ]="X":
                ContaOk=True
         EndSwitch
         If ContaOk
            Then wcg=wcg+1
                 Opcoes[wcg]=Completa([Descricao da Conta],31," ")+[Codigo da Conta]
         Endif
    Case OPCAODIVERSAS="Codigo da Conta Trf":
         Contaok=False
         Switch
           Case ([BordCHC->Tipo de Destino]="DEPOSITADO" Or
                 [BordCHC->Tipo de Destino]="DESCONTADO_BANCO"):
                If [Tipo da Conta Trf    ]="C"
                   Then ContaOk=True
                EndIf
           Case SubStr([BordCHC->Tipo de Destino],1,13)="DEVOLVIDO_BCO" or
                [BordCHC->Tipo de Destino]="TRANSFERIDO":
                If [Tipo da Conta Trf    ]="X"
                   Then ContaOk=True
                 EndIf
         EndSwitch
         If ContaOk
            Then wcg=wcg+1
                 Opcoes[wcg]=Completa([Descricao da Conta Trf],31," ")+[Codigo da Conta Trf]
         Endif
  EndSwitch
  Skip
EndWhile
KeyPress "ESC"
Moveto Field nomecampo
EndProc    ; (Monta_Opcoes)

;*******************************************************************************
;* Rotina p/ Checagem Opcoes p/ Grade                                          *
;*******************************************************************************
Proc Checa_Opcoes(OPCAODIVERSAS, VALORDESEJADO)
Private OPCAODIVERSAS, VALORDESEJADO, icg, resultado

If DynArraySize(Opcoes)=0
   Then Return False
EndIf

resultado=false
For icg From 1 To DynArraySize(Opcoes)
  Switch
    Case OPCAODIVERSAS="Codigo da Conta" Or
         OPCAODIVERSAS="Codigo da Conta Trf":
         If RTrim(SubStr(Opcoes[icg],32,4))=VALORDESEJADO
            Then resultado=true
         EndIf
  EndSwitch
  If resultado
     then MontaRegistro_F1(OPCAODIVERSAS,icg)
          QuitLoop
  EndIf
EndFor
return resultado
EndProc         ;  (Checa_Opcoes)

;*******************************************************************************
;* Rotina Montar Registro_F1 p/ Grade                                          *
;*******************************************************************************
Proc MontaRegistro_F1(OPCAODIVERSAS, indice)
private OPCAODIVERSAS, indice

If IsAssigned(Registro_F1)
   Then Release Vars Registro_F1
EndIf
DynArray Registro_F1[]
Switch
  Case OPCAODIVERSAS="Codigo da Conta" Or
       OPCAODIVERSAS="Codigo da Conta Trf"       :
       Registro_F1["Codigo da Conta"]         =RTrim(SubStr(Opcoes[indice],32,4))
       Registro_F1["Descricao da Conta"]      =RTrim(SubStr(Opcoes[indice],1,30))
EndSwitch
EndProc    ;  (Monta_RegistroF1)

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc Seleciona_Opcoes(OPCAODIVERSAS,SEMRETORNO)
Private OPCAODIVERSAS, TITSHOW, LI, CI, LJ, AJ, nc, SEMRETORNO

If DynArraySize(Opcoes)=0
   Then Mensagem("Tabela sem Registros !")
        Return False
EndIf

AJ=DynArraySize(Opcoes)
If AJ>15
   Then AJ=15
   Else If AJ<3 Then AJ=3 EndIf
EndIf

Switch
  Case OPCAODIVERSAS="Codigo da Conta"     : TITSHOW="CONTAS" LI=05 CI=01 LJ=37 nc=1
  Case OPCAODIVERSAS="Codigo da Conta Trf" : TITSHOW="CONTAS" LI=05 CI=38 LJ=37 nc=1
EndSwitch

ArrayElement=0
Showdialog "Consulta "+TITSHOW Proc "Opcoes_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC"
     @ LI,CI height AJ+2 width LJ+5

   PickDynArray @0,01 Height AJ width LJ
   Columns nc
   Opcoes
   Tag "TG_OPCAO"
   To ArrayElement
EndDialog
If RetVal
   Then If SEMRETORNO<>"SR"
           Then Switch
                  Case OPCAODIVERSAS="Codigo da Conta"         :
                       [Codigo da Conta   ]=Registro_F1["Codigo da Conta"]
                       [Descricao da Conta]=Registro_F1["Descricao da Conta"]
                  Case OPCAODIVERSAS="Codigo da Conta Trf"         :
                       [Codigo da Conta Trf   ]=Registro_F1["Codigo da Conta"]
                       [Descricao da Conta Trf]=Registro_F1["Descricao da Conta"]
                EndSwitch
                Return True
        EndIf
   Else Return False
EndIf
EndProc   ; (Seleciona_Opcoes)

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc Opcoes_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=" Esc=Retornar  Enter=Selecionar  =Mover  "
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9 Or Evento["KeyCode"] = -15: Temp=False
      Case Evento["KeyCode"] = 27:
           Resultado_F1=False
           CancelDialog
      Case Evento["KeyCode"] = 13:
           Temp=False
           MontaRegistro_F1(OPCAODIVERSAS,ArrayElement)
           Resultado_F1=True
           AcceptDialog
   EndSwitch
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Return Temp
EndProc      ; (Opcoes_Dialog)

;*******************************************************************************
;* Rotina para controle da Sele‡Æo                                                                      *
;*******************************************************************************
Proc Selecao_dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
					Switch
						Case OPSHOW="Selecao":
							Switch
								Case Campo="TG_SELECIONA"            : Campo="NO"
								Case Campo="TG_LANC"                 : Campo="TG_SELECIONA"
								Case Campo="TG_DTINI"                : Campo="TG_SELECIONA"
								Case Campo="TG_DTFIM"                : Campo="TG_DTINI"
								Case (Campo="YES" Or Campo="NO")     : Campo="TG_SELECIONA"
							EndSwitch
						Case OPSHOW="Imprimir":
							Switch
								Case Campo="TG_SELECIONA"            : Campo="NO"
								Case Campo="TG_DTREF"                : Campo="TG_SELECIONA"
								Case (Campo="YES" Or Campo="NO")     : Campo="TG_SELECIONA"
							EndSwitch
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
						 Then Switch
										Case OPSHOW="Selecao":
											Switch
												Case Campo="TG_SELECIONA"            :
														 VSDGSELECIONA=ControlValue("TG_SELECIONA")
														 If (VSDGSELECIONA=3) or (VSDGSELECIONA=4)
																Then Campo="TG_LANC"
																		 VSDGDTINI=BlankDate()
																		 VSDGDTFIM=BlankDate()
																Else Campo="TG_DTINI"
																		 VSDGLANC=0
														 EndIf
												Case Campo="TG_LANC"                 :
														 VSDGLANC=ControlValue("TG_LANC")
														 If Not IsBlank(VSDGLANC)
																Then If VSDGSELECIONA=3
																				Then Campo="YES"
																						 VSDGDTINI=BlankDate()
																						 VSDGDTFIM=BlankDate()
																				Else Campo="TG_DTINI"
																		 EndIf
														 EndIf
												Case Campo="TG_DTINI"                : Campo="TG_DTFIM"
												Case Campo="TG_DTFIM"                : Campo="YES"
											EndSwitch
										Case OPSHOW="Imprimir":
											Switch
												Case Campo="TG_SELECIONA"            : 
														 VSDGSELECIONA=ControlValue("TG_SELECIONA")
														 Campo="TG_DTREF"
												Case Campo="TG_DTREF"                : Campo="YES"
											EndSwitch
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_SELECIONA":
       MensagemRadioButtons()
  Case Campo="TG_LANC":
       MSG_CAMPO="Informe o N£mero do Lan‡amento"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina ShowDialog Sele‡Æo                                                   *
;*******************************************************************************
Proc Selecao()
LimpAguarde()

OPSHOW="Selecao"
VSDGDTINI=BlankDate()
VSDGDTFIM=BlankDate()
VSDGLANC=0
While True
  ShowDialog "Sele‡„o" Proc "Selecao_dialog"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC",-59
     @ 05,16   Height 15 Width 72

    Label @ 00,00 "Cheques por: " For "TG_SELECIONA"
    RadioButtons @ 01,00 Height 4 Width 33
       "Data de ~V~encimento   ",
       "Data de ~I~nclusÆo     ",
       "~N~umero do Lan‡amento ",
       "Numero de ~L~an‡amento/Dt.Vencto"
       Tag "TG_SELECIONA"
       To VSDGSELECIONA

    Label  @ 06,00 "Lan‡amento" For "TG_LANC"
    Accept @ 07,01 Width 9 "N"  Picture "#[#####]" Tag "TG_LANC" To VSDGLANC

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog
  If Not RetVal
     Then QuitLoop
     Else
          If ((VSDGDTFIM=BlankDate()) And (VSDGSELECIONA<>3))
             Then Mensagem("Data Final Invalida !")
                  Loop
          EndIf

          switch
            case VSDGSELECIONA=1 : Incluir_ChequesDtV()
            case VSDGSELECIONA=2 : Incluir_ChequesDtI()
            case VSDGSELECIONA=3 : Incluir_ChequesNL()
            case VSDGSELECIONA=4 : Incluir_ChequesNLDtV()
          endswitch

          QuitLoop
  EndIf
EndWhile
EndProc   ; (Selecao)

;*******************************************************************************
;* Rotina ShowDialog Sele‡Æo                                                   *
;*******************************************************************************
Proc Imprimir()
private tpdestino

tpdestino=[BordchC->Tipo de Destino]

LimpAguarde()

VSDGDTREF=Today()
OPSHOW="Imprimir"
VSDGSELECIONA=1
While True
	ShowDialog "Imprimir" Proc "Selecao_dialog"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC","F1"
     @ 07,16   Height 11 Width 72

		Label @ 00,00 "Cheques em ordem: " For "TG_SELECIONA"
    RadioButtons @ 01,00 Height 2 Width 33
			 "Data de ~V~encimento  ",
			 "~D~igitado            "
       Tag "TG_SELECIONA"
       To VSDGSELECIONA

    Label  @ 04,00 "Data Base" For "TG_DTREF"
    Accept @ 05,01 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal
		 Then Return
		 Else If IsBlank(VSDGDTREF)
						 Then Mensagem("Data Base Invalida !")
                  Loop
          EndIf

					DISPOSITIVO()
					If OK=""
						 Then Return
					EndIf

					AGUARDE("Aguarde, gerando o relat¢rio")

					{Ask} {BordChi} Check
					Moveto [Numero do Lote] Example "l" TypeIn ",~LOTE"
					{Ask} {BordChc} Check
					Moveto [Numero do Lote] Check Example "l"
					Do_It!
          ClearAll
					
          If IsEmpty("Answer")
						 Then MENSAGEM("N„o existem registros a processar")
									Return
					EndIf

          CALC_MEDIA("Answer")

          If TxMensal>0
						 Then {Modify} {Restructure} {Answer}
									End Down
									"Numero de Dias"    Enter "S" Enter
									"Valor do Desconto" Enter  "$"
									Do_It! ClearImage

									View "\\Sistemas\\Cadastro\\Feriados"
									CoEdit "Answer"
									Scan
                    While True
                      NDIAS=0
                      If Dow([Data Vencimento])="Sat"
                         Then NDIAS=2
                         Else If Dow([Data Vencimento])="Sun"
                                 Then NDIAS=1
                              EndIf
                      EndIf

                      DIA = [Data Vencimento]
                      Moveto "\\Sistemas\\Cadastro\\Feriados"
                      Moveto [Data do Feriado]
                      Locate DIA
                      If Retval
                         Then If [Dias a Receber]>0
                                 Then NDIAS=[Dias a Receber]
                              EndIf
                      EndIf

                      Moveto "Answer"
                      [Data Vencimento]=DIA+NDIAS
                      If NDIAS=0
                         Then QuitLoop
                      EndIf
                    EndWhile
                    [Numero de Dias   ]=[Data Vencimento]-[Data do Lote]
                    [Valor do Desconto]=Round(([Valor]*(([Taxa Mensal]/30)*[Numero de Dias]))/100,2)
                  EndScan
                  Do_It!
                  ClearAll

                  If VSDGSELECIONA=2
                     Then CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0021" "R" "Answer" "R"
                     Else CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0021" "1" "Answer" "R"
                  EndIf
						 Else
   
                  switch
                    case search("DEVOLVIDO",tpdestino)>0:
                    
                      {Ask} {ChequeC}
                      moveto [numero do lancamento] typein "_nl"
                      moveto [Codigo              ] check typein "as CodigoResponsavel"
                      moveto [Razao Social        ] check typein "as NomeResponsavel"
                      {Ask} {Answer} check
                      moveto [numero do lancamento] typein "_nl!"
            					Do_It!
                      ClearAll
                    
                      Switch 
            					     Case VSDGSELECIONA=2 :
            					          CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0022" "6" "Answer" "R"
                           OtherWise            :
                                CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0022" "7" "Answer" "R" 
            					EndSwitch
                   
                    otherwise:
                      Switch 
            					     Case VSDGSELECIONA=2 :
            					          CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0020" "R" "Answer" "R"
                           OtherWise            :
                                CopyReport "\\Base\\Sistemas\\CheqRec\\Rm_0020" "1" "Answer" "R" 
            					EndSwitch
                    
                  endswitch 
					EndIf

					IMPRIREL("Answer","R")

					Delete "Answer"
					QuitLoop
  EndIf
EndWhile
EndProc   ; (Selecao)

;*******************************************************************************
;* Estorno Movimento                                                           *
;*******************************************************************************
Proc Estorno_CxBco(Tipo)
Private Tipo, wi, ContaRef, LanctoRef, EstornOk

EstornOk=False
If [BordChC->Tipo de Destino]="DEPOSITADO"       Or
   [BordChC->Tipo de Destino]="TRANSFERIDO"      Or
   [BordChC->Tipo de Destino]="DESCONTADO_BANCO" Or
   SubStr([BordChC->Tipo de Destino],1,9)="DEVOLVIDO"
   Then EstornOk=True
EndIf
If Not EstornOk
   Then Return EstornOk
EndIf

Switch
  Case [BordchC->Tipo de Destino]="DEPOSITADO"   Or
       [BordChC->Tipo de Destino]="TRANSFERIDO"  Or
       [BordChC->Tipo de Destino]="DESCONTADO_BANCO":
       If IsBlank(REG_BORD["Lancamento Conta Corrente"])
          Then Return True
       EndIf
EndSwitch

EstornOk=True
Switch
  Case ([BordchC->Tipo de Destino]="DEPOSITADO"  Or
        [BordChC->Tipo de Destino]="TRANSFERIDO" Or
        [BordChC->Tipo de Destino]="DESCONTADO_BANCO") And
       PARAM_UTILIZA_GERACXBC="S":

       ContaRef =REG_BORD["Codigo da Conta"          ]
       ContaTRef=REG_BORD["Codigo da Conta Trf"      ]
       LanctoRef=REG_BORD["Lancamento Conta Corrente"]
       SeqRef   =""

       Exclui_CxBco(LanctoRef, ContaRef, SeqRef)
       Exclui_CxBco(LanctoRef, ContaTRef, SeqRef)
       
       ;Verifica se lan‡amento no caixa/banco foi realmente excluido -> Em 17/07/2019 Sol. 45277
       GetRecord "\\Sistemas\\CtaCor\\MovCont" LanctoRef To REG_MOVCONT
       If RetVal
          Then Mensagem("NÆo foi poss¡vel fazer o estorno do caixa/banco "+LanctoRef+" referente ao border“ "+[BordchC->Numero do Lote]+"!")
               Return False
       EndIf
  Case (SubStr([BordChC->Tipo de Destino],1,13)="DEVOLVIDO_BCO" Or
        SubStr([BordChC->Tipo de Destino],1,13)="DEVOLVIDO_OUT")  And
       PARAM_UTILIZA_GERAREC="S":

       ContaRef =REG_BORD["Codigo da Conta"          ]
       ContaTRef=REG_BORD["Codigo da Conta Trf"      ]

       Moveto "BordchI"
       Scan 
          if not isblank([Numero do Lancamento]) and
             not isblank([Sequencia do Cheque ]) 
             then 
                  CopyToArray REG_BORDI
                  Estorno_CxBco_Cheque(Tipo)
                  Moveto "BordchI"
         endif
       EndScan
       Moveto "BordchC"
EndSwitch

Return True
EndProc

;*******************************************************************************
;* Estorno Cheque/CxBco/Ctarec                                                 *
;*******************************************************************************
Proc Estorno_CxBco_Cheque(Tipo)
Private Tipo

ContaRef =REG_BORD["Codigo da Conta"          ]
ContaTRef=REG_BORD["Codigo da Conta Trf"      ]

If Not IsBlank(REG_BORDI["Lancamento Conta Corrente"])
   Then LanctoRef=REG_BORDI["Lancamento Conta Corrente"]
        SeqRef   =StrVal(REG_BORDI["Sequencia do Lote"])

        Exclui_CxBco(LanctoRef, ContaRef, SeqRef)
        
        if not isblank(ContaTRef)
           then 
                If [BordchC->Tipo de Destino]<>"DEVOLVIDO_OUT_TRANSF" And
                   [BordchC->Tipo de Destino]<>"DEVOLVIDO_BCO_TRANSF" 
                   then Exclui_CxBco(LanctoRef, ContaTRef, SeqRef)
                endif
        endif   
EndIf
If Tipo="Contas"
   Then Return
EndIf   

If [BordchC->Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" And
   Not IsBlank(REG_BORDI["Lancamento Conta aReceber"])
   Then LanctoRef=REG_BORDI["Lancamento Conta aReceber"]
        SeqRef   =StrVal(REG_BORDI["Sequencia do Lote"])
        Exclui_Ctarec(LanctoRef, ContaTRef, SeqRef)
EndIf

If [BordchC->Tipo de Destino]="DEVOLVIDO_OUT_TRANSF" And
   Not IsBlank(REG_BORDI["Lancamento Conta aReceber"])

   Then LanctoRef=REG_BORDI["Lancamento Conta aReceber"]
        SeqRef   =StrVal(REG_BORDI["Sequencia do Lote"])
        Exclui_Ctarec(LanctoRef, ContaRef, SeqRef)
EndIf
If [BordchC->Tipo de Destino]="DEVOLVIDO_OUT_TRANSF" And
   Not IsBlank(REG_BORDI["Lancamento Conta aPagar"])

   Then LanctoRef=REG_BORDI["Lancamento Conta aPagar"]
        SeqRef   =REG_BORDI["Sequencia do Lote"]
        Exclui_Ctapag(LanctoRef, ContaRef, SeqRef)
EndIf


Endproc

;*******************************************************************************
;* Exclui e Estorna Conta Corrente                                             *
;*******************************************************************************
Proc Exclui_CxBco(LanctoRef,ContaRef,SeqRef)
Private LanctoRef, ContaRef, SeqRef

If PARAM_UTILIZA_GERACXBC<>"S"
   Then Return
EndIf

Moveto "\\Sistemas\\CtaCor\\MovCont"
Moveto [Numero do Lancamento]
Locate LanctoRef, ContaRef
If Not RetVal
   Then MSG=    "Lan‡amento "+LanctoRef+"/"+ContaRef+" no Caixa/Banco n„o encontrado p/ este Bordero !//"
        MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
        MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o sera efefuado !//"
        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
        Mensagem(MSG)
   Else If [Sistema Gerador       ]<>"BO"                               Or
           [Empresa Gerador       ]<>REG_BORD["Codigo da Empresa"]      Or
           [Lancamento Gerador    ]<>StrVal(REG_BORD["Numero do Lote"]) Or
         ;;[Sequencia Gerador     ]<>SeqRef                             Or  ; nÆo usa mais sequencia
           [Codigo do Documento   ]<>"BORD"                             Or
           [Numero do Documento   ]<>StrVal(REG_BORD["Numero do Lote"])
           Then MSG=    "Lan‡amento no Caixa/Banco "+LanctoRef+" n„o corresponde a este Bordero !//"
                MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
                MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o ser  efefuado !//"
                MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                Mensagem(MSG)
           Else While IsLockRecord() EndWhile 
                EstornOk=Atualiza_Saldo([Codigo da Conta],[Tipo Movimento],[Data],([Valor]*-1))
                Moveto "\\Sistemas\\CtaCor\\MovCont"
                If EstornOk
                   Then Del
                   Else UnLockRecord
                EndIf
        EndIf
EndIf

EndProc

;*******************************************************************************
;* Atualizacao Conta Corrente                                                  *
;*******************************************************************************
Proc CONTA()
Private wi,LanctoOk
                             
LanctoOk=Estorno_CxBco("Contas")
If Not LanctoOk
   Then Return LanctoOk
EndIf

Switch
  Case ([BordchC->Tipo de Destino]="DEPOSITADO"   Or
        [BordChC->Tipo de Destino]="TRANSFERIDO"  Or
        [BordChC->Tipo de Destino]="DESCONTADO_BANCO") And
       PARAM_UTILIZA_GERACXBC="S":

       ContaRef =[BordchC->Codigo da Conta    ]
       ContaTRef=[BordchC->Codigo da Conta Trf]
       SeqRef   =""
       ClieRef  =[BordchC->Codigo]

       Cria_CxBco(ContaRef,SeqRef,"Novo",ClieRef)
       [Tipo de Operacao      ]="08"
       [Tipo do Lancamento    ]="F"

       [Data                  ]=[BordChC->Data do Lote]
       [Valor                 ]=[BordChC->Total Lote  ]
       [Codigo da Conta Trf   ]=ContaTRef
       If [BordchC->Tipo de Destino]="DEPOSITADO"
          Then [Descricao do Historico]="DEPOSITO CH, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf
       If [BordchC->Tipo de Destino]="DESCONTADO_BANCO"
          Then [Descricao do Historico]="CH DESCONTADO, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf
       If [BordchC->Tipo de Destino]="TRANSFERIDO"
          Then [Descricao do Historico]="CH TRANSFERIDO, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf
       
       LanctoOk=Atualiza_Saldo(ContaRef,"S",[Data],[Valor])
       If LanctoOk
          Then Moveto "\\Sistemas\\CtaCor\\MovCont"
               UnLockRecord

               Moveto "BordChC"
               [Lancamento Conta Corrente]=NLANCMC
               UnLockRecord
       Endif

       Cria_CxBco(ContaTRef,SeqRef,"",ClieRef)
       [Tipo de Operacao      ]="09"
       [Tipo do Lancamento    ]="F"
       [Data                  ]=[BordChC->Data do Lote]
       [Valor                 ]=[BordChC->Total Lote  ]
       [Codigo da Conta Trf   ]=ContaRef
       If [BordchC->Tipo de Destino]="DEPOSITADO"
          Then [Descricao do Historico]="DEPOSITO CH, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf
       If [BordchC->Tipo de Destino]="DESCONTADO_BANCO"
          Then [Descricao do Historico]="CH DESCONTADO, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf
       If [BordchC->Tipo de Destino]="TRANSFERIDO"
          Then [Descricao do Historico]="CH TRANSFERIDO, BORDERO "+StrVal([BordchC->Numero do Lote])
       EndIf

       LanctoOk=Atualiza_Saldo(ContaTRef,"E",[Data],[Valor])
       If LanctoOk
          Then Moveto "\\Sistemas\\CtaCor\\MovCont"
               UnLockRecord

               Moveto "BordChC"
               [Lancamento Conta Corrente]=NLANCMC
               UnLockRecord
       Endif
       SaveTables

  Case ([BordchC->Tipo de Destino]="DEVOLVIDO_BCO_ABERTO" Or
        [BordChC->Tipo de Destino]="DEVOLVIDO_BCO_SFUNDO") And PARAM_UTILIZA_GERACXBC="S":

       Moveto "BordchI"
       If RecordStatus("New")=False
          Then Scan 
                 if not isblank([Numero do Lancamento]) and not isblank([Sequencia do Cheque ]) 
                    then 
                         CopytoArray REG_BORDI
                
                         ContaRef =[BordchC->Codigo da Conta    ]
                         ContaTRef=[BordchC->Codigo da Conta Trf]
                         SeqRef   =StrVal([Sequencia do Lote])   ; nÆo usa mais SeqRef do cheque, sequencia na movcont truncando apenas A1 
                         ClieRef  =[BordchI->Codigo_Cliente     ]
                         ReprRef  =""
                
                         If PARAM_UTILIZA_GERACXBC="S"
                            Then
                                 Cria_CxBco(ContaRef,"","Novo",ClieRef) ; nÆo usa mais SeqRef
                        
                                 [Tipo de Operacao      ]="08"
                                 [Tipo do Lancamento    ]="O"
                                 [Data                  ]=[BordChC->Data do Lote]
                                 [Valor                 ]=[BordChI->Valor       ]
                                 [Codigo da Conta Trf   ]=ContaTRef
                                 [Descricao do Historico]="CH DEVOLVIDO "+[BordchI->Codigo_Banco]+"/"+[BordchI->Numero_Cheque]
                                                          +", BORDERO "+StrVal([BordchC->Numero do Lote])
                                 [Codigo Plano_Conta    ]=PARAM_PLANO_CONTA_APAGAR                         
                                                          
                                 LanctoOk=Atualiza_Saldo(ContaRef,"S",[Data],[Valor])
                                 If LanctoOk
                                    Then Moveto "\\Sistemas\\CtaCor\\MovCont"
                                         UnLockRecord
                        
                                         Moveto "BordChI"
                                         [Lancamento Conta Corrente]=NLANCMC
                                         UnLockRecord
                                 Endif
                        
                                 Cria_CxBco(ContaTRef,"","",ClieRef) ; nÆo usa mais SeqRef
                                 [Tipo de Operacao      ]="09"
                                 [Tipo do Lancamento    ]="O"
                                 [Data                  ]=[BordChC->Data do Lote]
                                 [Valor                 ]=[BordChI->Valor       ]
                                 [Codigo da Conta Trf   ]=ContaRef
                                 [Descricao do Historico]="CH DEVOLVIDO "+[BordchI->Codigo_Banco]+"/"+[BordchI->Numero_Cheque]
                                                          +", BORDERO "+StrVal([BordchC->Numero do Lote])
                                 [Codigo Plano_Conta    ]=PARAM_PLANO_CONTA_ARECEBER                         
                                                          
                                 LanctoOk=Atualiza_Saldo(ContaTRef,"E",[Data],[Valor])
                                 If LanctoOk
                                    Then Moveto "\\Sistemas\\CtaCor\\MovCont"
                                         UnLockRecord
                        
                                         Moveto "BordChI"
                                         [Lancamento Conta Corrente]=NLANCMC
                                         UnLockRecord
                                 Endif
                         Endif
                 endif
                 Moveto "BordChI"
                 SaveTables
               EndScan
       EndIf
      
  Case [BordchC->Tipo de Destino]="DEVOLVIDO_BCO_TRANSF" And
       PARAM_UTILIZA_GERAREC="S":   
               
       Moveto "BordchI"   
       If RecordStatus("New")=False
          Then Scan
                 if not isblank([Numero do Lancamento]) and
                    not isblank([Sequencia do Cheque ]) 
                    then 
                         CopytoArray REG_BORDI
                
                         ContaRef =[BordchC->Codigo da Conta    ]
                         ContaTRef=[BordchC->Codigo da Conta Trf]
                         SeqRef   =StrVal([Sequencia do Lote])   ; nÆo usa mais SeqRef do cheque, sequencia na movcont truncando apenas A1
                         ClieRef  =[BordchI->Codigo_Cliente     ]
                         ReprRef  =""
                
                         If PARAM_UTILIZA_GERACXBC="S"
                            Then
                                 Cria_CxBco(ContaRef,"","Novo",ClieRef) ; nÆo usa mais SeqRef
                                  
                                 [Tipo de Operacao      ]="14"
                                 [Tipo do Lancamento    ]="O"
                                 [Data                  ]=[BordChC->Data do Lote]
                                 [Valor                 ]=[BordChI->Valor       ]
                                 [Descricao do Historico]="CH DEVOLVIDO "+[BordchI->Codigo_Banco]+"/"+[BordchI->Numero_Cheque]
                                                          +", BORDERO "+StrVal([BordchC->Numero do Lote])
                                 [Codigo Plano_Conta    ]=PARAM_PLANO_CONTA_APAGAR                         
                
                                 LanctoOk=Atualiza_Saldo(ContaRef,"S",[Data],[Valor])
                                 If LanctoOk
                                    Then Moveto "\\Sistemas\\CtaCor\\MovCont"
                                         UnLockRecord
                            
                                         Moveto "BordChI"
                                         [Lancamento Conta Corrente]=NLANCMC
                                         UnLockRecord
                                 Endif
                         Endif          
                 Endif
                 Moveto "BordchI"
                   
                 If Not IsBlank([BordchI->Lancamento Conta aReceber])
                    Then LanctoRef=[BordchI->Lancamento Conta aReceber]
                    Else LanctoRef=""
                 EndIf   
                                
                 Moveto "ChequeC"
                 Moveto [Numero do Lancamento]
                 Locate [BordchI->Numero do Lancamento]
                 If RetVal
                    Then ClieRef=[Codigo                 ]
                         ReprRef=[Codigo do Representante]
                 EndIf
                 Moveto "BordChI"
          
                 Cria_Ctarec(ContaTRef,SeqRef,ClieRef,ReprRef)
          
                 Moveto "BordChI"
                 [Lancamento Conta aReceber]=NLANCTR
                 UnLockRecord 
                 
                 SaveTables
               EndScan    
       EndIf
  Case [BordchC->Tipo de Destino]="DEVOLVIDO_OUT_TRANSF":
       if PARAM_UTILIZA_GERAREC="S" And RecordStatus("New")=False
          then
               Moveto "BordchI"
               Scan
                 if not isblank([Numero do Lancamento]) and
                    not isblank([Sequencia do Cheque ]) 
                    then 
                         CopytoArray REG_BORDI
                
                         ContaRef =[BordchC->Codigo da Conta    ]
                         SeqRef   =StrVal([Sequencia do Lote])
                         ClieRef  =[BordchI->Codigo_Cliente     ]
                         ReprRef  =""
                
                         If Not IsBlank([BordchI->Lancamento Conta aReceber])
                            Then LanctoRef=[BordchI->Lancamento Conta aReceber]
                            Else LanctoRef=""
                         EndIf   
                
                         Moveto "ChequeC"
                         Moveto [Numero do Lancamento]
                         Locate [BordchI->Numero do Lancamento]
                         If RetVal
                            Then ClieRef=[Codigo                 ]
                                 ReprRef=[Codigo do Representante]
                         EndIf
                         Moveto "BordChI"
                
                         Cria_Ctarec(ContaRef,SeqRef,ClieRef,ReprRef)
                
                         Moveto "BordChI"
                         [Lancamento Conta aReceber]=NLANCTR
                         UnLockRecord
                         
                         SaveTables
                 endif
               EndScan
       endif
       
       if PARAM_UTILIZA_GERAPAG="S" And RecordStatus("New")=False
          then
               Moveto "BordchI"
               Scan
                 if not isblank([Numero do Lancamento]) and
                    not isblank([Sequencia do Cheque ]) 
                    then 
                         CopytoArray REG_BORDI
                
                         ContaRef =[BordchC->Codigo da Conta    ]
                         SeqRef   =[Sequencia do Lote           ] 
                         ClieRef  =[BordchC->Codigo             ]
                         ReprRef  =""
                
                         If Not IsBlank([BordchI->Lancamento Conta aPagar])
                            Then LanctoRef=[BordchI->Lancamento Conta aPagar]
                            Else LanctoRef=""
                         EndIf   
                
                         Cria_Ctapag(ContaRef,SeqRef,ClieRef,ReprRef)
                
                         Moveto "BordChI"
                         [Lancamento Conta aPagar  ]=NLANCTR
                         UnLockRecord
                         
                         SaveTables
                 endif
               EndScan    
       endif    
       
EndSwitch

Moveto "BordChC"
Return LanctoOk
EndProc  ; (Conta)

;*******************************************************************************
;* Atualizacao Saldo Conta Corrente                                            *
;*******************************************************************************
Proc Cria_CxBco(ContaRef,SeqRef,Opcao,ClieRef)
Private ContaRef, SeqRef, Opcao, ClieRef

Moveto "\\Sistemas\\CtaCor\\MovCont"

switch
  case Opcao="Novo":
    While True
      End
      Moveto [Numero do Lancamento]
      If Numero_Lancamento("Interno","Locked_Down")
         Then NLANCMC = PROXLANCTO_NLANC
              Release Vars PROXLANCTO_NLANC
              quitloop
      EndIf    
    EndWhile
    
  otherwise:
    While True
      Moveto [Numero do Lancamento]
      End
      Down  
      [Numero do Lancamento]=NLANCMC
      If Not IsLockRecord()
         Then Moveto [Numero do Lancamento]
              Locate NLANCMC,""
              If Not RetVal
                 Then Loop
              EndIf
              While IsLockRecord() EndWhile
              QuitLoop
         Else Del
      EndIf
    EndWhile
  
endswitch
        
[Codigo da Conta       ]=ContaRef
[Codigo do Documento   ]="BORD"
[Numero do Documento   ]=StrVal([BordchC->Numero do Lote  ])
[Sistema Gerador       ]="BO"
[Empresa Gerador       ]=[BordchC->Codigo da Empresa      ]
[Lancamento Gerador    ]=StrVal([BordchC->Numero do Lote  ])
[Sequencia Gerador     ]=SeqRef
[Codigo do EmitDest    ]=ClieRef

If SYS_CODIGO_CLIENTE="0294"
   Then [Codigo CCusto]="001.001"
EndIf

Controle_Dia()

Endproc

;*******************************************************************************
;* Atualizacao Saldo Conta Corrente                                            *
;*******************************************************************************
Proc Atualiza_Saldo(ContaRef,TpMov,DataRef,ValorRef)
Private ContaRef, DataRef, ValorRef
Moveto "\\Sistemas\\CtaCor\\SaldCont"
While True
  Moveto [Codigo da Conta]
  Locate ContaRef,StrVal(Year(Dataref)),AlinhM(StrVal(Month(Dataref)),2)
  If Not RetVal
     Then
          End Down
          [Codigo da Conta]=CONTAREF
          [Ano Referencia ]=StrVal(Year(Dataref))
          [Mes Referencia ]=AlinhM(StrVal(Month(Dataref)),2)
          If IsLockRecord()
             Then Del
                  Loop
             Else [Saldo Inicial  ]=0
                  [Entradas       ]=0
                  [Saidas         ]=0
                  QuitLoop
          EndIf
  EndIf
  While IsLockRecord() EndWhile
  QuitLoop
EndWhile
Switch
  Case TpMov="E" : [Entradas]=[Entradas]+ValorRef
  Case TpMov="S" : [Saidas  ]=[Saidas  ]+ValorRef
EndSwitch
UnLockRecord

Return True
EndProc

;*******************************************************************************
;* Exclui Contas a Receber                                                     *
;*******************************************************************************
Proc Exclui_Ctarec(LanctoRef,ContaRef,SeqRef)
Private LanctoRef, ContaRef, SeqRef

Moveto "\\Sistemas\\Ctarec\\Duplic"
Moveto [Numero do Lancamento]
Locate LanctoRef
If Not RetVal
   Then MSG=    "Lan‡amento no Conta a Receber "+LanctoRef+" n„o encontrado p/ este Cheque://"
        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
        MSG=MSG+"Verificar no Contas a Receber se o mes n„o foi fechado !//"
        MSG=MSG+"Neste caso o estorno no Contas a Receber n„o sera efefuado !//"
        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
        Mensagem(MSG)
   Else If [Sistema Gerador       ]<>"BO"                               Or
           [Codigo da Empresa     ]<>REG_BORD["Codigo da Empresa"]      Or
           [Tipo Docto Gerador    ]<>"CH"                               Or
           [Numero Docto Gerador  ]<>StrVal(REG_BORD["Numero do Lote"]) Or
           [Documento Referente   ]<>REG_BORDI["Codigo_Banco"]+"/"+REG_BORDI["Numero_Cheque"]
           Then MSG=    "Lan‡amento no Contas a Receber "+LanctoRef+" n„o corresponde a este Cheque !//"
                MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                MSG=MSG+"Verificar no Contas a Receber se o mes n„o foi fechado !//"
                MSG=MSG+"Neste caso o estorno no Contas a Receber n„o ser  efefuado !//"
                MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                Mensagem(MSG)
           Else If [Saldo do Documento    ]<>[Valor do Documento]
                   Then MSG=    "Lan‡amento no Contas a Receber "+LanctoRef+" referente a este Cheque //"
                        MSG=MSG+"j  foi baixado verificar ! //"
                        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                        MSG=MSG+"Verificar no Contas a Receber se o mes n„o foi fechado !//"
                        MSG=MSG+"Neste caso o estorno no Contas a Receber n„o ser  efefuado !//"
                        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                        Mensagem(MSG)
                   Else While IsLockRecord() EndWhile
                        Del
                EndIf        
        EndIf
EndIf
EndProc

;*******************************************************************************
;* Atualizacao Contas a Receber                                                *
;*******************************************************************************
Proc Cria_Ctarec(ContaRef,SeqRef,ClieRef,ReprRef)
Private ContaRef, SeqRef, Opcao, ClieRef, LanctoExiste

LanctoExiste=False
If Not IsBlank(LanctoRef)
   Then Moveto "\\Sistemas\\Ctarec\\Duplic"
        Moveto [Numero do Lancamento]
        Locate LanctoRef
        If RetVal
           Then LanctoExiste=True
                NLANCTR     =LanctoRef
                
                If [Sistema Gerador       ]<>"BO"                               Or
                   [Codigo da Empresa     ]<>REG_BORD["Codigo da Empresa"]      Or
                   [Tipo Docto Gerador    ]<>"CH"                               Or
                   [Numero do Documento   ]<>REG_BORDI["Numero_Cheque"]         Or
                   [Numero Docto Gerador  ]<>StrVal(REG_BORD["Numero do Lote"]) Or
                   [Documento Referente   ]<>REG_BORDI["Codigo_Banco"]+"/"+REG_BORDI["Numero_Cheque"]
                   Then MSG=    "Lan‡amento no Contas a Receber "+LanctoRef+" n„o corresponde a este Cheque !//"
                        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                        MSG=MSG+"Verificar no Contas a Receber se o mes n„o foi fechado !//"
                        MSG=MSG+"Neste caso o estorno no Contas a Receber n„o ser  efefuado !//"
                        MSG=MSG+"Ser  criado um novo lan‡amento no Contas a Receber !//"
                        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                        Mensagem(MSG)
                        LanctoExiste=False
                EndIf
           Else MSG=    "Lan‡amento no Conta a Receber "+LanctoRef+" n„o encontrado p/ este Cheque://"
                MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                MSG=MSG+"Verificar no Contas a Receber se o mˆs nÆo foi fechado !//"
                MSG=MSG+"Neste caso o estorno no Contas a Receber n„o ser  efefuado !//"
                MSG=MSG+"Ser  criado um novo lan‡amento no Contas a Receber !//"
                MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                Mensagem(MSG)
        EndIf
EndIf

If Not LanctoExiste
   Then Moveto "\\Sistemas\\Ctarec\\Duplic"
        
        While True
          End
          Moveto [Numero do Lancamento]
          If Numero_Lancamento("Interno","Locked_Down")
             Then NLANCTR = PROXLANCTO_NLANC
                  Release Vars PROXLANCTO_NLANC
                  quitloop
          EndIf    
        EndWhile
        
       ;While True
       ;  Moveto [Numero do Lancamento]
       ;  End
       ;  If Numero_Lancamento("Interno","")
       ;     Then NLANCTR = PROXLANCTO_NLANC
       ;          Release Vars PROXLANCTO_NLANC
       ;  EndIf
       ;  Down  
       ;  [Numero do Lancamento]=NLANCTR
       ;  If Not IsLockRecord()
       ;     Then Moveto [Numero do Lancamento]
       ;          Locate NLANCTR
       ;          If Not RetVal
       ;             Then Loop
       ;          EndIf
       ;          While IsLockRecord() EndWhile
       ;          QuitLoop
       ;     Else Del
       ;  EndIf
       ;EndWhile
        
   Else 
        While IsLockRecord() EndWhile
EndIf

[Codigo da Conta        ]=ContaRef
[Codigo da Empresa      ]=[BordchC->Codigo da Empresa]
[Codigo do Documento    ]="CH"
[Numero do Documento    ]=[BordchI->Numero_Cheque  ]
[Codigo do Destinatario ]=ClieRef
[Codigo do Representante]=ReprRef
[Data de Emissao        ]=[BordchI->Data Vencimento]
[Data de Vencimento     ]=[BordchI->Data Vencimento]
[Data a Receber         ]=[BordchI->Data Vencimento]
[Data de Entrada        ]=[BordchC->Data do Lote   ]
[Valor do Documento     ]=[BordchI->Valor          ]

If Not LanctoExiste
   Then [Saldo do Documento     ]=[BordchI->Valor          ]
EndIf   

[Tipo do Lancamento     ]="Z"
[Tipo do Pagamento      ]="CH"
[Codigo Plano_Conta     ]=PARAM_PLANO_CONTA_ARECEBER
[Observacoes            ]="Titular: "+[BordchI->Titular_Cheque]+", "+
                          "Banco: "  +[BordchI->Codigo_Banco  ]+", "+
                          "Agencia: "+[BordchI->Agencia       ]+", "+
                          "CH No: "  +[BordchI->Numero_Cheque ]+", * "+
                          [BordchI->Observacao do Cheque]
[Sistema Gerador        ]="BO"
[Tipo Docto Gerador     ]="CH"
[Numero Docto Gerador   ]=StrVal(REG_BORD["Numero do Lote"])
[Sequencia Gerador      ]=SeqRef
[Documento Referente    ]=[BordchI->Codigo_Banco  ]+"/"+[BordchI->Numero_Cheque ]
[Taxa de Juros          ] = PARAM_TXJUROS
[Tipo Taxa de Juros     ] = PARAM_FORMA_TXJUROS
If PARAM_FORMA_TXJUROS="A" Then [NDias Taxa de Juros]=365 Endif
If PARAM_FORMA_TXJUROS="M" Then [NDias Taxa de Juros]=30  Endif
If PARAM_FORMA_TXJUROS="D" Then [NDias Taxa de Juros]=1   Endif

If SYS_CODIGO_CLIENTE="0294"
   Then [Codigo CCusto]="001.001"
EndIf

Controle_Dia()
UnLockRecord
SaveTables

Endproc

;*******************************************************************************
;* Exclui Contas a Pagar                                                       *
;*******************************************************************************
Proc Exclui_Ctapag(LanctoRef,ContaRef,SeqRef)
Private LanctoRef, ContaRef, SeqRef

Moveto "\\Sistemas\\Ctapag\\Titulos"
Moveto [Numero do Lancamento]
Locate LanctoRef
If Not RetVal
   Then MSG=    "Lan‡amento no Conta a Pagar "+LanctoRef+" n„o encontrado p/ este Cheque://"
        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
        MSG=MSG+"Verificar no Contas a Pagar se o mes n„o foi fechado !//"
        MSG=MSG+"Neste caso o estorno no Contas a Pagar n„o sera efefuado !//"
        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
        Mensagem(MSG)
   Else If [Sistema Gerador       ]<>"BO"                               Or
           [Codigo da Empresa     ]<>REG_BORD["Codigo da Empresa"]      Or
           [Codigo do Documento   ]<>"CH"                               Or
           [Lancamento Gerador    ]<>StrVal(REG_BORD["Numero do Lote"]) Or
           [Documento Referente   ]<>REG_BORDI["Codigo_Banco"]+"/"+REG_BORDI["Numero_Cheque"]
           Then MSG=    "Lan‡amento no Contas a Pagar "+LanctoRef+" n„o corresponde a este Cheque !//"
                MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                MSG=MSG+"Verificar no Contas a Pagar se o mes n„o foi fechado !//"
                MSG=MSG+"Neste caso o estorno no Contas a Pagar n„o ser  efefuado !//"
                MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                Mensagem(MSG)
           Else If [Saldo do Documento    ]<>[Valor do Documento]
                   Then MSG=    "Lan‡amento no Contas a Pagar "+LanctoRef+" referente a este Cheque //"
                        MSG=MSG+"j  foi baixado verificar ! //"
                        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                        MSG=MSG+"Verificar no Contas a Pagar se o mes n„o foi fechado !//"
                        MSG=MSG+"Neste caso o estorno no Contas a Pagar n„o ser  efefuado !//"
                        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                        Mensagem(MSG)
                   Else While IsLockRecord() EndWhile
                        Del
                EndIf        
        EndIf
EndIf
EndProc

;*******************************************************************************
;* Atualizacao Contas a Pagar                                                  *
;*******************************************************************************
Proc Cria_Ctapag(ContaRef,SeqRef,ClieRef,ReprRef)
Private ContaRef, SeqRef, Opcao, ClieRef, LanctoExiste

LanctoExiste=False
If Not IsBlank(LanctoRef)
   Then Moveto "\\Sistemas\\Ctapag\\Titulos"
        Moveto [Numero do Lancamento]
        Locate LanctoRef
        If RetVal
           Then LanctoExiste=True
                NLANCTR     =LanctoRef
                
                If [Sistema Gerador       ]<>"BO"                               Or
                   [Codigo da Empresa     ]<>REG_BORD["Codigo da Empresa"]      Or
                   [Codigo do Documento   ]<>"CH"                               Or
                   [Numero do Documento   ]<>REG_BORDI["Numero_Cheque"]         Or
                   [Lancamento Gerador    ]<>StrVal(REG_BORD["Numero do Lote"]) Or
                   [Documento Referente   ]<>REG_BORDI["Codigo_Banco"]+"/"+REG_BORDI["Numero_Cheque"]
                   Then MSG=    "Lan‡amento no Contas a Pagar "+LanctoRef+" n„o corresponde a este Cheque !//"
                        MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                        MSG=MSG+"Verificar no Contas a Pagar se o mes n„o foi fechado !//"
                        MSG=MSG+"Neste caso o estorno no Contas a Pagar n„o ser  efefuado !//"
                        MSG=MSG+"Ser  criado um novo lan‡amento no Contas a Pagar !//"
                        MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                        Mensagem(MSG)
                        LanctoExiste=False
                EndIf
           Else MSG=    "Lan‡amento no Conta a Pagar "+LanctoRef+" n„o encontrado p/ este Cheque://"
                MSG=MSG+REG_BORDI["Codigo_Banco"]+" / "+REG_BORDI["Numero_Cheque"]+"//"
                MSG=MSG+"Verificar no Contas a Pagar se o mˆs nÆo foi fechado !//"
                MSG=MSG+"Neste caso o estorno no Contas a Pagar n„o ser  efefuado !//"
                MSG=MSG+"Ser  criado um novo lan‡amento no Contas a Pagar !//"
                MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                Mensagem(MSG)
        EndIf
EndIf

If Not LanctoExiste
   Then Moveto "\\Sistemas\\Ctapag\\Titulos"

        While True
          End
          Moveto [Numero do Lancamento]
          If Numero_Lancamento("Interno","Locked_Down")
             Then NLANCTR = PROXLANCTO_NLANC
                  Release Vars PROXLANCTO_NLANC
                  quitloop
          EndIf    
        EndWhile

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

[Codigo da Conta        ]=ContaRef
[Codigo da Empresa      ]=[BordchC->Codigo da Empresa]
[Codigo do Documento    ]="CH"
[Numero do Documento    ]=[BordchI->Numero_Cheque  ]
[Codigo do Emitente     ]=[BordchC->Codigo         ]
[Data de Emissao        ]=[BordchI->Data Vencimento]
[Data de Vencimento     ]=[BordchI->Data Vencimento]
[Data a Pagar           ]=[BordchI->Data Vencimento]
[Data Competencia       ]=[BordchC->Data do Lote   ]
[Valor do Documento     ]=[BordchI->Valor          ]

If Not LanctoExiste
   Then [Saldo do Documento     ]=[BordchI->Valor          ]
EndIf   

[Tipo do Lancamento     ]="O"
[Tipo do Pagamento      ]="CO"
[Codigo Plano_Conta     ]=PARAM_PLANO_CONTA_APAGAR   
[Observacoes            ]="Banco: "  +[BordchI->Codigo_Banco  ]+", "+
                          "Agencia: "+[BordchI->Agencia       ]+", "+
                          "CH No: "  +[BordchI->Numero_Cheque ]+", "+
                          "Titular: "+[BordchI->Titular_Cheque]+", * "+
                          [BordchI->Observacao do Cheque]
[Sistema Gerador        ]="BO"
[Lancamento Gerador     ]=StrVal(REG_BORD["Numero do Lote"])
[Sequencia Gerador      ]=SeqRef
[Documento Referente    ]=[BordchI->Codigo_Banco  ]+"/"+[BordchI->Numero_Cheque ]
[Taxa de Juros          ] = PARAM_TXJUROS
[Tipo Taxa de Juros     ] = PARAM_FORMA_TXJUROS
If PARAM_FORMA_TXJUROS="A" Then [NDias Taxa de Juros]=365 Endif
If PARAM_FORMA_TXJUROS="M" Then [NDias Taxa de Juros]=30  Endif
If PARAM_FORMA_TXJUROS="D" Then [NDias Taxa de Juros]=1   Endif

If SYS_CODIGO_CLIENTE="0294"
   Then [Codigo CCusto]="001.001"
EndIf

Controle_Dia()
UnLockRecord
SaveTables

Endproc

;*******************************************************************************
;* Checagem de dados da pagina                                                 *
;*******************************************************************************
Proc PegaNomeSistemaGerador()
private s

s=""
Switch
   Case [Sistema Gerador]="DI" : s="Digita‡Æo de Notas de Sa¡da"
   Case [Sistema Gerador]="BA" : s="EmissÆo Romaneio p/ BalcÆo"
   Case [Sistema Gerador]="FT" : s="EmissÆo Nota Fiscal/Romaneio"
   Case [Sistema Gerador]="TR" : s="EmissÆo Romaneio p/ Troca"
   Case [Sistema Gerador]="GD" : s="Gera‡Æo de Duplicatas"
   Case [Sistema Gerador]="BO" : s="Bordero de Cheques/Terceiros"
   Case [Sistema Gerador]="CR" : s="Lan‡amento no Contas a Receber"
   Case [Sistema Gerador]="LJ" : s="Lan‡amento no Vendas - Loja"
   Case [Sistema Gerador]="AF" : s="Acerto Financeiro"
EndSwitch

return s
EndProc   ;  (Checagem_Pagina)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCH()
Inicia_RegistroCH()
CopytoArray REG_BORDI
DigitaCH()
Moveto "BordchI"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc                 

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
CopytoArray REG_BORD

DIGITAC=True
While DIGITAC
  If CHAVEC=0 And Not Carrega_Parametros()
     Then CHAVEC=9
          DIGITAC =False
          QuitLoop
  EndIf           
  
  DIGITAC()
  SetaCorRegistro("Padrao")
  
  If CHAVEC=9
     Then QuitLoop
  EndIf
  
  If CHAVEC=1
     Then Controle_Dia()
          CopytoArray REG_BORD
  EndIf

  Moveto "BordChI"
  While True
    CHAVECH()
    If CHAVECH=9 Or CHAVECH=99
       Then QuitLoop
    EndIf
    If CHAVECH=1
       Then DigitaCH1()
       Else Controla_EdicaoCH()
    EndIf
  EndWhile
  Moveto "BordChC"
  If CHAVECH=99
     Then QuitLoop
  Endif
EndWhile
If CHAVEC=1 Or CHAVEC=0
   Then CONTA()
        Moveto "BordChC"
EndIf
If RecordStatus("Locked") Then UnLockRecord EndIf         
AtualizaRegistroControle("Numero do Lote",NLANC,MODOPAGINA)
If OPCAO_FORM="1" Then PickForm "1" EndIf

EndProc

;*******************************************************************************
;* Selecionar Registros                                                       *
;*******************************************************************************
Proc SelecionaFiltroBordChc()
ClearAll

If Not IsAssigned(SDFILTRO_ATIVO) Then SDFILTRO_ATIVO = False EndIf

If SDFILTRO_ATIVO
   Then {Ask} {BordChC} Check
        Moveto [Codigo da Empresa   ] TypeIn  "~VSDGEMPRESA.."
        Moveto [Data do Lote        ] TypeIn  ">=~VSDGDTINI ,<=~VSDGDTFIM"
        Moveto [Codigo              ] TypeIn "~VSDGDESTINAT.."
        If VSDGOPBORD<>""
           Then Moveto [Tipo de Destino] TypeIn "\""+VSDGOPBORD+"\""
        EndIf                                                       
        Moveto [Codigo da Conta     ] TypeIn "~VSDGCONTA.."
        Moveto [Codigo da Conta Trf ] TypeIn "~VSDGCONTA2.."
        Do_It!
        ClearAll
EndIf

Release Vars REG_USUARIO
CriaTabelaControle()                     

Return True

EndPRoc ;SelecionaFiltroBordChc()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp      = True
TECLA     = ""
MSG_CAMPO = ""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_OPBORD"
             Then ShowDialog_Operacao("ShoWDialog")
             Else Dialog_F1()     
          EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch                         
            Case Campo="TG_EMPRESA"  : Campo="NO"  
            Case Campo="TG_DESTINAT" : Campo="TG_EMPRESA"  
            Case Campo="TG_OPBORD"   : Campo="TG_DESTINAT"     
            Case Campo="TG_CONTA"    : Campo="TG_OPBORD"     
            Case Campo="TG_CONTA2"   : Campo="TG_CONTA"
            Case Campo="TG_DTINI"    : Campo="TG_CONTA2"
            Case Campo="TG_DTFIM"    : Campo="TG_DTINI"
            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_DESTINAT"  
                    Case Campo="TG_DESTINAT" : Campo="TG_OPBORD"   
                    Case Campo="TG_OPBORD"   : Campo="TG_CONTA"          
                         VSDGOPBORD = ControlValue("TG_OPBORD")
                         If Not IsBlank(VSDGOPBORD)
                            Then If Not Carrega_Verifica_Operacao("")
                                    Then Mensagem("Opera‡Æo inv lida!")
                                         Campo="TG_OPBORD"
                                 EndIF    
                         EndIF  
                    Case Campo="TG_CONTA"    : Campo="TG_CONTA2"     
                    Case Campo="TG_CONTA2"   : Campo="TG_DTINI" 
                    Case Campo="TG_DTINI"    : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"    : Campo="YES"            
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_CONTA":
       MSG_CAMPO="Conta de Origem"
  Case Campo="TG_CONTA2":
       MSG_CAMPO="Conta de Destino"    
  Case Campo="TG_OPBORD":
       MSG_CAMPO="Tipo de Opera‡Æo, [F1]Consultar tabela"     
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc FiltrarBordChc()
Private Result
LimpAguarde()                 
Do_It!                            
ClearAll                                                                  

Echo Normal
Echo Off

CONSULTAF1     =  False
SDFILTRO_ATIVO = True
While True
  Result=False 
          
  ShowDialog "Crit‚rio para filtro ?" Proc "SD_Dialog" 
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 17 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"                                                                        
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
                                                                                                                 
    Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A22" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST                               
                                                                                                               
    Label  @ 04,00 "Opera‡Æo"  For "TG_OPBORD"                                           
    Accept @ 05,01 Width 33 "A30" Picture "!*!"        Tag "TG_OPBORD" To VSDGOPBORD                            
    
    Label  @ 06,00 "Conta de Origem"  For "TG_CONTA"
    Accept @ 07,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA"    To VSDGCONTA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCONTA" To VSDGNOMCONTA
    
    Label  @ 08,00 "Conta de Destino"  For "TG_CONTA2"
    Accept @ 09,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA2"    To VSDGCONTA2
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCONTA2" To VSDGNOMCONTA2
    
    Label  @ 10,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 11,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 11,16 "at‚" For "TG_DTFIM"
    Accept @ 11,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    
    Pushbutton @ 13,24 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 13,38 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  AGUARDE("Filtrando dados")
  If Not SelecionaFiltroBordChc() Then Loop EndIf    
  Result=True
                             
  QuitLoop
EndWhile

SDFILTRO_ATIVO=False

Return Result

EndProc ;FiltrarBordChc

;*******************************************************************************
;* Rotina Limpa Variaveis do Filtro                                            *
;*******************************************************************************
Proc LimpaFiltroBordChc()                                                                        
                                                                                       
VSDGEMPRESA   = ""  
VSDGNOMEMP    = ""
VSDGDESTINAT  = "" 
VSDGNOMDEST   = ""
VSDGOPBORD    = "" 
VSDGCONTA     = ""
VSDGNOMCONTA  = "" 
VSDGCONTA2    = ""
VSDGNOMCONTA2 = ""
VSDGDTINI     = BlankDate()
VSDGDTFIM     = BlankDate()
REGRAFILTRO   = ""

EndProc ;LimpaFiltroBordChc()     

;*******************************************************************************
;* Rotina Carrega Parametros                                                   *
;*******************************************************************************
Proc Carrega_Parametros()

if not getp_cheq([BordChC->Codigo da Empresa])
   then return false
endif   

return true
EndProc ; (Carrega_Parametros)
                                    
;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Carrega_Tabelas(PARAM)
ClearAll                  

View NoWindow "\\Sistemas\\Cadastro\\Destinat"  ImageRights ReadOnly
View NoWindow "ChequeC"
View NoWindow "ChequeI"
View NoWindow "BordChI"

If Not MODOFILTRAR
   Then CoEdit NoWindow "BordChC"
        ;************** Rotina para tratar o erro de tabela locada ********************
        If ErrorCode()=4
           Then Do_It!
                Return False
        EndIf
   Else If Not CoEditaTabelaControle() 
           Then Return False
        EndIf
EndIf

Moveto TabelaControle
If PARAM="Inicio" Then PickForm OPCAO_FORM EndIf

Return True                                

EndProc   ; (Carrega_Tabelas)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+
        "\\Sistemas\\Cadastro\\Bib_Parm"
        
SYS_VALOR()
LimpaFiltroBordChc()

MSG=""
COR_MENSAGEM="PRETO"

{Ask} {BordCHC} 
Moveto [Numero do Lote] Typein "Calc Count as Qtde"
Moveto [Data do Lote  ] Typein "<(today-730)"
do_it!
if not IsEmpty("Answer")
   then If [Qtde]>0
           Then MSG=MSG+"Existe(m) "+strval([Qtde])+" Border“(s) lan‡ado(s) !   // //"
                MSG=MSG+"Para melhor seguran‡a e desempenho do Sistema,//"
                MSG=MSG+"recomendamos que fa‡a o fechamento mensal  das//"
                MSG=MSG+"mais antigas. Recomendamos manter apenas 1 ano//"
                MSG=MSG+"em aberto!                                    // //"
                MSG=MSG+"Verificar com o supervisor fechamento mensal !"
        EndIf
endif   
ClearAll
if MSG<>"" then Mensagem(MSG) endif
Release Vars COR_MENSAGEM,MSG 

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CONTROLE_DIA) Then SYS_CONTROLE_DIA="" EndIf

LeiaINI(PrivDir()+"LER_CHQ.ini","VSD_LEITORCHQ.S.1")
                                 
OPCAO_FORM           = "1"                                 
TabelaTemp           = ""
TabelaPrincipal      = "BordChc"
TabelaControle       = TabelaPrincipal
MODOFILTRAR          = False
MODOFILTRARATIVO     = False
MODOFILTRAR_EMPRESA  = ""

If IsAssigned(MODOFILTRAR) And MODOFILTRAR
   Then SelecionaFiltroBordChc()
   Else TabelaControle    = TabelaPrincipal
        MODOFILTRARATIVO  = True
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf

If Carrega_Tabelas("Inicio")
   Then If Verifica_NRegistros("Bordchi")
           Then COR_MENSAGEM="1"
                Mensagem(MSG_TABELA)
                Release Vars COR_MENSAGEM,MSG_TABELA
           Else Release Vars MSG_TABELA     
        EndIf
        
        Carrega_Verifica_Operacao("Carrega")    
   
        While True
          CHAVEC()
          ;--- FILTRO ----------------------------------------------------------
          If CHAVEC=99 
             Then If FiltrarBordChc()
                     Then MODOFILTRAR=True
                  EndIf
                  Carrega_Tabelas("Inicio")
                  Loop
          EndIf                 
          If CHAVEC=98 
             Then AGUARDE("Visualizando todos registros")
                  MODOFILTRAR=False
                  Do_It!
                  
                  TabelaControle=TabelaPrincipal
                  Carrega_Tabelas("Inicio")
                  Loop
          EndIf   
          ;---------------------------------------------------------------------               
          If CHAVEC=9
             Then QuitLoop
          EndIf
          If CHAVEC=6
             Then If OPCAO_FORM="F"
                     Then PickForm "F"
                     Else PickForm "1"
                  EndIf
                  Loop
          EndIf
          Controla_EdicaoC()
        EndWhile
EndIf
Do_It!
ClearAll
Release Vars All
Release Procs All