;*  Duplic *********************************************************************
;*  Manutencao Carteira de Contas a Receber                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/10/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Dados do Cheque CDPessoa
;Ultima Alteracao: 06/12/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 03/01/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Confirma
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues                  
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 04/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa Agencia,Conta,CPF
;Ultima Alteracao: 11/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 19/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo Carteira DESCONTADA..
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 07/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Indice Inddup1/Duplic
;Ultima Alteracao: 12/09/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4 Desdobramentos
;Ultima Alteracao: 03/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 31/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gravar Cheque
;Ultima Alteracao: 23/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes copiar parcelas
;Ultima Alteracao: 05/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 03/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Plano Contas Padrao
;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: 13/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Impressao Recibo
;Ultima Alteracao: 18/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes para ImpressÆo de Recibo
;Ultima Alteracao: 13/10/2010 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Leitura_Cheque                           
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 29/10/2010 por Bruno Carvalho
;Motivo Alteracao: Corre‡Æo e Ajustes Edita_Memo
;Ultima Alteracao: 01/02/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Rotina Cheque
;Ultima Alteracao: 14/02/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 17/02/2011 por Bruno Carvalho
;Motivo Alteracao: Op‡Æo para impressÆo de 2¦ Via de Recibo
;Ultima Alteracao: 17/02/2011 por Bruno Carvalho
;Motivo Alteracao: Novos Ajustes para Cliente "0112" (Liberar entrada de Cheques)
;Ultima Alteracao: 01/03/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes na ImpressÆo do Recibo
;Ultima Alteracao: 23/03/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Paramentro TITULOS_SOBAIXAS vinda o script DuplicBX
;Ultima Alteracao: 05/04/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para Cliente "0102"
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 27/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa por CANCELADO Altera‡Æo do Titulo para LUPUS
;Ultima Alteracao: 08/07/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa por CANCELADO/Valor Comissao para LUPUS
;Ultima Alteracao: 16/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa Valor Comissao diferen‡a de 0,01 centavos LUPUS
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dados dos Cheques
;Ultima Alteracao: 16/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo WCSW_BAIXA =vr recebido * COTTA
;Ultima Alteracao: 29/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Layout, ajustes Fun‡äes e adicionado Notas
;Ultima Alteracao: 30/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao data da baixa s¢ do dia Tecidos BrasÆo
;Ultima Alteracao: 30/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Variavel FORM_CONTATO Lupus
;Ultima Alteracao: 12/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para rotina de anota‡äes
;Ultima Alteracao: 11/01/2012 por Bruno Carvalho
;Ultima Alteracao: Altera‡Æo no Controla_Edicao() "Table()"
;Ultima Alteracao: 19/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes TITULOS_SOANOTACOES
;Ultima Alteracao: 02/02/2012 por Karina Andrade
;Motivo Alteracao: Adcionado F11=Dados do Cliente(Form_Destinat)
;Ultima Alteracao: 25/05/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Carrega_Parametros de acordo com a empresa 
;Ultima Alteracao: 31/05/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo na baixa qd Dt de Vencto for no sabado ou domingo nÆo computar juros e atrasos
;Ultima Alteracao: 04/06/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes na verifica‡Æo dos parametros, estava ocorrendo erro ao voltar (ESC) em uma baixa
;Ultima Alteracao: 10/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusao do titulo, Tecla_Funcao=""
;Ultima Alteracao: 26/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes bloqueio de registro durante carrega_parametros()
;Ultima Alteracao: 27/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data de Entrada CHEQUEC
;Ultima Alteracao: 13/11/2012 por Bruno Carvalho
;Motivo Alteracao: PermissÆo p/ Altera‡Æo/ExclusÆo Anota‡äes       
;Ultima Alteracao: 19/11/2012 por Bruno Carvalho
;Motivo Alteracao: Add Parƒmetro p/ Altera‡Æo/ExcluisÆo Anota‡äes       
;Ultima Alteracao: 03/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conflito LockRecord - SaldCont       
;Ultima Alteracao: 15/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo incluir nova baixa se titulo ja liquidado
;Ultima Alteracao: 25/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusao de baixa e titulo estorno caixa/banco
;Ultima Alteracao: 25/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sobaixas nÆo excluir titulo
;Ultima Alteracao: 28/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes iniciando tabela empty            
;Ultima Alteracao: 28/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ver observacoes na baixa
;Ultima Alteracao: 06/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F3 ver ficha nos itens sem senha supervisor
;Ultima Alteracao: 07/06/2013 por Bruno Carvalho
;Motivo Alteracao: Ajsutes rotina de anota‡Æo onde utiliza seta_array()
;Ultima Alteracao: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado leitura de variavel em arquivo "LER_CHQ.ini"
;Ultima Alteracao: 13/06/2013 por Bruno Carvalho
;Motivo Alteracao: VSDGU_USUARIO ajustado no Digita_Cheque()
;Ultima Alteracao: 19/06/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Dados_Cliente() Add Observa‡Æo "F5" e "F7"
;Ultima Alteracao: 24/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado parƒmetro para exclusÆo/altera‡Æo da baixa
;Ultima Alteracao: 12/08/2013 por Bruno Carvalho
;Motivo Alteracao: PermissÆo para excluir/alterar lan‡amento quando ‚ baixa do dia 
;Ultima Alteracao: 13/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes de permissÆo para excluir/alterar lan‡amento quando ‚ baixa do dia 
;Ultima Alteracao: 20/09/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Dados_Cliente()
;Ultima Alteracao: 26/09/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes nas rotinas do Monta_Opcoes "BIB_SHOW" 
;Ultima Alteracao: 04/11/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado nova rotina c\ param para resto de saldo em novo lancamento 
;Ultima Alteracao: 29/11/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina para baixa do dia, conta padrÆo para cada usu rio 
;Ultima Alteracao: 09/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 11/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Calcula()
;Ultima Alteracao: 13/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajuses Registro_Baixa() "UnlockRecord" 
;Ultima Alteracao: 16/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Pl.Conta Debito/Credito
;Ultima Alteracao: 16/12/2013 por Bruno Carvalho
;Motivo Alteracao: Vr/Saldo na Digita‡Æo da Baixa
;Ultima Alteracao: 17/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes  
;Ultima Alteracao: 19/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Calcula()
;Ultima Alteracao: 06/02/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado Dt Inclusao no lan‡amento de cheque
;Ultima Alteracao: 08/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ao tentar posicionar em um cheque existente, estava exibindo sempre o ultimo independente da escolha 
;Ultima Alteracao: 08/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: 12/05/2014 por Bruno Carvalho
;Motivo Alteracao: Erro ao cancelar a vizualiza‡Æo de um cheque
;Ultima Alteracao: 04/06/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes para gravar a ultima data da inclusao do cheque 
;Ultima Alteracao: 22/08/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes gravar [Duplic->Data de Emissao] na [Data Competencia] do MOVCONT
;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: 28/01/2015 por Bruno Carvalho
;Motivo Alteracao: Ajuste no CHAVEI(), erro ao exibir mensagem quando deleta a baixa
;Ultima Alteracao: 16/07/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes Puxar Numero de Carregamento quando for fazer a baixa
;Ultima Alteracao: 16/07/2015 por Andrey Fillipe
;Motivo Alteracao: Proc CONTA() utilizando o novo processo Numero_Lancamento() quando h  rotinas internas #MOVCONT# 
;Ultima Alteracao: 13/11/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando a tabela nÆo tem nenhum registro
;Ultima Alteracao: 13/11/2015 por Andrey Fillipe
;Motivo Alteracao: Proc CONTA() utilizando o novo processo Numero_Lancamento() quando h  rotinas internas #MOVCONT#
;Ultima Alteracao: 05/12/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes controle MSGCAMPO e Teclas padrÆo e Sistema Origem na Baixa
;Ultima Alteracao: 10/12/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes quando REG_ENTER p/ lan‡amentos "MA"
;Ultima Alteracao: 28/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data_Entrada ChequeI e Data de Entrada ChequeC          
;Ultima Alteracao: 07/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema gerador AF=Acerto Financeiro e Mensagens      
;Ultima Alteracao: 11/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor total de cheques em chequec
;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: 22/02/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Sistema gerador CF-e   
;Ultima Alteracao: 08/03/2016 por Bruno Carvalho
;Motivo Alteracao: Na proc CHAVEI() foi removido do inicio desta proc a Seta_Sequencia(NITEM,False) como ‚ realizado no titulos
;                  p/ controle apenas se usu rio pressionar ENTER, assim  ser  verificado qual a sequˆncia, se mais de 9, ‚ exibido uma mensagem.                   
;Ultima Alteracao: 14/04/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc DIGITAC() onde foi convertido p/ NumVal a verifica‡Æo [Saldo do Documento] = [Valor do Documento]
;Ultima Alteracao: 25/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ctrl+D copiar Cheque
;Ultima Alteracao: 02/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cheques                  
;Ultima Alteracao: 24/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F5 observa‡äes, erro deletando a baixa
;Ultima Alteracao: 13/06/2016 por Kamila Gomes
;Motivo Alteracao: Inclusao do Campo Seq_Nosso_Numero ao form
;Ultima Alteracao: 20/06/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Endere‡o de cobran‡a
;Ultima Alteracao: 28/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes PegaNomeSistemaGerador() CB-Gera‡Æo de Cobran‡a
;Ultima Alteracao: 06/07/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Gera_Lancamento() e ProximaOrdem()
;Ultima Alteracao: 08/08/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes na verifica‡Æo da sequˆncia da baixa, permitindo apenas n£meros
;Ultima Alteracao: 01/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usa carregamento para todos tipos de contas
;Ultima Alteracao: 21/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado IsLockReocrd na Proc Conta() quando posicionado no MovCont
;Ultima Alteracao: 24/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Existe_Cheque() para verificar a existˆncia de cheques j  lan‡ados   
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()
;Ultima Alteracao: 06/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calcular juros na baixa automaticamente quando valor do pagamento maior que saldo do titulo
;Ultima Alteracao: 08/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CONTA_USUARIO
;Ultima Alteracao: 26/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CONTA_USUARIO, data de entrada do cheque blank=today
;Ultima Alteracao: 23/06/2017 por Bruno/Anivel
;Motivo Alteracao: Ajustes EXCLUSAO() -> Verifica se nÆo ‚ vazio o [Numero Lancamento Cheque] antes de excluir o "ChequeI" e "ChequeC"
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 12/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sistema gerador CF  
;Ultima Alteracao: 18/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes multiplas parcela
;Ultima Alteracao: 15/08/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes multiplas parcela                     
;Ultima Alteracao: 15/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado consulta de email p/ quando usu rio consultar dados da pessoa 
;Ultima Alteracao: 06/09/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ impressÆo de recibo -> TITULOS_SOBAIXAS "RP_000B" Ou "RP_0329C"
;Ultima Alteracao: 13/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ver_Memo() substitu¡do por Ler_Memo() 
;Ultima Alteracao: 13/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calcular juros na baixa automaticamente se gera lan‡amento juros devido sim ou nÆo
;Ultima Alteracao: 05/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DataEfetivadoBanco baixa em banco
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ [Data de Nascimento] ser consultada/armazenada pelo cadastro de itens
;Ultima Alteracao: 28/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 0388 travar exclusÆo
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 03/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes echo normal echo off PegaNomeSistemaGerador() 
;Ultima Alteracao: 04/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dataefetivadobanco 
;Ultima Alteracao: 16/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes savetables dupbaixa
;Ultima Alteracao: 18/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes chavei()
;Ultima Alteracao: 20/07/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo de RATEIO em ShowDialog "F7" -> Em Lan‡amentos e Baixas
;Ultima Alteracao: 20/07/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Ativa_Form() -> P/ ser poss¡vel a inclusao da MOV_RAT no FORM
;Ultima Alteracao: 26/07/2018 por Bruno Carvalho
;Motivo Alteracao: GetRecord na Destinat -> Imprime_Recibo()
;Ultima Alteracao: 02/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes em alguns processos p/ utilizar o ResyncKey
;Ultima Alteracao: 03/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando exclusÆo for referente em lan‡amentos parciais diante de um lan‡amento pai
;Ultima Alteracao: 08/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes para quando ocorrer baixa parcial no lan‡amento
;Ultima Alteracao: 21/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando realizar rateio na cabe‡a, os rateios das baixas serÆo preenchidos automaticamente e proporcionalmente

;Quando ocorrer Manuten‡Æo do FORM "4", ajustar tamb‚m o FORM "11"

;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC()
PASSOU=False               
While True
  Origem_Disparo=""
  COPIOU_REGISTRO=False

  Moveto [Numero do Lancamento]
  End
  NLANC=[Numero do Lancamento]
  Moveto [Numero do Lancamento]

  If OPCAO_FORM="3"
     Then Down
     Else Pgdn PgDn PgDn PgDn
  EndIf
  Moveto [Numero do Lancamento]
  
  FORM_CONTATO =""
  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA="F4=N§ Documento"
  AguardaTeclasPadrao()
  
  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="3"
            Then OPCAO_FORM="4"
            Else OPCAO_FORM="3"
         EndIf
         Del
         CHAVEC=6
         Return
    Case RetVal="F4":
         TIPO_TRABALHO=1
         CHAVEC=5
         Del
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Origem_Disparo=""
           FORM_CONTATO =""
           If OPCAO_FORM="3"
              Then PAGINA("Duplic","MR")
              Else PAGINA("Duplic","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or 
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf

             Case EXCLUIR="S": 
                  If TITULOS_SOBAIXAS  Or TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          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 !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf    
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="3"
              Then PickForm "3"
              Else PickForm "4"
           EndIf       
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del                    
         Return
    Case Retval="ENTER":
         If isblank([]) and 
            TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES
            Then FastMsg("InclusÆo nÆo permitida !")
                 Loop
         EndIf
    
         If Numero_Lancamento("","3")
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC 
            Else QuitLoop
         EndIf

         PickForm "4"
         Moveto [Numero do Lancamento]
         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="3"
                 EndIf
         EndIf
         
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC2()

While True
  Origem_Disparo=""

  End
  If OPCAO_FORM="3"
     Then Down
     Else Pgdn PgDn PgDn PgDn
  EndIf
  
  If PASSOU
     Then [Codigo do Documento]=TIPODOC
          [Codigo da Empresa  ]=CODEMP
          Moveto [Numero do Documento]
     Else [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
          Moveto [Codigo da Empresa]
  EndIf
  FORM_CONTATO =""
  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""  
  If Field()="Codigo da Empresa"  Or
     Field()="Codigo do Documento"
     Then TECLA="F1=Tabelas  "
  EndIf

  If OPCAO_FORM="3"
       Then TECLA=TECLA+"F4=N§ Lan‡amento "
       Else TECLA=TECLA+"F4=N§ Boleta "
  EndIf

  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F1":
         If Field()="Codigo da Empresa" Or
            Field()="Codigo do Documento"
            Then CONSULTAF1()
         EndIf
    Case RetVal="F3":
         If OPCAO_FORM="3"
            Then OPCAO_FORM="4"
            Else OPCAO_FORM="3"
         EndIf
         Del
         CHAVEC=6
         Return
    Case RetVal="F4":
        If OPCAO_FORM="3"
           Then TIPO_TRABALHO=0
           Else TIPO_TRABALHO=2
         EndIf
         CHAVEC=5
         Del
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Origem_Disparo=""

           FORM_CONTATO =""

           If OPCAO_FORM="3"
              Then PAGINA("Duplic","MR")
              Else PAGINA("Duplic","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or 
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOBAIXAS  Or TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          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 !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="3"
              Then PickForm "3"
              Else PickForm "4"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         If Field()="Codigo da Empresa"
            Then CHAVEC=9
                 Del
                 Return
         EndIf
         If Field()="Codigo do Documento"
            Then [Codigo do Documento]=""
                 Moveto [Codigo da Empresa]
         EndIf
         If Field()="Numero do Documento"
            Then Moveto [Codigo do Documento]
         EndIf
    Case Retval="ENTER":
         Switch
           Case Field()="Codigo da Empresa": 
                EMPRESA=[]
                Moveto [Codigo do Documento]
                Loop
           Case Field()="Codigo do Documento":
                Moveto [Numero do Documento]
                Loop
           Case Field()="Numero do Documento":
                EMPRESA =[Codigo da Empresa  ]
                TPDOCTO =[Codigo do Documento]
                NUMDOCTO=[Numero do Documento]
         EndSwitch
         PASSOU=True
         CODEMP= [Codigo da Empresa]
         TIPODOC=[Codigo do Documento]
         Del
         PickForm "4"
         Moveto [Codigo da Empresa]
         Locate IndexOrder by "IndDup1" EMPRESA,TPDOCTO,NUMDOCTO
         If Not Retval
            Then FastMsg("Lan‡„mento n„o encontrado !")
            Else CHAVEC=0
                 If Not IsLockRecord()
                    Then Echo Normal
                         Echo Off
                         If [Sistema Gerador]<>"MA"
                            Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                 FastMsg(MSG)
                         EndIf
                         If TITULOS_SOBAIXAS    Or 
                            TITULOS_SOANOTACOES Or 
                            Checa_Controle([Numero_Controle_Dia])
                            Then Return
                         EndIf
                 EndIf
         EndIf   
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC2)

;*******************************************************************************
;* Rotina para Localizar Registro Boleta                                       *
;*******************************************************************************
Proc CHAVEC3()

While True
  Origem_Disparo=""

  End
  Pgdn PgDn PgDn PgDn

  Moveto [Documento no Banco]

  FORM_CONTATO =""
  SetaCorRegistro("Editar")

  While True

  MSGCAMPO=""
  TECLA="F4=N§ Lan‡amento"
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         OPCAO_FORM="3"
         PickForm "3"
         TIPO_TRABALHO=0
         Del
         CHAVEC=5
         Return
    Case RetVal="F4":
         TIPO_TRABALHO=0
         CHAVEC=5
         Del
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Origem_Disparo=""

           FORM_CONTATO =""

           PAGINA("Duplic","MT")
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOBAIXAS  Or TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          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 !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         If Field()="Documento no Banco"
            Then CHAVEC=9
                 Del
                 Return
         EndIf
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         Switch
           Case Field()="Documento no Banco":
                DOCTOBANCO=[Documento no Banco]
         EndSwitch
         Del
         Moveto [Documento no Banco]
         Locate DOCTOBANCO
         If Not Retval
            Then FastMsg("Lan‡„mento n„o encontrado !")
            Else CHAVEC=0
                 If Not IsLockRecord()
                    Then Echo Normal
                         Echo Off
                         If [Sistema Gerador]<>"MA"
                            Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                 FastMsg(MSG)
                         EndIf
                         If TITULOS_SOBAIXAS    Or 
                            TITULOS_SOANOTACOES Or 
                            Checa_Controle([Numero_Controle_Dia])
                            Then Return
                         EndIf
                 EndIf
         EndIf   
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC3)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes Carteira                              *
;*******************************************************************************
Proc DIGITAC()
Moveto "Duplic"

VSDGCONTAGEM="NDAV"
Moveto [Codigo do Destinatario]
Ativa_Lookup()
Moveto [Codigo]
Locate [Duplic->Codigo do Destinatario]
If RetVal
   Then VT_CIDADE=[Cidade]
        VT_UF    =[UF    ]
   Else VT_CIDADE=""
        VT_UF    =""
EndIf

KeyPress "ESC"

If CHAVEC=0
   Then If NumVal([Saldo do Documento])<>NumVal([Valor do Documento])
           Then Moveto [Data de Emissao  ]
           Else Moveto [Codigo da Empresa]
        EndIf
        UTILIZA_RAT_CABECA = [Tem Rateio]
   Else UTILIZA_RAT_CABECA = ""
        Moveto [Codigo da Empresa]
               [Data de Entrada  ]=Today()
EndIf
VALDOC=[Valor do Documento]
VALCOM=[Valor da Comissao ]

;If IsAssigned(CampoAnt)
;   Then Moveto Field CampoAnt
;EndIf

If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES 
   Then Moveto [Pag_1]
EndIf

While True

  TECLA=" Esc=Retornar  "
  If CHAVEC=0
     Then TECLA=TECLA+"Del=Excluir  "
     Else TECLA=TECLA+"             "
  EndIf
  TECLA=TECLA+"Alt+F=Fun‡äes"
  
  MSGCAMPO=Field()
  
  Switch
    Case Field()="Tipo do Lancamento" : MSGCAMPO="Tipo de Carteira"
    Case Field()="Documento no Banco" : MSGCAMPO="Numero da Boleta"
    Case Field()="Valor de Juros"     : MSGCAMPO="Informe o Valor do Juros"
    Case Field()="Taxa de Juros"      : MSGCAMPO="Informe a Taxa de Juros"
    Case Field()="Tipo Taxa de Juros" : MSGCAMPO="Tipo de Juros: Diario/Mensal/Anual"
    Case Field()="Codigo Plano_Conta" : MSGCAMPO="Codigo do Plano de Conta"
    Case Field()="Codigo CCusto"      : MSGCAMPO="Codigo do Centro de Custo"
    Case Field()="Codigo do Cobrador" : MSGCAMPO="Codigo do Cobrador"
  EndSwitch

  If Field()="Codigo do Documento"     Or
     Field()="Tipo do Lancamento"      Or
     Field()="Codigo do Destinatario"  Or
     Field()="Codigo do Representante" Or
     Field()="Codigo da Empresa"       Or
     Field()="Codigo da Conta"         Or
     Field()="Tipo do Pagamento"       Or
     Field()="Codigo Plano_Conta"      Or
     Field()="Codigo CCusto"           Or
     Field()="Codigo do Cobrador"      Or
     Field()="Numero_Carregamento_Orig"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf

  If Field()="Codigo da Conta"
     Then Monta_Opcoes("Codigo da Conta","")
  EndIf  
 
  If Field()="Codigo do Documento"
     Then Monta_Opcoes("Codigo do Documento","")
  EndIf
 
  If Field()="Codigo da Empresa"      
     Then Monta_Opcoes("Empresas","")     
  EndIf 
  
  Prompt TECLA

  SetaCorRegistro("Editar")
  Wait Field
       Until "F1","ESC","ENTER","DEL","DOWN","FIELDVIEW","F35","F4","F5","F6","F8","F9",
              -115,-116,-33,-133,-18,"F7",-65

  If RetVal=-33
     Then ShowPopup " Fun‡”es " CENTERED
            "~C~alcular Baixas  [F4]   " : " Calcular Baixa                      " : "F4",
            "~O~bserva‡„o       [F5]   " : " Observa‡„o                          " : "F5",
            "C~h~eques          [F6]   " : " Cheques                             " : "F6",
            "~B~aixas           [F8]   " : " Baixas                              " : "F8",
            "~R~ateio           [F7]   " : " Rateio                              " : "F7",
            "A~g~endamento      [F9]   " : " Agendamento                         " : "F9",
            "~D~ados Cliente    [F11]  " : " Dados Cadastrais do Cliente         " : "F11",
            Separator,
            "~C~ancelar                " : " Cancelar a Opera‡„o                 " : "CANCELAR"
           EndMenu
           To MenuVar
           RetVal=MenuVar
           Echo Off
  EndIf

  If RetVal="DOWN" Or RetVal=-145
     Then RetVAl="F8" 
  EndIf

  Switch
  Case  RetVal="F6" Or RetVal="F8" Or RetVal="F9" Or
        RetVal=-115 Or RetVal=-116 Or
        RetVal=-133 Or Retval="F11":
        Tecla_Funcao=RetVal
        If Checagem_Pagina()
           Then Return
        EndIf
  
  Case RetVal="F1":
        If Field()="Tipo do Lancamento"      Or
           Field()="Codigo do Destinatario"  Or
           Field()="Codigo do Representante" Or
           Field()="Tipo do Pagamento"       Or
           Field()="Codigo Plano_Conta"      Or
           Field()="Codigo CCusto"           Or
           Field()="Codigo do Cobrador"      Or
           Field()="Numero_Carregamento_Orig"
           Then CONSULTAF1()
        EndIf
         
        If Field()="Codigo da Conta"
           Then Seleciona_Opcoes("Codigo da Conta","CR")
                [Codigo da Empresa]=COD_EMPRESA
        EndIf 

        If Field()="Codigo do Documento"
           Then Seleciona_Opcoes("Codigo do Documento","CR")
        EndIf 
        
        If Field()="Codigo da Empresa"         
           Then Seleciona_Opcoes("Empresas","CR")
        Endif             

  Case RetVal="F4":
       If PARAM_SALDO_GERA_NOVO_LANC="S"
          Then If Search("PROX LANCTO",[Duplic->Observacoes])>0 Or Search("GERADO DO LANCTO",[Duplic->Observacoes])>0
                  Then Mensagem("Este lan‡amento n„o poder  ser recalculado devido a//saldo restante em outro(s) lan‡amento(s)!")
                       QuitLoop
               EndIf
       EndIf

       CONFGERAL("Esta fun‡„o soma as baixas deste lan‡amento// para corre‡„o dos saldos !// // Confirma opera‡„o ?")
       If OK<>"S" Then Loop EndIf

       Moveto "\\Sistemas\\CtaRec\\DupBaixa"
       Moveto [Valor do Recebimento]
       TOTREC=Round(ImageCSum(),2)
       Moveto [Valor do Juros]
       TOTJUR=Round(ImageCSum(),2)
       Moveto [Valor do Desconto]
       TOTDES=Round(ImageCSum(),2)
       Moveto [Valor da Comissao]
       TOTCOM=Round(ImageCSum(),2)

       Moveto "\\Sistemas\\CtaRec\\Duplic"
       [Saldo do Documento]=([Valor do Documento]-
                            (TOTREC-TOTJUR+TOTDES))
       [Saldo da Comissao ]=[Valor da Comissao ]-TOTCOM
       
       Tecla_Funcao="F8"
       Quitloop              
  Case RetVal="F5":  
       If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
          Then JANELA_DIALOG_DESABILITA=True
       EndIf
       Edita_Memo("Observacoes",08,01,15,76,"Observa‡”es")
       
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case RetVal="F7" Or Retval = -65 :
       If [Tem Rateio]="S"
              Then PARAM_FT_RAT = "DIGITA_RATEIO_CABECA"
                   PLay "\\Sistemas\\CtaCor\\FT_RAT" 
              Else If ConfGeral("Deseja utilizar rateio neste t¡tulo?")
                      Then [Tem Rateio]="S"
                           PARAM_FT_RAT = "DIGITA_RATEIO_CABECA"
                           PLay "\\Sistemas\\CtaCor\\FT_RAT"
                   EndIf    
       EndIf 
  Case Retval="DEL":   
       If CHAVEC=0        
          Then 
               If TITULOS_SOBAIXAS
                  Then FastMsg("Exclus„o n„o permitida !")
                       Loop
               EndIf        

               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 !//"
                  Else MSG=""
               EndIf
               MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
               If CONFGERAL_Supervisor(MSG)
                  Then EXCLUSAO()
                       DIGITAC =False
                       Tecla_Funcao=""
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC": 
       Switch
       Case Field()="Codigo da Empresa":
            If QuerDesfazer("")
               Then If CHAVEC=0
                       Then Undo
                            If [Tem Rateio]="S"
                               Then PARAM_FT_RAT = "VERIFICA_RATEIO_CABECA"
                                    PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                    If PARAM_FT_RAT="0"
                                       Then PARAM_FT_RAT = "DIGITA_RATEIO_CABECA"
                                            PLay "\\Sistemas\\CtaCor\\FT_RAT" 
                                    EndIf
                            EndIf   
                       Else SEQ_BAIXA    = "0"
                            PARAM_FT_RAT = "RATEIO_EXCLUSAO"
                            PLay "\\Sistemas\\CtaCor\\FT_RAT"
                            
                            Moveto "Duplic"
                            Del
                    EndIf
                    DIGITAC = False
                    CHAVEC  = 9
                    Tecla_Funcao = ""
                    QuitLoop
            EndIf
       Case Field()="Codigo da Conta"       : Moveto [Codigo da Empresa]
       Case Field()="Codigo do Destinatario": Moveto [Codigo da Conta]
       Case Field()="Codigo do Documento"   : Moveto [Codigo do Destinatario]
       Case Field()="Numero do Documento"   : Moveto [Codigo do Documento]
       Case Field()="Codigo do Destinatario": Moveto [Numero do Documento]
       Case Field()="Data de Emissao": 
            If CHAVEC=0
               Then If [Saldo do Documento]<>[Valor do Documento]
                       Then Undo
                            If [Tem Rateio]="S"
                               Then PARAM_FT_RAT = "VERIFICA_RATEIO_CABECA"
                                    PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                    If PARAM_FT_RAT="0"
                                       Then PARAM_FT_RAT = "DIGITA_RATEIO_CABECA"
                                            PLay "\\Sistemas\\CtaCor\\FT_RAT" 
                                    EndIf
                            EndIf  
                            DIGITAC =False
                            CHAVEC=9
                            Tecla_Funcao=""
                            QuitLoop
                    EndIf
            EndIf
            If [Sistema Gerador]="MA"
               Then Moveto [Numero_Carregamento_Orig]
               Else Moveto [Numero do Documento]
            EndIf
       Case Field()="Documento Referente":
            Moveto [Numero do Documento]
       Case Field()="Valor do Documento":
            Moveto [Data de Vencimento]
       Case Field()="Valor da Comissao":
            Moveto [Valor do Documento]
 
       Case Field()="Multa":
            If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
               Then Moveto [Valor do Documento]
               Else Moveto [Valor da Comissao ]
            EndIf
       Case Field()="Tipo Taxa de Juros":
            Moveto [Multa]
       Case Field()="Tipo do Lancamento":
            Moveto [Data Limite Desconto] 
       Case Field()="Tipo do Pagamento":
            Moveto [Tipo do Lancamento]
       Case Field()="Codigo do Representante":
            If IsBlank([])
               Then [Nome Fantasia Represent]=""
            EndIf
            Moveto [Tipo do Pagamento]
       Case Field()="Documento no Banco":
            Moveto [Codigo do Representante]
       Case Field()="Codigo Plano_Conta":
            Moveto [Documento no Banco]
       Case Field()="Codigo CCusto":
            Moveto [Codigo Plano_Conta]
			 Case Field()="Codigo do Cobrador":
						Moveto [Codigo CCusto]
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
               Else Tecla_Funcao="F9"
            EndIf   
            QuitLoop						
       OtherWise:
            Left
       EndSwitch

  Case Retval="ENTER": 
       Switch
       Case Field()="Codigo da Empresa":
            If Not Checa_Opcoes("Empresas",[])
               Then Mensagem("Empresa inv lida !")
                    Loop     
               Else If Not Isblank([]) And Carrega_Parametros()
                       Then EMPRESA    =[]
                            COD_EMPRESA=[]
                            Moveto [Codigo da Conta] 
                    EndIf
            EndIf 
       Case Field()="Codigo da Conta":
            If Not Checa_Opcoes("Codigo da Conta",[])
               Then Mensagem("Conta inv lida !")
                    Loop     
               Else If Not IsBlank([])
                       Then [Codigo da Empresa]=COD_EMPRESA
                            Moveto [Codigo do Destinatario]
                       Else Loop
                    EndIf
            EndIf 
       Case Field()="Codigo do Destinatario":
            Switch
              Case IsBlank([]) : Loop 
              Case [Tipo]<>"C" : MENSAGEM("Tipo Destinat rio inv lido !")
              Case CHAVEC=1    : If Cliente_Inativo() Then Loop EndIf
            EndSwitch
            Moveto [Codigo do Documento]
       Case Field()="Codigo do Documento":
            If Not Checa_Opcoes("Codigo do Documento",[])
               Then [Tipo do Documento  ]=""
                    [Serie do Documento ]=""
                    [Numero do Documento]=""
                    Mensagem("Codigo do Documento Inv lido !")
                    Loop
            EndIf            
            If Not IsBlank([])
               Then Moveto [Numero do Documento]
            EndIf
       Case Field()="Numero do Documento": 
            If Not IsBlank([])
							 Then If [Sistema Gerador]="MA"
                       Then Moveto [Documento Referente]
                       Else Moveto [Data de Emissao    ]
										EndIf
            EndIf
       Case Field()="Numero_Carregamento_Orig":
            Moveto [Data de Emissao]      
       Case Field()="Codigo do Destinatario":
            If IsBlank([]) Then Loop EndIf
            If [Tipo]<>"C"
               Then MENSAGEM("Tipo Destinat rio inv lido !")
            EndIf
            Moveto [Data de Emissao]
       Case Field()="Data de Emissao":
            If []=BlankDate()
               Then []=Today()
            EndIf
            Right
       Case Field()="Data de Vencimento":
            If []=BlankDate() Then []=Today() EndIf
            If [] < [Data de Emissao]
               Then MENSAGEM("Data de vencimento menor que a data de emiss„o !")
                    []=BlankDate()
                    Loop
            EndIf
            [Data a Receber]=[]                
            While True
                  NDIAS=0
                  If Dow([Data a Receber])="Sat"
                     Then NDIAS=2
                     Else If Dow([Data a Receber])="Sun"
                             Then NDIAS=1
                          EndIf
                  EndIf
                  DIA = [Data a Receber]
                  GetRecord "\\Sistemas\\Cadastro\\Feriados" DIA To REG_DIA
                  If Retval
                     Then NDIAS=REG_DIA["Dias a Pagar"]
                  EndIf
                  Moveto "\\Sistemas\\CtaRec\\Duplic"
                  [Data a Receber]=[Data a Receber]+NDIAS
                  If NDIAS=0
                     Then QuitLoop
                  EndIf
            EndWhile
            Moveto [Valor do Documento]
       Case Field() = "Valor do Documento":
            If Not IsBlank([])
               Then If []< 0 Then Loop EndIf
               Else Mensagem("Informe o Valor do Documento!")
                    Loop
            EndIf
            If CHAVEC= 1
               Then [Saldo do Documento] = []
               Else If [Valor do Documento]<>VALDOC
                       Then [Saldo do Documento]=[Valor do Documento]-VALDOC+[Saldo do Documento]
                    EndIf
            EndIf
            VALDOC=[Valor do Documento]
            If PARAM_UTILIZA_COMISSAO="N" or Isblank(PARAM_UTILIZA_COMISSAO)
               Then Moveto [Multa             ]
               Else Moveto [Valor da Comissao ]
            EndIf
       Case Field() = "Valor da Comissao":
            If Not IsBlank([])
               Then If []< 0 Then Loop EndIf
            EndIf
            If CHAVEC= 1
               Then [Saldo da Comissao] = []
               Else If [Valor da Comissao]<>VALCOM
                       Then [Saldo da Comissao]=[Valor da Comissao]-VALCOM+[Saldo da Comissao]
                    EndIf
            EndIf
            VALCOM=[Valor da Comissao ]
            Moveto [Multa             ]
       Case Field()="Multa" :
            Moveto [Valor de Juros    ]
       Case Field()="Valor de Juros":
            If []<=0
               Then []=BlankNum()
                    Moveto [Taxa de Juros]
               Else [Taxa de Juros]=BlankNum()
                    Moveto [Tipo Taxa de Juros]
            EndIf          
       Case Field()="Tipo Taxa de Juros":
            If []<>"D" and []<>"M" and []<>"A" and []<>""
               Then Loop
            EndIf
            Switch
              Case []=""  : [NDias Taxa de Juros]=0
              Case []="D" : [NDias Taxa de Juros]=1
              Case []="M" : [NDias Taxa de Juros]=30
              Case []="A" : [NDias Taxa de Juros]=365
            EndSwitch 
            Moveto [Valor do Desconto ] 
       Case Field() = "Valor do Desconto":
            If Not IsBlank([])
               Then If []<0 Then Loop EndIf
            EndIf
            Right
       Case Field()="Data Limite Desconto":
            If IsBlank([]) and [Valor do Desconto]>0
               Then Loop
            EndIf
            If IsBlank([])=False
               Then If [Valor do Desconto]=0 Or
                       [Valor do Desconto]=""
                       Then Loop
                    EndIf
            EndIf
            Moveto [Tipo do Lancamento]
       Case Field()="Tipo do Lancamento":
            If IsBlank([]) Then Loop EndIf
            Moveto [Tipo do Pagamento]
       Case Field()="Tipo do Pagamento":
            If IsBlank([]) Then Loop EndIf
            Moveto [Codigo do Representante]
       Case Field()="Codigo do Representante":
            If IsBlank([])
               Then [Nome Fantasia Represent]=""
            EndIf
            Moveto [Documento no Banco]
       Case Field()="Documento no Banco":
            Moveto [Numero_do_Lote]
       Case Field()="Numero_do_Lote":
            Moveto [Seq_Nosso_Numero]
       Case Field()="Seq_Nosso_Numero":
            Moveto [Codigo Plano_Conta]

;******************* MODIFICADO P/ J.LUIS EM 24/06/04 *******************
       Case Field()="Codigo Plano_Conta":
            CodPlacon = [Codigo Plano_Conta]
            If Not IsBlank(CodPlacon)
               Then Ativa_Lookup()
                    Moveto [Codigo Plano_Conta]
                    Locate CodPlacon
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    Loop
                               Else DescPlacon = LTrim([Descricao Plano_Conta])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Conta n„o Cadastrada !")
                            KeyPress "Esc"
                            DescPlacon = ""
                            Loop
                    EndIf
                    If SubStr([],1,1)="2"
                       Then Mensagem("Conta n„o confere com tipo de movimento !")
                            Loop
                    EndIf
               Else DescPlacon = ""
            Endif
            [Descricao Plano_Conta]= DescPlacon
            Moveto [Codigo CCusto]
       Case Field()="Codigo CCusto":
            CodCCusto = [Codigo CCusto]
            If Not IsBlank(CodCCusto)
               Then Ativa_Lookup()
                    Moveto [Codigo CCusto]
                    Locate CodCCusto
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    DescCCusto = ""
                                    Loop
                               Else DescCCusto = LTrim([Descricao CCusto])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Centro de Custo n„o Cadastrado !")
                            KeyPress "Esc"
                            Loop
                    EndIf
               Else DescCCusto = ""
            EndIf
            [Descricao CCusto] = DescCCusto
            Moveto [Codigo do Cobrador]
       Case Field()="Codigo do Cobrador":
            If IsBlank([])
							 Then [Descricao do Cobrador]=""
            EndIf
            Tecla_Funcao="F8"
            If [Tem Rateio]="S"
               Then PARAM_FT_RAT = "VERIFICA_RATEIO_CABECA"
                    PLay "\\Sistemas\\CtaCor\\FT_RAT"
                    If PARAM_FT_RAT="0"
                       Then PARAM_FT_RAT = "DIGITA_RATEIO_CABECA"
                            PLay "\\Sistemas\\CtaCor\\FT_RAT" 
                    EndIf
            EndIf     
            QuitLoop
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
               Else Tecla_Funcao="F9"
            EndIf  
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DIGITAC)

;*******************************************************************************
;* Rotina para Localizar Registro Baixa                                        *
;*******************************************************************************
Proc CHAVEI()
Private TabAnt

Moveto "DupBaixa"
Opcao_Ver=False
                  
While True

  Exclusao_Cabeca=False

  Moveto [Sequencia da Baixa]
  End
  NITEM=[Sequencia da Baixa]
  Down
  Moveto [Sequencia da Baixa]

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

  SetaCorRegistro("Editar")
  While True
    Opcao_Ver=False

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F4  Copiar ~p~arcelas " : " Gerar novos lan‡amentos a partir deste " : "F4",
              "F5  ~O~bserva‡„o      " : " Observa‡„o                             " : "F5",
              "F6  C~h~eques         " : " Cheques                                " : "F6",
              "F7  ~I~mprimir        " : " Imprimir Controle de Recebimento       " : "F7",
              "F9  A~g~endamento     " : " Agendamento                            " : "F9",
              "F11 ~D~ados Cliente   " : " Dados Cadastrais do Cliente            " : "F11",
              Separator,
              "~C~ancelar            " : " Cancelar                               " : "CANCELAR"
            EndMenu
            To MenuVar
            echo off
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf

            RetVal=MenuVar
    EndIf

    Switch
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F6" Or RetVal="F9" Or
         RetVal=-115 Or RetVal=-116 Or
         RetVal=-133 Or RetVal="F11":
         Tecla_Funcao=RetVal
         CHAVEI=9
         Del
         Return   
         
    Case RetVal="F4": 
         Del
         If Not TITULOS_SOBAIXAS And Not TITULOS_SOANOTACOES And
            (CHAVEC=1 Or (CHAVEC=0 And [Duplic->Saldo do Documento]>0))
          Then If Inicial() Then
                If DynArraySize(Array_Vencimentos)>0
									 Then  Ativa_Form("Duplic")
                         Moveto "Duplic"
												 CopyToArray REG_VENC
												 For i From 1 To DynArraySize(Array_Vencimentos)
													 If i>1
															Then While True
                                     Moveto [Numero do Lancamento]
																		 End
																		 If Numero_Lancamento("Interno","")
                                        Then NLANC = PROXLANCTO_NLANC
                                             Release Vars PROXLANCTO_NLANC
                                     EndIf
																		 Pgdn PgDn PgDn PgDn
																		 Moveto [Numero do Lancamento]
																		 [Numero do Lancamento]=NLANC

																		 LockRecord
																		 If RetVal
																				Then REG_VENC["Numero do Lancamento"]=NLANC
																						 CopyFromArray REG_VENC
																						 QuitLoop
																				Else Del
																		 EndIf
																 EndWhile
													 EndIf
                           [Numero do Documento]=RTrim(SubStr(Array_Vencimentos[i],4,10))
													 [Data de Emissao   ]=DateVal(LTrim(SubStr(Array_Vencimentos[i],15,2))+"."+
																															 SubStr(Array_Vencimentos[i],18,2)+"."+
																															 SubStr(Array_Vencimentos[i],21,4))
													 [Data de Vencimento ]=DateVal(LTrim(SubStr(Array_Vencimentos[i],26,2))+"."+
																															 SubStr(Array_Vencimentos[i],29,2)+"."+
																															 SubStr(Array_Vencimentos[i],32,4))
													 [Valor do Documento ]=NumVal(SubStr(Array_Vencimentos[i],50,12))

													 [Saldo do Documento ]=[Valor do Documento]
                           [Data a Receber     ]=[Data de Vencimento]
													 lc=[Tipo do Lancamento]
													 [Tipo do Lancamento]=""
													 [Tipo do Lancamento]=lc

													 While True
																 NDIAS=0
                                 If Dow([Data a Receber])="Sat"
																		Then NDIAS=2
                                    Else If Dow([Data a Receber])="Sun"
																						Then NDIAS=1
																				 EndIf
																 EndIf
                                 DIA = [Data a Receber]
                                 GetRecord "\\Sistemas\\Cadastro\\Feriados" DIA To REG_DIA
                                 If Retval
                                    Then NDIAS=REG_DIA["Dias a Pagar"]
                                 EndIf
																 Moveto "Duplic"
                                 [Data a Receber]=[Data a Receber]+NDIAS
																 If NDIAS=0 or Isblank(NDIAS)
																		Then QuitLoop
																 EndIf
													 EndWhile
													 UnLockRecord
												 EndFor
												 Ativa_Form("DupBaixa")
												 Tecla_Funcao=""
												 DIGITAC =False
												 CHAVEI=9
												 Return
								  EndIf
								 EndIf
					Else Switch
					       Case TITULOS_SOBAIXAS    : FastMsg("Fun‡Æo nÆo permitida, s¢ baixas !")
					       Case TITULOS_SOANOTACOES : FastMsg("Fun‡Æo nÆo permitida, s¢ anota‡”es !")
					       OtherWise                : FastMsg("Fun‡Æo nÆo permitida, t¡tulo j  baixado !")
					     EndSwitch  
				 EndIf
         QuitLoop
    Case RetVal="F5":
         Del
         Observacao("Observacao")
         Quitloop
    Case Retval="F7":
         Del
         Play "Rp_0000"
         CHAVEI=9
         Tecla_Funcao=""
         DIGITAC =False
         Return             
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Opcao_Ver=False
           
           PAGINA("DupBaixa","MR")
           NLANC=[Numero do Lancamento]
           NITEM=[Sequencia da Baixa  ]
           Switch
             Case EDITAR="S":
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEI=0
                          Controla_EdicaoI()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S" : 
                  If TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else EXCLUI_BAIXA = True                          
                          If PARAM_SALDO_GERA_NOVO_LANC="S" And [Duplic->Numero Lancamento Pai]<>""
                             Then SQ_BAIXA_NOVO  = [Sequencia da Baixa]
                                  
                                  NLANC_NOVO     = [Duplic->Numero do Lancamento]                  ;[Duplic->Numero Lancamento Pai]
                                  DT_LANCTO_NOVO = [Duplic->Data de Vencimento   ]
                                  DT_LANCTO_NOVO = DateVal(SubStr(DT_LANCTO_NOVO,1,2)+"."+SubStr(DT_LANCTO_NOVO,4,2)+"."+SubStr(DT_LANCTO_NOVO,7,4))                                  
                                  
                                  VR_JUROS_NOVO = [Valor do Juros]
                                  VR_JUROSD_NOVO= [Valor do Juros Devidos]  
                                  VR_RECEB_NOVO = [Valor do Recebimento]   
                                  VR_COMIS_NOVO = [Valor da Comissao]       
                                  VR_DESCT_NOVO = [Valor do Desconto]
                                  
                                  Moveto "Duplic"
                                  Home
                                  Moveto [Numero Lancamento Pai]  
                                  Locate NLANC_NOVO
                                  If RetVal
                                     Then If NLANC_NOVO=""
                                             Then EXCLUI_BAIXA = False
                                             Else DynArray LANCTO_NOVO[]
                                                  CONT_LANCTO_NOVO = 0
                                         
                                          While True
                                            CONT_LANCTO_NOVO = CONT_LANCTO_NOVO + 1
                                            LANCTO_NOVO[CONT_LANCTO_NOVO] = AlinhM(StrVal(CONT_LANCTO_NOVO),2)+[Numero do Lancamento]+Format("D13",[Data de Vencimento])+
                                                                            Format("W12.2",[Valor do Documento])+Format("W12.2",[Saldo do Documento])+
                                                                            Format("W12.2",[Valor da Comissao]) +Format("W12.2",[Saldo da Comissao])
                                            Skip
                                            If EOT() Then QuitLoop EndIf
                                            Locate Next NLANC_NOVO
                                            If Not RetVal Then QuitLoop EndIf
                                          EndWhile
                                          
                                          If DynArraySize(LANCTO_NOVO)>0
                                             Then For CONT_LANCTO_NOVO From 1 To DynArraySize(LANCTO_NOVO)  ;;; Saber qual a posi‡Æo do meu lancamento
                                                    If SubStr(LANCTO_NOVO[CONT_LANCTO_NOVO],3,6)=NLANC
                                                       Then QuitLoop 
                                                    EndIf
                                                  Endfor
                                                  
                                                  MSG = ""
                                                  Ativa_Form("Duplic")
                                                  For wii From 1 To DynArraySize(LANCTO_NOVO)
                                                    If SubStr(LANCTO_NOVO[wii],3,6)=NLANC Then Loop EndIf  
                                                    Moveto "Duplic"
                                                    Moveto [Numero do Lancamento]
                                                    Locate SubStr(LANCTO_NOVO[wii],3,6)
                                                    If RetVal
                                                       Then Moveto "DupBaixa"
                                                            If Not RecordStatus("New")
                                                                Then If MSG <> ""
                                                                        Then MSG = MSG + ", "  
                                                                     EndIf
                                                                     MSG = MSG + SubStr(LANCTO_NOVO[wii],3,6)
                                                                     If Len(MSG) > 64
                                                                        Then MSG = MSG +"\n"
                                                                     EndIf
                                                            EndIf                                            
                                                    EndIf
                                                  Endfor                        
                                                  
                                                  If MSG<>""
                                                     Then EXCLUI_BAIXA = False
                                                          MSG = "Ser  necess rio excluir a(s) baixa(s) dos(s) seguinte(s) lan‡amento(s): //"+MSG+"//"
                                                          MSG = MSG + "Que se refere(m) a(s) baixa(s) parcial(is) efetuada(s)!"  
                                                          Mensagem(MSG)
                                                  EndIf
                                                  
                                                  Moveto "Duplic"
                                                  Moveto [Numero do Lancamento]
                                                  Locate NLANC
                                                  Ativa_Form("DupBaixa")
                                          EndIf
                                          EndIf 
                                     Else Ativa_Form("Duplic")
                                          Moveto "Duplic"
                                          Moveto [Numero do Lancamento]  
                                          Locate NLANC
                                          Ativa_Form("DupBaixa")
                                  EndIf
                                  Moveto "\\Sistemas\\CtaRec\\DupBaixa"
                                  Moveto [Sequencia da Baixa]
                                  Locate SQ_BAIXA_NOVO
                                  If Not EXCLUI_BAIXA
                                     Then Release Vars VR_DOCTO,VR_COMIS,LANCTO_NOVO,CONT_LANCTO_NOVO,DT_LANCTO,DT_LANCTO_NOVO,MSG,wi,VR_JUROS_NOVO,VR_RECEB_NOVO,VR_COMIS_NOVO
                                          QuitLoop
                                  EndIf                                     
                          EndIf
                          
                          If EXCLUI_BAIXA
                             Then EXCLUI_BAIXA   = False
                                  EXCLUIR_LANCTO = ""
                                  If Checa_Controle([Numero_Controle_Dia])
                                     Then CARREG_ACERTADO=False
                                          If Not IsBlank([Numero_Carregamento])
                                             Then Campo_Atual=Field()
                                                  Moveto [Numero_Carregamento]
                                                  Ativa_Lookup()
                                                  Moveto [Numero_Carregamento]
                                                  Locate [DupBaixa->Numero_Carregamento]
                                                  If RetVal
                                                     Then If [Situacao]="ACERTADO"
                                                             Then Mensagem("Carregamento J  foi ACERTADA !")
                                                                  CARREG_ACERTADO=True
                                                          EndIf
                                                  EndIf
                                                  KeyPress "ESC"
                                                  Moveto Field Campo_Atual
                                          EndIf
                                          If Not CARREG_ACERTADO
                                             Then If PARAM_BLOQUEIA_ALTERA_BAIXA="N" Or
                                                     (TITULOS_SOBXDIA=True And [Data do Pagamento]=Today()) Or
                                                     (PARAM_BLOQUEIA_ALTERA_BAIXA="P" And Checa_Supervisor()) 
                                                     Then If QuerExcluir("")
                                                             Then If PARAM_SALDO_GERA_NOVO_LANC="S" And Search("PROX LANCTO",[Duplic->Observacoes])>0
                                                                     Then EXCLUIR_LANCTO = SubStr([Duplic->Observacoes],Len([Duplic->Observacoes])-5,6)
                                                                     
                                                                          COR_MENSAGEM="ALERTA"
                                                                          MSG = "Esta exclusÆo far  com que o residuo da divida //"
                                                                          MSG = MSG + "do lan‡amento "+EXCLUIR_LANCTO+"//"
                                                                          MSG = MSG + "seja exclu¡do e efetuar  o estorno para este lan‡amento !//"
                                                                          MSG = MSG + "Deseja realmente excluir esta baixa ?"
                                                                          If Not ConfGeral_N(MSG)
                                                                             Then UnLockRecord
                                                                                  QuitLoop 
                                                                           EndIf
                                                                  EndIf
                                                                  VROLD  = [Valor do Recebimento  ]
                                                                  JSOLD  = [Valor do Juros        ]
                                                                  JSOLDD = [Valor do Juros Devidos]
                                                                  DSOLD  = [Valor do Desconto     ]
                                                                  VCOLD  = [Valor da Comissao     ]
                                                                  CHAVEI=8
                                                                  If CONTA()
                                                                     Then SEQ_BAIXA    = [Sequencia da Baixa]
                                                                          PARAM_FT_RAT = "RATEIO_EXCLUSAO"
                                                                          PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                                                          
                                                                          Moveto "DupBaixa"
                                                                          TIT()
                                                                          Grava_LogEx("Duplic Baixa")
                                                                          If PARAM_SALDO_GERA_NOVO_LANC="S"
                                                                             Then If Search("PROX LANCT",Upper([Duplic->Observacoes]))>0 
                                                                                     Then EXCLUI_BAIXA=True
                                                                                  EndIf
                                                                          EndIf           
                                                                          Del
                                                                  EndIf
                                                             Else UnLockRecord     
                                                          EndIf        
                                                     Else UnLockRecord
                                                  EndIf
                                             Else UnLockRecord
                                          EndIf
                                     Else UnLockRecord
                                  EndIf
                          EndIf
                          
                          ;**** ExclusÆo de todos os lan‡amentos posteriores caso ocorra exclusÆo de baixa de um lan‡amento sequencial ****
                          If PARAM_SALDO_GERA_NOVO_LANC="S" And EXCLUI_BAIXA And [Duplic->Numero Lancamento Pai]<>"" And EXCLUIR_LANCTO<>""
                             Then VR_DOCTO = 0
                                  VR_COMIS = 0
                                  
                                  Ativa_Form("Duplic")
                                  
                                  Moveto "Duplic"
                                  Moveto [Numero do Lancamento]
                                  Locate EXCLUIR_LANCTO
                                  If RetVal 
                                     Then VR_DOCTO = [Valor do Documento]
                                          VR_COMIS = [Valor da Comissao ]
                                          Del
                                  EndIf  
                                  
                                  Home
                                  Moveto [Numero do Lancamento]
                                  Locate NLANC                                                        
                                  If RetVal
                                     Then [Valor do Documento] = Round(VR_RECEB_NOVO - (VR_JUROS_NOVO + VR_JUROSD_NOVO - VR_DESCT_NOVO) + VR_DOCTO,2)  
                                          [Saldo do Documento] = [Valor do Documento]
                                          
                                          If VR_COMIS_NOVO <0 Then VR_COMIS_NOVO=0 EndIf
                                          If VR_COMIS < 0
                                             Then [Valor da Comissao ] = Round(VR_COMIS_NOVO,2)
                                             Else [Valor da Comissao ] = Round(VR_COMIS + VR_COMIS_NOVO,2)
                                          EndIf   
                                          [Saldo da Comissao ] = [Valor da Comissao]
                                          
                                          If Search("PROX LANCTO",[Duplic->Observacoes])>0
                                             Then [Observacoes] = SubStR([Observacoes],1,len([Observacoes])-29)
                                          EndIf   
                                          SaveTables     
                                  EndIf
                                  Ativa_Form("DupBaixa")
                                  Moveto "\\Sistemas\\CtaRec\\DupBaixa"
                                  Release Vars VR_DOCTO,VR_COMIS,LANCTO_NOVO,CONT_LANCTO_NOVO,DT_LANCTO,DT_LANCTO_NOVO,MSG,wii,VR_JUROS_NOVO,VR_RECEB_NOVO,VR_COMIS_NOVO
                                  QuitLoop
                          EndIf
                  EndIf                 
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()                              
         EndWhile
         QuitLoop
    Case Retval="ESC":
         SetaCorRegistro("Padrao")
         If TITULOS_SOBAIXAS 
             Then DIGITAC =False
         EndIf
         
         If TITULOS_SOANOTACOES
            Then Tecla_Funcao="F9"
            Else Tecla_Funcao=-10
         EndIf
            
         CHAVEI=9
         Del
         Return
    Case Retval="PGDN":
         CHAVEI=9
         Tecla_Funcao=""
         DIGITAC =False
         Del
         Return
    Case RetVal="F3":
         Del
         Moveto [Sequencia da Baixa]
         If RecordStatus("New")
            Then MENSAGEM("Sem Baixa p/ ver !")
                 QuitLoop
         EndIf
         Opcao_Ver=True
         CHAVEI=0
         Home
         NITEM=[Sequencia da Baixa]
         Inicia_Registro()
         Digita_Baixa()          
         QuitLoop
    Case Retval="ENTER":
         If [Duplic->Saldo do Documento]<=0
            Then Fastmsg("T¡tulo j  liquidado !")
                 Loop
         EndIf
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         NITEM=[]
         Del
         If Type(NumVal(NITEM))<>"N"             
            Then Mensagem("A sequˆncia \""+NITEM+"\" n„o ‚ um numero v lido!")
                 QuitLoop
         EndIf   
         Locate NLANC,NITEM
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End Down
                 [Numero do Lancamento]=NLANC
                 [Sequencia da Baixa  ]=NITEM
                 UnLockRecord
                 Locate NLANC,NITEM
         EndIf
         If Not IsLockRecord()
            Then If (CHAVEI=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                    (CHAVEI=0 And Checa_Controle([Numero_Controle_Dia]))
                    Then Return
                 EndIf
         EndIf
         If CHAVEI=1
            Then Del
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc ; (CHAVEI)

;*******************************************************************************
;* Rotina para Gravacao/Leitura Pagto a Vista                                  *
;*******************************************************************************
Proc Registro_Baixa(Funcao_Registro)
Private Funcao_Registro

Switch
  Case Funcao_Registro="Gravar":
       [Data do Pagamento      ] =  VSD_I_DtPagto
       [Valor do Recebimento   ] =  VSD_I_Vr_Pagto
       [Valor do Desconto      ] =  VSD_I_Vr_Descto
       [Valor do Juros         ] =  VSD_I_Vr_Juros
       [Codigo da Conta        ] =  VSD_I_Conta
       [Codigo da Empresa      ] =  [Duplic->Codigo da Empresa]
       [Descricao da Conta     ] =  VSD_I_Descricao_Conta
       [Tipo da Baixa          ] =  VSD_I_TpBaixa
       [Valor do Juros Devidos ] =  VSD_I_JurosD
       [Valor da Comissao      ] =  VSD_I_Vr_Comissao
       [Data Pagamento Comissao] =  VSD_I_DtPgComis
       [Codigo Plano_Conta     ] =  VSD_I_PlContas
       [Codigo CCusto          ] =  VSD_I_CCusto
       [Descricao Plano_Conta  ] =  VSD_I_Descricao_PlContas
       [Descricao CCusto       ] =  VSD_I_Descricao_CCusto
       [Codigo do Historico    ] =  VSD_I_Codigo_Hist
       [Descricao do Historico ] =  VSD_I_Descri_Hist
       [Numero_Carregamento    ] =  VSD_I_NCarreg
       [Valor Dinheiro         ] =  VSD_I_Vr_DN
       [Valor Cheque           ] =  VSD_I_Vr_CH
       [Valor Cheque Pre_Datado] =  VSD_I_Vr_CP
       [DataEfetivadoBanco     ] = VSD_I_DataEfetivado
       [Tem Rateio             ] = VSD_I_Tem_Rateio       

       If CHAVEI=1 
          Then Controle_Dia()
          
               if not isblank(VSD_I_DataEfetivado)
                  then WS_DataEfetivadoBanco=VSD_I_DataEfetivado
               endif
       EndIf
       UnLockRecord
       
  Case Funcao_Registro="Ler": 
       VSD_I_SEQ                =  [Sequencia da Baixa     ]
       VSD_I_LCXBC              =  [Lancamento Conta Corrente]
       VSD_I_DtPagto            =  [Data do Pagamento      ]
       VSD_I_Vr_Pagto           =  [Valor do Recebimento   ]
       VSD_I_Vr_Descto          =  [Valor do Desconto      ]
       VSD_I_Vr_Juros           =  [Valor do Juros         ]

       VSD_I_Conta              =  [Codigo da Conta        ]
       VSD_I_Descricao_Conta    =  [Descricao da Conta     ]

;;;;;;;If PARAM_CTA_BAIXA_IGUAL_LANCTO="S"
;;;;;;;   Then VSD_I_Conta              =  [Codigo da Conta        ]
;;;;;;;        VSD_I_Descricao_Conta    =  [Descricao da Conta     ]
;;;;;;;   Else VSD_I_Conta              =  ""
;;;;;;;        VSD_I_Descricao_Conta    =  ""
;;;;;;;Endif
       
       VSD_I_Tipo_Conta         =  [Tipo da Conta          ]
       VSD_I_TpBaixa            =  [Tipo da Baixa          ]
       VSD_I_JurosD             =  [Valor do Juros Devidos ]
       VSD_I_Vr_Comissao        =  [Valor da Comissao      ]
       VSD_I_DtPgComis          =  [Data Pagamento Comissao]
       VSD_I_PlContas           =  [Codigo Plano_Conta     ]
       VSD_I_Descricao_PlContas =  LTrim([Descricao Plano_Conta ])
       VSD_I_CCusto             =  [Codigo CCusto          ]
       VSD_I_Descricao_CCusto   =  LTrim([Descricao CCusto      ])
       VSD_I_Codigo_Hist        =  [Codigo do Historico    ]
       VSD_I_Descri_Hist        =  [Descricao do Historico ]
      
      ;**********Puxar o Numero de Carregamento do Titulo 15.07.2015**********
       GetRecord "\\Sistemas\\Ctarec\\Duplic" [DupBaixa->Numero do Lancamento] To REG_NCARREG
       If RetVal And PARAM_UTILIZA_NUM_CARREGAMENTO="S" And CHAVEI=1
          Then VSD_I_NCarreg    =  REG_NCARREG["Numero_Carregamento_Orig"]
          Else VSD_I_NCarreg    =  [Numero_Carregamento    ]
       EndIf   
       
       VSD_I_Vr_DN              =  [Valor Dinheiro         ]
       VSD_I_Vr_CH              =  [Valor Cheque           ]
       VSD_I_Vr_CP              =  [Valor Cheque Pre_Datado]
       VSD_I_Vr_FRC             =  VSD_I_Vr_DN+VSD_I_Vr_CH+VSD_I_Vr_CP
       VSD_I_NDA                 =  BlankNum()
       If Not IsBlank(VSD_I_DtPagto)
          Then VSD_I_NDA        =  VSD_I_DtPagto-[Duplic->Data de Vencimento]
          Else VSD_I_NDA        =  0
       EndIf
       If VSD_I_NDA<=0 Then  VSD_I_NDA=BlankNum() EndIf

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

       VSDGU_ORIGEM     = [Bx Sistema Gerador     ]
       VSDGU_TPDOCTO    = [Bx Tipo Docto Gerador  ]
       VSDGU_NUMDOCTO   = [Bx Numero Docto Gerador]
       VSDGU_SEQDOCTO   = [Bx Sequencia Gerador   ]
       VSD_I_Tem_Rateio = [Tem Rateio             ]

       Switch
         Case VSD_I_Tem_Rateio = "S" : VSD_I_Tem_Rateio_SN = "SIM"
         OtherWise                   : VSD_I_Tem_Rateio_SN = ""
       EndSwitch    
       UTILIZA_RAT_BAIXA        = VSD_I_Tem_Rateio
       
       VSD_I_ObsBaixa =  [Observacoes]
       
       If TITULOS_SOBXDIA
         Then If IsAssigned(CONTA_USUARIO)
                 Then VSD_I_Conta=CONTA_USUARIO
              EndIf
       EndIf
       
       VSD_I_DataEfetivado     = [DataEfetivadoBanco     ]       
              
EndSwitch
EndProc  ; (Registro_Baixa)

;*******************************************************************************
;* Rotina para Calcular os Juros                                               *
;*******************************************************************************
Proc Calcula(PARAM)
Private PARAM

Switch
  Case PARAM="Juros Devidos" : 
       Calcula("Calcula Juros") 
       VSD_I_JurosD = VRJUROS
       VSD_I_JurosD =  VSD_I_JurosD - VSD_I_Vr_Juros
       If VSD_I_JurosD <= 0.01 Then VSD_I_JurosD = BlankNum() EndIf
  Case PARAM="Calcula Juros" :
       If Not IsAssigned(NDA) Then NDA=0 EndIf
       If Not IsAssigned(TXM) Then TXM=0 EndIf
       VSD_I_NDA=NDA 
       If VSD_I_NDA<=0 Then  VSD_I_NDA=BlankNum() EndIf
       If [Duplic->Taxa de Juros]>0
          Then TXJ=([Duplic->Taxa de Juros]/[Duplic->NDias Taxa de Juros])*NDA
               VRJUROS=(([Duplic->Saldo do Documento]*TXJ)/100)+([Duplic->Saldo do Documento]*TXM/100)
          Else VRJUROS=(([Duplic->Valor de Juros]/[Duplic->NDias Taxa de Juros])*NDA)
               VRJUROS=VRJUROS+(([Duplic->Saldo do Documento]*TXM)/100)
       EndIf
        
       If VRJUROS=0
          Then VRJUROS =BlankNum()
       EndIf
       
  Case PARAM="Calcula Baixa" : 
       If VSD_I_DtPagto>[Duplic->Data de Vencimento]
          Then NDA=VSD_I_DtPagto-[Duplic->Data de Vencimento]
               If NDA <=2
                  Then Switch
                        Case Dow([Duplic->Data de Vencimento])="Sat" : NDA=NDA-2
                        Case Dow([Duplic->Data de Vencimento])="Sun" : NDA=NDA-1               
                       EndSwitch
               EndIf                                                 
               If NDA <> 0
                  Then TXM=[Duplic->Multa]
                  Else TXM=0
               EndIf
          Else NDA=0
               TXM=0
       EndIf   
       Calcula("Calcula Juros")
       
       If VSD_I_DtPagto<=[Duplic->Data Limite Desconto]
           Then VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]-[Duplic->Valor do Desconto]
                VSD_I_Vr_Descto=[Duplic->Valor do Desconto ]
           Else VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]
                VSD_I_Vr_Descto=BlankNum()
        EndIf
        
        If VRJUROS>0
           Then VSD_I_VR_Juros =VRJUROS
           Else VSD_I_VR_Juros =BlankNum()
        EndIf
        VSD_I_Vr_Pagto =Round(VSD_I_Vr_Pagto+VSD_I_VR_Juros,2)

        TXCOMIS=((VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)*100)
                /([Duplic->Saldo do Documento]+(VROLD+DSOLD-JSOLD))
        VSD_I_Vr_Comissao=NDecimal((([Duplic->Saldo da Comissao]+VCOLD)*TXCOMIS)/100,2)
        If VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]+0.01) or
           VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]-0.01)   
           Then VSD_I_Vr_Comissao=[Duplic->Saldo da Comissao]   
        EndIf 
          
        If IsBlank([Codigo Plano_Conta])
           Then Switch
                  Case PARAM_PLANO_CONTA_DEBITO<>""  And [Duplic->Tipo do Pagamento]="CD" :
                       If Not IsBlank(PARAM_PLANO_CONTA_DEBITO)
                           Then VSD_I_PlContas=PARAM_PLANO_CONTA_DEBITO
                                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_DEBITO
                                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                       EndIf
                  Case PARAM_PLANO_CONTA_CREDITO<>"" And [Duplic->Tipo do Pagamento]="CT" : 
                       If Not IsBlank(PARAM_PLANO_CONTA_CREDITO)
                           Then VSD_I_PlContas=PARAM_PLANO_CONTA_CREDITO
                                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_CREDITO
                                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                       EndIf
                  Case PARAM_PLANO_CONTA_CREDITO<>"" And [Duplic->Tipo do Pagamento]="CL" : 
                       If Not IsBlank(PARAM_PLANO_CONTA_CREDITO)
                           Then VSD_I_PlContas=PARAM_PLANO_CONTA_CREDITO
                                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_CREDITO
                                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                       EndIf
                  Case VSD_I_DtPagto=[Duplic->Data de Emissao] : 
                       If Not IsBlank(PARAM_PLANO_CONTA_AVISTA)
                          Then VSD_I_PlContas=PARAM_PLANO_CONTA_AVISTA
                               [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA
                               VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                       EndIf
                  OtherWise : If Not IsBlank(PARAM_PLANO_CONTA_APRAZO)
                                 Then VSD_I_PlContas=PARAM_PLANO_CONTA_APRAZO
                                      [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
                                      VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                              EndIf
                EndSwitch
        EndIf                            
EndSwitch
  
Return 

EndProc ;Calcula() 

;*******************************************************************************
;* Rotina para Lancamento a Vista                                              *
;*******************************************************************************
Proc Digita_Baixa()
INICIO_DIALOG=True

If PARAM_SALDO_GERA_NOVO_LANC="S" 
   Then If Not Opcao_Ver And Search("PROX LANCTO",[Duplic->Observacoes])>0
           Then Switch 
                  Case [Duplic->Saldo do Documento]=0 And Search("PROX LANCTO",[Duplic->Observacoes])>0 :
                       Mensagem("Altera‡„o n„o permitida, foi gerado um lan‡amento sequencial"+
                                SubStr([Duplic->Observacoes],Len([Duplic->Observacoes])-6,7)+".//Se  por algum motivo deseja altera‡„o nesta baixa, "+
                                "dever  excluir e//lan‡ar novamente !"+Spaces(49))
                       Return
                  OtherWise :
                       Mensagem("Altera‡„o  n„o permitida, se ocorreu algum erro no lan‡amento//desta baixa, efetuar a exclus„o e gerar esta baixa novamente !")
                       Return  
                EndSwitch
        EndIf         
EndIf 

If TITULOS_SOANOTACOES
   Then FastMsg("Altera‡„o n„o permitida!")
        Return
EndIf

ANT_VSD_I_Vr_Pagto = BlankNum()

Showdialog "Dados da Baixa [    ]" Proc "Baixa_Dialog"
  Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea",
        "HOME","END","PGDN","PGUP","F5","F4","F7",-65
    @ 4,0 height 19 width 80
                                                                  
  Accept @ -01,44 Width 4 "A1" Tag "I_Seq" To VSD_I_SEQ

  Label  @ 00,00 "Dt Pagto" For "I_DtPagto"
  Accept @ 01,00 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DtPagto" to VSD_I_DtPagto

  Label  @ 00,13 "NDA" For "I_NDA"
  Accept @ 01,14 Width 08 "N" picture "#*#" Tag "I_NDA" to VSD_I_NDA

  Label  @ 00,22 "Tipo da Baixa" For "I_TpBaixa"
  Accept @ 01,23 Width 13 "A12" picture "NORMAL,DEVOLUCAO,CANCELADO" Tag "I_TpBaixa" to VSD_I_TpBaixa

  Label  @ 00,36 "VrRecebimento" For "I_Vr_Pagto"
  Accept @ 01,37 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_Pagto" to VSD_I_Vr_Pagto

  Label  @ 00,50 "VrJuros/Multa" For "I_Vr_Juros"
  Accept @ 01,51 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_Juros" to VSD_I_Vr_Juros

  Label  @ 00,64 "Vr Descto" For "I_Vr_Descto"
  Accept @ 01,65 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_Descto" to VSD_I_Vr_Descto

  Label  @ 02,00 "Juros Devidos" For "I_JurosD"
  Accept @ 03,00 Width 13 "$" picture "#*#.[##]" Tag "I_JurosD" to VSD_I_JurosD

  Label  @ 02,22 "Vr Comiss„o" For "I_Vr_Comissao"
  Accept @ 03,23 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_Comissao" to VSD_I_Vr_Comissao

  Label  @ 02,36 "DtPagComiss„o" For "I_DtPgComis"
  Accept @ 03,37 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DtPgComis" to VSD_I_DtPgComis

  @ 02,51 ?? "Vr Original"
  @ 03,52 ?? Format("W12.2,ECI",[Duplic->Valor do Documento]) 
  @ 02,65 ?? "Saldo Titulo"
  @ 03,66 ?? Format("W12.2,ECI",[Duplic->Saldo do Documento]) 
   
  PaintCanvas Attribute 47 02, 51, 02, 63 
  PaintCanvas Attribute 47 03, 51, 03, 63
  PaintCanvas Attribute 47 02, 65, 02, 77
  PaintCanvas Attribute 47 03, 65, 03, 77

  Label  @ 04,00 "Conta" For "I_Conta"
  Accept @ 05,00 Width 07 "A4" picture "#*#" Tag "I_Conta" to VSD_I_Conta
  Accept @ 05,07 Width 43 "A30" picture "!*!" Tag "I_Descricao_Conta" to VSD_I_Descricao_Conta

  Label  @ 04,50 "Dt Efetivado" For "I_DataEfetivado"
  Accept @ 05,51 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DataEfetivado" to VSD_I_DataEfetivado

  Label  @ 06,00 "N§Carreg" For "I_NCarreg"
  Accept @ 07,00 Width 09 "A6" picture "#*#" Tag "I_NCarreg" to VSD_I_NCarreg

  Label  @ 06,09 "Dinheiro" For "I_Vr_DN"
  Accept @ 07,10 Width 12 "$" picture "#*#.[##]" Tag "I_Vr_DN" to VSD_I_Vr_DN

  Label  @ 06,22 "Cheque" For "I_Vr_CH"
  Accept @ 07,23 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_CH" to VSD_I_Vr_CH

  Label  @ 06,36 "Ch.Pre-Datado" For "I_Vr_CP"
  Accept @ 07,37 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_CP" to VSD_I_Vr_CP

  Label  @ 06,50 "Soma Dn+Ch+Cp" For "I_Vr_FRC"
  Accept @ 07,51 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_FRC" to VSD_I_Vr_FRC

  Label  @ 08,00 "Plano Contas" For "I_PlContas"
  Accept @ 09,00 Width 16 "A13" picture "!*!" Tag "I_PlContas" to VSD_I_PlContas
  Accept @ 09,16 Width 62 "A40" picture "!*!" Tag "I_Descricao_PlContas" to VSD_I_Descricao_PlContas

  Label  @ 10,00 "Centro Custo" For "I_CCusto"
  Accept @ 11,00 Width 10 "A7" picture "###.###" Tag "I_CCusto" to VSD_I_CCusto
  Accept @ 11,10 Width 54 "A25" picture "!*!" Tag "I_Descricao_CCusto" to VSD_I_Descricao_CCusto

  Label  @ 10,64 "[ Cxa/Bco   ]" For "I_LCXBC"
  Accept @ 11,65 Width 13 "A6" picture "#*#" Tag "I_LCXBC" to VSD_I_LCXBC

  Label  @ 12,00 "Historico" For "I_Codigo_Hist"
  Accept @ 13,00 Width 07 "A4" picture "#*#" Tag "I_Codigo_Hist" to VSD_I_Codigo_Hist
  Accept @ 13,07 Width 57 "A70" picture "!*!" Tag "I_Descri_Hist" to VSD_I_Descri_Hist
  
  Label  @ 12,64 "Tem Rateio" For "I_Tem_Rateio"
  Accept @ 13,65 Width 13 "A3" picture "!*!" Tag "I_Tem_Rateio" to VSD_I_Tem_Rateio_SN

  Label  @ 14,00 "Observa‡äes.." For "I_ObsBaixa"
  Accept @ 15,00 Width 78 "A70" picture "!*!" Tag "I_ObsBaixa" to VSD_I_ObsBaixa

  @ 16,00 ?? Completa(" Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+" "+VSDGU_HORA+" "+VSDGU_CONTROLE,46," ")+
             Completa("Origem "+VSDGU_ORIGEM+"/"+VSDGU_TPDOCTO+"/"+VSDGU_NUMDOCTO+"-"+VSDGU_SEQDOCTO, 31, " ")+" "

  PaintCanvas Attribute 10 16, 00, 16, 77

Enddialog
Mouse Show
EndProc  ; (Digita_Baixa)

;*******************************************************************************
;* Rotina de Digitacao Dados a Vista                                           *
;*******************************************************************************
Proc Baixa_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5

Temp      = True
TECLA     = " Esc=Retornar  "
MSGCAMPO  = ""

If INICIO_DIALOG
   Then ANT_VSD_I_Vr_Pagto = VSD_I_Vr_Pagto 
        If [Tipo da Baixa]="CANCELADO"
          Then Opcao_Ver=True 
          Else If CHAVEI=0
                     Then Campo="I_Vr_Pagto"
                          If Not IsBlank([Numero_Carregamento])
                             Then Moveto [Numero_Carregamento]
                                  Ativa_Lookup()
                                  Moveto [Numero_Carregamento]
                                  Locate [DupBaixa->Numero_Carregamento]
                                  If RetVal
                                     Then If [Situacao]="ACERTADO"
                                             Then Mensagem("Carregamento J  foi ACERTADO !")
                                                  KeyPress "ESC"
                                                  UnLockRecord
                                                  CancelDialog
                                          EndIf
                                  EndIf
                                  KeyPress "ESC"
                          EndIf             
                     Else If TITULOS_SOBXDIA
                             Then VSD_I_DtPagto=Today()                              
                                  Calcula("Calcula Baixa")
                                  Campo="I_TpBaixa"
                             Else Campo="I_DtPagto"
                          EndIf
                  EndIf
       EndIf   
       INICIO_DIALOG=False
EndIf
If Opcao_Ver Then Campo="I_Seq" EndIf

If Disparo="OPEN"
   Then
        TiraSombraShowDialog()
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
              Case Evento["KeyCode"] = -63:
                   ImageRights ReadOnly
                   If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
                      Then JANELA_DIALOG_DESABILITA=True
                   EndIf
                   Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                   VSD_I_ObsBaixa           =  [Observacoes]
                   
                   ImageRights
              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 NITEM=[Sequencia da Baixa]
                        Inicia_Registro()
                EndIf
            EndSwitch
       Case Evento["KeyCode"] = 9:
            Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEI=0
               Then If PARAM_BLOQUEIA_ALTERA_BAIXA="N" Or 
                       (PARAM_BLOQUEIA_ALTERA_BAIXA="P" And Checa_Supervisor())
                       Then If QuerExcluir("")
                               Then CopyFromArray RegItem
                                    CHAVEI=8
                                    If CONTA()
                                       Then TIT()
                                            Grava_LogEx("Duplic Baixa")
                                            Del
                                    EndIf
                                   CancelDialog
                            EndIf       
                    EndIf
            EndIf
       Case Evento["KeyCode"] = -63:
            Temp=False
            Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
            VSD_I_ObsBaixa           =  [Observacoes]
        
       Case Evento["KeyCode"] = -65 : 
            Temp=False
            Switch
              Case IsBlank(VSD_I_LCXBC)                        : 
                   Mensagem("A baixa deve ser conclu¡da para gerar os rateios!")
              Case VSD_I_TpBaixa="NORMAL" And VSD_I_Vr_Pagto>0 : 
                   If VSD_I_Tem_Rateio="S"
                      Then PARAM_FT_RAT = "DIGITA_RATEIO_BAIXA"
                           PLay "\\Sistemas\\CtaCor\\FT_RAT"
                      Else If ConfGeral("Deseja utilizar rateio nesta baixa?")
                              Then VSD_I_Tem_Rateio="S"
                                   PARAM_FT_RAT = "DIGITA_RATEIO_BAIXA"
                                   PLay "\\Sistemas\\CtaCor\\FT_RAT"
                           EndIf    
                   EndIf
              Case VSD_I_Vr_Pagto=0 Or IsBlank(VSD_I_Vr_Pagto) : FastMsg("Informe o valor da baixa!")
              OtherWise                                        : FastMsg("Baixa n„o utiliza rateio!")
            EndSwitch
            
       Case Evento["KeyCode"] = -62  And Not IsBlank(PARAM_RELAT) And CHAVEI=0:
            Imprime_Recibo()
            CHAVEI=9
            DIGITAC =False
            AcceptDialog
            
       Case Evento["KeyCode"] = -59:
            Temp=False
            If Campo="I_Conta" Or
               Campo="I_PlContas" Or
               Campo="I_CCusto" Or
               Campo="I_Codigo_Hist" Or
               Campo="I_NCarreg"
               Then
                    Dynarray WinArray5[]
                    Window Handle Dialog to JANELA
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

                    If Campo="I_Conta"       Then Moveto [Codigo da Conta    ] EndIf
                    If Campo="I_CCusto"      Then Moveto [Codigo CCusto      ] EndIf
                    If Campo="I_PlContas"    Then Moveto [Codigo Plano_Conta ] EndIf
                    If Campo="I_Codigo_Hist" Then Moveto [Codigo do Historico] EndIf
                    If Campo="I_NCarreg"     Then Moveto [Numero_Carregamento] EndIf

                    ConsultaF1()

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

                    echo Normal
                    echo off

                    If Campo="I_Conta"
                       Then VSD_I_Conta          =[Codigo da Conta   ]
                            VSD_I_Descricao_Conta=[Descricao da Conta]
                            Campo="I_Conta"
                    Endif
                    If Campo="I_PlContas"
                       Then VSD_I_PlContas          =[Codigo Plano_Conta   ]
                            VSD_I_Descricao_PlContas=LTrim([Descricao Plano_Conta])
                            VSD_I_Codigo_Hist       =[Codigo do Historico]
                            Campo="I_PlContas"
                   EndIf
                    If Campo="I_CCusto"
                       Then VSD_I_CCusto          =[Codigo CCusto   ]
                            VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                            Campo="I_CCusto"
                   EndIf
                    If Campo="I_Codigo_Hist"
                       Then VSD_I_Codigo_Hist     =[Codigo do Historico]
                            VSD_I_Descri_Hist     =[Descricao do Historico]
                            Campo="I_Codigo_Hist"
                   EndIf
                   If Campo="I_NCarreg"
                       Then VSD_I_NCarreg         =[Numero_Carregamento]
                            Campo="I_NCarreg"
                   EndIf
                   Moveto "DupBaixa"
           EndIf
      Case Evento["KeyCode"] = 27: 
           Temp=False
           Switch
             Case Campo="I_DtPagto"            :
                  If QuerDesfazer("")
                     Then If CHAVEI=1
                             Then SEQ_BAIXA    = [Sequencia da Baixa]
                                  PARAM_FT_RAT = "RATEIO_EXCLUSAO"
                                  PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                  Moveto "DupBaixa"
                          EndIf
                          VSD_I_Vr_Pagto = ANT_VSD_I_Vr_Pagto
                          
                          SEQ_BAIXA    = [Sequencia da Baixa]
                          PARAM_FT_RAT = "VERIFICA_RATEIO_BAIXA"
                          PLay "\\Sistemas\\CtaCor\\FT_RAT"
                          If PARAM_FT_RAT="0"
                             Then PARAM_FT_RAT = "DIGITA_RATEIO_BAIXA"
                                  PLay "\\Sistemas\\CtaCor\\FT_RAT"         
                          EndIf
                           
                          Moveto "DupBaixa"
                          Del 
                          CancelDialog
                  EndIf
             Case Campo="I_TpBaixa"           : If TITULOS_SOBXDIA
                                                   Then If QuerDesfazer("")
                                                           Then Del
                                                                CancelDialog
                                                        EndIf
                                                   Else Campo="I_DtPagto"
                                                EndIf   
             Case Campo="I_Vr_Pagto"          :
                  If CHAVEI=0
                     Then If QuerDesfazer("")
                             Then CopyFromArray RegItem 
                                  [Codigo da Empresa] = RegItem["Codigo da Empresa"]     ;Lookup estava alterando a empresa
                                  VSD_I_Vr_Pagto = ANT_VSD_I_Vr_Pagto
                                  
                                  SEQ_BAIXA    = [Sequencia da Baixa]
                                  PARAM_FT_RAT = "VERIFICA_RATEIO_BAIXA"
                                  PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                  If PARAM_FT_RAT="0"
                                     Then PARAM_FT_RAT = "DIGITA_RATEIO_BAIXA"
                                          PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                  EndIf
                                  CancelDialog
                          EndIf
                     Else Campo="I_TpBaixa"
                  EndIf
             Case Campo="I_Vr_Juros"           : Calcula("Juros Devidos")          
                                                 Campo="I_Vr_Pagto"
             Case Campo="I_Vr_Descto"          : Campo="I_Vr_Juros"
             Case Campo="I_JurosD"             : Campo="I_Vr_Descto"
             Case Campo="I_Vr_Comissao"        :
                      If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                         Then Campo="I_Vr_Descto"
                         Else Campo="I_JurosD"
                      EndIf
             Case Campo="I_DtPgComis"          :
               If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                  Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                          Then Campo="I_Vr_Descto"
                          Else Campo="I_JurosD"
                       EndIf
                  Else Campo="I_Vr_Comissao"
               EndIf
             Case Campo="I_Conta"              :
               If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                  Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                          Then Campo="I_Vr_Descto"
                          Else Campo="I_JurosD"
                       EndIf
                  Else Campo="I_DtPgComis"
               EndIf
             Case Campo="I_DataEfetivado"      : Campo="I_Conta"
             Case Campo="I_NCarreg"            :
                  If CHAVEI=0
                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                     Then Campo="I_Vr_Descto"
                                     Else Campo="I_JurosD"
                                  EndIf
                             Else Campo="I_DtPgComis"
                           EndIf
                     Else If IsAssigned(CONTA_USUARIO)
                             Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                     Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                             Then Campo="I_Vr_Descto"
                                             Else Campo="I_JurosD"
                                          EndIf             
                                     Else Campo="I_DtPgComis"
                                  EndIf
                             Else Campo="I_Conta"
                          EndIf    
                  EndIf
             Case Campo="I_Vr_DN"              :
                 If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                    Then If IsAssigned(CONTA_USUARIO)
                            Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                    Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                            Then Campo="I_Vr_Descto"
                                            Else Campo="I_JurosD"
                                         EndIf             
                                    Else Campo="I_DtPgComis"
                                 EndIf
                            Else Campo="I_Conta"
                         EndIf    
                    Else Campo="I_NCarreg"
                 EndIf
             Case Campo="I_Vr_CH"              : Campo="I_Vr_DN"
             Case Campo="I_Vr_CP"              : Campo="I_Vr_CH"
             Case Campo="I_PlContas"           :
                  If VSD_I_Tipo_Conta="X"
                     Then If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                             Then If CHAVEI=0
                                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                     Then Campo="I_Vr_Descto"
                                                     Else Campo="I_JurosD"
                                                  EndIf
                                             Else Campo="I_DtPgComis"
                                           EndIf
                                     Else If IsAssigned(CONTA_USUARIO)
                                             Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                                     Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                             Then Campo="I_Vr_Descto"
                                                             Else Campo="I_JurosD"
                                                          EndIf             
                                                     Else Campo="I_DtPgComis"
                                                  EndIf
                                             Else Campo="I_Conta"
                                          EndIf
                                  EndIf
                             Else Campo="I_NCarreg"
                          EndIF
                     Else If CHAVEI=0
                             Then Campo="I_DtPgComis"
                             Else If IsAssigned(CONTA_USUARIO)
                                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                     Then Campo="I_Vr_Descto"
                                                     Else Campo="I_JurosD"
                                                  EndIf             
                                             Else Campo="I_DtPgComis"
                                          EndIf
                                     Else Campo="I_Conta"
                                  EndIf    
                          EndIf
                  EndIf
             Case Campo="I_CCusto"             : Campo="I_PlContas"
             Case Campo="I_Codigo_Hist"        : Campo="I_CCusto"
             Case Campo="I_Descri_Hist"        : Campo="I_Codigo_Hist"
           EndSwitch
      Case Evento["KeyCode"] = 13:  
           Temp=False
           Switch
             Case Campo="I_DtPagto"            : Campo="I_TpBaixa"
									VSD_I_DtPagto=ControlValue("I_DtPagto")
                  If IsBlank(VSD_I_DtPagto)
                     Then VSD_I_DtPagto=Today()
                  EndIf
                                                              
                  If Not IntervaloData(VSD_I_DtPagto)
                     Then Campo="I_DtPagto"
                  EndIf

                  If VSD_I_DtPagto < [Duplic->Data de Emissao]
                     Then MENSAGEM("Data de pagamento menor que a data de emiss„o")
                          Campo="I_DtPagto"
                  EndIf

                  If TITULOS_SOBXDIA And VSD_I_DtPagto<>Today()
                     Then MENSAGEM("Permitido data de pagamento somente no dia de hoje!")
                          Campo="I_DtPagto"
                  EndIf
                  
                  If CHAVEI=1
                     Then Calcula("Calcula Baixa")
                          
                          ;**** Rotina no Calcula("Calcula Baixa") ***** Excluir  
                          ;If VSD_I_DtPagto>[Duplic->Data de Vencimento]
                          ;   Then NDA=VSD_I_DtPagto-[Duplic->Data de Vencimento]
                          ;        If NDA <=2
                          ;           Then Switch
                          ;                  Case Dow([Duplic->Data de Vencimento])="Sat" : NDA=NDA-2
                          ;                  Case Dow([Duplic->Data de Vencimento])="Sun" : NDA=NDA-1               
                          ;                EndSwitch
                          ;        EndIf                                                 
                          ;        If NDA <> 0
                          ;           Then TXM=[Duplic->Multa]
                          ;           Else TXM=0
                          ;        EndIf
                          ;   Else NDA=0
                          ;        TXM=0
                          ;EndIf

                          ;VSD_I_NDA=NDA
                          ;If VSD_I_NDA<=0 Then  VSD_I_NDA=BlankNum() EndIf
                          ;If [Duplic->Taxa de Juros]>0
                          ;   Then TXJ=([Duplic->Taxa de Juros]/[Duplic->NDias Taxa de Juros])*NDA
                          ;        VRJUROS=(([Duplic->Saldo do Documento]*TXJ)/100)+([Duplic->Saldo do Documento]*TXM/100)
                          ;   Else VRJUROS=(([Duplic->Valor de Juros]/[Duplic->NDias Taxa de Juros])*NDA)
                          ;        VRJUROS=VRJUROS+(([Duplic->Saldo do Documento]*TXM)/100)
                          ;EndIf

                          ;If VSD_I_DtPagto<=[Duplic->Data Limite Desconto]
                          ;   Then VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]-
                          ;                        [Duplic->Valor do Desconto ]
                          ;        VSD_I_Vr_Descto=[Duplic->Valor do Desconto ]
                          ;   Else VSD_I_Vr_Pagto =[Duplic->Saldo do Documento]
                          ;        VSD_I_Vr_Descto=BlankNum()
                          ;EndIf
                          ;If VRJUROS>0
                          ;   Then VSD_I_VR_Juros =VRJUROS
                          ;   Else VSD_I_VR_Juros =BlankNum()
                          ;EndIf
                          ;VSD_I_Vr_Pagto =Round(VSD_I_Vr_Pagto+VSD_I_VR_Juros,2)

                          ;TXCOMIS=((VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)*100)
                          ;        /([Duplic->Saldo do Documento]+(VROLD+DSOLD-JSOLD))
                          ;VSD_I_Vr_Comissao=NDecimal((([Duplic->Saldo da Comissao]+VCOLD)*TXCOMIS)/100,2)
                          ;If VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]+0.01) or
                          ;   VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]-0.01)   
                          ;   Then VSD_I_Vr_Comissao=[Duplic->Saldo da Comissao]   
                          ;EndIf   
                          
                          ;If VSD_I_DtPagto=[Duplic->Data de Emissao]
                          ;   Then If Not IsBlank(PARAM_PLANO_CONTA_AVISTA) And IsBlank([Codigo Plano_Conta])
                          ;           Then VSD_I_PlContas=PARAM_PLANO_CONTA_AVISTA
                          ;                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA
                          ;                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                          ;        EndIf
                          ;   Else If Not IsBlank(PARAM_PLANO_CONTA_APRAZO) And IsBlank([Codigo Plano_Conta])
                          ;           Then VSD_I_PlContas=PARAM_PLANO_CONTA_APRAZO
                          ;                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
                          ;                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                          ;        EndIf
                          ;EndIf
                  EndIf
                  If PARAM_SALDO_GERA_NOVO_LANC="S"
                     Then Calcula("Calcula Juros")
                          VSD_I_JurosD    = VRJUROS
                  EndIf
                  ULTDATA=VSD_I_DtPagto
             Case Campo="I_TpBaixa"           : Campo="I_Vr_Pagto"
                  VSD_I_TpBaixa=ControlValue("I_TpBaixa")
                  If IsBlank(VSD_I_TpBaixa)
                     Then VSD_I_TpBaixa="N"
                     Else If (VSD_I_TpBaixa="DEVOLUCAO" Or VSD_I_TpBaixa="CANCELADO") And
                             (SYS_CODIGO_CLIENTE="0246" Or SYS_CODIGO_CLIENTE="0305")
                             Then If Not Checa_Supervisor()
                                     Then VSD_I_TpBaixa=""
                                          Return
                                  EndIf
                             Else If VSD_I_TpBaixa="CANCELADO" And SYS_CODIGO_CLIENTE="0229"      
                                     Then If Not Checa_Supervisor()
                                             Then VSD_I_TpBaixa=""
                                                  Return
                                          EndIf
                                  EndIf
                          EndIf        
                  EndIf
                  Switch
                    Case VSD_I_TpBaixa="N": VSD_I_TpBaixa="NORMAL"
                    Case VSD_I_TpBaixa="D": VSD_I_TpBaixa="DEVOLUCAO"
                    Case VSD_I_TpBaixa="C": VSD_I_TpBaixa="CANCELADO"
                  EndSwitch            
                  If VSD_I_TpBaixa<>"NORMAL"
                     Then If not Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                             Then Campo="I_TpBaixa"  
                             Else VSD_I_ObsBaixa           =  [DupBaixa->Observacoes]
                                  If VSD_I_TpBaixa="CANCELADO"
                                     Then VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="CANCELADO "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                          Registro_Baixa("Gravar")
                                          SaveTables
                                          If CONTA()
                                             Then TIT()
                                                  AcceptDialog
                                          EndIf
                                     Else VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="REC. "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                  EndIf
                          EndIf  
                  EndIf
             Case Campo="I_Vr_Pagto"           : Campo="I_Vr_Juros"
                  VSD_I_Vr_Pagto=ControlValue("I_Vr_Pagto")
                  If IsBlank(VSD_I_Vr_Pagto)
                     Then VSD_I_Vr_Pagto=0
                     Else If VSD_I_Vr_Pagto < 0
                             Then 
                                  Campo="I_Vr_Pagto"
                             else        
                                  if PARAM_SALDO_GERA_NOVO_LANC<>"S"
                                     then
                                          if chavei=1 and VSD_I_Vr_Pagto>[Duplic->Saldo do Documento]
                                             then VSD_I_Vr_Juros =VSD_I_Vr_Pagto-[Duplic->Saldo do Documento]
                                                  VSD_I_Vr_Descto=0
                                          endif          
                                  endif          
                          EndIf
                  EndIf
                  If PARAM_SALDO_GERA_NOVO_LANC="S"
                     Then DATA_PAGTO_NOVO = VSD_I_DtPagto
                          SALDO_NOVO      = [Duplic->Saldo do Documento]
                          SALDO_COMISSAO  = [Duplic->Saldo da Comissao]
                  EndIf         
             Case Campo="I_Vr_Juros"           : Campo="I_Vr_Descto"
                  VSD_I_Vr_Juros=ControlValue("I_Vr_Juros")
                  If IsBlank(VSD_I_Vr_Juros)
                     Then VSD_I_Vr_Juros=0
                     Else If VSD_I_Vr_Juros < 0
                             Then Campo="I_Vr_Juros"
                          EndIf
                  EndIf   
                  Calcula("Juros Devidos")                                              
             Case Campo="I_Vr_Descto"          :
                  VSD_I_Vr_Descto=ControlValue("I_Vr_Descto")
                  If IsBlank(VSD_I_Vr_Descto)
                     Then VSD_I_Vr_Descto=0
                     Else If VSD_I_Vr_Descto < 0
                             Then Campo="I_Vr_Descto"
                          EndIf
                  EndIf

                  TXCOMIS=((VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)*100)
                            /([Duplic->Saldo do Documento]+(VROLD+DSOLD-JSOLD))
                  VSD_I_Vr_Comissao=NDecimal((([Duplic->Saldo da Comissao]+VCOLD)*TXCOMIS)/100,2)
                  If VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]+0.01) or
                     VSD_I_Vr_Comissao=([Duplic->Saldo da Comissao]-0.01)   
                     Then VSD_I_Vr_Comissao=[Duplic->Saldo da Comissao]   
                  EndIf   

                  If PARAM_COMISSAO_JUROS_DESCTO="S"
                     Then If VSD_I_Vr_Juros > 0
                             Then TXJUROS=(VSD_I_Vr_Juros*100)/(VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)
                                  VSD_I_Vr_Comissao=VSD_I_Vr_Comissao+NDecimal((VSD_I_Vr_Comissao*TXJUROS)/100,2)
                             Else If VSD_I_Vr_Descto > 0
                                     Then TXDESCTO=(VSD_I_Vr_Descto*100)/(VSD_I_Vr_Pagto + VSD_I_Vr_Descto - VSD_I_Vr_Juros)
                                          VSD_I_Vr_Comissao=VSD_I_Vr_Comissao-NDecimal((VSD_I_Vr_Comissao*TXDESCTO)/100,2)
                                  EndIf
                          EndIf              
                  EndIf  

                  If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                             Then If CHAVEI=0
                                     Then 
                                          If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                                             Then Campo="I_PlContas"
                                             Else Campo="I_NCarreg"
                                          EndIf
                                     Else Campo="I_Conta"
                                  EndIf
                             Else Campo="I_DtPgComis"
                          EndIf
                     Else Campo="I_JurosD"
                  EndIf
             Case Campo="I_JurosD"            :
                  VSD_I_JurosD=ControlValue("I_JurosD")
                  If VSD_I_JurosD=0
                     Then VSD_I_JurosD=BlankNum()
                  EndIf
                  If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                     Then If CHAVEI=0
                             Then 
                                  If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                                     Then Campo="I_PlContas"
                                     Else Campo="I_NCarreg"
                                  EndIf
                             Else Campo="I_Conta"
                          EndIf
                     Else Campo="I_DtPgComis"
                  EndIf
             Case Campo="I_Vr_Comissao"       : Campo="I_DtPgComis"
                  VSD_I_Vr_Comissao=ControlValue("I_Vr_Comissao")
                  If IsBlank(VSD_I_Vr_Comissao)
                     Then VSD_I_Vr_Comissao=0
                     Else If VSD_I_Vr_Comissao < 0
                             Then Campo="I_Vr_Comissao"
                          EndIf
                  EndIf
             Case Campo="I_DtPgComis"       :
                  VSD_I_DtPgComis=ControlValue("I_DtPgComis")
                  If CHAVEI=0
                     Then 
                          If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                             Then Campo="I_PlContas"
                             Else Campo="I_NCarreg"
                          EndIf
                     Else Campo="I_Conta"
                  EndIf
             Case Campo="I_Conta"              :
									VSD_I_Conta=ControlValue("I_Conta")
                  If Not IsBlank(VSD_I_Conta)
                     Then 
                          VSD_I_Conta=AlinhM(VSD_I_Conta,4)
                          
                          ROTINA_CONTA=True
                          If IsAssigned(CONTA_USUARIO)
                             Then If VSD_I_Conta<>CONTA_USUARIO
                                     Then Mensagem("Conta "+VSD_I_Conta+" diferente da conta padr„o "+CONTA_USUARIO+" !")
                                          ROTINA_CONTA=False
                                  EndIf
                             Else      
                          EndIf   
                          If ROTINA_CONTA
                             Then 
                                  Moveto [Codigo da Conta]
                                  Ativa_Lookup()
        													Moveto [Codigo da Conta]
        													Locate VSD_I_Conta
        													If RetVal
                                     Then VSD_I_Conta          =[Codigo da Conta   ]
        																	VSD_I_Descricao_Conta=[Descricao da Conta]
                                          VSD_I_Tipo_Conta     =[Tipo da Conta     ]
        																	KeyPress "ESC"
                                          [Codigo da Conta   ]=VSD_I_Conta

                                          if VSD_I_Tipo_Conta="C"
                                             then
                                                  Campo="I_DataEfetivado"
                                                  if isblank(VSD_I_DataEfetivado)
                                                     then 
                                                          if not isblank(WS_DataEfetivadoBanco)
                                                             then VSD_I_DataEfetivado=WS_DataEfetivadoBanco
                                                             else VSD_I_DataEfetivado=VSD_I_DtPagto
                                                          endif
                                                  endif   
                                             else
                                                  VSD_I_DataEfetivado=blankdate()
                                                  
                                                  If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                                                     then VSD_I_NCarreg=""
                                                          VSD_I_Vr_DN  =BlankNum()
                                                          VSD_I_Vr_CH  =BlankNum()
                                                          VSD_I_Vr_CP  =BlankNum()
                                                          Campo="I_PlContas"
                                                     Else Campo="I_NCarreg"
                                                  EndIf
                                                  
                                                  If SYS_CODIGO_CLIENTE="0102"
                                                     Then If Not IsBlank(VSD_I_PlContas) And
                                                             Not IsBlank(VSD_I_Descri_Hist)
                                                             Then Campo="I_Descri_Hist"
                                                          EndIf
                                                  EndIf
                                          endif
        														 Else Mensagem("Conta n„o Cadastrada !")
        																	VSD_I_Conta 				 =""
        																	VSD_I_Descricao_Conta=""
        																	KeyPress "ESC"
        													EndIf
        													Echo Off
        									EndIf
                          Release Vars ROTINA_CONTA				
									EndIf
             Case Campo="I_DataEfetivado" :
                  VSD_I_DataEfetivado=ControlValue("I_DataEfetivado")
                  if VSD_I_DataEfetivado<VSD_I_DtPagto
                     then mensagem("Data inv lida, inferior ao pagamento !")
                     else 
                          If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                             then VSD_I_NCarreg=""
                                  VSD_I_Vr_DN  =BlankNum()
                                  VSD_I_Vr_CH  =BlankNum()
                                  VSD_I_Vr_CP  =BlankNum()
                                  Campo="I_PlContas"
                             Else Campo="I_NCarreg"
                          EndIf
                          If SYS_CODIGO_CLIENTE="0102"
                             Then If Not IsBlank(VSD_I_PlContas) And
                                     Not IsBlank(VSD_I_Descri_Hist)
                                     Then Campo="I_Descri_Hist"
                                  EndIf
                          EndIf
                          
                          
                  endif        
                  
                  
             Case Campo="I_NCarreg"       :
                  VSD_I_NCarreg=ControlValue("I_NCarreg")
                  If Not IsBlank(VSD_I_NCarreg)
                     Then VSD_I_NCarreg=AlinhM(VSD_I_NCarreg,6)
                          Moveto [Numero_Carregamento]
                          Ativa_Lookup()
                          Moveto [Numero_Carregamento]
                          Locate VSD_I_NCarreg
                          If RetVal
                             Then SITUACAO_CARREG=[Situacao]
                                  KeyPress "ESC"
                                  If SITUACAO_CARREG="ACERTADO"
                                     Then Mensagem("Carregamento J  foi ACERTADO !")
                                     Else Campo="I_Vr_DN"
                                  EndIf  
                             Else Mensagem("N§ Carregamento n„o Encontrado !")
                                  VSD_I_NCarreg=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else If PARAM_UTILIZA_FORMAS_RECEBER="N" or IsBlank(PARAM_UTILIZA_FORMAS_RECEBER)
                             Then Campo="I_PlContas"
                             Else Campo="I_Vr_DN"
                          EndIf
                  EndIf
             Case Campo="I_Vr_DN"              : Campo="I_Vr_CH"
                  VSD_I_Vr_DN=ControlValue("I_Vr_DN")
                  If VSD_I_Vr_DN=0
                     Then VSD_I_Vr_DN=BlankNum()
                  EndIf
             Case Campo="I_Vr_CH"              : Campo="I_Vr_CP"
                  VSD_I_Vr_CH=ControlValue("I_Vr_CH")
                  If VSD_I_Vr_CH=0
                     Then VSD_I_Vr_CH=BlankNum()
                  EndIf
             Case Campo="I_Vr_CP"              : Campo="I_PlContas"
                  VSD_I_Vr_CP=ControlValue("I_Vr_CP")
                  If VSD_I_Vr_CP=0
                     Then VSD_I_Vr_CP=BlankNum()
                  EndIf
                  VSD_I_Vr_FRC=VSD_I_Vr_DN+VSD_I_Vr_CH+VSD_I_Vr_CP

             Case Campo="I_PlContas"           :
                  VSD_I_PlContas=ControlValue("I_PlContas")
                  If Not IsBlank(VSD_I_PlContas)
                     Then Moveto [Codigo Plano_Conta]
                          Ativa_Lookup()
                          Moveto [Codigo Plano_Conta]
                          Locate VSD_I_PlContas
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          KeyPress "ESC"
                                     Else
                                          VSD_I_PlContas          =[Codigo Plano_Conta]
                                          VSD_I_Descricao_PlContas=LTrim([Descricao Plano_Conta])
                                          If Not IsBlank(PARAM_HISTORICO_DEFAULT)
                                             Then VSD_I_Codigo_Hist       =PARAM_HISTORICO_DEFAULT
                                                  VSD_I_Descri_Hist=""
                                             Else VSD_I_Codigo_Hist       =[Codigo do Historico]
                                          EndIf
                                          KeyPress "ESC"
                                          [Codigo Plano_Conta] =VSD_I_PlContas
                                          Campo="I_CCusto"
                                  Endif
                             Else Mensagem("Conta nao Cadastrada !")
                                  VSD_I_PlContas          =""
                                  VSD_I_Descricao_PlContas=""
                                  KeyPress "ESC"
                          EndIf
                          If SubStr(VSD_I_PlContas,1,1)="2"
                             Then Mensagem("Conta n„o confere com tipo de movimento !")
                                  Campo="I_PlContas"
                          EndIf
                          Echo Off
                     Else VSD_I_Descricao_PlContas=""
                          Campo="I_CCusto"
                  EndIf
             Case Campo="I_CCusto"             : 
                  VSD_I_CCusto=ControlValue("I_CCusto")
                  If Not IsBlank(VSD_I_CCusto)
                     Then Moveto [Codigo CCusto]
                          Ativa_Lookup()
                          Moveto [Codigo CCusto]
                          Locate VSD_I_CCusto
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          KeyPress "ESC"
                                     Else VSD_I_CCusto          =[Codigo CCusto]
                                          VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                                          KeyPress "ESC"
                                          [Codigo CCusto]       =VSD_I_CCusto
                                          Campo="I_Codigo_Hist"
                                  Endif
                             Else Mensagem("Centro de Custo n„o Cadastrado !")
                                  VSD_I_CCusto          =""
                                  VSD_I_Descricao_CCusto=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else VSD_I_CCusto          =""
                          VSD_I_Descricao_CCusto=""
                          Campo="I_Codigo_Hist"
                  EndIf
             Case Campo="I_Codigo_Hist"        : Campo="I_Descri_Hist"
									VSD_I_Codigo_Hist=ControlValue("I_Codigo_Hist")
									If Not IsBlank(VSD_I_Codigo_Hist)
                     Then VSD_I_Codigo_Hist=AlinhM(VSD_I_Codigo_Hist,4)
                          Moveto [Codigo do Historico]
                          Ativa_Lookup()
													Moveto [Codigo do Historico]
													Locate VSD_I_Codigo_Hist
                          If RetVal
                             Then If HIOLD<>VSD_I_Codigo_Hist
                                     Then VSD_I_Descri_Hist  =[Descricao do Historico]
                                  EndIf
                                  KeyPress "ESC"
                                  If HIOLD<>VSD_I_Codigo_Hist
                                     Then HISTORICO()
                                  EndIf
                                  HIOLD =VSD_I_Codigo_Hist
														 Else Mensagem("Historico n„o Cadastrado !")
                                  VSD_I_Codigo_Hist=""
                                  VSD_I_Descri_Hist=""
                                  KeyPress "ESC"
                                  Campo="I_Codigo_Hist"
                          EndIf
                          Echo Off
                     Else HIOLD =VSD_I_Codigo_Hist
                  EndIf
             Case Campo="I_Descri_Hist"     : 
                  VSD_I_Descri_Hist=ControlValue("I_Descri_Hist")

                  ;Atualiza o rateio das baixas conforme a porcentagem/valor proporcional 
                  ;ao valor referente ao rateio SE informado na cabe‡a
                  OCORRENCIA_RATEIO_BAIXA = False 
                  PARAM_FT_RAT = "ATUALIZA RATEIO DA BAIXA"
                  PLay "\\Sistemas\\CtaCor\\FT_RAT"
                  If PARAM_FT_RAT = "1"
                     Then VSD_I_Tem_Rateio="S" 
                          OCORRENCIA_RATEIO_BAIXA = True
                     Else PARAM_FT_RAT = "VERIFICA_UTILIZACAO_RATEIO"
                          PLay "\\Sistemas\\CtaCor\\FT_RAT"       
                  EndIf

                  Registro_Baixa("Gravar")
                  SaveTables
                  If CONTA() 
                     Then TIT()
                          If VSD_I_TpBaixa="NORMAL" And VSD_I_Tem_Rateio="S"
                             Then If VSD_I_TpBaixa="NORMAL" And (VSD_I_Tem_Rateio="S" Or [Duplic->Tem Rateio]="S")
                                      Then SEQ_BAIXA    = [Sequencia da Baixa]
                                           PARAM_FT_RAT = "VERIFICA_RATEIO_BAIXA"
                                           PLay "\\Sistemas\\CtaCor\\FT_RAT"
                                           If PARAM_FT_RAT="0" Or OCORRENCIA_RATEIO_BAIXA
                                              Then PARAM_FT_RAT = "DIGITA_RATEIO_BAIXA"
                                                   PLay "\\Sistemas\\CtaCor\\FT_RAT" 
                                           EndIf
                                           Release Vars OCORRENCIA_RATEIO_BAIXA
                                   EndIf
                          EndIf
                          If CHAVEI=1 And Not IsBlank(PARAM_RELAT)
                             Then Imprime_Recibo() 
                             Else If CHAVEI=0 And Not IsBlank(PARAM_RELAT)
                                     Then ConfGeral("Deseja imprimir a 2¦ Via do Recibo?")
                                          If OK="S"
                                             Then Imprime_Recibo()  
                                                  AcceptDialog
                                             Else CancelDialog
                                          EndIf
                                  EndIf
                          EndIf
                          AcceptDialog   
                  EndIf
                  
                  If CHAVEI=1
                     Then VRANT_NCARREG=VSD_I_NCarreg
                          VRANT_PLCONTA=VSD_I_PlContas                             
                          VRANT_CTCUSTO=VSD_I_CCusto
                  EndIf
                 
                  If PARAM_SALDO_GERA_NOVO_LANC="S" 
                     Then GERA_NOVO_LANC=False
                          If Len(Rtrim(Ltrim([Duplic->Saldo do Documento])))<=9
                             Then If SALDO_COMISSAO - VSD_I_Vr_Comissao > 0 And  VSD_I_Vr_Comissao > 0
                                     Then SALDO_COMISSAO = SALDO_COMISSAO - VSD_I_Vr_Comissao
                                     Else SALDO_COMISSAO = 0
                                  EndIf
                                  SALDO_NOVO = (SALDO_NOVO + VSD_I_Vr_Juros + VSD_I_JurosD - VSD_I_Vr_Descto) - VSD_I_Vr_Pagto
                                  If SALDO_NOVO  > 0 And (VSD_I_JurosD>0 Or VSD_I_Vr_Juros>0) 
                                     Then If Gera_Lancamento()
                                             Then GERA_NOVO_LANC=True
                                          EndIf   
                                     Else Release Vars SALDO_NOVO, SALDO_COMISSAO
                                  EndIf
                             Else Mensagem("Imposs¡vel gera‡„o de um novo lan‡amento com o valor restante//da d¡vida, verificar com o suporte VISE INFORMATICA !")
                          EndIf            
                  EndIf     
           EndSwitch
   EndSwitch
EndIf

SelectControl Campo
RefreshDialog
Switch
  Case Campo="I_TpBaixa"       : MSGCAMPO="N=NORMAL  D=DEVOLUCAO  C=CANCELADO"
  Case Campo="I_PlContas"      : MSGCAMPO="C¢digo do Plano de Contas"
  Case Campo="I_CCusto"        : MSGCAMPO="C¢digo do Centro de Custo"
  Case Campo="I_Codigo_Hist"   : MSGCAMPO="C¢digo do Hist¢rico"
  Case Campo="I_Descri_Hist"   : MSGCAMPO="Descreva o Hist¢rico"
  Case Campo="I_DataEfetivado" : MSGCAMPO="Informe a data efetivada no Banco"
  Case Campo="I_Tem_Rateio"    : MSGCAMPO="Tem Rateio (Sim/N„o)"
EndSwitch

If Campo="I_Conta"       Or 
   Campo="I_PlContas"    Or
   Campo="I_CCusto"      Or
   Campo="I_Codigo_Hist"
   Then TECLA=TECLA+"F1=Tabelas  "
   Else TECLA=TECLA+"            "
EndIf   

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
   Else TECLA=TECLA+"F5=Obs  F7=Rateio  " 
EndIf

If CHAVEI=0 And Not Opcao_Ver
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
   Else TECLA=TECLA+"                  "
EndIf

If Not IsBlank(PARAM_RELAT) And CHAVEI=0 And Not Opcao_Ver
   Then TECLA=TECLA+"F4=Rec.Pagto  "
   Else TECLA=TECLA+"              "
EndIf


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

MontaRodapeSD(MSGCAMPO, TECLA)

Mouse Hide
RefreshDialog
Return Temp


EndProc  ; (Baixa_Dialog)

;***********************************************************
;** Rotina para elaboracao de historico lancamento        **
;***********************************************************
Proc HISTORICO()
HISTORICO = VSD_I_Descri_Hist
POS       = Search("*",HISTORICO)
NOVOHIST  = SubStr(HISTORICO,1,POS-1)
While True
      POSN = SearchFrom("*",HISTORICO,POS+1)
      If POSN = 0
         Then NOVOHIST = NOVOHIST + SubStr(HISTORICO,POS+1,70)
              QuitLoop
      EndIf

      COMP = SubStr(HISTORICO,POS,(POSN-POS)+1)

      Switch
      Case COMP = "*CHEQUE*":
           NOVOHIST = NOVOHIST + VSD_I_NoCheque
      Case COMP = "*CONTDEST*":
           NOVOHIST = NOVOHIST + VSD_I_Descricao_Conta
      Case COMP = "*CONTORIG*":
           NOVOHIST = NOVOHIST + VSD_I_Descricao_Conta
      Case COMP = "*DATALCTO*":
           NOVOHIST = NOVOHIST + StrVal(VSD_I_DtPagto)
      Case COMP = "*MESANO*":
           NOVOHIST = NOVOHIST + ALINHM(StrVal(Month(VSD_I_DtPagto)),2)+"/"+SubStr(StrVal(Year(VSD_I_DtPagto)),3,2)
      Case COMP = "*TPDOCTO*":
           NOVOHIST = NOVOHIST + [Duplic->Tipo do Documento] +"/"+ [Duplic->Serie do Documento]
      Case COMP = "*LIVRE*":
           COMPLEMENTO()
      Case COMP = "*DOCTO*":
           NOVOHIST = NOVOHIST + [Duplic->Numero do Documento]
      OtherWise:
           NOVOHIST = NOVOHIST + SubStr(COMP,2,SearchFrom("*",COMP,2)-2)
      EndSwitch
      POS = POSN
EndWhile
VSD_I_Descri_Hist = NOVOHIST
EndProc ; (HISTORICO)
                                     
;***********************************************************
;** Rotina para Digitacao de Complemento                  **
;***********************************************************
Proc COMPLEMENTO()
LIVRE=""
ShowDialog "[ Complemento ]" @ 13,12 height 06 width 53
  @ 0,1 ?? "Texto:"

  Accept @ 00,07 width 43 "A60" Picture "!*!" tag "LIVRE" to LIVRE

  Pushbutton @ 02,20 width 11 "OK"        OK default Value "Say Yes" Tag "YES" to BottonValue
  Pushbutton @ 07,20 width 11 "~C~ancela" CANCEL                     Tag "NO"  to BottonValue

Enddialog
Mouse Show
NOVOHIST = NOVOHIST + LIVRE
EndProc ; (COMPLEMENTO)

;*******************************************************************************
;* Rotina para gerar novo lancamento                                           *
;*******************************************************************************
Proc Gera_Lancamento()
Private REG_LANC_NOVO,DESC_LANC,ANT_FIELD,ANT_TAB 

ANT_TAB   = Table()
ANT_FIELD = Field()

DESC_LANC = [Duplic->Descricao do Lancamento]   ;Campos que dependem do lookup

Ativa_Form("Duplic")
Moveto "Duplic"
CopyToArray REG_LANC_NOVO
UnLockRecord
Do_it!
FormKey
CoeditKey

If ProximaOrdem()
   Then REG_LANC_NOVO["Numero do Documento"]     = Completa(Rtrim(Ltrim(REG_LANC_NOVO["Numero do Documento"])),9," ")+"X"
        
        If SubStr([Numero do Documento],10,1)<>"X"
           Then REG_LANC_NOVO["Numero Lancamento Pai"] = NLANC
        EndIf
        
        If Search("GERADO DO LANCTO",REG_LANC_NOVO["Observacoes"])=0
           Then If REG_LANC_NOVO["Observacoes"]<>""
                   Then REG_LANC_NOVO["Observacoes"] = REG_LANC_NOVO["Observacoes"] + " / " 
                EndIf       
                REG_LANC_NOVO["Observacoes"] = REG_LANC_NOVO["Observacoes"]+"GERADO DO LANCTO "+Completa(StrVal(REG_LANC_NOVO["Numero Lancamento Pai"]),8," ")+
                                               "DtVencto: "+StrVal(REG_LANC_NOVO["Data de Vencimento"])+"  VrOriginal: "+
                                               Ltrim(StrVal(Format("W12.2",REG_LANC_NOVO["Valor do Documento"])))
        EndIf
        
        REG_LANC_NOVO["Numero do Lancamento"]    = NLANC_NOVO
        REG_LANC_NOVO["Data de Vencimento"]      = DATA_PAGTO_NOVO
        REG_LANC_NOVO["Data a Receber"]          = DATA_PAGTO_NOVO 
        REG_LANC_NOVO["Valor do Documento"]      = SALDO_NOVO                    
        REG_LANC_NOVO["Saldo do Documento"]      = SALDO_NOVO
        REG_LANC_NOVO["Valor da Comissao"]       = SALDO_COMISSAO
        REG_LANC_NOVO["Saldo da Comissao"]       = SALDO_COMISSAO
        REG_LANC_NOVO["Data_Inclusao"]           = Today()
        REG_LANC_NOVO["Hora_Inclusao"]           = Time() 
        REG_LANC_NOVO["Codigo_Usuario"]          = SYS_CHAPA_USUARIO
        REG_LANC_NOVO["Numero_Controle_Dia"]     = SYS_CONTROLE_DIA   
        
        UnLockRecord
        If [Numero do Lancamento] = NLANC_NOVO
           Then Del
                End Down
                CopyFromArray REG_LANC_NOVO 
                Moveto [Numero do Lancamento]
                PostRecord KeyViol LeaveLocked
                If RetVal     
                   Then [Descricao do Lancamento] = DESC_LANC
                        Moveto [Numero do Lancamento]
                        Locate NLANC
                        [Saldo do Documento   ]=0
                        [Saldo da Comissao    ]=0
                        
                        If [Observacoes]<>""
                           Then [Observacoes] = [Observacoes] + " / "
                        EndIf
                        [Observacoes]=[Observacoes]+"PROX LANCTO GERADO: "+NLANC_NOVO
                        
                        If SubStr([Numero do Documento],10,1)<>"X"
                           Then [Numero Lancamento Pai] = NLANC
                        EndIf                
                        Temp = True
                   Else Temp = False 
                EndIf     
           Else Temp = False            
        EndIf 
   Else Temp = False     
EndIf

Moveto "Duplic"
UnLockRecord
KeyPress "F7"
Moveto [Numero do Lancamento]
Locate NLANC
PostRecord KeyViol LeaveLocked
Moveto ANT_TAB
Moveto Field ANT_FIELD

Return Temp

EndProc ;Gera_Lancamento()

;*******************************************************************************
;* Rotina para gerar proximo lancamento                                        *
;*******************************************************************************
Proc ProximaOrdem()
Private i

For i From 1 to 10
  Moveto [Numero do Lancamento]
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","")
     Then NLANC_NOVO = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
  EndIf
  Down
  If [Numero do Lancamento]=""
     Then [Numero do Lancamento] = NLANC_NOVO 
          PostRecord KeyViol LeaveLocked
          If RetVal     
             Then Return True
          EndIf
     Else Mensagem("Erro ao gerar o lan‡amento com o novo saldo!")
          QuitLoop 
  EndIf             
EndFor

Return False

EndProc ;ProximaOrdem()

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

INICIO_DIALOG=True
Moveto [Sequencia da Baixa]
Locate NLANC,NITEM
CopyToArray RegItem

If CHAVEI=1
   Then [Data do Pagamento  ]=ULTDATA
        [Codigo da Conta    ]=[Duplic->Codigo da Conta]
        [Codigo CCusto      ]=[Duplic->Codigo CCusto     ]
        [Codigo Plano_Conta ]=[Duplic->Codigo Plano_Conta]

        HIOLD=[Codigo do Historico]
        [Codigo do Historico]=""
        [Codigo do Historico]=HIOLD
        HIOLD=""

        If IsBlank([Codigo do Historico])
           Then [Descricao do Historico]="REC. "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
        EndIf

        [Numero_Carregamento]=VRANT_NCARREG
        If IsBlank([Codigo CCusto])
           Then [Codigo CCusto]=VRANT_CTCUSTO
        EndIf
        If IsBlank([Codigo Plano_Conta])
           Then [Codigo Plano_Conta]=VRANT_PLCONTA
        EndIf

   Else HIOLD =[Codigo do Historico  ]
EndIf

DTOLD =[Data do Pagamento    ]
VROLD =[Valor do Recebimento ]
JSOLD =[Valor do Juros       ]
DSOLD =[Valor do Desconto    ]
VCOLD =[Valor da Comissao    ]
CCOLD =[Codigo da Conta      ]

Registro_Baixa("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para notas/agendamento                                               *
;*******************************************************************************
Proc DupNotas()
Private TabAnt

Moveto "DupNotas"    

If TITULOS_SOANOTACOES And Verifica_Agendamento
   Then If VSDGTP="G"
           Then NITEMNOT=NumVal(SubStr(Array_Registro[IndiceReg],85,3))
                While NLANC = [Numero do Lancamento]
                      Moveto [Sequencia da Anotacao]
                      If NITEMNOT=[Sequencia da Anotacao]
                         Then PAGINA("DupNotas","MR")
                              Switch
                                Case EDITAR="S"  : CHAVEB=1
                                                   DIGITA_NOTAS()
                                                   UnLockRecord
                                Case EXCLUIR="S" : ALTEXC_NOTA=False
                                                   Switch 
                                                     Case PARAM_BLOQUEIA_ANOTACAO="N" : ALTEXC_NOTA=True
                                                     Case PARAM_BLOQUEIA_ANOTACAO="P" : If Checa_Supervisor()
                                                                                           Then ALTEXC_NOTA=True  
                                                                                        EndIf
                                                   Endswitch  
                                                   If ALTEXC_NOTA
                                                      Then If QuerExcluir("")
                                                              Then DEL
                                                              Else UnLockRecord
                                                           EndIf
                                                   EndIf
                              EndSwitch
                              Verifica_Agendamento=False
                              QuitLoop
                      EndIf
                      Skip
                      If EOT() Then QuitLoop EndIf
                EndWhile  
        EndIf   
EndIf            
                               
While True
  Moveto [Sequencia da Anotacao]
  End
  NITEMNOT=[Sequencia da Anotacao]
  Down

  If NITEMNOT=BlankNum()
     Then NITEMNOT=1
     Else NITEMNOT=NITEMNOT+1
  EndIf   
                  
  Moveto [Sequencia da Anotacao]
  [Sequencia da Anotacao]=NITEMNOT
                       
  Seta_Sequencia(NITEMNOT,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While True

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    If RetVal=-33
       Then ShowPopup " Fun‡”es " CENTERED
              "F5  ~O~bserva‡„o        " : " Observa‡„o                  " : "F5",
              "F6  C~h~eques           " : " Cheques                     " : "F6",
              "F8  ~B~aixas            " : " Baixas                      " : "F8",
              "F11 ~D~ados Cliente     " : " Dados Cadastrais do Cliente " : "F11",
              Separator,
              "~C~ancelar             " : " Cancelar a Opera‡„o " : "CANCELAR"
             EndMenu
             To MenuVar
             RetVal=MenuVar
             Echo Off
    EndIf

    Switch
    Case RetVal="F6" Or RetVal="F8"   Or
         RetVal=-115 Or RetVal=-116   Or
         Retval=-133 or Retval="F11"   : 
         Tecla_Funcao=RetVal
         CHAVEB=9
         Del
         Return 
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F5":
         Del
         Observacao("Observacao") 
         Quitloop
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("DupNotas","MR")
           NLANC   =[Numero do Lancamento ]
           NITEMNOT=[Sequencia da Anotacao]
           Switch
             Case EDITAR="S"  : CHAVEB=1
                                DIGITA_NOTAS()
                                UnLockRecord
                                Loop
             Case EXCLUIR="S" : ALTEXC_NOTA=False
                                Switch 
                                  Case PARAM_BLOQUEIA_ANOTACAO="N" : ALTEXC_NOTA=True
                                  Case PARAM_BLOQUEIA_ANOTACAO="P" : If Checa_Supervisor()
                                                                        Then ALTEXC_NOTA=True  
                                                                     EndIf
                                Endswitch  
                                If ALTEXC_NOTA    
                                   Then If QuerExcluir("")
                                           Then DEL
                                           Else UnLockRecord
                                        EndIf
                                EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         SetaCorRegistro("Padrao")
         If TITULOS_SOBAIXAS
            Then Tecla_Funcao="F8"
            Else If TITULOS_SOANOTACOES
                    Then DIGITAC =False
                         Tecla_Funcao=""
                    Else Tecla_Funcao=-10
                 EndIf   
         EndIf
         CHAVEB=9
         Del
         Return
    Case Retval="PGDN":
         CHAVEB=9
         Tecla_Funcao=""
         DIGITAC =False
         Del
         Return
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEMNOT,True)
            Then Del
                 QuitLoop
         EndIf
         NITEMNOT=[]
         Del
         Locate NLANC,NITEMNOT
         If Retval
            Then CHAVEB=0
            Else CHAVEB=1
                 End Down
                 [Numero do Lancamento ]=NLANC
                 [Sequencia da Anotacao]=NITEMNOT
                 UnLockRecord
                 Locate NLANC,NITEMNOT
         EndIf
         If Not IsLockRecord()
            Then Return
         EndIf
         If CHAVEB=1
            Then Del
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc ; (DupNotas)

;*******************************************************************************
;* Rotina para Digita‡Æo de Notas                                              *
;*******************************************************************************
Proc DIGITA_NOTAS()
Private Alterou_Situacao

Moveto "DupNotas" 

If CHAVEB=1
   Then Alterou_Situacao=False 
        If [Situacao da Anotacao]="AGENDAM" And Not TITULOS_SOBAIXAS
           Then  ShowPopup " Status " @ 14,18
                   "Agendamento           " : " Agendamento           "   : "AGENDAM",
                   "Agendamento Realizado " : " Agendamento Realizado "   : "AGE/REAL"
                 EndMenu
                 To MenuVar
                 If MenuVar="Esc"  
                    Then Moveto [Situacao da Anotacao]
                    Else Alterou_Situacao=[Situacao da Anotacao]
                         [Situacao da Anotacao]=MenuVar
                 EndIf

        EndIf
        If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
           Then JANELA_DIALOG_DESABILITA=True
        EndIf
        
        If TITULOS_SOANOTACOES And Alterou_Situacao<>[Situacao da Anotacao]  ;DupbxII
           Then If VSDGTP="G"
                   Then Agendamento=True
                        NOTAS_NOME=[Duplic->Nome Fantasia EmitDest]
                        NOTAS_NLAN=[Duplic->Numero do Lancamento  ]
                        NOTAS_TDOC=[Duplic->Tipo do Documento     ]
                        NOTAS_NDOC=[Duplic->Numero do Documento   ]

                        If [Situacao da Anotacao]="AGENDAM"
                           Then NOTAS_SITU="" 
                           Else NOTAS_SITU="REALIZADO"
                        EndIf
                        For Wat From 1 To DynArraySize(Array_Registro)
                          If SubStr(Array_Registro[Wat],78,6)=[Numero do Lancamento] And 
                             NumVal(SubStr(Array_Registro[Wat],85,3))=[Sequencia da Anotacao]
                             Then Moveto "DupNotas"
                                  DATA_ANOTACAO=[Data da Anotacao] 
                                  HORA_ANOTACAO=[Hora da Anotacao]
                                  SEQ_ANOTACAO =[Sequencia da Anotacao]
                                  Seta_Array(Wat)
                                  QuitLoop
                          EndIf   
                        EndFor
                EndIf           
        EndIf         
        ALTEXC_NOTA=False 
        Switch 
          Case PARAM_BLOQUEIA_ANOTACAO="N" : ALTEXC_NOTA=True
          Case PARAM_BLOQUEIA_ANOTACAO="P" : If Checa_Supervisor()
                                                 Then ALTEXC_NOTA=True  
                                             EndIf
        Endswitch  
        If ALTEXC_NOTA
           Then Edita_Memo("Historico da Anotacao",15,00,07,80,"Descritivo")
           Else Observacao("Descritivo")
        EndIf   
        Return
EndIf

Moveto [Data da Anotacao]
                                                
While True
  Switch  
    Case Field()="Data da Anotacao"      : MSGCAMPO="Informe a Data do Agendamento/Anota‡„o    Em Branco = Hoje"
    Case Field()="Hora da Anotacao"      : MSGCAMPO="Informe o Hor rio do Agendamento/Anota‡„o   Em Branco = Hora Atual"
    Case Field()="Situacao da Anotacao"  : MSGCAMPO="Informe a Situa‡„o: AGENDAMENTO ou ANOTA€ŽO   Em Branco = Menu"
    OtherWise                            : MSGCAMPO=""
  EndSwitch

  Tecla=""
 
  AguardaTeclasPadraoIt2()
  
  Switch                                     
  Case Retval="ESC":
       Switch
         Case Field()="Data da Anotacao"     : CHAVEB=9
                                               Del
                                               Return
         Case Field()="Hora da Anotacao"     : Moveto [Data da Anotacao    ]
         Case Field()="Situacao da Anotacao" : Moveto [Hora da Anotacao    ]                   
         Case Field()="Historico da Anotacao": Moveto [Situacao da Anotacao]
       EndSwitch
  Case Retval="ENTER":
       Switch     
         Case Field()="Data da Anotacao"       : 
              If IsBlank([])
                 Then []=Today()
              EndIf 
              Moveto [Hora da Anotacao]
         Case Field()="Hora da Anotacao"       : 
              If IsBlank([])
                 Then []=Time()
              EndIf
              Moveto [Situacao da Anotacao]    
         Case Field()="Situacao da Anotacao"   :
              If IsBlank([])
                 Then ShowPopup " Status " @ 14,18
                          "Agendamento" : " Agendamento   "   : "AGENDAM",
                          "Anota‡„o   " : " Anota‡„o      "   : "ANOTA€ŽO"
                      EndMenu
                      To MenuVar
                         If MenuVar="Esc"
                            Then Loop              
                            Else [Situacao da Anotacao]=MenuVar
                         EndIf
              EndIf           
              If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
                 Then JANELA_DIALOG_DESABILITA=True
              EndIf
              Edita_Memo("Historico da Anotacao",15,00,07,80,"Descritivo")
              If [Historico da Anotacao]=""
                 Then Moveto [Situacao da Anotacao] 
                 Else Moveto "Duplic"
                      [Dt_Ultima_Anotacao]=[DupNotas->Data da Anotacao]
                      UnLockRecord
                      Return
              EndIf
       EndSwitch
  EndSwitch

 EndWhile

EndProc ; (DIGNOTAS)

;*******************************************************************************
;* Digitacao de Enderecos                                                      *
;*******************************************************************************
Proc Endereco_Cob(PARAM)
Private PARAM
            
If PARAM="END_COB"
   Then GetRecord "\\Sistemas\\Cadastro\\End_Cob" [Duplic->Codigo do Destinatario] To REG_ENDCOB
        If RetVal
           Then FAZ_ENDCOB = 1
                Endereco_Cob("VALOR")
           Else FAZ_ENDCOB = 2
        EndIf
        ClearImage
        Return
EndIf            
                                
If PARAM="VALOR"
   Then VSD_E_Endereco=REG_ENDCOB["Endereco de Entrega"]
        VSD_E_Bairro  =REG_ENDCOB["Bairro de Entrega"]
        VSD_E_Cidade  =REG_ENDCOB["Cidade de Entrega"]
        VSD_E_UF      =REG_ENDCOB["UF de Entrega"]
        VSD_E_CEP     =REG_ENDCOB["CEP de Entrega"]
        
        VSD_C_Endereco=REG_ENDCOB["Endereco de Cobranca"]
        VSD_C_Bairro  =REG_ENDCOB["Bairro de Cobranca"]
        VSD_C_Cidade  =REG_ENDCOB["Cidade de Cobranca"]
        VSD_C_UF      =REG_ENDCOB["UF de Cobranca"]
        VSD_C_CEP     =REG_ENDCOB["CEP de Cobranca"]
        
        Return
EndIf

END_COB = True
INICIO_DIALOG=True

If Not IsAssigned(CHAVEB)           Then CHAVEB=1               EndIf

Showdialog "Endere‡os Complementares" Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN","F8"
   @ 5,08 height 17 width 63
                                                 
   Frame Single From 0,0 to 5,60
   @ 0,1 ?? " Local de Entrega "
   paintcanvas attribute 26 0, 0, 5, 60
   Label  @ 1,01 "Endere‡o" for "E_Endereco"
   Accept @ 2,02  Width 43 "A40" picture "!*!" Tag "E_Endereco" to VSD_E_Endereco
   Label  @ 1,45 "CEP" for "E_CEP"
   Accept @ 2,46  Width 13 "A10" picture "##.###-###" Tag "E_CEP" to VSD_E_CEP

   Label  @ 3,01 "Bairro" for "E_Bairro"
   Accept @ 4,02  Width 23 "A20" picture "!*!" Tag "E_Bairro" to VSD_E_Bairro
   Label  @ 3,25 "Cidade" for "E_Cidade"
   Accept @ 4,26  Width 23 "A20" picture "!*!" Tag "E_Cidade" to VSD_E_Cidade
   Label  @ 3,49 "UF" for "E_UF"
   Accept @ 4,50  Width 05 "A2" picture "!*!" Tag "E_UF" to VSD_E_UF

   Frame Single From 6,0 to 11,60
   @ 6,1 ?? " Local de Cobran‡a "
   paintcanvas attribute 30 6, 0,11, 60
   Label  @ 7,01 "Endere‡o" for "C_Endereco"
   Accept @ 8,02  Width 43 "A40" picture "!*!" Tag "C_Endereco" to VSD_C_Endereco
   Label  @ 7,45 "CEP" for "C_CEP"
   Accept @ 8,46  Width 13 "A10" picture "##.###-###" Tag "C_CEP" to VSD_C_CEP

   Label  @ 9,01 "Bairro" for "C_Bairro"
   Accept @ 10,02  Width 23 "A20" picture "!*!" Tag "C_Bairro" to VSD_C_Bairro
   Label  @ 9,25 "Cidade" for "C_Cidade"
   Accept @ 10,26  Width 23 "A20" picture "!*!" Tag "C_Cidade" to VSD_C_Cidade
   Label  @ 9,49 "UF" for "C_UF"
   Accept @ 10,50  Width 05 "A2" picture "!*!" Tag "C_UF" to VSD_C_UF
   
   Pushbutton @ 13,25 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES_END" To BottonValue

Enddialog
END_COB = False

EndProc  ; Endereco_Cob()

;*******************************************************************************
;* Digitacao da Ficha                                                          *
;*******************************************************************************
Proc Ficha_Financeira(PARAM)
Private PARAM
            
If PARAM="FICHA_FIN"
   Then {TableAdd} {\\Sistemas\\Cadastro\\Fichacli}
        Moveto [Codigo]
        Locate [Duplic->Codigo do Destinatario]
        If RetVal     
           Then FAZ_FICHA_FIN = 1
                Ficha_Financeira("VALOR")
           Else FAZ_FICHA_FIN = 2
        EndIf
        ClearImage
        Return
EndIf            
                                
If PARAM="VALOR"                            
   Then VSD_DP_Compra      =[Data da Primeira Compra  ]
        VSD_VP_Compra      =[Valor da Primeira Compra ]
        VSD_DU_Compra      =[Data da Ultima Compra    ]
        VSD_VU_Compra      =[Valor da Ultima Compra   ]
        VSD_DM_Fatura      =[Data da Maior Fatura     ]
        VSD_M_Fatura       =[Maior Fatura             ]
        VSD_M_Atraso       =[Maior Atraso             ]
        VSD_DM_Atraso      =[Data do Maior Atraso     ]
        VSD_VM_Atraso      =[Valor do Maior Atraso    ] 
        VSD_N_Atrasos      =[Numero de Atrasos        ]
        VSD_L_Credito      =[Limite de Credito        ]
        VSD_MD_Atraso      =[Maximo Dias Atraso       ]
        VSD_SPC_DATConsulta=[Data_Ultima_Consulta     ]
        VSD_SPC_SITConsulta=[Situacao_Consulta        ]
        VSD_SPC_OBSConsulta=[Protocolo_Obs_Consulta   ] 

        Return
EndIf

FICHA_FIN = True
INICIO_DIALOG=True

If Not IsAssigned(CHAVEB)           Then CHAVEB=1               EndIf

Showdialog "Ficha Financeira" Proc "Geral_Dialog"
  Trigger "OPEN","ARRIVE"
   Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN"
   @ 5,01 height 17 width 77

   Frame Single From 0,0 to 4,39
   @ 0,2 ?? " Compras Data/Valor "
   paintcanvas attribute 26 0, 0, 4, 38
   Label  @ 1,01 "Primeira:" for "DP_Compra"
   Accept @ 1,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DP_Compra" to VSD_DP_Compra
   Accept @ 1,27  Width  11 "$" picture "#*#.[##]" Tag "VP_Compra" to VSD_VP_Compra
   Label  @ 2,01 "Ultima..:" for "DU_Compra"
   Accept @ 2,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DU_Compra" to VSD_DU_Compra
   Accept @ 2,27  Width 11 "$" picture "#*#.[##]" Tag "VU_Compra" to VSD_VU_Compra
   Label  @ 3,01  "Maior...:" for "DM_Fatura"
   Accept @ 3,11  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DM_Fatura" to VSD_DM_Fatura
   Accept @ 3,27  Width 11 "$" picture "#*#.[##]" Tag "M_Fatura" to VSD_M_Fatura

   Frame Single From 0,40 to 4,74
   @ 0,42 ?? " Atrasos "
   paintcanvas attribute 26 0, 0, 4, 74
   Label  @ 1,41 "O Maior Atraso foi          Dias" for "M_Atraso"
   Accept @ 1,61  Width 8 "S" picture "#*#" Tag "M_Atraso" to VSD_M_Atraso
   Label  @ 2,41 "em                 " for "DM_Atraso"
   Accept @ 2,45  Width 13 "D" picture "[#]#;.##;.##[##]" Tag "DM_Atraso" to VSD_DM_Atraso
   Label  @ 2,58 "com" for "VM_Atraso"
   Accept @ 2,63  Width 11 "$" picture "#*#.[##]" Tag "VM_Atraso" to VSD_VM_Atraso
   Label  @ 3,41 "Frequencia de        " for "N_Atrasos"
   Accept @ 3,56  Width 8 "S" picture "#*#" Tag "N_Atrasos" to VSD_N_Atrasos

   Frame Single From 5,0 to 7,20
   @ 5,2 ?? " Credito Maximo "
   paintcanvas attribute 26 0, 0, 7, 38
   Accept @ 6,03  Width  14 "$" picture "#*#.[##]" Tag "L_Credito" to VSD_L_Credito

   Frame Single From 5,22 to 7,46
   @ 5,23 ?? " Maximo de Dias Atraso "
   paintcanvas attribute 26 0, 0, 7, 46
   Accept @ 6,24  Width 21 "S" picture "#*#" Tag "MD_Atraso" to VSD_MD_Atraso
   
   Frame Single From 8,0 to 11,59
   @ 8,2 ?? " Consulta SPC "
   paintcanvas attribute 26 0, 0, 11, 59
   Label  @ 09,02 "Ultima Consulta" for "C_SPCDATA"
   Accept @ 10,03  Width  15 "D" picture "[#]#;.##;.##[##]" Tag "C_SPCDATA" to VSD_SPC_DATConsulta
   Label  @ 09,19 "Situa‡„o" for "C_SPCSITUACAO"
   Accept @ 10,20  Width 13 "A15" picture "REGULAR,IRREGULAR" Tag "C_SPCSITUACAO" to VSD_SPC_SITConsulta        
   Label  @ 09,34 "Protocolo" for "C_SPCOBSCONSULTA"  
   Accept @ 10,35  Width  23 "A25" picture "!*!" Tag "C_SPCOBSCONSULTA" to VSD_SPC_OBSConsulta  

   Pushbutton @ 13,32 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES_END" To BottonValue

Enddialog
FICHA_FIN = False

EndProc   ; (Ficha)

;*******************************************************************************
;* Rotina para Digitacao Complemento de Clientes                               *
;*******************************************************************************
Proc Complemento_Dest(PARAM)
Private PARAM

GetRecord "\\Sistemas\\Cadastro\\Destinat" [Duplic->Codigo do Destinatario] To REG_PESSOA
If RetVal
   Then VSD_DATA_NASC=REG_PESSOA["Data de Nascimento"]
   Else VSD_DATA_NASC=""
EndIf   
            
If PARAM="CAD_COMP"
   Then {TableAdd} {\\Sistemas\\Cadastro\\DestInfo}
        Moveto [Codigo]
        Locate [Duplic->Codigo do Destinatario]
        If RetVal     
           Then FAZ_COMP = 1
                Complemento_Dest("VALOR")
           Else FAZ_COMP = 2
        EndIf
        ClearImage
        Return
EndIf            
                                
If PARAM="VALOR"      
   Then VSD_REF_COM1    =[Referencia Comercial1]
        VSD_REF_COM2    =[Referencia Comercial2]
        VSD_REF_COM3    =[Referencia Comercial3]
        VSD_REF_BANC    =[Referencia Bancaria  ]
        VSD_PAI_SOCIO   =[Pai Socio            ]
        VSD_CGC_PAI     =[CGC/CPF Pai Socio    ]
        VSD_MAE_SOCIO   =[Mae Socio            ]
        VSD_CGC_MAE     =[CGC/CPF Mae Socio    ]
        VSD_RENDA_FAT   =[Renda Faturamento    ]
        VSD_N_PARENTE   =[Nome Parente         ]
        VSD_END_PARENTE =[Endereco Parente     ]
        VSD_LOCAL_TRAB  =[Local Trabalho       ]
        VSD_END_TRAB    =[Endereco Trabalho    ]
        VSD_TEMPO_TRAB  =[Tempo Trabalho       ]
        VSD_NOME_FIADOR =[Nome Fiador          ]
        VSD_CGC_FIADOR  =[CGC/CPF Fiador       ]
        VSD_END_FIADOR  =[Endereco Fiador      ]
        VSD_TEL_FIADOR  =[Telefone Fiador      ]
        VSD_IMOVEL_P    =[Imovel Proprio/Valor ]
        VSD_REF_PESSOAL =[Referencia Pessoal   ]
EndIf

CAD_COMP = True
INICIO_DIALOG=True

If Not IsAssigned(CHAVEB)           Then CHAVEB=1               EndIf

Showdialog "Dados complementares do cliente " Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","PGDN"
    @ 01,00 height 23 width 80

   @ 00,01 ?? "Referˆncia Comercial"
   ;Label  @ 01,01  "1" for "C_Referencia Comercial1"
   Accept @ 01,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial1" to VSD_REF_COM1
   ;Label  @ 02,01  "2" for "C_Referencia Comercial2"
   Accept @ 02,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial2" to VSD_REF_COM2
   ;Label  @ 03,01  "3" for "C_Referencia Comercial3"
   Accept @ 03,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Comercial3" to VSD_REF_COM3

   Label  @ 00,39  "Renda/Faturamento" for "C_Renda Faturamento"
   Accept @ 01,40   Width 13 "$" picture "#*#.[##]" Tag "C_Renda Faturamento" to VSD_RENDA_FAT

   @ 04,01 ?? "Referˆncia Banc ria"
   ;Label  @ 05,01  "1" for "C_Referencia Bancaria"
   Accept @ 05,01   Width 38 "A40" picture "!*!" Tag "C_Referencia Bancaria" to VSD_REF_BANC

   @ 06,01 ?? "Referˆncia Pessoal"
   Accept @ 07,01   Width 76 "A80" picture "!*!" Tag "C_Referencia Pessoal" to VSD_REF_PESSOAL

   @ 08,01 ?? "Pais/S¢cios/Conjuge"
   ;Label  @ 09,01  "1" for "C_Pai Socio"
   Accept @ 09,01   Width 38 "A40" picture "!*!" Tag "C_Pai Socio" to VSD_Pai_Socio
   ;Label  @ 10,01  "2" for "C_Mae Socio"
   Accept @ 10,01   Width 38 "A40" picture "!*!" Tag "C_Mae Socio" to VSD_Mae_Socio
   Accept @ 09,40   Width 20 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_PAI" to VSD_CGC_PAI
   Accept @ 10,40   Width 20 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_MAE" to VSD_CGC_MAE

   @ 11,01 ?? "Parente.: Nome/Endere‡o"
   ;Label  @ 10,01  "Nome" for "C_Nome Parente"                                                     
   Accept @ 12,01   Width 38 "A40" picture "!*!" Tag "C_Nome Parente" to VSD_N_PARENTE
   ;Label  @ 11,01  "Endere‡o" for "C_Endereco Parente"
   Accept @ 12,40   Width 37 "A40" picture "!*!" Tag "C_Endereco Parente" to VSD_END_PARENTE

   @ 13,01 ?? "Trabalho: Local/Endere‡o/Tempo"
   ;Label  @ 13,01  "Local" for "C_Local Trabalho"
   Accept @ 14,01   Width 38 "A40" picture "!*!" Tag "C_Local Trabalho" to VSD_LOCAL_TRAB
   ;Label  @ 14,01  "Endere‡o" for "C_Endereco Trabalho"
   Accept @ 14,40   Width 37 "A40" picture "!*!" Tag "C_Endereco Trabalho" to VSD_END_TRAB
   ;Label  @ 15,01  "Tempo" for "C_Tempo Trabalho"
   Accept @ 15,01   Width 38 "A40" picture "!*!" Tag "C_Tempo Trabalho" to VSD_TEMPO_TRAB

   @ 16,01 ?? "Fiador..: Nome/CGC/Endere‡o/Telefone"
   ;Label  @ 17,01  "Nome" for "C_Nome_Fiador"
   Accept @ 17,01   Width 38 "A40" picture "!*!" Tag "C_Nome_Fiador" to VSD_NOME_FIADOR
   Accept @ 17,40   Width 37 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "C_CGC_Fiador" to VSD_CGC_FIADOR
   ;Label  @ 18,01  "Endere‡o" for "C_End_Fiador"
   Accept @ 18,01   Width 38 "A40" picture "!*!" Tag "C_End_Fiador" to VSD_End_FIADOR
   Accept @ 18,40   Width 37 "A18" picture "!*!" Tag "C_Tel_Fiador" to VSD_Tel_FIADOR
            
   Label  @ 19,00  "Im¢vel..: Pr¢prio/Valor" for "C_Imovel Proprio/Valor"
   Accept @ 20,01   Width 38 "A40" picture "!*!" Tag "C_Imovel Proprio/Valor" to VSD_IMOVEL_P
   Label  @ 19,39  "Data Nascimento" for "C_Data de Nascimento"
   Accept @ 20,40   Width 15 "D" picture "##.##.##[##]" Tag "C_Data de Nascimento" to VSD_DATA_NASC

   Pushbutton @ 20,67 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES_END" To BottonValue

Enddialog
CAD_COMP = False

EndProc  ; (Complemento_Dest)

;*******************************************************************************
;* Rotina para Ver Calculo do Custo                                            *
;*******************************************************************************
Proc Dados_Cliente()
Private TabTemp , TECLA_ANT

opcao_ver=false

If Not IsAssigned(END_COB)       Then END_COB       = False EndIf
If Not IsAssigned(CAD_COMP)      Then CAD_COMP      = False EndIf 
If Not IsAssigned(FICHA_FIN)     Then FICHA_FIN     = False EndIf
If Not IsAssigned(FAZ_FICHA_FIN) Then FAZ_FICHA_FIN = 0     EndIf
If Not IsAssigned(FAZ_ENDCOB)    Then FAZ_ENDCOB    = 0     EndIf 
If Not IsAssigned(FAZ_COMP)      Then FAZ_COMP      = 0     EndIf

TabTemp=Table() 

If TabTemp="Duplic"
  Then UnlockRecord
       Formkey
       IsLockRecord()
  Else Formkey
EndIf

Moveto "Duplic"                                  
Moveto "\\Sistemas\\Cadastro\\Destinat"
PickForm "13"
Moveto [Codigo]
Locate [Duplic->Codigo do Destinatario]
If Retval
  Then COD=[CODIGO]
       While True
         Prompt " Esc=Retornar  Alt+F=Fun‡”es"
         JANELA_DIALOG_DESABILITA="1"
         Wait Field 
          Until "ESC","F3","F4","F5","F6","F7",-33,-18
          [CODIGO]=COD 
    
          If RetVal=-33 
             Then Echo Normal
                  Echo Off
                  ShowPopup " Fun‡”es " CENTERED
                    "F3 ~E~ndere‡o/Cobran‡a    " : " Endere‡o/Cobranca      " : "F3",
                    "F4 ~F~icha Financeira     " : " Ficha Financeira       " : "F4",
                    "F5 ~O~bserva‡”es          " : " Observa‡”es            " : "F5",
                    "F7 ~O~bserva‡”es p/ Venda " : " Observa‡”es p/ Venda   " : "F7",
                    "F6 Com~p~lementos         " : " Complementos           " : "F6",
                    Separator,
                    "Outros Email               ": " Inclus„o/altera‡„o de outros email" : "Alt+E",
                    Separator,
                    "~C~ancelar                " : " Cancelar a Opera‡„o    " : "CANCELAR"
                     EndMenu
                     To MenuVar
                     Echo Off
          
              If MenuVar = "CANCELAR"
                 Then Loop
                 Else RetVal= MenuVar 
              EndIf
          EndIf
          
          If (Retval="F3" Or Retval="F4" Or RetVal="F6") And (FAZ_ENDCOB=0 Or FAZ_FICHA_FIN=0 or FAZ_COMP=0)  
             Then TECLA_ANT=RetVal
                  
                  If RecordStatus("Locked") Then UnLockRecord EndIf       
                  Formkey
                  
                  Switch
                    Case TECLA_ANT="F3" And FAZ_ENDCOB=0     :  Endereco_Cob("END_COB")
                    Case TECLA_ANT="F4" And FAZ_FICHA_FIN=0  :  Ficha_Financeira("FICHA_FIN")
                    Case TECLA_ANT="F6" And FAZ_COMP=0       :  Complemento_Dest("CAD_COMP")
                  EndSwitch
                  
                  Moveto "\\Sistemas\\Cadastro\\Destinat"
                  PickForm "13"
                   
                  RetVal = TECLA_ANT
          EndIf 

          Switch
            Case RetVal="Alt+E" Or RetVal=-18 :
                 EMAIL_PARAM_ROTINA="DUPLIC"
                 Play "\\Sistemas\\Cadastro\\DestMail"
            Case Retval="F4" : 
                 If FAZ_FICHA_FIN=2
                    Then Mensagem("N„o h  Ficha Financeira cadastrada para este cliente !")
                    Else Ficha_Financeira("")
                 EndIf
            Case Retval="F3" : 
                 If FAZ_ENDCOB=2
                    Then Mensagem("N„o h  Endere‡o/Cobranca cadastrados para este cliente !")
                    Else Endereco_Cob("")
                 EndIf
            Case Retval="F6" : 
                 If FAZ_COMP=2
                    Then Mensagem("N„o h  Complementos cadastrados para este cliente !")
                    Else Complemento_Dest("")
                 EndIf
            Case Retval="F5" :                
                 Observacao("DestObs")                    
            Case Retval="F7" :
                 Observacao("Vendas") 
            Case RetVal="ESC" : QuitLoop     
          Endswitch
          Moveto "\\Sistemas\\Cadastro\\Destinat"
       EndWhile
  Else Mensagem("Cliente nÆo cadastrado !")
EndIf

ResyncKey
UnLockRecord
FormKey
Moveto "Duplic"
FormKey

Switch
 Case TabTemp="Duplic"                       : Tecla_Funcao=-10
 Case TabTemp="Dupbaixa"                     : Tecla_Funcao="F8"
 Case TabTemp="\\sistemas\\cheqrec\\chequei" : Tecla_Funcao="F6"
 Case TabTemp="Dupnotas"                     : Tecla_Funcao="F9"
 OtherWise                                   : Tecla_Funcao=""
EndSwitch  

EndProc  ;  Dados_Cliente()

;*******************************************************************************
;* Rotina para Leitura do Cheque                                               *
;*******************************************************************************
Proc Ler_Cheque()
While True
  Moveto "Duplic"

  Moveto "\\Sistemas\\CheqRec\\ChequeI"
  Moveto [Valor]   VSVRCHEQUES=ImageCSum()

  Echo Normal
  Echo Off

  Moveto [Sequencia do Cheque]
  ITEM=[]
  If IsBlank(ITEM)
     Then ITEM=1
     Else ITEM=ITEM+1
  EndIf
  End Down
  CHAVEB=1
  [Numero do Lancamento]=NLANCC
  [Sequencia do Cheque ]=ITEM
  UnLockRecord

  If Not Leitura_Cheque(11,0)
     Then CHAVEB=13
          Del
          Return False
  EndIf                                     
          
  Moveto [Codigo_Banco]
  Ativa_Lookup()
  Moveto [Codigo_Banco]
  Locate CODIGO_BANCO
  If RetVal
     Then NOME_BANCO=[Nome_banco]
  EndIf
  KeyPress "Esc"

  [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
          Mensagem("Banco "+CODIGO_BANCO+" nÆo cadastrado !")
     Else Opcao_Ler_Cheque=True
          [Codigo_Banco ]=CODIGO_BANCO
  EndIf
  
  AchouPessoa=False
  
  Moveto "\\Sistemas\\CheqRec\\CDPessoa"
  Moveto [Codigo_Banco]
  Locate CODIGO_BANCO, AGENCIA_CHEQUE, CONTA_CHEQUE
  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]
          AchouPessoa=True
          If CLIENTE_CPF=VSD_CPF
             Then VSD_TipoEmit="PROPRIO"
             Else VSD_TIPOEmit="TERCEIRO"
          EndIf
  EndIf                       
  Moveto "\\Sistemas\\CheqRec\\ChequeI"
  If AChouPessoa
     Then [Tipo_Emitente       ]=VSD_TipoEmit
          [Titular_Cheque      ]=VSD_Nome
          [Cidade              ]=VSD_Cidade
          [UF                  ]=VSD_UF
          [CPF                 ]=VSD_CPF
  EndIf   
  
  DIGITA_CHEQUE()

EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro Cheque                                       *
;*******************************************************************************
Proc CHAVEB()
Private TabAnt

While True
 Moveto "Duplic"

 Moveto "\\Sistemas\\CheqRec\\ChequeI"
 Moveto [Valor]   VSVRCHEQUES=ImageCSum()

 NLANCC=[\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]

 Moveto [Sequencia do Cheque]
 End
 NITEMCH = [Sequencia do Cheque]
 Down
 [Numero do Lancamento]=NLANCC

 Opcao_Ver=False
 Opcao_Ler_Cheque=False
 Seta_Sequencia(NITEMCH,False)
 If IsLockRecord()
    Then Del
         Loop
 EndIf

 SetaCorRegistro("Editar")
 
 While true

  MSGCAMPO=""
  Tecla=""
  AguardaTeclasPadraoIt2()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
            "F4  ~L~er cheques     " : " Ativar leitura de cheques          " : "F4",
            "F5  ~O~bserva‡„o      " : " Observa‡„o                         " : "F5",
            "F8  ~B~aixa           " : " Lan‡ar baixa para este Titulo      " : "F8",
            "F9  A~g~endamento     " : " Agendamento                        " : "F9",
            "F11 ~D~ados Cliente   " : " Dados Cadastrais do Cliente        " : "F11",
            "~C~ancelar            " : " Cancelar                           " : "CANCELAR"
          EndMenu
          To MenuVar
          echo off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf
          RetVal=MenuVar
  EndIf

  Switch
  Case RetVal="F8" Or RetVal="F9" Or
       RetVal=-115 Or RetVal=-116 Or
       RetVal=-133 Or RetVal="F11":
       Tecla_Funcao=RetVal
       CHAVEB=9
       Del
       Return     
  Case RetVal=-94 : MsgTeclasPadraoIt2()
  Case RetVal="F3":
       Del
       Moveto [Sequencia do Cheque]
       If RecordStatus("New")
          Then MENSAGEM("Sem Item p/ ver !")
               QuitLoop
       EndIf
       Opcao_Ver=True
       CHAVEB=0
       Home
       NITEMCH  =[Sequencia do Cheque]
       Controla_EdicaoB()
       QuitLoop
       
  Case RetVal="F4": 
       Del
       Ler_Cheque()
       Return
  Case RetVal="F5": 
       Del
       Observacao("Observacao")
       QuitLoop
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       del
       While True
         Moveto "\\Sistemas\\CheqRec\\ChequeI"
         Moveto [Valor]   VSVRCHEQUES=ImageCSum()

         PAGINA("\\Sistemas\\CheqRec\\ChequeI","MR")
         If EDITAR="S"
            Then CHAVEB=0
                 NLANCC =[Numero do Lancamento]
                 NITEMCH  =[Sequencia do Cheque]
                 Controla_EdicaoB()
            Else If EXCLUIR="S"
                    Then If TITULOS_SOANOTACOES
                            Then FastMsg("Exclus„o n„o permitida !")
                                 UnLockRecord
                            Else If QuerExcluir("")
                                    Then Del
                                    Else UnLockRecord
                                 EndIf       
                         EndIf
                    Else QuitLoop
                 EndIf
         EndIf
         SetaPosForm()
       EndWhile
       QuitLoop
  Case Retval="ESC":
       CHAVEB=9
       Del
       Return
  Case Retval="PGDN":
       CHAVEB=9
       Tecla_Funcao=""
       DIGITAC =False
       Del
       Return
  Case Retval="ENTER": 
       If IsBlank([])
          Then If NITEMCH=0
                  Then NITEMCH=1
                  Else NITEMCH=NITEMCH+1
               EndIf
          Else NITEMCH=[]
       EndIf
       Del
       Locate NLANCC,NITEMCH
       If Retval
          Then CHAVEB=0
          Else CHAVEB=1
               End Down
               [Numero do Lancamento]=NLANCC
               [Sequencia do Cheque ]=NITEMCH
               Locate NLANCC,NITEMCH
       EndIf                
       Return
  EndSwitch
 EndWhile
EndWhile
EndProc ; (CHAVEB)

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

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        If IsAssigned(END_COB)
           Then If END_COB Or FICHA_FIN Or CAD_COMP 
                   Then Campo="YES_END"
                EndIf
           Else If Opcao_Ler_Cheque = True
                   Then If AchouPessoa
                           Then Campo ="DataV"
                           Else Campo ="TipoEmit"
                        Endif   
                        VSD_Situacao   ="EM ABERTO"
                   Else If CHAVEB=1
                           Then Campo ="CBChq"  
                           Else If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                                   Then Campo ="TipoEmit"
                                   Else Campo ="CBChq"
                                EnDIf   
                        EndIf
                EndIf
                If CHAVEB=1
                   Then VSD_Situacao="EM ABERTO"
                EndIf
        EndIf
EndIf      

If Opcao_Ver        =True  Then Campo="I_Seq" EndIf

Temp=True
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 NITEMCH=[Sequencia do Cheque]
                      Inicia_Registroech()
              EndIf
          EndSwitch
   
   
      Case Evento["KeyCode"] = 9:
           Temp=False
      Case Evento["KeyCode"] = 4:
           If COPIOU_REGISTRO and CHAVEB=1
              Then REGISTRO["Codigo CMC7"]=""
                   copyFromArray REGISTRO
                   [Numero do Lancamento]=NLANCC
                   [Sequencia do Cheque ]=NITEMCH
                   Ler_Gravar_Cheque("Ler")
           EndIf
           RefreshDialog
      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 "\\Sistemas\\CheqRec\\ChequeI"
                    RefreshDialog
           EndIf
           If Campo="TipoEmit"
              Then ShowPopup " Emitente " @ 14,42
                      "~P~roprio" : " O Proprio Cliente" : "PROPRIO",
                      "~T~erceiro": " De Terceiro": "TERCEIRO"
                   EndMenu
                    To MenuVar
                       If MenuVar<>"Esc"
                          Then VSD_TipoEmit=MenuVar
                       EndIf
                   RefreshDialog
           EndIf
           Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEB=0
               Then If QuerExcluir("")
                       Then CHAVEB=8
                            CancelDialog
                    EndIf
            EndIf
      Case Evento["KeyCode"] = -81:  
             VSD_CBanco   =ControlValue("CBanco")
             VSD_Nome     =ControlValue("Nome")
             VSD_Agencia  =ControlValue("Agencia")
             VSD_CCorrente=ControlValue("CCorrente")
             VSD_NCheque  =ControlValue("NCheque")
             VSD_TipoEmit =ControlValue("TipoEmit")
             VSD_Cidade   =ControlValue("Cidade")
             VSD_UF       =ControlValue("UF")
             VSD_DataV    =ControlValue("DataV")
             VSD_DataE    =ControlValue("DataE")
             VSD_Valor    =ControlValue("Valor")
             VSD_Situacao =ControlValue("Situacao")
             VSD_Obs      =ControlValue("Obs")
             VSD_CPF      =ControlValue("CPF")
             VSD_CBChq    =ControlValue("CBChq")

             Pode_Gravar=True
             If IsBlank(VSD_TipoEmit)
                Then Mensagem("Emitente Invalido !")
                     Pode_Gravar=False
             EndIf
             If IsBlank(VSD_DataV)
                Then Mensagem("Data Vencimento Invalida !")
                     Pode_Gravar=False
             EndIf
             If IsBlank(VSD_DataE)
                Then Mensagem("Data Entrada Inv lida !")
                     Pode_Gravar=False
             EndIf        
             If IsBlank(VSD_Valor)
                Then Mensagem("Valor Invalido !")
                     Pode_Gravar=False
             EndIf

             If Pode_Gravar
                Then Ler_Gravar_Cheque("Gravar")
                     CancelDialog
             EndIf
      Case Evento["KeyCode"] = 27: 
           Switch
            Case Campo="CBanco" Or Campo="CBChq" :
                 SAIR_CHQ=False
                 If Campo="CBanco"
                    Then If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                            Then If CHAVEB=1
                                    Then Campo="CBChq"
                                    Else SAIR_CHQ=True
                                 EndIf   
                            Else Campo="CBChq"
                         EndIf
                    Else SAIR_CHQ=True
                 EndIf
                 
                 If SAIR_CHQ   
                    Then If QuerDesfazer("")
                            Then If CHAVEB=1
                                    Then Del
                                    Else Undo                       
                                 EnDIf  
                                CancelDialog      
                         EndIf
                 EndIf 
           
             Case Campo="Agencia"     : Campo="CBanco"
             Case Campo="CCorrente"   : Campo="Agencia"
             Case Campo="NCheque"     : Campo="CCorrente"
             Case Campo="TipoEmit" :
                 If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                    Then If CHAVEB=1
                            then Campo="CBChq"
                            else Undo
                                 CancelDialog      
                         endif   
                    Else Campo="NCheque"
                 EndIf
             Case Campo="CPF"         : Campo="TipoEmit"
             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="DataE"       : Campo="Valor"
             Case Campo="Obs"         : Campo="DataE"
             Case Campo="YES_END"     : CancelDialog
           EndSwitch

           Temp=False
      Case Evento["KeyCode"] = 13:
           Switch
            Case Campo="CBChq" :
                 VSD_CBChq=ControlValue("CBChq")
                 If Len(VSD_CBChq)<=4
                    Then VSD_CBChq=""
                 EndIf    
                 
                 If Not IsBlank(VSD_CBChq)
                    Then If Len(VSD_CBChq)<>34 
                            Then Mensagem("Digite os 34 d¡gitos do C¢digo de Barra do Cheque !")
                                 Campo="CBChq"
                            Else If Valida_Leitura_Cheque(VSD_CBChq)
                                    Then VSD_CBChq="<"+SubStr(VSD_CBChq,02,08)+
                                                   "<"+SubStr(VSD_CBChq,11,10)+
                                                   ">"+SubStr(VSD_CBChq,22,12)+
                                                   ":"

                                         VSD_CBanco    = SubStr(VSD_CBChq,2,3)
                                         VSD_Agencia   = RTRIM(SubStr(VSD_CBChq,5,4))
                                         VSD_CCorrente = RTRIM(SubStr(VSD_CBChq,25,8))
                                         VSD_NCheque   = RTRIM(SubStr(VSD_CBChq,14,6)) 
                                            
                                         getrecord "\\sistemas\\cheqrec\\banco" VSD_CBanco to regbanco
                                         if retval
                                            Then
                                                 VSD_NBanco    =regbanco["Nome_Banco"]     
                                                    
                                                 getrecord "\\sistemas\\cheqrec\\CDPessoa" VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE to regcdpessoa
                                                 if retval
                                                    Then VSD_CPF   =regcdpessoa["CPF"           ]
                                                         VSD_Nome  =regcdpessoa["Titular_Cheque"]
                                                         VSD_Cidade=regcdpessoa["Cidade"        ]
                                                         VSD_UF    =regcdpessoa["UF"            ]
                                                         AchouPessoa=True
                                                         If CLIENTE_CPF=VSD_CPF
                                                            Then VSD_TipoEmit="PROPRIO"
                                                            Else VSD_TIPOEmit="TERCEIRO"
                                                         EndIf
                                                         Campo="DataV"
                                                    else 
                                                         AchouPessoa=false
                                                         Campo="TipoEmit"      
                                                 EndIf                       
                                             Else Mensagem("Banco n„o Cadastrado !")
                                                  VSD_CBanco=""
                                                  VSD_NBanco=""
                                         EndIf 
                                    Else FastMsg("C¢digo inv lido! * Valor: "+VSD_CBChq)
                                         Campo="CBChq"
                                 EndIf                    
                          EndIf
                    Else Campo="CBanco"      
                 EndIf    
                 If Campo<>"CBChq"
                    Then If Existe_Cheque("CTAREC")
                            Then Campo="CBChq"
                         EndIf    
                  EndIf
             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 "\\Sistemas\\CheqRec\\ChequeI"
                                  [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 CHAVEB=1 And
                     Not IsBlank(VSD_AGENCIA) And
                     Not IsBlank(VSD_CCORRENTE)
                     Then Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                          Moveto [Codigo_Banco]
                          Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
                          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]
                                  AchouPessoa=True
                                  If CLIENTE_CPF=VSD_CPF
                                     Then VSD_TipoEmit="PROPRIO"
                                     Else VSD_TIPOEmit="TERCEIRO"
                                  EndIf
                                  Campo="NCheque"
                          EndIf                       
                          Moveto "\\Sistemas\\CheqRec\\ChequeI"
                  EndIf   
             Case Campo="NCheque":
                  VSD_NCheque=ControlValue("NCheque")
                  If CHAVEB=1 And AchouPessoa
                     Then Campo="DataV"
                     Else Campo="TipoEmit"
                  EndIf   
                  If Existe_Cheque("CTAREC")
                     Then Campo="NCheque"
                  EndIf
             Case Campo="TipoEmit":
                  VSD_TipoEmit=ControlValue("TipoEmit")
                  If Not IsBlank(VSD_TipoEmit)
                     Then If CHAVEB=1 And VSD_Nome="" And VSD_TipoEmit="PROPRIO"
                             Then VSD_CPF   =CLIENTE_CPF
                                  VSD_Nome  =CLIENTE_NOME
                                  VSD_Cidade=CLIENTE_CIDADE
                                  VSD_UF    =CLIENTE_UF
                                  Campo="DataV"
                             Else Campo="CPF"
                          EndIf
                  Endif
             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 CHAVEB=1 And 
                             Not AchouPessoa And 
                             Not IsBlank(VSD_CPF)
                             Then 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]
                                          Campo="DataV"
                                  EndIf                       
                                  Moveto "\\Sistemas\\CheqRec\\ChequeI"
                          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"                                  
                                  [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="DataE"
                  EndIf
             Case Campo="DataE":    
                  VSD_DataE=ControlValue("DataE")
                  If IsBlank(VSD_DataE)
                     Then VSD_DataE=Today()
                  EndIf   
                  Campo="Obs"
                  ULTDATACHEQ = VSD_DataE
             Case Campo="Obs":
                  VSD_Obs=ControlValue("Obs")
                  Ler_Gravar_Cheque("Gravar")
                  CancelDialog
             Case Campo="YES_END" : CancelDialog     
           EndSwitch

           Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="CBanco"      Or
   Campo="TipoEmit"    Or
   Campo="Cidade"      Or
   Campo="UF"          Or
   Campo="Situacao"
   Then TECLA=TECLA+"F1=Tabelas  "
   Else TECLA=TECLA+"            "
EndIf

If CHAVEB=1 And COPIOU_REGISTRO
   Then TECLA=TECLA+"Ctrl+D=Copiar  PgDn=Finalizar  "
EndIf

If CHAVEB=0
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf

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

Switch
  Case Campo="*******":
       MSGCAMPO=""
  Case Campo="CBanco":
       MSGCAMPO="C¢digo do Banco"
  Case Campo="DataE":
       MSGCAMPO="Data de Entrada do Cheque/Referente a Data Pagamento"
  Case Campo="CBChq":
       MSGCAMPO="Digite ou use o leitor para o c¢digo CMC7 !"
  OtherWise:
       MSGCAMPO=""
EndSwitch

@ 23,0 ?? ">"+Format("W79,AL",MSGCAMPO)
PaintCanvas Attribute 30 23,0,23,79
          
@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79

Mouse Hide
RefreshDialog
Return TEMP
EndProc  ; (Geral_Dialog)
               
;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Ler_Gravar_Cheque(Opcao)
Private Opcao,CDPessoaNova,wi

Switch
  Case Opcao="Ler":
       VSD_I_SEQ     =[Sequencia do Cheque     ]
       VSD_DataV     =[Data Vencimento         ]
       If CHAVEB=0 
          Then VSD_DataE = [Data_Entrada]
          Else VSD_DataE = ULTDATACHEQ     
       EndIf
       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_Situacao  =[Situacao                ]
       VSD_CPF       =[CPF                     ]  
       VSD_DataL     =BlankDate()
       
       If [Codigo CMC7]<>""
          Then If Len([Codigo CMC7])=34
                  Then VSD_CBChq="#"+SubStr([Codigo CMC7],02,08)+
                                 "#"+SubStr([Codigo CMC7],11,10)+
                                 "#"+SubStr([Codigo CMC7],22,12)+
                                 "#" 
                  Else VSD_CBChq=[Codigo CMC7]
               EndIf 
          Else VSD_CBChq=""       
       EndIf
       
  Case Opcao="Gravar":
       [Codigo_Banco            ]=VSD_CBanco
       [Nome_Banco              ]=VSD_NBanco
       [Agencia                 ]=VSD_Agencia
       [Numero_Conta            ]=VSD_CCorrente
       [Numero_Cheque           ]=VSD_NCheque
       [CPF                     ]=VSD_CPF
       [Tipo_Emitente           ]=VSD_TipoEmit
       [Titular_Cheque          ]=VSD_Nome
       [Cidade                  ]=VSD_Cidade
       [UF                      ]=VSD_UF
       [Data Vencimento         ]=VSD_DataV
       [Data_Entrada            ]=VSD_DataE
       [Valor                   ]=VSD_Valor
       [Observacao do Cheque    ]=VSD_Obs
       [Sistema Origem          ]="CR"
       [Lancamento Origem       ]=[Duplic->Numero do Lancamento]
       [Tipo do Documento       ]=[Duplic->Codigo do Documento ]
       [Numero do Documento     ]=[Duplic->Numero do Documento ]
       [Situacao                ]=VSD_Situacao
       [Codigo_Cliente          ]=[Duplic->Codigo do Destinatario]
       [Data_Entrada            ]=VSD_DataE
       
       If Len(VSD_CBChq)=34
          Then [Codigo CMC7 ]=VSD_CBChq
          Else [Codigo CMC7 ]=""
       EndIf   
       
       If [Situacao]<>"LIQUIDADO"
          Then [Data_Liquidado]=BlankDate()
       EndIF
       If [Situacao]="LIQUIDADO" And
          SITUACAO_CHEQUE<>"LIQUIDADO"
          Then [Data_Liquidado]=Today()
       EndIf
       
       If CHAVEB=1 
          Then Controle_Dia() 
       EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True

       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
                    End
                    Down
                    [Codigo_Banco        ]=VSD_CBanco
                    [Agencia             ]=VSD_Agencia
                    [Numero_Conta        ]=VSD_CCorrente
            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 "\\Sistemas\\CheqRec\\ChequeI"
EndSwitch
EndProc  ; (Ler_Gravar_Cheque)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registroech()
INICIO_DIALOG=True
Moveto [Sequencia do Cheque]
Locate NLANCC,NITEMCH
Ler_Gravar_Cheque("Ler")
EndProc ; (Ler_Gravar_Cheque)

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

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

If SYS_CODIGO_CLIENTE<>"0112" And
   SYS_CODIGO_CLIENTE<>"0143" And
   SYS_CODIGO_CLIENTE<>"0102" 
   Then If [\Sistemas\Ctarec\Duplic->Valor do Documento]=[\Sistemas\Ctarec\Duplic->Saldo do Documento]
           Then Del
                CHAVEB=9                    
                Mensagem("Nenhuma baixa realizada para informar cheques recebidos!")
                Return
        EndIf   
EndIf

If TITULOS_SOANOTACOES
   Then FastMsg("Altera‡„o n„o permitida!")
        Return
EndIf

Echo Normal             
Echo Off
                                 
INICIO_DIALOG=True                    
Ler_Gravar_Cheque("Ler")
SITUACAO_CHEQUE=[Situacao]

Showdialog "Dados do Cheque [      ]" Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP",-46, -6, -147, 4
     @ 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 "A9" 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 CHAVEB=8 Then Del EndIf

EndProc  ; (Digita_Cheque)


;*******************************************************************************
;* Exclusao de Baixas e Lancamento                                             *
;*******************************************************************************
Proc EXCLUSAO()
Exclusao_Cabeca=True

if sys_codigo_cliente="0388"
   then Mensagem("ExclusÆo nÆo permitida !// // Verificar com a gerˆncia !")
        return
endif   

Ativa_Form("DupBaixa")
Moveto "\\Sistemas\\CtaRec\\DupBaixa"
While RecordStatus("New")=False
   VROLD=[Valor do Recebimento]
   JSOLD=[Valor do Juros]
   DSOLD=[Valor do Desconto]
   VCOLD=[Valor da Comissao]
   CHAVEI=8
   CONTA()
   TIT()
   
   SEQ_BAIXA    = [Sequencia da Baixa]
   PARAM_FT_RAT = "RATEIO_EXCLUSAO"
   PLay "\\Sistemas\\CtaCor\\FT_RAT"
   
   Moveto "DupBaixa"
   Grava_LogEx("Duplic Baixa")
   Del
EndWhile
Ativa_Form("Duplic")
Moveto "Duplic"

SEQ_BAIXA    = "0"
PARAM_FT_RAT = "RATEIO_EXCLUSAO"
PLay "\\Sistemas\\CtaCor\\FT_RAT"

Moveto "\\Sistemas\\CtaRec\\DupNotas"
While RecordStatus("New")=False
   Del
EndWhile
           
If Not IsBlank([\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque])
   Then Moveto "\\Sistemas\\CheqRec\\ChequeI"
        While RecordStatus("New")=False
           Del
        EndWhile

        Moveto "\\Sistemas\\CheqRec\\ChequeC"
        Moveto [Numero do Lancamento]
        Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
        If RetVal
           Then Del
        EndIf
EndIf
Moveto "\\Sistemas\\CtaRec\\Duplic"
Grava_LogEx("Duplic")
Del

EndProc  ; (EXCLUSAO)

;*******************************************************************************
;* Atualizacao do Titulo                                                       *
;*******************************************************************************
Proc TIT()
Moveto "\\Sistemas\\CtaRec\\Duplic"

Switch
Case CHAVEI=0 or CHAVEI=1:
     [Saldo do Documento]=Round([Saldo do Documento]+((VROLD-JSOLD)+DSOLD),2)
     [Saldo do Documento]=Round([Saldo do Documento]-
                          (([\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]-
                            [\Sistemas\CtaRec\DupBaixa->Valor do Juros      ])+
                            [\Sistemas\CtaRec\DupBaixa->Valor do Desconto]),2)
     [Saldo da Comissao ]=Round(([Saldo da Comissao ]+VCOLD)-
                           [\Sistemas\CtaRec\DupBaixa->Valor da Comissao   ],2)

    ;Valor Recebido    
     WCSW_BAIXA=Round(WCSW_BAIXA-VROLD,2)
     WCSW_BAIXA=Round(WCSW_BAIXA+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento],2)

Case CHAVEI=8:
     [Saldo do Documento]=Round([Saldo do Documento]+((VROLD-JSOLD)+DSOLD),2)
     [Saldo da Comissao ]=Round([Saldo da Comissao ]+VCOLD,2)

    ;Valor Recebido   
     WCSW_BAIXA=Round(WCSW_BAIXA-VROLD,2)
EndSwitch

If CHAVEI=1 And [\Sistemas\CtaRec\DupBaixa->Tipo da Baixa]="CANCELADO" And 
   SYS_CODIGO_CLIENTE="0222" And Search("SUBST",Upper([\Sistemas\CtaRec\DupBaixa->Observacoes]))>0
   Then If SubStr(RTrim([Numero do Documento]),Len(RTrim([Numero do Documento]))-1,2)<>"CS"
           Then [Numero do Documento]=RTrim([Numero do Documento])+"CS"
        EndIf   
EndIf
UnLockRecord



If CHAVEI=1 and NDA > 0 And [\Sistemas\CtaRec\DupBaixa->Tipo da Baixa]="NORMAL"
   Then Moveto "\\Sistemas\\Cadastro\\FichaCli"
        Locate [\Sistemas\CtaRec\Duplic->Codigo do Destinatario]
        If RetVal
           Then While IsLockRecord() EndWhile
                [Numero de Atrasos] = [Numero de Atrasos] + 1
                If [Maior Atraso] < NDA
                   Then [Maior Atraso] = NDA
                        [Data do Maior Atraso ]=[\Sistemas\CtaRec\DupBaixa->Data do Pagamento]
                        [Valor do Maior Atraso]=[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
                EndIf
                UnLockRecord
        EndIf
EndIf

Moveto "\\Sistemas\\CtaRec\\DupBaixa"
EndProc ; (TIT)


;*******************************************************************************
;* Atualizacao Conta Corrente                                                  *
;*******************************************************************************
Proc Atualiza_SaldoConta()
If IsBlank([DupBaixa->Data do Pagamento])
   Then Return False
EndIf    
   
ANOREF=StrVal(Year([DupBaixa->Data do Pagamento]))
MESREF=AlinhM(StrVal(Month([DupBaixa->Data do Pagamento])),2)

Moveto "\\Sistemas\\CtaCor\\SaldCont"
While True
  Moveto [Codigo da Conta]
  Locate [DupBaixa->Codigo da Conta],ANOREF,MESREF
  If Not RetVal
     Then End Down
          [Codigo da Conta]=[DupBaixa->Codigo da Conta]
          [Ano Referencia ]=ANOREF
          [Mes Referencia ]=MesREF
          [Saldo Inicial  ]=0
          [Entradas       ]=0
          [Saidas         ]=0
          If IsLockRecord()
             Then Del
          EndIf   
     Else If Not IsLockRecord()
             Then QuitLoop
          EndIf   
  EndIf
EndWhile

Return True
EndProc

;*******************************************************************************
;* Atualizacao Conta Corrente                                                  *
;*******************************************************************************
Proc CONTA()
Private WB, regAccarrgc
                                                  
If SubStr([Duplic->Descricao do Lancamento],1,10)="DESCONTADA" Or
   [Duplic->Nome Fantasia Represent]             ="DEVOLUCAO"  Or
   [\Sistemas\CtaRec\DupBaixa->Tipo da Baixa   ]<>"NORMAL"
   Then Return True
EndIf

SEQ_BAIXA   = [Sequencia da Baixa]
TIPO_CARREG = ""

if not isblank([DupBaixa->Numero_Carregamento])
   then
        getrecord "\\sistemas\\vendas\\Accarrgc" [DupBaixa->Numero_Carregamento] to regAccarrgc
        If RetVal
           Then TIPO_CARREG=regAccarrgc["Tipo_Carregamento"]
        EndIf
endif

If (TIPO_CARREG="MANIFESTO" Or TIPO_CARREG="PRE-VENDA") And ([Tipo da Conta]="X")
   Then Return True
EndIf

While True
  Switch
  Case CHAVEI=0: 
       WB=1
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\DupBaixa->Lancamento Conta Corrente],
              [\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
       If Not RetVal
          Then MSG=    "Lan‡amento no Caixa/Banco n„o encontrado p/ esta Baixa !//"
               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 !//"
               MSG=MSG+"Se necess rio exclua esta Baixa e fa‡a-a novamente !"
               Mensagem(MSG)
               QuitLoop
          Else If [Sistema Gerador       ]<>"CR" Or
                  [Empresa Gerador       ]<>[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa] Or
                  [Lancamento Gerador    ]<>[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento] Or
                  [Sequencia Gerador     ]<>[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa] Or
                  [Codigo do Documento   ]<>[\Sistemas\CtaRec\Duplic->Codigo do Documento] Or
                  [Numero do Documento   ]<>[\Sistemas\CtaRec\Duplic->Numero do Documento]
                  Then MSG=    "Movimento no Caixa/Banco n„o corresponde a esta Baixa !//"
                       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 !//"
                       MSG=MSG+"Se necess rio exclua esta Baixa e fa‡a-a novamente !"
                       Mensagem(MSG)
                       QuitLoop
               EndIf
               While IsLockRecord() EndWhile
               WB=0
               [Valor                 ]=[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
               [Valor do Desconto     ]=[\Sistemas\CtaRec\DupBaixa->Valor do Desconto   ]
               [Valor do Juros        ]=[\Sistemas\CtaRec\DupBaixa->Valor do Juros      ]
               [Codigo do Documento   ]=[\Sistemas\CtaRec\Duplic->Codigo do Documento]
               [Numero do Documento   ]=[\Sistemas\CtaRec\Duplic->Numero do Documento]
               [Codigo do EmitDest    ]=[\Sistemas\CtaRec\Duplic->Codigo do Destinatario]
               
               If Ltrim(Rtrim([\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta]))<>""
                  Then GetRecord "\\Sistemas\\CtaCor\\PlContas" Ltrim(Rtrim([\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta])) To REG_PLCONTAS
                       If RetVal
                          Then [Codigo Plano_Conta]=Ltrim(Rtrim([\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta]))
                          Else Mensagem("Plano de Conta "+Ltrim(Rtrim([\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta]))+" n„o localizado!") 
                       EndIf                      
                       Release Vars REG_PLCONTAS
               EndIf
               
               If [DupBaixa->Data do Pagamento]=[Duplic->Data de Emissao]
                  Then [Tipo do Lancamento    ]="I"
                  Else [Tipo do Lancamento    ]="J"
               EndIf
               [Codigo CCusto         ]=[\Sistemas\CtaRec\DupBaixa->Codigo CCusto ]
               [Codigo do Historico   ]=[\Sistemas\CtaRec\DupBaixa->Codigo do Historico]
               [Descricao do Historico]=[\Sistemas\CtaRec\DupBaixa->Descricao do Historico]
               If IsBlank([Descricao do Historico])
                  Then [Codigo do Historico   ]=""
                       [Descricao do Historico]="REC. "+[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                                                "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]
               EndIf
               UnLockRecord

               If Atualiza_SaldoConta()
                  Then [Entradas]=([Entradas]-VROLD)+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
                       UnLockRecord
               EndIf        
                    
               Moveto "\\Sistemas\\CtaRec\\DupBaixa"
               LANCTO_RATEIO = [\Sistemas\CtaCor\MovCont->Numero do Lancamento]
               [Lancamento Conta Corrente] = LANCTO_RATEIO
               UnLockRecord
               
               ;Verifica Lan‡amentos de Rateio no Movrat -----------------------
               TIPO_RATEIO  = "Baixa"
               PARAM_FT_RAT = "RATEIO_MOVCONT_EXCLUSAO"
               PLay "\\Sistemas\\CtaCor\\FT_RAT"
               PARAM_FT_RAT = "RATEIO_MOVCONT_ADICAO"
               PLay "\\Sistemas\\CtaCor\\FT_RAT"
       EndIf        
  Case CHAVEI=1:
       WB=0
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       While True
         End
         If Numero_Lancamento("Interno","")
            Then NLANCMC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
         EndIf
         Down
         [Numero do Lancamento]=NLANCMC
         [Codigo da Conta     ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Conta   ]
         If Not IsLockRecord()
            Then QuitLoop
            Else Del
         EndIf
       EndWhile
       [Codigo da Empresa     ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa     ]
       [Tipo de Operacao      ]="07"
       switch
         case [Tipo da Conta]="C" and not isblank([\Sistemas\CtaRec\DupBaixa->DataEfetivadoBanco    ]):
           [Data  ]=[\Sistemas\CtaRec\DupBaixa->DataEfetivadoBanco    ]

         otherwise                : 
           [Data  ]=[\Sistemas\CtaRec\DupBaixa->Data do Pagamento     ]
           
       endswitch
       [Data Competencia      ]=[Duplic->Data de Emissao                          ]
       [Valor                 ]=[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento  ]
       [Valor do Desconto     ]=[\Sistemas\CtaRec\DupBaixa->Valor do Desconto     ]
       [Valor do Juros        ]=[\Sistemas\CtaRec\DupBaixa->Valor do Juros        ]
       [Codigo do Documento   ]=[\Sistemas\CtaRec\Duplic->Codigo do Documento     ]
       [Numero do Documento   ]=[\Sistemas\CtaRec\Duplic->Numero do Documento     ]
       [Sistema Gerador       ]="CR"
       [Empresa Gerador       ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa     ]
       [Lancamento Gerador    ]=[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento  ]
       [Sequencia Gerador     ]=[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa    ]
       [Codigo do EmitDest    ]=[\Sistemas\CtaRec\Duplic->Codigo do Destinatario  ]
       [Codigo Plano_Conta    ]=[\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta    ]
       If [DupBaixa->Data do Pagamento]=[Duplic->Data de Emissao                  ]
          Then [Tipo do Lancamento    ]="I"
          Else [Tipo do Lancamento    ]="J"
       EndIf
       [Codigo CCusto         ]=[\Sistemas\CtaRec\DupBaixa->Codigo CCusto         ]
       [Codigo do Historico   ]=[\Sistemas\CtaRec\DupBaixa->Codigo do Historico   ]
       [Descricao do Historico]=[\Sistemas\CtaRec\DupBaixa->Descricao do Historico]
       If IsBlank([Descricao do Historico])
          Then [Codigo do Historico   ]=""
               [Descricao do Historico]="REC. "+[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                                        "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]
       EndIf
       Controle_Dia()
       UnLockRecord

       If Atualiza_SaldoConta()
          Then [Entradas]=[Entradas]+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
               UnLockRecord
       EndIf
       
       Moveto "\\Sistemas\\CtaRec\\DupBaixa"
       LANCTO_RATEIO =[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
       [Lancamento Conta Corrente]=LANCTO_RATEIO
       UnLockRecord
       
       ;Verifica Lan‡amentos de Rateio no Movrat -------------------------------
       TIPO_RATEIO  = "Baixa"
       PARAM_FT_RAT = "RATEIO_MOVCONT_EXCLUSAO"
       PLay "\\Sistemas\\CtaCor\\FT_RAT"
       PARAM_FT_RAT = "RATEIO_MOVCONT_ADICAO"
       PLay "\\Sistemas\\CtaCor\\FT_RAT"
       
  Case CHAVEI=8: 
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\DupBaixa->Lancamento Conta Corrente],
              [\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
       If Not RetVal
          Then If Not Exclusao_Cabeca
                  Then MSG=    "Lan‡amento no Caixa/Banco n„o encontrado p/ esta Baixa !//"
                       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 !//"
                       MSG=MSG+"Deseja Excluir esta Baixa assim mesmo ?"
                       ConfGeral(MSG)
                       If OK="S"
                          Then WB=0
                          Else WB=1
                       EndIf
                  Else WB=0
               EndIf
          Else If [Sistema Gerador       ]<>"CR" Or
                  [Empresa Gerador       ]<>[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa] Or
                  [Lancamento Gerador    ]<>[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento] Or
                  [Sequencia Gerador     ]<>[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa] Or
                  [Codigo do Documento   ]<>[\Sistemas\CtaRec\Duplic->Codigo do Documento] Or
                  [Numero do Documento   ]<>[\Sistemas\CtaRec\Duplic->Numero do Documento]
                  Then MSG=    "Lan‡amento no Caixa/Banco n„o corresponde a esta Baixa !//"
                       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 !//"
                       MSG=MSG+"Deseja Excluir esta Baixa assim mesmo ?"
                       ConfGeral(MSG)
                       If OK="S"
                          Then WB=0
                          Else WB=1
                       EndIf
                  Else While IsLockRecord() EndWhile
                       WB=0
                       If Atualiza_SaldoConta()
                          Then [Entradas]=[Entradas]-VROLD
                               UnLockRecord
                               
                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                               LANCTO_RATEIO = [Numero do Lancamento]
                               Del
                               
                               ;Verifica Lan‡amentos de Rateio no Movrat -------
                               Moveto "DupBaixa"
                               TIPO_RATEIO  = "Baixa"
                               PARAM_FT_RAT = "RATEIO_MOVCONT_EXCLUSAO"
                               PLay "\\Sistemas\\CtaCor\\FT_RAT"
                       EndIf
               EndIf
       EndIf       
  EndSwitch
  QuitLoop
EndWhile

Moveto "\\Sistemas\\CtaRec\\DupBaixa"

If WB=0
   Then Return True
   Else Return False
EndIf

EndProc ; (CONTA)

;*******************************************************************************
;* 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                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

TECLA=""
MSG_CAMPO=""
Temp=True

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        Switch
          Case SD=1: Campo="TG_VENCIMENTOS"
          Case SD=2: Campo="TG_DOCTO"
          Case SD=3: Campo="TG_OPDOCTO"
        EndSwitch
EndIf

If Disparo="OPEN" Then AoCriarShowDialog() EndIf

If Disparo="CLOSE"
   Then Switch
          Case Campo="YES": AcceptDialog
          Case Campo="NO" : CancelDialog
        EndSwitch
        Return Temp
EndIf

If Disparo="SELECT" And Campo="TG_VENCIMENTOS" And
   DynArraySize(Array_Vencimentos)>0 
   Then Temp=True
        CHAMA=True
        Vencimento()
EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_ADICIONA":
            Temp=True
            CHAMA=False
            Vencimento()
          Case Campo="TG_MULTIPLA":
            Temp=True
            Quant()
            Campo="TG_VENCIMENTOS"
          Case Campo="YES": AcceptDialog
          Case Campo="NO" : CancelDialog
          OtherWise       : Return Temp
        EndSwitch
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False

     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case SD=1:
              Switch 
						    Case Campo="TG_ADICIONA"       : Campo="TG_VENCIMENTOS"
						    Case Campo="TG_MULTIPLA"       : Campo="TG_VENCIMENTOS"
						    Case Campo="TG_VENCIMENTOS"    : Campo="NO"
                Case Campo="YES" Or Campo="NO" : Campo="TG_VENCIMENTOS"
              EndSwitch
            Case SD=2: 
              Switch 
                Case Campo="TG_DOCTO"          : CancelDialog
                Case Campo="TG_DTEMID"         : Campo="TG_DOCTO"
                Case Campo="TG_DTREFE"         : Campo="TG_DTEMID"
						    Case Campo="TG_VALOR"          : Campo="TG_DTREFE"
              EndSwitch
            Case SD=3: 
              Switch 
                Case Campo="TG_OPDOCTO"        : Campo="NO"
						    Case Campo="TG_PARCELA"        : Campo="TG_OPDOCTO"
                Case Campo="TG_OPDTEM"         : Campo="TG_PARCELA"
                Case Campo="YES" Or Campo="NO" : Campo="TG_OPDOCTO"
              EndSwitch
          EndSwitch

       Case Evento["KeyCode"]=-60 And DynArraySize(Array_Vencimentos)>0:
            Campo="TG_VENCIMENTOS"

       Case Evento["KeyCode"] = -83 And Campo="TG_VENCIMENTOS":
            If DynArraySize(Array_Vencimentos)>0 And NumVal(ArrayElement)>1
               Then If QuerExcluir("este vencimento")
                       Then Array_vencimentos[ArrayElement]=""

                            DynArray Array_VencimentosI[]
                            c=0
                            For i From 1 To DynArraySize(Array_Vencimentos)
                              If IsBlank(Array_Vencimentos[i]) Then Loop EndIf
                              c=c+1
                              Array_VencimentosI[c]=AlinhM(StrVal(c),2)+SubStr(Array_Vencimentos[i],3,70)
                            EndFor

                            Release Vars Array_Vencimentos
                            DynArray Array_Vencimentos[]
                            For i From 1 To DynArraySize(Array_VencimentosI)
                              Array_Vencimentos[i]=Array_VencimentosI[i]
                            EndFor
                            Release Vars Array_VencimentosI
                    EndIf
            EndIf
       Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_OPDOCTO"   : Campo="TG_PARCELA"
                         VSDGOPDOCTO=ControlValue("TG_OPDOCTO")
                    Case Campo="TG_PARCELA"   : Campo="TG_OPDTEM"
                         VSDGPARCELA=ControlValue("TG_PARCELA")
                    Case Campo="TG_OPDTEM"   : Campo="YES"
                         
                    Case Campo="TG_DOCTO"          : Campo="TG_DTEMID"
                         VSDGDOCTO=ControlValue("TG_DOCTO")
                    Case Campo="TG_DTEMID"         : Campo="TG_DTREFE"
                         VSDGDTEMID=ControlValue("TG_DTEMID")
                    Case Campo="TG_DTREFE"         : Campo="TG_VALOR"
                         VSDGDTREFE=ControlValue("TG_DTREFE")
                    Case Campo="TG_VALOR"          :
                         VSDGVALOR=ControlValue("TG_VALOR")
                         AcceptDialog

                    Case Campo="TG_VENCIMENTOS" And
                         DynArraySize(Array_Vencimentos)>0:
                         CHAMA=True
                         Vencimento()
                    Case Campo="TG_ADICIONA":
                         CHAMA=False
                         Vencimento()
                    Case Campo="TG_MULTIPLA":  Campo="TG_VENCIMENTOS"
                         Quant()

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "

Switch
  Case Campo="TG_OPDTEM"       : MensagemCheckBoxes()
  Case Campo="TG_PARCELA"      : MSGCAMPO="Informe a quantidade de desdobramentos a mais que deseja gerar"
  Case Campo="TG_DOCTO"        : MSGCAMPO="Informe o documento "
  Case Campo="TG_DTEMID"       : MSGCAMPO="Informe a emissäo "
  Case Campo="TG_DTREFE"       : MSGCAMPO="Informe o vencimento "
  Case Campo="TG_VALOR"        : MSGCAMPO="Informe o valor "

  Case Campo="TG_ADICIONA"     : MSGCAMPO="Adicionar novo desdobramento [Enter]"
  Case Campo="TG_MULTIPLA"     : MSGCAMPO="Gera multiplos desdobramentos [Enter]"

  Case Campo="TG_OPDOCTO"      : MensagemRadioButtons()
  Case Campo="TG_VENCIMENTOS"  : MSGCAMPO="Vencimentos "
       If DynArraySize(Array_Vencimentos)>0
          Then TECLA=TECLA+"Del=Excluir  Enter=Editar  "+Chr(27)+""+Chr(26)+"=Selecionar  "
       EndIf

  Case Campo="YES"             : MSGCAMPO="Confirma Dados [Enter]"
  Case Campo="NO"              : MSGCAMPO="Cancelar [Enter]"
EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)

RefreshDialog
Return TEMP
EndProc  ; (Sd_Dialog)

;*******************************************************************************
;*  Rotina para a Tela Principal                                                *
;*******************************************************************************
Proc Inicial()
Message("")
Echo Normal
Echo Off
Mouse Show

If IsAssigned(Array_Vencimentos)
   Then Release Vars Array_Vencimentos
EndIf
DynArray Array_Vencimentos[]

VSDGOPDOCTO=1
VSD_I_SEQ=1

;1234567890123456789012345678901234567
;01 1234567890 99/99/9999 9.999.999,99
  Array_Vencimentos[1]="01 "+
                       Format("W10,AL",[Duplic->Numero do Documento])+" "+
                       Format("D13",DateVal([Duplic->Data de Emissao]))+" "+
                       Format("D13",DateVal([Duplic->Data de Vencimento]))+" "+
                       Format("W12.2,EIC",[Duplic->Saldo do Documento])+" "+
                       Format("W12.2",[Duplic->Saldo do Documento])

SD=1
INICIO_DIALOG=True

ShowDialog "Relacao de Desdobramentos" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
     Key "ENTER","ESC","F2","DEL"
   @ 02,03 Height 19 Width 57

    Frame Single From 00,00 to 14,54

    PickDynArray @ 02,01 Height 12 width 52
     Columns 1
      Array_Vencimentos
       Tag "TG_VENCIMENTOS"
        To ArrayElement
    Label @ 00,01 "~D~esdobramentos"  For "TG_VENCIMENTOS"
    Label @ 01,01 "N§   Docto     DtEmiss„o  DtVencto         Valor"  For "TG_VENCIMENTOS"
   
                  ;01 1234567890 99/99/9999 99/99/9999 9.999.999,99
    Pushbutton @ 15,00 width 13 "~N~ovo"                               Tag "TG_ADICIONA"  To BottonValue
    Pushbutton @ 15,14 width 13 "~M~ultiplas"                          Tag "TG_MULTIPLA"  To BottonValue
    
    Pushbutton @ 15,30 width 11 "~O~k"       OK     Default Value "Ok" Tag "YES"          To BottonValue
    Pushbutton @ 15,43 width 11 "~C~ancela"  CANCEL                    Tag "NO"           To BottonValue

  EndDialog
  Mouse Show
  If Not RetVal
     Then Return False
     Else Return True
  EndIf

EndProc  ;(Inicial)

;*******************************************************************************
;*  Rotina para a Tela de Vencimentos                                         *
;*******************************************************************************
Proc Vencimento()
;1234567890123456789012345678901234567
;01 1234567890 99/99/9999 9.999.999,99

If CHAMA
   Then VSD_I_SEQ =SubStr(Array_Vencimentos[ArrayElement],1,2)
        VSDGDOCTO  =RTrim(SubStr(Array_Vencimentos[ArrayElement],4,10))
        VSDGDTEMID=DateVal(LTrim(SubStr(Array_Vencimentos[ArrayElement],15,2))+"."+
                                 SubStr(Array_Vencimentos[ArrayElement],18,2)+"."+
                                 SubStr(Array_Vencimentos[ArrayElement],21,4))
        VSDGDTREFE=DateVal(LTrim(SubStr(Array_Vencimentos[ArrayElement],26,2))+"."+
                                 SubStr(Array_Vencimentos[ArrayElement],29,2)+"."+
                                 SubStr(Array_Vencimentos[ArrayElement],32,4))
        VSDGVALOR =NumVal(SubStr(Array_Vencimentos[ArrayElement],50,12))
   Else Array_Vencimentos[1]="01 "+
             Format("W10,AL",[Duplic->Numero do Documento])+" "+
             Format("D13",DateVal([Duplic->Data de Emissao]))+" "+
             Format("D13",DateVal([Duplic->Data de Vencimento]))+" "+
             Format("W12.2,EIC",[Duplic->Saldo do Documento])+" "+
             Format("W12.2",[Duplic->Saldo do Documento])
            
             VSD_I_SEQ =AlinhM(StrVal(DynArraySize(Array_Vencimentos)+1),2)
             VSDGDOCTO =""
             VSDGVALOR =BlankNum()
             VSDGDTEMID=BlankDate()
             VSDGDTREFE=BlankDate()
EndIf

While True
  SD=2
  INICIO_DIALOG=True
  ShowDialog "Desdobramento [    ]" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "ENTER","ESC"
   @ 03,19   Height 04 Width 58

    Accept @ -01,33 Width 4 "A2" Tag "I_Seq" To VSD_I_SEQ

    Label  @ 00,00 "Docto"  For "TG_DOCTO"
    Accept @ 01,01 Width 13 "A10"  Picture "!*!" Tag "TG_DOCTO" To VSDGDOCTO

    Label  @ 00,18 "Emiss„o"  For "TG_DTEMID"
    Accept @ 01,15 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTEMID" To VSDGDTEMID

    Label  @ 00,28 "Vencto"  For "TG_DTREFE"
    Accept @ 01,29 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREFE" To VSDGDTREFE

    Label  @ 00,42 "Valor" For "TG_VALOR"
    Accept @ 01,43 Width 12 "$" picture "#*#.[##]" Tag "TG_VALOR" To VSDGVALOR

  EndDialog
  Mouse Show
  If Not RetVal
		 Then QuitLoop
  EndIf

  If IsBlank(VSDGDOCTO)
    Then Mensagem("Documento Invalido !")
         Loop
  EndIf
;;If Ver_Data(VSDGDOCTO,VSDGDTREFE)
;;   Then Mensagem("Documento ou Data J  existe nos vencimentos !//Verificar !")
;;        Loop
;;EndIf
  If IsBlank(VSDGVALOR) Or IsBlank(VSDGDTREFE) Or IsBlank(VSDGDTEMID)
    Then Mensagem("Data ou Valor Invalido !")
         Loop
  EndIf

  ;01 1234567890 99/99/9999 9.999.999,99
  Array_Vencimentos[NumVal(VSD_I_SEQ)]= VSD_I_SEQ+" "+
                                Format("W10,AL",VSDGDOCTO)+" "+
                                Format("D13",VSDGDTEMID)+" "+
                                Format("D13",VSDGDTREFE)+" "+
                                Format("W12.2,EIC",VSDGVALOR)+" "+
                                Format("W12.2",VSDGVALOR)
  Return
EndWhile

SD=1
EndProc    ; (Vencimento)

;*******************************************************************************
;*  Rotina para a Digitacao da Quantidade de Parcelas                          *
;*******************************************************************************
Proc Quant()
VSDGPARCELA=BlankNum()

SD=3
INICIO_DIALOG=True

Array TG_OPDTEM[1]
TG_OPDTEM[1]="Gerar Data de Emiss„o diferentes"

Array CheckTG_OPDTEM[ArraySize(TG_OPDTEM)]
CheckTG_OPDTEM[1]=False

ShowDialog " +Desdobramento(s) " Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "ENTER","ESC"
 @ 03,20   Height 11 Width 57

  Label @ 00,00 "Desdobramento do Documento por" For "TG_OPDOCTO"
   RadioButtons @ 01,01 Height 1 Width 55
     "~L~etra",
     "~N~umero",
     "~M~es/Ano",
     "~P~arcela"
     Tag "TG_OPDOCTO"
     To VSDGOPDOCTO
     
  @ 02,00 ?? "      docto/A    docto/1      MM/AA        NP/TP"   

  Label  @ 04,00 "Quantidade"  For "TG_PARCELA"
  Accept @ 05,03  Width 05 "A4"  Picture "#*#" Tag "TG_PARCELA" To VSDGPARCELA
  
  CheckBoxes @ 05,12 Height 1 Width 40 Tag "TG_OPDTEM"
  TG_OPDTEM[1] to CheckTG_OPDTEM[1]

  Pushbutton @ 07,30 width 11 "~O~k"       OK     Default Value "Ok" Tag "YES"          To BottonValue
  Pushbutton @ 07,43 width 11 "~C~ancela"  CANCEL                    Tag "NO"           To BottonValue
  
EndDialog
Mouse Show
If RetVal
   Then If Not IsBlank(VSDGPARCELA)
           Then Datas(VSDGPARCELA)
        EndIf
EndIf

SD=1
EndProc  ;(Quant)

;*******************************************************************************
;* Calcula as Datas das Parcelas                                               *
;*******************************************************************************
Proc Datas(PARCELAS)
Private PARCELAS,DOCTO,VALOR,DATAp,DATAE,
        DATA,DIA,MES,ANO,CONT,pos,
        DATAEM,DIAEM,MESEM,ANOEM,
        NMES, NANO, NPARC, TPARC

If DynArraySize(Array_Vencimentos)>0
  Then 
       DOCTO =RTrim(SubStr(Array_Vencimentos[1],4,10))
       DATAEM=DateVal(LTrim(SubStr(Array_Vencimentos[1],15,2))+"."+
                SubStr(Array_Vencimentos[1],18,2)+"."+
                SubStr(Array_Vencimentos[1],21,4))
       DATA  =DateVal(LTrim(SubStr(Array_Vencimentos[1],26,2))+"."+
                SubStr(Array_Vencimentos[1],29,2)+"."+
                SubStr(Array_Vencimentos[1],32,4))
       VALOR =NumVal(SubStr(Array_Vencimentos[1],50,12))
  Else 
       DOCTO =RTrim([Duplic->Numero do Documento])
       DATAEM=DateVal(LTrim([Duplic->Data de Emissao]))
       DATA  =DateVal(LTrim([Duplic->Data de Vencimento]))
       VALOR =NumVal([Duplic->Saldo do Documento])
EndIf

Release Vars Array_Vencimentos
DynArray Array_Vencimentos[]

If DynArraySize(Array_Vencimentos)<=0
   Then
        Array_Vencimentos[1]="01 "+
                 Format("W10,AL",[Duplic->Numero do Documento])+" "+
                 Format("D13",DateVal([Duplic->Data de Emissao]))+" "+
                 Format("D13",DateVal([Duplic->Data de Vencimento]))+" "+
                 Format("W12.2,EIC",[Duplic->Saldo do Documento])+" "+
                 Format("W12.2",[Duplic->Saldo do Documento])
   Else
        Array_Vencimentos[1]= AlinhM(StrVal(1),2)+" "+
                  Format("W10,AL",DOCTO)+" "+
                  Format("D13",DateVal([Duplic->Data de Emissao]))+" "+
                  Format("D13",DATA)+" "+
                  Format("W12.2,EIC",VALOR)+" "+
                  Format("W12.2",VALOR)
EndIf

DIA  =NumVal(Day(DATA))
MES  =NumVal(Month(DATA))
ANO  =NumVal(Year(DATA))

DIAEM=NumVal(Day(DATAEM))
MESEM=NumVal(Month(DATAEM))
ANOEM=NumVal(Year(DATAEM))

CONT =2

While CONT<=NumVal(PARCELAS)+1
    If MES<12
       Then MES=MES+1
       Else ANO=ANO+1
            MES=1
    EndIf
   If Day(Ultimo_dia(AlinhM(StrVal(MES),2)+StrVal(ANO)))<DIA
      Then DIA=Day(Ultimo_dia(AlinhM(StrVal(MES),2)+StrVal(ANO)))
   EndIf

   DATAP=DateVal(AlinhM(StrVal(MES),2)+"/"+AlinhM(StrVal(DIA),2)+"/"+StrVal(ANO))

   If Not  CheckTG_OPDTEM[1]
      Then DATAE=DATAEM
      Else If MESEM<12
              Then MESEM=MESEM+1
              Else ANOEM=ANOEM+1
                   MESEM=1
           EndIf
           If Day(Ultimo_dia(AlinhM(StrVal(MESEM),2)+StrVal(ANOEM)))<DIAEM
              Then DIAEM=Day(Ultimo_dia(AlinhM(StrVal(MESEM),2)+StrVal(ANOEM)))
           EndIf
           DATAE=DateVal(AlinhM(StrVal(MESEM),2)+"/"+AlinhM(StrVal(DIAEM),2)+"/"+StrVal(ANOEM))
   EndIf

   Switch
     Case VSDGOPDOCTO=1:
           pos=SearchFrom("/",DOCTO,1)
           pos=pos-1
           If pos<1
              Then Pos=Len(Docto)
           EndIf
           DOCTO=SubStr(DOCTO,1,pos)+"/"+Chr(64+Cont)
      Case VSDGOPDOCTO=2:
           pos=SearchFrom("/",DOCTO,1)
           pos=pos-1
           If pos<1
              Then Pos=Len(Docto)
           EndIf
           DOCTO=SubStr(DOCTO,1,pos)+"/"+StrVal(Cont)
      Case VSDGOPDOCTO=3:
           NVDOCTO="?"
           pos=SearchFrom("/",DOCTO,1)
           pos=pos-1
           If pos>0
              Then NMES=SubStr(DOCTO,1,pos)
                   NANO=RTrim(SubStr(DOCTO,pos+2,4))
                   If ConteudoNumerico(NMES) And
                      ConteudoNumerico(NANO)
                      Then NMES=NumVAl(NMES)
                           NANO=NumVAl(NANO)
                           If NMES>=1 And NMES<=12
                              Then If NMES<12
                                      Then NMES=NMES+1
                                      Else NANO=NANO+1
                                           NMES=1
                                   EndIf
                                   NVDOCTO=AlinhM(StrVal(NMES),2)+"/"+StrVal(NANO)
                           EndIf
                   EndIf
           EndIf
           DOCTO=NVDOCTO
           If CONT=2 And NVDOCTO="?"
              Then Mensagem("Documento formato invalido !// //Informe MM/AAAA.")
           EndIf
      Case VSDGOPDOCTO=4:
           NVDOCTO="?"
           pos=SearchFrom("/",DOCTO,1)
           pos=pos-1
           If pos>0
              Then NPARC=SubStr(DOCTO,1,pos)
                   TPARC=RTrim(SubStr(DOCTO,pos+2,4))
                   If ConteudoNumerico(NPARC) And
                      ConteudoNumerico(TPARC)
                      Then NPARC=NumVal(NPARC)+1
                           NVDOCTO=StrVal(NPARC)+"/"+TPARC
                   EndIf
           EndIf
           DOCTO=NVDOCTO
           If CONT=2 And NVDOCTO="?"
              Then Mensagem("Documento formato invalido !// //Informe 9/9.")
           EndIf
   EndSwitch

   Array_Vencimentos[CONT]= AlinhM(StrVal(CONT),2)+" "+
                      Format("W10,AL",DOCTO)+" "+
                      Format("D13",DATAE)+" "+
                      Format("D13",DATAP)+" "+
                      Format("W12.2,EIC",VALOR)+" "+
                      Format("W12.2",VALOR)

   CONT=CONT+1
 EndWhile

EndProc  ;(Datas)

;*******************************************************************************
;* Rotina para Verificar se a Data Digitada e o Documento ja existem           *
;*******************************************************************************
Proc Ver_Data(DOCTO,DATA)
Private Ok,DOCTO,DATA,I

Ok=False

If DynArraySize(Array_Vencimentos)<=0
   Then Return Ok
EndIf

For i From 1 To DynArraySize(Array_Vencimentos)
  If i=NumVal(VSD_I_SEQ) Then Loop EndIf
  If DATA=DateVal(LTrim(SubStr(Array_Vencimentos[i],15,2))+"."+
                  SubStr(Array_Vencimentos[i],18,2)+"."+
                  SubStr(Array_Vencimentos[i],21,4))
     Then Ok=True
          QuitLoop
  EndIf
  If DOCTO=RTrim(SubStr(Array_Vencimentos[i],4,10))
     Then Ok=True
          QuitLoop
  EndIf
EndFor

Return Ok
EndProc  ;(Ver_Data)

;*******************************************************************************
;* Rotina p/ exibir obseerva‡Æo                                                *
;*******************************************************************************        
Proc Observacao(PARAM)
Private AUX_MSG

Switch
  Case PARAM ="Descritivo" :
       AUX_MSG = [DupNotas->Historico da Anotacao]
       If AUX_MSG<>""
          Then Ler_Memo("Descritivo",15,00,07,80,AUX_MSG)
       EndIf    
  Case PARAM ="Vendas" :                 
       AUX_MSG = ""
       GetRecord "\\Sistemas\\Cadastro\\DestMsg" [Duplic->Codigo do Destinatario] To REG_DESTMSG
       If RetVal
          Then AUX_MSG = REG_DESTMSG["Observacoes"]
       EndIf
       If AUX_MSG<>""
          Then Ler_Memo("Descritivo",10,01,13,76,AUX_MSG)
       EndIf                            
  Case PARAM="DestObs"    :
       AUX_MSG = ""
       GetRecord "\\Sistemas\\Cadastro\\DestObs" [Duplic->Codigo do Destinatario] To REG_DESTOBS
       If RetVal
          Then AUX_MSG = REG_DESTOBS["Observacoes"]
       EndIf
       If AUX_MSG<>""
          Then Ler_Memo("Observa‡”es",10,01,13,76,AUX_MSG)
       EndIf                     
  Case PARAM="Observacao" :
       AUX_MSG = [Duplic->Observacoes]
       If AUX_MSG<>""
          Then Ler_Memo("Observa‡”es",08,01,15,76,AUX_MSG)
       EndIf   
EndSwitch

EndProc ;Observacao()    

;*******************************************************************************
;* Rotina Imprime Recibo                                                       *
;*******************************************************************************
Proc Imprime_Recibo()
SaveTables

Release Vars PARAM_IMPRESSAO
MSGDISPOSITIVO="Recibo"
DispositivoI("RCB")

If OK="" 
   Then Return
EndIf

clieant="****"
ULTIMA_BAIXA=True

ENDERECO=""
BAIRRO  =""
CIDADE  =""
TELEFONE=""

GetRecord "\\Sistemas\\Cadastro\\Destinat" [Duplic->Codigo do Destinatario] To REG_DESTINATARIO 
If RetVal
  Then ENDERECO = REG_DESTINATARIO["Endereco"]                
       BAIRRO   = REG_DESTINATARIO["Bairro"  ]
       CIDADE   = REG_DESTINATARIO["Cidade"  ]
       TELEFONE = REG_DESTINATARIO["Telefone"]
EndIf

Moveto "Dupbaixa"
Moveto [Sequencia da Baixa]

Locate NLANC,NITEM
If Retval 
   Then ArqImp="Recibo.txt"
        Deleta_Arquivo(Arqimp)
        Sleep 700
       
        Play PARAM_RELAT
        ImpriArq(ArqImp)
EndIf

EndProc ;Imprime_Recibo()

;*******************************************************************************
;* Ativa FORM                                                                  *
;*******************************************************************************           
Proc Ativa_Form(PARAM)

;Adicionado em 19/07/2081 p/ ser poss¡vel a inclusao da MOV_RAT no FORM, pois nÆo havia limites p/
;mais inclusÆo de tabelas linked/unliked, e diante deste controle foi poss¡vel a inclusao de tabelas unliked

Switch
  Case PARAM="DupBaixa" : Moveto "Duplic"
                          UnLockRecord
                          PickForm "11"
                          ResyncKey
                          While IsLockRecord() EndWhile
                          SetaCorRegistro_Baixa()
                          Moveto "DupBaixa"
                          SetaCorRegistro("Editar")
                          
  Case PARAM="Duplic"   : Moveto "Duplic"
                          UnLockRecord
                          PickForm "4"
                          ResyncKey
                          While IsLockRecord() EndWhile
                          SetaCorRegistro_Tabela()
                          Moveto "DupBaixa"
                          SetaCorRegistro("Editar")
EndSwitch

EndProc ;Ativa_Form()

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

If IsEmpty("P_Duplic")
   Then Mensagem("N„o esta Configurado os Parametros para Lan‡amentos e Baixas de Titulos !")
        Result=False
   Else 
        UnLockRecord
        KeyPress "F7"
        While True
          If Not IsLockRecord()
             Then QuitLoop
          EndIf
        EndWhile
        
        Moveto "P_Duplic"
        Moveto [Codigo_Empresa]
        Locate [Duplic->Codigo da Empresa]
        If Not RetVal
           Then Mensagem("Parametros n„o Cadastrado para esta Empresa !")
                Result=False
           Else PARAM_RELAT                    =[Impressao_Recibo         ]
                PARAM_UTILIZA_JUROS_DEVIDO     =[Utiliza_Juros_Devido     ]
                PARAM_UTILIZA_COMISSAO         =[Utiliza_Comissao         ]
                PARAM_UTILIZA_NUM_CARREGAMENTO =[Utiliza_Num_Carregamento ]
                PARAM_UTILIZA_FORMAS_RECEBER   =[Utiliza_Formas_Receber   ]
                PARAM_HISTORICO_DEFAULT        =[Historico_Default        ]
                PARAM_PLANO_CONTA_DCC          =[Plano_Conta_DCC          ]
                PARAM_PLANO_CONTA_AVISTA       =[Plano_Conta_AVista       ]
                PARAM_PLANO_CONTA_APRAZO       =[Plano_Conta_APrazo       ]
                PARAM_PLANO_CONTA_DEBITO       =[Plano_Conta_Debito       ]
                PARAM_PLANO_CONTA_CREDITO      =[Plano_Conta_Credito      ]
                PARAM_COMISSAO_JUROS_DESCTO    =[Comissao_Juros_Descto    ]
                PARAM_CTA_BAIXA_IGUAL_LANCTO   =[Cta_Baixa_Igual_Lancto   ]
                PARAM_CONTA_CAIXA              =[COdigo_Conta_Caixa       ]  
                PARAM_BLOQUEIA_ANOTACAO        =[Bloqueia_Anotacao        ]
                PARAM_BLOQUEIA_ALTERA_BAIXA    =[Bloqueia_Altera_Baixa    ]
                PARAM_SALDO_GERA_NOVO_LANC     =[Saldo Gera Novo Lancament]
                Result=True
        EndIf
EndIf

Moveto "Duplic"
KeyPress "F7"

Return Result
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()

Inicia_Registro()
If CHAVEI=0
   Then 
        Switch
          Case TITULOS_SOBXDIA=True And 
               [Data do Pagamento]=Today()     : ;Permite a altera‡Æo nesse caso
          Case PARAM_BLOQUEIA_ALTERA_BAIXA="S" : Return
          Case PARAM_BLOQUEIA_ALTERA_BAIXA="P" : If Not Checa_Supervisor()
                                                    Then Return
                                                 EndIf                                          
        EndSwitch
EndIf    
Digita_Baixa()
Moveto "\\Sistemas\\CtaRec\\DupBaixa"
If RecordStatus("Locked") Then UnLockRecord EndIf

If IsAssigned(IMPRIME_RECIBO_DUPBXII) And IMPRIME_RECIBO_DUPBXII And TITULOS_SOBAIXAS
   Then Imprimiu_Recibo=False
        Moveto [Sequencia da Baixa]
        Locate NITEM  
        DUP_BAIXAS[DynArraySize(DUP_BAIXAS)+1] = Format("W6",[Numero do Lancamento])+Format("W3",[Sequencia da Baixa]) 
EndIf
SaveTables

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoD()

If RecordStatus("New")
   Then CHAVEB=1 
   Else CHAVEB=0
EndIf                             

If CHAVEB=0 Then Controle_Dia() EndIf

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

DIGITA_NOTAS()

If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoB()

If RecordStatus("New")
   Then CHAVEI=1 
   Else CHAVEI=0
EndIf                             

If CHAVEI=1 Then Controle_Dia() EndIf

DIGITA_CHEQUE()

Moveto "\\Sistemas\\CheqRec\\ChequeI"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina pega dados do cadastro cliente                                       *
;*******************************************************************************
Proc Pega_DadosCliente()

Moveto [Codigo do Destinatario] 
If BUSCA_LOOKUP("Codigo",[Duplic->Codigo do Destinatario],"SM")
   Then CLIENTE_NOME  =REG_BUSCA_LOOKUP["Razao Social"]
        CLIENTE_CIDADE=REG_BUSCA_LOOKUP["Cidade"      ]
        CLIENTE_UF    =REG_BUSCA_LOOKUP["UF"          ]
        CLIENTE_CPF   =REG_BUSCA_LOOKUP["CGC"         ]
        FORM_CONTATO  =REG_BUSCA_LOOKUP["Contato"]+" - "+REG_BUSCA_LOOKUP["Telefone"]
   Else CLIENTE_NOME  =""
        CLIENTE_CIDADE=""
        CLIENTE_UF    =""
        CLIENTE_CPF   =""
        FORM_CONTATO  =""
EndIf

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Private CampAnt, vrtotch

COD_EMPRESA=[Duplic->Codigo da Empresa]
DIGITAC=True
Tecla_Funcao=-10

While DIGITAC

  If CHAVEC=0
     Then If Not Carrega_Parametros()
             Then CHAVEI=9
                  DIGITAC =False
                  Tecla_Funcao=""
                  QuitLoop
          EndIf           
  EndIf  

  vsvrcheques=BlankNum()
  Tecla_Funcao=BlankNum()
  Moveto "\\Sistemas\\CtaRec\\Duplic"

  Pega_DadosCliente()
  If Not TITULOS_SOBAIXAS And Not TITULOS_SOANOTACOES 
     Then DIGITAC()
          If CHAVEC=9 Then QuitLoop EndIf
          Pega_DadosCliente()
  EndIf   

  Switch                          
    Case TITULOS_SOBAIXAS    : Tecla_Funcao="F8"
    Case TITULOS_SOANOTACOES : Tecla_Funcao="F9" 
  EndSwitch  

  If CHAVEC=1
     Then Controle_Dia()
  EndIf

  While Not IsBlank(Tecla_Funcao)
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case Table()="Duplic"                       : Tecla_Funcao="F8"
						 Case Table()="Dupbaixa"                     : Tecla_Funcao="F6"
             Case Table()="\\sistemas\\cheqrec\\chequei" : Tecla_Funcao="F9"
             Case Table()="Dupnotas"                     : Tecla_Funcao=-10
             OtherWise                                   : Tecla_Funcao=""
           EndSwitch
			Case Tecla_Funcao=-115:
           Switch
             Case Table()="Duplic"                       : Tecla_Funcao="F9"
						 Case Table()="Dupbaixa"                     : Tecla_Funcao=-10
             Case Table()="\\sistemas\\cheqrec\\chequei" : Tecla_Funcao="F8"
             Case Table()="Dupnotas"                     : Tecla_Funcao="F6"
             OtherWise                                   : Tecla_Funcao=""
           EndSwitch  
    EndSwitch

    Switch
      Case Tecla_Funcao=-10  : DIGITAC()

      Case Tecla_Funcao="F11" or 
           Tecla_Funcao=-133 : Dados_Cliente()
                               Release Vars END_COB, CAD_COMP, FICHA_FIN, FAZ_FICHA_FIN, FAZ_ENDCOB, FAZ_COMP
      Case Tecla_Funcao="F8" : 
           Moveto "\\Sistemas\\CtaRec\\Duplic"
           Moveto [Pag_2]
           Origem_Disparo = "Duplic"
           
           Ativa_Form("DupBaixa")
           While True 
             CHAVEI()
             If CHAVEI=9
                Then If TITULOS_SOBAIXAS
                        Then If Tecla_Funcao<>"F6" And 
                                Tecla_Funcao<>"F9" And 
                                Tecla_Funcao<>-115 And  
                                Tecla_Funcao<>-116 And
                                Tecla_Funcao<>-133
                                Then Tecla_Funcao=""
                             EndIf   
                     EndIf
                     QuitLoop
             EndIf
             
             If TITULOS_SOANOTACOES
                Then  If Field()="Sequencia da Baixa"
                         Then Del
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
             EndIf
             Controla_EdicaoI()
           EndWhile
           Ativa_Form("Duplic")
                
      Case Tecla_Funcao="F6": 
           Moveto "\\Sistemas\\CtaRec\\Duplic"
           Moveto [Numero_Carregamento_Cheq]
            
           While true

              MSGCAMPO="N§ Carregamento do acerto"
              MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"

              TECLA=""
              Prompt TECLA 
              SpeedBar "["+Chr(17)+"]"  :"ESC",
                       "    "           :"ENTER",
                       "       "        :"ENTER",
                       "~Fun‡”es~"      :-33,
                       "     "          :"ENTER",
                       Chr(060)+Chr(17) :-115,
                       Chr(16)+Chr(062) :-116,
                       "~?~"            :-94,
                       "["+Chr(16)+"]"  :"PGDN"

              Wait Field
                Until "ESC","ENTER",
                      "PGDN","F5",
                      -94,-33,-115,-116,"F1","F5","F8","F9"
                      ClearSpeedBar

              Switch
              Case RetVal=-94 : MsgTeclasPadraoIt2()
              Case Retval="F1":
                   CONSULTAF1()
              Case RetVal="F5":
                   Observacao("Observacao")                   
              Case RetVal="F8" Or RetVal="F9" Or 
                   RetVal=-115 Or RetVal=-116 :
                   Moveto "\\sistemas\\cheqrec\\chequei"
                   Tecla_Funcao=RetVal
                   CHAVEB=9
                   QuitLoop
              Case Retval="PGDN":
                   CHAVEB=9
                   Tecla_Funcao=""
                   DIGITAC =False
                   QuitLoop
              Case Retval="ESC":
                   If TITULOS_SOBAIXAS
                      Then [Numero_Carregamento_Cheq]=""
                   EndIf
                   If TITULOS_SOANOTACOES
                      Then Tecla_Funcao="F9"
                      Else Tecla_Funcao="F8"
                   EndIf
                   CHAVEB=9
                   QuitLoop
              Case Retval="ENTER":
                   CHAVEB=0
                   QuitLoop
              EndSwitch
            EndWhile
            
            If TITULOS_SOANOTACOES
               Then TabAnt=Table()
                    Moveto "Duplic"              
                    [Numero_Carregamento_Cheq]=""
                    Moveto TabAnt
            EndIf 
        
            If CHAVEB=9
               Then TabAnt = Table()
                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    If IsBlank([Numero Lancamento Cheque])
                       Then [Numero_Carregamento_Cheq]=""
                    EndIf
                    Moveto TabAnt
                    Loop
            EndIf

            Moveto "\\Sistemas\\CheqRec\\ChequeC"
            Moveto [Numero do Lancamento]
            If IsBlank([\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque])
               Then CH_Ok=False
               Else Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then CH_Ok=True
                       Else CH_Ok=False
                    EndIf
            EndIf
            If Not CH_OK                     
               Then 
                    while true
                      End
                      NLANCC=[Numero do Lancamento]
                      Down
                      NLANCC=NLANCC+1
                      [Numero do Lancamento]=NLANCC
                      
                      if not islockrecord()
                         then quitloop
                      endif
                      del
                    endwhile     
                      
                    [Codigo da Empresa ]=[\Sistemas\CtaRec\Duplic->Codigo da Empresa ]
                    [Data de Entrada   ]=Today()
                    Controle_Dia()
                    UnLockRecord

                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    [Numero Lancamento Cheque]=NLANCC
                    UnLockRecord
                    IsLockRecord()
                    ;SaveTables
            EndIf
            
            Moveto "\\Sistemas\\CheqRec\\ChequeI"
            While True  
              CHAVEB()
              If CHAVEB=9
                 Then QuitLoop
              EndIf
              If CHAVEB=13
                 Then Loop
              EndIf               
              If TITULOS_SOANOTACOES
                 Then If Field()="Sequencia do Cheque"
                         Then Del
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
              EndIf                 
              Controla_EdicaoB()        
            EndWhile     
                              
            
            If RecordStatus("New")
               Then CHAVEI=1
                    Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    Moveto [Numero do Lancamento]
                    Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then Del
                    EndIf
                    
                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    [Numero Lancamento Cheque]=BlankNum()
                    [Numero_Carregamento_Cheq]=""
                    
                    Moveto "\\sistemas\\cheqrec\\chequei"                    
                    ;UnLockRecord
               Else CHAVEI=0 

                    vrtotch     =0
                    DTENTRADA   =Today()
                    Moveto "\\Sistemas\\CheqRec\\ChequeI"
                    Moveto [Valor ] vrtotch     =imagecsum()
                    Scan
                    
                      if not isBlank([Data_Entrada]) and vrtotch=0
                         then DTENTRADA=[Data_Entrada]
                              quitloop
                      endif
                         
                    EndScan

                    Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    [Data de Entrada         ] = DTENTRADA
                    [Codigo                  ] = [\Sistemas\Ctarec\Duplic->Codigo do Destinatario ]
                    [Razao Social            ] = [\Sistemas\Ctarec\Duplic->Nome Fantasia EmitDest ]
                    [Codigo do Representante ] = [\Sistemas\CtaRec\Duplic->Codigo do Representante]
                    [Observacao do Lancamento] = "REF. CR/"+
                            [\Sistemas\CtaRec\Duplic->Numero do Lancamento]+" "
                            +[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                            "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]+" - "+
                            [\Sistemas\CtaRec\Duplic->Nome Fantasia EmitDest]
                    [Sistema Gerador         ] = "CR"
                    [Numero Docto Gerador    ] = [\Sistemas\Ctarec\Duplic->Numero do Lancamento]
                    [Numero_Carregamento_Orig] = [\Sistemas\Ctarec\Duplic->Numero_Carregamento_Cheq]
                    [Valor Total             ] = vrtotch

                    UnLockRecord
                    
                    Moveto "\\sistemas\\cheqrec\\chequei"
            EndIf
            SetaCorRegistro("Padrao")


      Case Tecla_Funcao="F9" :  
           Moveto "\\Sistemas\\CtaRec\\Duplic"
           Moveto [Pag_3]
           
           Moveto "DupNotas"
           While True                                      
             DupNotas()
             If CHAVEB=9
                Then QuitLoop
             EndIf
              
             If Not IsAssigned(PER_ANOTACAO) ;BxClieEd
                Then PER_ANOTACAO=False
             EndIf   
             
             If TITULOS_SOBAIXAS And Not PER_ANOTACAO
                Then  If Field()="Sequencia da Anotacao"
                         Then Del
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
             EndIf
              
              Controla_EdicaoD()
           EndWhile
      OtherWise             : QuitLoop
    EndSwitch
  EndWhile
EndWhile
Moveto "\\Sistemas\\CtaRec\\Duplic"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="3"
   Then PickForm "3"
EndIf
SaveTables
EndProc

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

If Isblank([Codigo do Destinatario])
   Then Return False
EndIf   

GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo do Destinatario] To CLIE_INATIVO 
If RetVal
   Then If CLIE_INATIVO["Inativo"]="S"
           Then Switch
                  Case CLIE_INATIVO["Tipo"]="F" : Mensagem("Fornecedor Inativo!") 
                  Case CLIE_INATIVO["Tipo"]="C" : Mensagem("Cliente Inativo!")
                  OtherWise                     : Mensagem("Cadasro Inativo!")            
                EndSwitch
                Return True     
        EndIf  
EndIf

Return False

EndProc ;Cliente_Inativo()

;*******************************************************************************
;* Checagem de dados da pagina                                                 *
;*******************************************************************************
Proc Checagem_Pagina()

;*** Checagem de Campos ***
CAMPOS_OK=False
Switch
  Case IsBlank([Codigo da Empresa])       : Mensagem("Empresa Inv lida !")   
  Case IsBlank([Codigo da Conta])         : Mensagem("Conta Inv lida !")  
  Case IsBlank([Codigo do Destinatario])  : Mensagem("Destinat rio Inv lido !")
  Case IsBlank([Codigo do Documento]) Or
       IsBlank([Numero do Documento]) : Mensagem("Documento Inv lido !")
  Case IsBlank([Data de Emissao])     : Mensagem("Data de EmissÆo Inv lida !")
  Case IsBlank([Data de Vencimento])  : Mensagem("Data de Vencimento Inv lida !") 

  Case IsBlank([Data Limite Desconto]) And [Valor do Desconto]>0 :
       Mensagem("Data limite de desconto Inv lida !")
  
  Case Not IsBlank([Valor do Desconto]) And [Valor do Desconto]<0 : 
       Mensagem("Valor de Desconto Inv lido !")
  
  Case Not IsBlank([Data de Vencimento]) And [Data de Vencimento] < [Data de Emissao]:
       Mensagem("Data de vencimento menor que a data de emiss„o !") 
  
  Case IsBlank([Valor do Documento]) And [Valor do Documento]<0 : Mensagem("Valor do Documento Inv lido !")

  OtherWise: CAMPOS_OK=True

EndSwitch  
Return CAMPOS_OK
EndProc   ;  (Checagem_Pagina)

;*******************************************************************************
;* 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]="CF" : s="EmissÆo Cupom Fiscal"
   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]="AF" : s="Acerto Financeiro"
   Case [Sistema Gerador]="CB" : s="Gera‡Æo de Cobran‡a"
EndSwitch

return s
EndProc   ;  (Checagem_Pagina)

;*******************************************************************************
;* Seta Cor Registro das Tabelas envolvidas                                    *
;*******************************************************************************
Proc SetaCorRegistro_Tabela()

Moveto "DupBaixa"                         SetaCorRegistro("Padrao")
Moveto "DupNotas"                         SetaCorRegistro("Invisivel")
Moveto "DupRat"                           SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\Cadastro\\FichaCli"   SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CtaCor\\SaldCont"     SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CtaCor\\MovCont"      SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CheqRec\\ChequeC"     SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CheqRec\\ChequeI"     SetaCorRegistro("Padrao")
Moveto "\\Sistemas\\CheqRec\\Cdpessoa"    SetaCorRegistro("Invisivel")
Moveto "DupBaixa"

EndProc

;*******************************************************************************
;* Seta Cor Registro das Tabelas envolvidas - Baixas                           *
;*******************************************************************************
Proc SetaCorRegistro_Baixa()

Moveto "DupBaixa"                         SetaCorRegistro("Padrao")
Moveto "DupRat"                           SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\Cadastro\\FichaCli"   SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CtaCor\\SaldCont"     SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CtaCor\\MovCont"      SetaCorRegistro("Invisivel")
Moveto "\\Sistemas\\CtaCor\\MovRat"       SetaCorRegistro("Invisivel")
Moveto "DupBaixa"

EndProc

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

If Not IsAssigned(SYS_CHAPA_USUARIO)   
   Then 
        SYS_CHAPA_USUARIO="9999"   
   else
        ;-- Buscar Conta Padrao por Usuario --------------------------------------------
        GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To CONTA_USUARIO
        If RetVal
           Then CONTA_USUARIO=CONTA_USUARIO["Conta Padrao"]
           Else CONTA_USUARIO="" 
        EndIf   
        If CONTA_USUARIO=""
           Then Release Vars CONTA_USUARIO
        EndIf
EndIf

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""     EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""        EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""      EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""        EndIf

If Not IsAssigned(TITULOS_SOBAIXAS)    Then TITULOS_SOBAIXAS   =False  EndIf
If Not IsAssigned(TITULOS_SOBXDIA)     Then TITULOS_SOBXDIA    =False  EndIf
If Not IsAssigned(TITULOS_BAIXASII)    Then TITULOS_BAIXASII   =False  EndIf
If Not IsAssigned(TITULOS_EDITBX)      Then TITULOS_EDITBX     =False  EndIf   
If Not IsAssigned(TITULOS_SOANOTACOES) Then TITULOS_SOANOTACOES=False  EndIf   

LeiaINI(PrivDir()+"LER_CHQ.ini","VSD_LEITORCHQ.S.1")

View NoWindow "\\Sistemas\\CheqRec\\ChequeI"
View NoWindow "P_Duplic"
View NoWindow "\\Sistemas\\Cadastro\\Feriados"
View NoWindow "\\Sistemas\\Cadastro\\DestMail"                                                      
View NoWindow "\\Sistemas\\Cadastro\\Destinat"
CoEdit "Duplic"

PickForm "4"
;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf

TABELA_NOVA = False
If IsEmpty("Duplic") 
    Then TABELA_NOVA = True
         [Numero do Lancamento]="000000" 
         UnLockRecord 
EndIf

SetaCorRegistro_Tabela()

Moveto "Duplic"
PickForm "3"

If TABELA_NOVA Then Del EndIf
Release Vars TABELA_NOVA

If NRecords("Duplic")>1
   Then Home
        If IsBlank([Numero do Lancamento])
           Then Echo Normal
                Echo Off
                MSG="Existe registro com Erro !// //"
                MSG=MSG+"Verificar numero lan‡amento em branco !// //"
                MSG=MSG+"Excluir o lan‡amento e verificar a origem do mesmo !"
                Mensagem(MSG)
        EndIf
EndIf

WCSW_SDINI      =BlankNum()
WCSW_SDATU      =BlankNum()

WCSW_NLANC      =BlankNum()
WCSW_SDINI_ORIG =BlankNum()
WCSW_SDINI_ATUA =BlankNum()
WCSW_SDATU_ORIG =BlankNum()
WCSW_SDATU_ATUA =BlankNum()
WCSW_BAIXA      =BlankNum()

VRANT_NCARREG=""
VRANT_PLCONTA=""
VRANT_CTCUSTO=""

FORM_CONTATO =""

ULTDATA    =BlankDate()
ULTDATACHEQ=BlankDate()
GERA_NOVO_LANC=False

WS_DataEfetivadoBanco=BlankDate()

CONTA=""
NLANC=""
NLANCC=0
EMPRESA=""
OPCAO_FORM="3"
TIPO_TRABALHO=0
CAMPO=""

Origem_Disparo=""

Switch
  Case TITULOS_BAIXASII:
    Play "DupBxII"       
  Case TITULOS_SOANOTACOES:
    Play "DupBxII"    
  OtherWise:
    While True
      vsvrcheques=BlankNum()

      If Verifica_NRegistros("Duplic")
         Then COR_MENSAGEM="1"
              Mensagem(MSG_TABELA)
              Release Vars COR_MENSAGEM,MSG_TABELA
         Else Release Vars MSG_TABELA     
      EndIf    
             
      Switch
         Case TIPO_TRABALHO=0:
              CHAVEC()
         Case TIPO_TRABALHO=1:
              CHAVEC2()
         Case TIPO_TRABALHO=2:
              CHAVEC3()
      EndSwitch
      If CHAVEC=9
         Then QuitLoop
      EndIf
      If CHAVEC=5
         Then Loop
      EndIf
      If CHAVEC=6
         Then If OPCAO_FORM="3"
                 Then PickForm "3"
                 Else PickForm "4"
              EndIf
              Loop
      EndIf
      Controla_EdicaoC()
    EndWhile
EndSwitch
Do_It!
ClearAll
Release Vars All
Release Procs All
