;*  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
;Ultima Alteracao: 06/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Documento referente
;Ultima Alteracao: 06/09/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando lan‡amento "Interno" -> Numero_Lancamento("Interno","Locked_Down") Ou *Locked_CtrlPgDn
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta corrente cheque            
;Ultima Alteracao: 25/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fun‡Æo informar % e calcular comissao
;Ultima Alteracao: 26/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes do_it! echo ao sair
;Ultima Alteracao: 27/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes vrcomissao na baixa sem desconto Disparada
;Ultima Alteracao: 10/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes checagem exclusao de registro dupbaixa
;Ultima Alteracao: 17/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes vrcomissao na baixa %comissao direto
;Ultima Alteracao: 24/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Digita_Cheque()     
;Ultima Alteracao: 26/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ verificar baixa no caixa/banco -> PARAM_CORRECAO_BAIXA e Achou_Baixa()                 
;Ultima Alteracao: 14/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes private Disparo,Campo,Evento,Elemento nos showdialogs     
;Ultima Alteracao: 28/12/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processos de #0427#
;Ultima Alteracao: 09/01/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Carrega_Parametros(),Pega_DadosCliente()
;Ultima Alteracao: 09/01/2019 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado na proc CHAVEI() PostRecord KeyViol LeaveLocked ao criar registro na baixa
;Ultima Alteracao: 10/01/2019 por Bruno Carvalho
;Motivo Alteracao: Removido o Ativa_Form() que foi incluido para ser poss¡vel a inclusao da MOV_RAT no FORM
;                  Novo processo p/ otimiza‡Æo, mantendo a DUPBAIXA no mesmo FORM, sem a necessidade de altera‡Æo do FORM
;                  Ajustes Ficha_Financeira() e TIT() ao mover p/ "Fichacli" que foi retirado do FORM
;Ultima Alteracao: 23/01/2019 por Bruno Carvalho                                          
;Motivo Alteracao: Ajustes TIT() ao atualizar a ficha financeira, ao chamar o FichaCli, foi alterado p/ tabledd e nÆo ser  mais aberto no inicio da rotina
;Ultima Alteracao: 06/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sem view p_duplic e ajustes                 
;Ultima Alteracao: 23/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getrecord, fichacli, sem view chequei,destmail,feriados                 
;Ultima Alteracao: 06/05/2019 por Bruno Carvalho
;Motivo Alteracao: Foi adicionado um view p/ "ChequeI" ao iniciar o script  
;Ultima Alteracao: 13/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ctrl+D ou Alt+C copiar dados cheque
;Ultima Alteracao: 28/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes transferencias de rotinas para bib_dup
;Ultima Alteracao: 31/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lancamento de cheques                     
;Ultima Alteracao: 31/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0390                                     
;Ultima Alteracao: 06/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desabilitado Resynckey         
;Ultima Alteracao: 18/06/2019 por Bruno Carvalho
;Motivo Alteracao: Nomeado op‡Æo da escolha de forms -> "3" p/ FORM_RELACAO e "4" p/ FORM_MANUTENCAO                           
;Ultima Alteracao: 18/06/2019 por Bruno Carvalho
;Motivo Alteracao: Criado "DUPL_388.SC" p/ #0388# -> C¢pia da Duplic com a remo‡Æo total do processo de CHEQUE **script tempor rio p/ verifica‡Æo de erros
;Ultima Alteracao: 26/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes no plano de contas "SAIDA" ou "ENTRADA" -> Fun‡Æo PlContas() p/ verificar o plano de conta informado 
;Ultima Alteracao: 02/07/2019 por Kamila Gomes
;Motivo Alteracao: Ajustes tipo de movimento do PlContas() da baixa tem que ser igual a "E"
;Ultima Alteracao: 11/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0390
;Ultima Alteracao: 12/07/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes no processo de plano de conta
;Ultima Alteracao: 15/07/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ verificar altera‡Æo no lan‡amento -> Copia_Registro_Alteracao() e Verifica_Alteracao()
;Ultima Alteracao: 28/08/2019 por Bruno Carvalho
;Motivo Alteracao: Criado "DUPL_388.SC" p/ #0171# -> C¢pia da Duplic com a remo‡Æo total do processo de CHEQUE **script tempor rio p/ verifica‡Æo de erros
;Ultima Alteracao: 19/09/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0429 TRAVAR REPRESENTANTE
;Ultima Alteracao: 14/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes unlockrecord chequei
;Ultima Alteracao: 21/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desabilitar Existe_Cheque()
;Ultima Alteracao: 24/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes numero lancamento cheque         
;Ultima Alteracao: 24/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sem view chequei                 
;Ultima Alteracao: 13/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes baixa com plcontas cancelado/devolu‡Æo
;Ultima Alteracao: 28/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes baixa com plcontas cancelado/devolu‡Æo
;Ultima Alteracao: 19/12/2019 por Bruno Carvalho
;Motivo Alteracao: Comentado a verifica‡Æo do tipo "E" ou "S" de plano de conta para baixa, antes era verificado de baixa diferente de NORMAL
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 27/12/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado mensagem onde ‚ digitado o c¢digo CMC7 na caixa de dialog ->
;                  De  "Digite ou use o leitor para o c¢digo CMC7 !"  para  "Digite o c¢digo CMC7 !"
;Ultima Alteracao: 11/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc Baixa_Dialog() ao finalizar a baixa quando diferente de NORMAL ap¢s o campo "I_PlContas"
;Ultima Alteracao: 10/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes feriado dias a receber                             
;Ultima Alteracao: 12/05/2020 por Bruno Carvalho
;Motivo Alteracao: Movido proc Complemento() p/ "Bib_Proc"
;Ultima Alteracao: 08/10/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes baixa com ccusto cancelado/devolu‡Æo
;Ultima Alteracao: 09/10/2020 por Bruno Carvalho                       
;Motivo Alteracao: Ajustes para avisar a execu‡Æo do FechaMes
;Ultima Alteracao: 19/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nome Vise Sistemas
;Ultima Alteracao: 08/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Checa_Alteracao_PlConta_CCusto()
;Ultima Alteracao: 15/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de filtro
;Ultima Alteracao: 21/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado vari vel CIDADE na proc LimpaFiltroCtaRec()
;Ultima Alteracao: 22/01/2021 por Bruno Carvalho
;Motivo Alteracao: Add ap¢s a execu‡Æo de um filtro a op‡Æo p/ ordenar por Data de Vencimento ou Numero do Documento/Data de Vencimento
;Ultima Alteracao: 25/01/2021 por Bruno Carvalho
;Motivo Alteracao: Add processo para incluir/editar/filtrar titulos apenas da empresa vinculado ao usu rio conforme parƒmetro.
;Ultima Alteracao: 08/02/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao filtrar os lan‡amentos para melhorar o desempenho do sistema, De 547 dias p/ 730 dias

;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC()
PASSOU=False               
While True
  Origem_Disparo=""
  COPIOU_REGISTRO=False
  Moveto TabelaControle
  Moveto [Numero do Lancamento]
  End
  NLANC=[Numero do Lancamento]
  Moveto [Numero do Lancamento]

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

  MSGCAMPO=""
  TECLA="F4=N§ Documento"
  AguardaTeclasPadraoCF()
  
  If RetVal="F5" 
     Then If MODOFILTRAR
             Then Array MfOpcao[2]
                  MfOpcao[1] = "\"~O~rdenar por Data de Vencimento\" : \" Ordernar registros filtrados\" : \"ORDVENCTO\""
                  MfOpcao[2] = "\"~O~rdenar por Documento/Data de Vencimento\" : \" Ordernar registros filtrados\" : \"ORDDOCTOVENCTO\""
          EndIf
          RetVal = MenuFiltrar()
          Release Vars MfOpcao
  EndIf         
  
  Switch
    ;---- FILTRO ---------------------------------------------------------------
    Case RetVal="ORDVENCTO"      And MODOFILTRAR And MODOFILTRARATIVO : Del OrdenaCampo("Data de Vencimento")  QuitLoop 
    Case RetVal="ORDDOCTOVENCTO" And MODOFILTRAR And MODOFILTRARATIVO : Del OrdenaCampo("Numero do Documento") QuitLoop
    Case RetVal="MENUFILTRAR" :
         CHAVEC=99
         Del
         Return
    Case RetVal="MENUFILTROTODOS" :
         MODOFILTRAR=False
         CHAVEC=98
         Del
         Return
    ;---------------------------------------------------------------------------    
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM=FORM_RELACAO
            Then OPCAO_FORM=FORM_MANUTENCAO
            Else OPCAO_FORM=FORM_RELACAO
         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":
         MODOPAGINA = True
         Del
         While True
           Origem_Disparo=""
           FORM_CONTATO =""
           If OPCAO_FORM=FORM_RELACAO
              Then PAGINA(TabelaControle,"MR")
              Else PAGINA(TabelaControle,"MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  If PegaRegistroControle("Numero do Lancamento",NLANC)
                     Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>[Codigo da Empresa] 
                             Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                  AtualizaRegistroControle("Numero do Lancamento",NLANC,MODOPAGINA)
                             Else PickForm FORM_MANUTENCAO
                                  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
                                          AtualizaRegistroControle("Numero do Lancamento",NLANC,MODOPAGINA)       
                                  EndIf
                          EndIf
                  EndIf
             Case EXCLUIR="S":  
                  If TITULOS_SOBAIXAS  Or TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else If PegaRegistroControle("Numero do Lancamento",NLANC)
                             Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>[Codigo da Empresa] 
                                     Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                     Else PickForm FORM_MANUTENCAO
                                          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   
                                  AtualizaRegistroControle("Numero do Lancamento",NLANC,MODOPAGINA)     
                          EndIF
                  EndIf    
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM=FORM_RELACAO
              Then PickForm FORM_RELACAO
           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 MODOFILTRAR  
            Then If TabelaControle<>TabelaPrincipal
                    Then NLANC=[Numero do Lancamento]    
                         Del
                         End Down
                         FormKey                         
                         Moveto TabelaPrincipal
                         End Down FormKey
                         [Numero do Lancamento] = NLANC 
                         SetaCorRegistro("Editar")                
                 EndIf
         EndIf
         MODOPAGINA = False
         If Numero_Lancamento("",FORM_RELACAO)
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
            Else If MODOFILTRAR Then FormKey Moveto TabelaControle FormKey EndIf        
                 QuitLoop
         EndIf
         PickForm FORM_MANUTENCAO                 
         Moveto [Numero do Lancamento]
         If PROXIMO_LANCTO_REG_ACHOU    
            Then CHAVEC=0
                 Echo Normal
                 Echo Off
                 If MODOFILTRAR
                    Then If MODOFILTRAR_EMPRESA<>""
                            Then If [Codigo da Empresa]<>MODOFILTRAR_EMPRESA
                                    Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                         FormKey Moveto TabelaControle FormKey
                                         QuitLoop
                                    EndIf
                         EndIf
                         STATUSFILTRO = "UPDATE"
                 EndIf
                 If [Sistema Gerador]<>"MA"
                     Then FastMsg("Sistema Origem = "+PegaNomeSistemaGerador())
                 EndIf
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1   
                 If MODOFILTRAR Then STATUSFILTRO = "INSERT" EndIf
                 If MODOFILTRAR_EMPRESA<>""
                    Then [Codigo da Empresa]=MODOFILTRAR_EMPRESA
                    Else [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                 EndIf
                 [Sistema Gerador]="MA"
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Return  
                    Else OPCAO_FORM=FORM_RELACAO
                 EndIf
         EndIf
         If TabelaControle<>TabelaPrincipal
             Then FormKey
                  Moveto TabelaControle
                  FormKey
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

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

VSDGCONTAGEM="NDAV"

If CHAVEC=0
   Then CopyToArray REG_DIGITAC
        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        ]
        VR_COMISSAO_ESTORNO = [Comissao_Estornada]
   Else UTILIZA_RAT_CABECA  = ""
        VR_COMISSAO_ESTORNO = ""
        Moveto [Codigo da Empresa]
               [Data de Entrada  ]=Today()
EndIf
VALDOC=[Valor do Documento]
VALCOM=[Valor da Comissao ]

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"
    Case Field()="Codigo do Cobrador" : MSGCAMPO="Codigo do Cobrador"
    Case Field()="Comissao_Estornada" : MSGCAMPO="ComissÆo/Estornada: (C)Creditada ou (D)Debitada" 
  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,-46

  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",
            "~R~ateio           [F7]   " : " Rateio                              " : "F7",
            "~B~aixas           [F8]   " : " Baixas                              " : "F8",
            "A~g~endamento      [F9]   " : " Agendamento                         " : "F9",
            "~D~ados Cliente    [F11]  " : " Dados Cadastrais do Cliente         " : "F11",
            Separator,
            "[Alt+C] % da ComissÆo     " : " Alterar/Calcular comissÆo sobre Valor do Documento" : "ALTCOMIS",
            Separator,
            "~C~ancelar                " : " Cancelar a Opera‡„o                 " : "CANCELAR"
           EndMenu
           To MenuVar
           RetVal=MenuVar
           Echo Off
  EndIf

  If RetVal="DOWN" Or RetVal=-145
     Then If CONTROLA_EDICAOC_ALTERACAO
             Then Copia_Registro_Alteracao("New")
                  Verifica_Alteracao()
          EndIf
          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
      
       If PARAM_CORRECAO_BAIXA And CHAVEC=0
          Then ANT_TAB = Table() 
               FIE_ANT = Field() 
               Moveto "DupBaixa"
               Moveto [Sequencia da Baixa]
               If RecordStatus("New")
                  Then If Achou_Baixa("")
                          Then For ii From 1 To ArraySize(SEQ_BAIXA)
                                 If SEQ_BAIXA="" Then Loop EndIf
                                 Moveto "\\sistemas\\ctacor\\movcont"
                                 Moveto [Numero do Lancamento]
                                 Locate SEQ_BAIXA[ii] 
                                 If RetVal
                                    Then Moveto "Dupbaixa"
                                         Bib_Dup_GravaBaixa()
                                 EndIf
                               EndFor                  
                       EndIf
               EndIf    
               Moveto ANT_TAB
               Moveto Field FIE_ANT
               Release Vars ANT_TAB,FIE_ANT
       EndIf
    
       Moveto "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 "Duplic"
       TOTBAIXA = ([Valor do Documento]-(TOTREC-TOTJUR+TOTDES))
      
       ;Para resultados quando -.00 ou .00
       If TOTBAIXA<0 Then If NumVal(TOTBAIXA*-1)=0 Then TOTBAIXA = 0 EndIf EndIf  
       If NumVal(TOTBAIXA)=0 Then TOTBAIXA = NDecimal(TOTBAIXA,2) EndIf
       
       [Saldo do Documento]=TOTBAIXA
       [Saldo da Comissao ]=[Valor da Comissao ]-TOTCOM
       Release Vars TOTBAIXA
       
       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 RateioPC("DIGITA_RATEIO_CABECA") 
              Else If ConfGeral("Deseja utilizar rateio neste t¡tulo?")
                      Then [Tem Rateio]="S"
                           RateioPC("DIGITA_RATEIO_CABECA") 
                   EndIf    
       EndIf

  Case Retval="ALTCOMIS" or Retval=-46:
       switch
         case sys_codigo_Cliente="0380" or
              SYS_NOME_USUARIO=""       : Bib_Dup_AlteraPorcComissao()
              
         otherwise                      : Fastmsg("Fun‡Æo nÆo disponivel !")    
       endswitch   
       
        
  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 MODOFILTRAR Then STATUSFILTRO="" EndIf
                    If CHAVEC=0
                       Then Undo
                            If [Tem Rateio]="S"
                               Then RateioPC("VERIFICA_RATEIO_CABECA") 
                                    If PARAM_FT_RAT="0"
                                       Then RateioPC("DIGITA_RATEIO_CABECA") 
                                    EndIf
                            EndIf   
                       Else SEQ_BAIXA    = "0"
                            RateioPC("RATEIO_EXCLUSAO") 
                            
                            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 RateioPC("VERIFICA_RATEIO_CABECA") 
                                    If PARAM_FT_RAT="0"
                                       Then RateioPC("DIGITA_RATEIO_CABECA") 
                                    EndIf
                            EndIf  
                            DIGITAC =False
                            CHAVEC=9
                            Tecla_Funcao=""
                            If PARAM_CORRECAO_BAIXA And Not DIGITAC
                               Then ;Processo para verificar baixa no caixa/banco -> Adicionado em 26/11/2018 
                                    Moveto "DupBaixa"
                                    Moveto [Sequencia da Baixa]
                                    If RecordStatus("New")
                                       Then If Achou_Baixa("") 
                                               Then Achou_Baixa("MSG_ERRO_BAIXA") 
                                            EndIf   
                                    EndIf
                                    Release Vars COR_MENSAGEM
                            EndIf     
                            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()="Comissao_Estornada" :
            Moveto [Codigo do Cobrador] 		
       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 MODOFILTRAR_EMPRESA<>""
                       Then If [Codigo da Empresa]<>MODOFILTRAR_EMPRESA
                               Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                    Loop
                            EndIf
                    EndIf
                    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 Bib_Dup_Cliente_Inativo() Then Loop EndIf
            EndSwitch
            Moveto [Codigo do Documento]
            Checa_Alteracao_PlConta_CCusto()            
       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 
                    Moveto [Documento Referente]
                    ;;If [Sistema Gerador]="MA"
                    ;;   Then Moveto [Documento Referente]
                    ;;   Else Moveto [Data de Emissao    ]
										;;EndIf
            EndIf

       Case Field()="Documento Referente"       or
            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 Receber"]
                  EndIf
                  Moveto "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 
                    switch
                      case sys_codigo_cliente="0429" : fastmsg("Representante obrigat¢rio !")
                                                       loop
                      
                      otherwise                      : [Nome Fantasia Represent]=""
                      
                    endswitch
            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]
            DescPlacon = ""
            If Not IsBlank(CodPlacon)
               Then If PlContas(CodPlacon,"E")
                       Then DescPlacon = LTrim(REG_PLCONTAS["Descricao Plano_Conta"])
                       Else Loop
                    EndIf
            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
            If Not Duplic_Comissao_Estorno
               Then Tecla_Funcao="F8"
                    If [Tem Rateio]="S"
                       Then RateioPC("VERIFICA_RATEIO_CABECA") 
                            If PARAM_FT_RAT="0"
                               Then RateioPC("DIGITA_RATEIO_CABECA") 
                            EndIf
                    EndIf   
                    QuitLoop   
               Else Moveto [Comissao_Estornada]
            EndIf   
       Case Field()="Comissao_Estornada" :
            Switch
              Case VR_COMISSAO_ESTORNO<>"" And [Comissao_Estornada]<>VR_COMISSAO_ESTORNO :
                   Switch 
                     Case [Comissao_Estornada]="C" Or
                          [Comissao_Estornada]="D"  : [Data_Comissao_Estornada] = Today()
                     Case [Comissao_Estornada]=""   : [Data_Comissao_Estornada] = BlankdaTe()
                   EndSwitch
              Case VR_COMISSAO_ESTORNO="" And ([Comissao_Estornada]="C" Or [Comissao_Estornada]="D") : 
                   [Data_Comissao_Estornada] = Today()         
            EndSwitch
            Tecla_Funcao="F8"
            If [Tem Rateio]="S"
               Then RateioPC("VERIFICA_RATEIO_CABECA") 
                    If PARAM_FT_RAT="0"
                       Then RateioPC("DIGITA_RATEIO_CABECA") 
                    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 
                 if isblank([Data do Pagamento])
                    then Del
                 endif   

          Loop
  EndIf
  NITEM=[]

  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
         Parcelas() 

         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 = ""
                                                  Moveto "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
                                                  Moveto "DupBaixa"
                                          EndIf
                                          EndIf 
                                     Else Moveto "Duplic"
                                          Moveto [Numero do Lancamento]  
                                          Locate NLANC
                                          Moveto "DupBaixa"
                                  EndIf
                                  
                                  Moveto "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]
                                                                          RateioPC("RATEIO_EXCLUSAO") 
                                                                          
                                                                          Moveto "DupBaixa"
                                                                          TIT()
                                                                          Moveto "DupBaixa"
                                                                          Moveto  [Sequencia da Baixa]
                                                                          Locate SEQ_BAIXA
                                                                          If PARAM_SALDO_GERA_NOVO_LANC="S"
                                                                             Then If Search("PROX LANCT",Upper([Duplic->Observacoes]))>0 
                                                                                     Then EXCLUI_BAIXA=True
                                                                                  EndIf
                                                                          EndIf           

                                                                          Moveto "DupBaixa"
                                                                          Grava_LogEx("Duplic Baixa")
                                                                          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
                                  
                                  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
                                  Moveto "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":
         Del

         SetaCorRegistro("Padrao")
         If TITULOS_SOBAIXAS 
             Then DIGITAC =False
         EndIf
         
         If TITULOS_SOANOTACOES
            Then Tecla_Funcao="F9"
            Else Tecla_Funcao=-10
         EndIf
            
         CHAVEI=9
         Return
    Case Retval="PGDN":
         Del
         CHAVEI=9
         Tecla_Funcao=""
         DIGITAC =False
         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 If PARAM_CORRECAO_BAIXA 
                    Then Moveto "DupBaixa"
                         Moveto [Valor do Recebimento] NSEQ = ImageCSum() 
                         If NumVal(NSEQ)=0 And IsBlank([Data do Pagamento])
                            Then If Achou_Baixa("")
                                    Then Achou_Baixa("MSG_ERRO_BAIXA")
                                         Moveto "DupBaixa"  
                                         If IsBlank([Data do Pagamento]) Then Del EndIf
                                         QuitLoop
                                 EndIf
                         EndIf  
                         Release Vars NSEQ,result                     
                 EndIf
                 Fastmsg("T¡tulo j  liquidado !")
                 if isblank([Data do Pagamento])
                    then Del
                 endif
                 QuitLoop
         EndIf

         SEQIT=[]
         If Type(NumVal(SEQIT))<>"N"             
            Then Mensagem("A sequˆncia \""+SEQIT+"\" n„o ‚ um numero v lido!")

                 if isblank([Data do Pagamento])
                    then Del
                 endif   

                 QuitLoop
         EndIf   

         If numval(SEQIT)>(numval(NITEM)+1)
            Then NITEM=numval(NITEM)+1
                 []=strval(NITEM)
         EndIf   
         NITEM=[]         
         
         If Not Seta_Sequencia(NITEM,True)
            Then 
                 if isblank([Data do Pagamento])
                    then Del
                 endif   

                 QuitLoop
         EndIf

                 if isblank([Data do Pagamento])
                    then Del
                 endif   

         Locate NLANC,NITEM
         If Retval
            Then CHAVEI=0

                 if Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else 
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    then
                         CHAVEI=1
                         End 
                         Down
                         [Numero do Lancamento]=NLANC
                         [Sequencia da Baixa  ]=NITEM
                         PostRecord KeyViol LeaveLocked
                         Locate NLANC,NITEM
                         
                         return
                 endif
         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 ]
      
       If PARAM_UTILIZA_NUM_CARREGAMENTO="S" And CHAVEI=1
          Then VSD_I_NCarreg    =  [Duplic->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)

;*******************************************************************************
;* Checa Altera‡Æo do Plano de Conta e Centro de Custo                         *
;*******************************************************************************
Proc Checa_Alteracao_PlConta_CCusto()
             
;---- Manter o Plano de Conta e Centro de Custo sem altera‡Æo de acordo com o cadastro de cliente para registro existeste  
If IsAssigned(REG_DIGITAC) And CHAVEC=0 And REG_DIGITAC["Codigo do Destinatario"]<>[Codigo do Destinatario] And
   (REG_DIGITAC["Codigo CCusto"]<>"" Or REG_DIGITAC["Codigo Plano_Conta"]<>"")
   Then If [Codigo CCusto]="" And REG_DIGITAC["Codigo CCusto"]<>"" And [Codigo CCusto]<>REG_DIGITAC["Codigo CCusto"] 
           Then [Codigo CCusto   ] = REG_DIGITAC["Codigo CCusto"]
                [Descricao CCusto] = REG_DIGITAC["Descricao CCusto"]
        EndIF
        
        If [Codigo Plano_Conta]="" And REG_DIGITAC["Codigo Plano_Conta"]<>"" And [Codigo Plano_Conta]<>REG_DIGITAC["Codigo Plano_Conta"] 
           Then [Codigo Plano_Conta   ] = REG_DIGITAC["Codigo Plano_Conta"]
                [Descricao Plano_Conta] = REG_DIGITAC["Descricao Plano_Conta"]
        EndIF
EndIf

EndProc ;Checa_Alteracao_PlConta_CCusto()

;*******************************************************************************
;* 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)

        switch
          case sys_codigo_cliente="0380":
            VSD_I_Vr_Comissao=NDecimal(((VSD_I_Vr_Pagto - VSD_I_Vr_Juros)*[Duplic->TaxaComissao])/100,2)
          
          otherwise                     :
            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 
        endswitch
          
        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 Disparo,Campo,Evento,Elemento,
        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 SEQ_BAIXA = [Sequencia da Baixa]
                                            TIT()
                                            Moveto "DupBaixa"
                                            Moveto [Sequencia da Baixa]
                                            Locate SEQ_BAIXA
                                            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 IsBlank(VSD_I_PlContas)
                      Then Mensagem("NÆo foi informado um plano de conta principal para esta baixa!")
                      Else If VSD_I_Tem_Rateio="S"
                              Then RateioPC("DIGITA_RATEIO_BAIXA") 
                              Else If ConfGeral("Deseja utilizar rateio nesta baixa?")
                                      Then VSD_I_Tem_Rateio="S"
                                           RateioPC("DIGITA_RATEIO_BAIXA") 
                                   EndIf    
                           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:
            Bib_Dup_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]
                                  RateioPC("RATEIO_EXCLUSAO") 
                                  Moveto "DupBaixa"
                          EndIf
                          VSD_I_Vr_Pagto = ANT_VSD_I_Vr_Pagto
                          
                          SEQ_BAIXA    = [Sequencia da Baixa]
                          RateioPC("VERIFICA_RATEIO_BAIXA") 
                          If PARAM_FT_RAT="0"
                             Then RateioPC("DIGITA_RATEIO_BAIXA") 
                          EndIf
                           
                          if CHAVEI=1
                             then
                                  Moveto "DupBaixa"
                                  Del 
                          endif
                          CancelDialog
                  EndIf
             Case Campo="I_TpBaixa"           : If TITULOS_SOBXDIA
                                                   Then If QuerDesfazer("")
                                                           Then 
                                                                if CHAVEI=1
                                                                   then
                                                                        Moveto "DupBaixa"
                                                                        Del 
                                                                endif
                                                                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]
                                  RateioPC("VERIFICA_RATEIO_BAIXA") 
                                  If PARAM_FT_RAT="0"
                                     Then RateioPC("DIGITA_RATEIO_BAIXA") 
                                  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"           :
                  switch
                    case VSD_I_TpBaixa="CANCELADO":
                      Campo="I_TpBaixa"
                      
                    otherwise:
                      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
                                           
                  endswitch
             
             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
                  If Campo<>"I_DtPagto" then ULTDATA=VSD_I_DtPagto endif

             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            
                  
                  switch
                    case VSD_I_TpBaixa="CANCELADO": 
                      Campo="I_PlContas"
                       
                  endswitch
                  
             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

                  switch
                    case sys_codigo_cliente="0380":
                      VSD_I_Vr_Comissao=NDecimal(((VSD_I_Vr_Pagto - VSD_I_Vr_Juros)*[Duplic->TaxaComissao])/100,2)

                    otherwise                     :
                      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   
                  endswitch

                  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")
                  VSD_I_Descricao_PlContas = ""

                  plcontasok  =true
                  plcontastipo="E"
                  
                  If Not IsBlank(VSD_I_PlContas)
                     Then
                         ;if VSD_I_TpBaixa<>"NORMAL" then plcontastipo="S" endif
                          if PlContas(VSD_I_PlContas,plcontastipo)
                             Then VSD_I_PlContas           = REG_PLCONTAS["Codigo Plano_Conta"]
                                  VSD_I_Descricao_PlContas = LTrim(REG_PLCONTAS["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 = REG_PLCONTAS["Codigo do Historico"]
                                  EndIf
                                  [Codigo Plano_Conta] = VSD_I_PlContas
                             Else VSD_I_PlContas           = ""
                                  VSD_I_Descricao_PlContas = ""
                                  plcontasok=false
                          EndIf
                     Else VSD_I_Descricao_PlContas = ""
                  EndIf
                  if plcontasok
                     then Campo="I_CCusto"
                  endif
                  
             Case Campo="I_CCusto"             : 
                  VSD_I_CCusto=ControlValue("I_CCusto")
                  
                  ccustook  =true
                  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"
                                          ccustook  =false

                                     Else 
                                          VSD_I_CCusto          =[Codigo CCusto]
                                          VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                                          KeyPress "ESC"
                                          [Codigo CCusto]       =VSD_I_CCusto
                                  Endif
                             Else 
                                  Mensagem("Centro de Custo n„o Cadastrado !")
                                  VSD_I_CCusto          =""
                                  VSD_I_Descricao_CCusto=""
                                  KeyPress "ESC"
                                  ccustook  =false
                          EndIf
                          Echo Off
                     Else VSD_I_CCusto          =""
                          VSD_I_Descricao_CCusto=""
                  EndIf
                  
                  if ccustook
                     then
                          switch
                            case VSD_I_TpBaixa="CANCELADO":
                              If Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                                 Then VSD_I_ObsBaixa   =[DupBaixa->Observacoes]
                                      VSD_I_Codigo_Hist=""
                                      VSD_I_Descri_Hist="CANCELADO "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                      Registro_Baixa("Gravar")
                                      SaveTables
                                      If CONTA()
                                         Then SEQ_BAIXA = [Sequencia da Baixa] 
                                              TIT()
                                              Moveto "DupBaixa"
                                              Moveto [Sequencia da Baixa]
                                              Locate SEQ_BAIXA
                                              AcceptDialog
                                      EndIf
                              EndIf  

                            case VSD_I_TpBaixa="DEVOLUCAO":
                              If Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                                 then VSD_I_ObsBaixa           =  [DupBaixa->Observacoes]
                                      VSD_I_Codigo_Hist=""
                                      VSD_I_Descri_Hist="DEVOLUCAO "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                      Registro_Baixa("Gravar")
                                      SaveTables
                                      If CONTA()
                                         Then SEQ_BAIXA = [Sequencia da Baixa] 
                                              TIT()
                                              Moveto "DupBaixa"
                                              Moveto [Sequencia da Baixa]
                                              Locate SEQ_BAIXA
                                              AcceptDialog
                                      EndIf
                              EndIf  
                            
                            otherwise: Campo="I_Codigo_Hist"
                             
                          endswitch
                  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")

                  SEQ_BAIXA               = [Sequencia da Baixa]
                  OCORRENCIA_RATEIO_BAIXA = False
                  
                  GetRecord "DupRat" [Duplic->Numero do Lancamento],"0",1 To REG_DUPRAT
                  If Retval
                     Then RATEIO_PAI=True
                     Else RATEIO_PAI=False
                  EndIf
                  
                  If CHAVEI=1 And VSD_I_TpBaixa="NORMAL" And PARAM_CRIA_RATEIO_AUTOMATICO And 
                     VSD_I_Tem_Rateio<>"S" And VSD_I_PlContas<>"" And (VSD_I_Vr_Juros>0 Or VSD_I_Vr_Descto>0 Or RATEIO_PAI)
                     Then ;Gera plano de conta automatico se encontrado juros ou desconto e localizado plano de conta principal
                          GetRecord "DupRat" [Duplic->Numero do Lancamento],[DupBaixa->Sequencia da Baixa] To REG_DUPRAT
                          If Not RetVal
                             Then If RATEIO_PAI
                                     Then PARAM_RATEIO_PAI=True
                                     Else PARAM_RATEIO_PAI=False 
                                  EndIf
                                  RateioPC("ADICIONA_RATEIO_BAIXA")
                                  VSD_I_Tem_Rateio="S"
                          EndIf   
                          Moveto "DupBaixa"
                  EndIf

                  ;Atualiza o rateio das baixas conforme a porcentagem/valor proporcional 
                  ;ao valor referente ao rateio SE informado na cabe‡a
                  ;OCORRENCIA_RATEIO_BAIXA = False 
                  ;RateioPC("ATUALIZA RATEIO DA BAIXA") 
                  ;If PARAM_FT_RAT = "1"
                  ;   Then VSD_I_Tem_Rateio="S" 
                  ;        OCORRENCIA_RATEIO_BAIXA = True
                  ;   Else RateioPC("VERIFICA_UTILIZACAO_RATEIO") 
                  ;EndIf  
                  
                  Registro_Baixa("Gravar")
                  SaveTables
                  If CONTA() 
                     Then TIT()
                          Moveto "DupBaixa"
                          Moveto [Sequencia da Baixa]
                          Locate SEQ_BAIXA
                          If VSD_I_TpBaixa="NORMAL" And (VSD_I_Tem_Rateio="S" Or [Duplic->Tem Rateio]="S")
                             Then RateioPC("VERIFICA_RATEIO_BAIXA") 
                                  If PARAM_FT_RAT="0" Or OCORRENCIA_RATEIO_BAIXA Or (RATEIO_PAI And CHAVEI=1)
                                     Then RateioPC("DIGITA_RATEIO_BAIXA") 
                                  EndIf
                                  Release Vars OCORRENCIA_RATEIO_BAIXA
                          EndIf
                          If CHAVEI=1 And Not IsBlank(PARAM_RELAT)
                             Then Bib_Dup_Imprime_Recibo() 
                             Else If CHAVEI=0 And Not IsBlank(PARAM_RELAT)
                                     Then ConfGeral("Deseja imprimir a 2¦ Via do Recibo?")
                                          If OK="S"
                                             Then Bib_Dup_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.01 And (VSD_I_JurosD>0 Or VSD_I_Vr_Juros>0) 
                                     Then If Bib_Dup_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 SISTEMAS !")
                          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 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

        switch
          case sys_codigo_cliente="0390": ;nÆo fazer
          
          otherwise :
            [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

        endswitch


   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)

;*******************************************************************************
;* Rotina para Leitura do Cheque                                               *
;*******************************************************************************
Proc Ler_Cheque()
private wcp1, wcp2

While True
  Moveto "Duplic"

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

  Echo Normal
  Echo Off

  while true
    Moveto [Sequencia do Cheque]
    End
    NITEMCH = [Sequencia do Cheque]
    NITEMCH =NITEMCH+1
    Down
    [Numero do Lancamento]=NLANCC
    [Sequencia do Cheque ]=NITEMCH
    PostRecord KeyViol LeaveLocked
    if not retval
       Then del
            Loop
    endif   

    quitloop
  endwhile   
  CHAVEB=1

  If Not Leitura_Cheque(11,0)
     Then CHAVEB=13
          Del
          Return False
  EndIf                                     

  VSD_CBChq     =Dados_Cheque
  VSD_CBanco    =CODIGO_BANCO 
  VSD_Agencia   =AGENCIA_CHEQUE 
  VSD_NCheque   =NUMERO_CHEQUE  
  VSD_CCorrente =CONTA_CHEQUE 

  if ChequeJaExiste(NITEMCH, CODIGO_BANCO, AGENCIA_CHEQUE, CONTA_CHEQUE, NUMERO_CHEQUE)
     Then Del
          Loop
    Else ;If Existe_Cheque("CTAREC")
         ;   Then Del
         ;        Loop
         ;EndIf
  endif   
          
  NOME_BANCO=""
  getrecord "\\sistemas\\cheqrec\\banco" CODIGO_BANCO to reg_banco
  If RetVal
     Then NOME_BANCO=reg_banco["Nome_banco"]
  EndIf

  [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
  wcp2       =CONTA_CHEQUE
  for wcp1 from 1 to 2
    Moveto "\\Sistemas\\CheqRec\\CDPessoa"
    Moveto [Codigo_Banco]
    Locate CODIGO_BANCO, AGENCIA_CHEQUE, wcp2
    If RetVal
       Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
            VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
            VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
            VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
            If CLIENTE_CPF=VSD_CPF
               Then VSD_TipoEmit="PROPRIO"
               Else VSD_TIPOEmit="TERCEIRO"
            EndIf
            AchouPessoa=True
            quitloop
    EndIf           
    if wcp1=1 and len(CONTA_CHEQUE)=10
       then wcp2=substr(CONTA_CHEQUE,3,8)
       else quitloop
    endif
  endfor  
                 
  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()
  Moveto "\\Sistemas\\CheqRec\\ChequeI"
  If RecordStatus("Locked") Then UnLockRecord EndIf         

EndWhile
EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ChequeJaExiste(seq, bco, age, ncc, nch)
private chexiste, seq, bco, age, ncc, nch, msg

unlockrecord

chexiste=false
scan for [Sequencia do Cheque]<>seq

  if [Codigo_Banco ]=bco and
     [Agencia      ]=age and
     [Numero_Conta ]=ncc and
     [Numero_cheque]=nch 
     then chexiste=true
     
          msg="Cheque j  existe neste lan‡amento, Verificar !// //"
          msg=msg+Completa("Banco  : "+bco ,40," ")+"//"
          msg=msg+Completa("Agˆncia: "+age ,40," ")+"//"
          msg=msg+Completa("Conta  : "+ncc ,40," ")+"//"
          msg=msg+Completa("Cheque : "+nch ,40," ")
          mensagem(msg)
     
          quitloop
  endif   
endscan

Moveto [Sequencia do Cheque]
Locate seq
;;Lockrecord

return chexiste
EndProc  ; (ChequeJaExiste)

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

While True
 Moveto "Duplic"
 NLANCC=[Duplic->Numero Lancamento Cheque]

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

 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
               PostRecord KeyViol LeaveLocked
               Locate NLANCC,NITEMCH
       EndIf                
       Return
  EndSwitch
 EndWhile
EndWhile
EndProc ; (CHAVEB)

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

If Disparo="OPEN"
   Then
        TiraSombraShowDialog()
EndIf        

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"] = -46 or
           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_NCheque   = RTRIM(SubStr(VSD_CBChq,14,6)) 
                                         VSD_CCorrente = RTRIM(SubStr(VSD_CBChq,25,8))
                                            
                                         getrecord "\\sistemas\\cheqrec\\banco" VSD_CBanco to regbanco
                                         if retval
                                            Then
                                                 VSD_NBanco    =regbanco["Nome_Banco"]     
                                                    
                                                 wcp2       =VSD_CCORRENTE
                                                 for wcp1 from 1 to 2
                                                   getrecord "\\sistemas\\cheqrec\\CDPessoa" VSD_CBANCO, VSD_AGENCIA, wcp2 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"
                                                           quitloop
                                                   endif        
                                                   if wcp1=1 and len(VSD_CCORRENTE)=10
                                                      then wcp2=substr(VSD_CCORRENTE,3,8)
                                                      else 
                                                           AchouPessoa=false
                                                           Campo="TipoEmit"      
                                                           quitloop
                                                   endif
                                                 endfor
                                                 
                                                 if ChequeJaExiste(NITEMCH, VSD_CBanco, VSD_Agencia, VSD_CCorrente, VSD_NCheque)
                                                    then Campo="CBChq"
                                                    else ;If Existe_Cheque("CTAREC")
                                                         ;   Then Campo="CBChq"
                                                         ;EndIf    
                                                 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    
             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 
                          wcp2       =VSD_CCORRENTE
                          for wcp1 from 1 to 2
                            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                            Moveto [Codigo_Banco]
                            Locate VSD_CBANCO, VSD_AGENCIA, wcp2
                            If RetVal
                               Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
                                    VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                    VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                    VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                    AchouPessoa=True
                                    If CLIENTE_CPF=VSD_CPF
                                       Then VSD_TipoEmit="PROPRIO"
                                       Else VSD_TIPOEmit="TERCEIRO"
                                    EndIf
                                    Campo="NCheque"
                                    quitloop
                            EndIf           
                            if wcp1=1 and len(VSD_CCORRENTE)=10
                               then wcp2=substr(VSD_CCORRENTE,3,8)
                               else quitloop
                            endif
                          endfor  

                          Moveto "\\Sistemas\\CheqRec\\ChequeI"
                  EndIf   

            Case Campo="NCheque" : Campo="TipoEmit"
                 VSD_NCheque=ControlValue("NCheque")
                 If ChequeJaExiste(NITEMCH, VSD_CBanco, VSD_Agencia, VSD_CCorrente, VSD_NCheque)
                    Then Campo="NCheque"
                    Else ;If Existe_Cheque("CTAREC")
                         ;   Then Campo="NCheque"
                         ;EndIf
                 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+"Alt+C=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 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

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

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

       Moveto "\\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, 4, -6, -147
     @ 09,0 height 14 width 80

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

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

   Label  @ 0,48 "Situa‡„o" for "Situacao"
   Accept @ 1,49  Width 14 "A12" picture "!*!" Tag "Situacao" to VSD_Situacao

   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 9 "A6" picture "!*!" Tag "Agencia" to VSD_Agencia

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

   Label  @ 2,48 "Cheque" for "NCheque"
   Accept @ 3,49 Width 14 "A9" picture "!*!" Tag "NCheque" to VSD_NCheque

   Label  @ 2,63 "Emitente" for "TipoEmit"
   Accept @ 3,64  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 52 "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 9  "A2" picture "!*!" Tag "UF" to VSD_UF

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

   Label  @ 6,48 "Valor" for "Valor"
   Accept @ 7,49  Width 14 "$" picture "#*#.[##]" Tag "Valor" to VSD_Valor

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

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

   @ 11,00 ?? Format("W51,AL","[Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+
              " "+VSDGU_HORA+" "+VSDGU_CONTROLE)+
              "Origem: "+Format("W18,AL","MA/"+VSD_Lanctoch)+"]"
   PaintCanvas Attribute 10 11, 01, 11, 76

Enddialog
Mouse Show

If CHAVEB=8 Then Del EndIf

EndProc  ; (Digita_Cheque)


;*******************************************************************************
;* Exclusao de Baixas e Lancamento                                             *
;*******************************************************************************
Proc EXCLUSAO()
private bxok

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

Moveto "DupBaixa"

bxok=true
Moveto "DupBaixa"
While RecordStatus("New")=False
   VROLD=[Valor do Recebimento]
   JSOLD=[Valor do Juros]
   DSOLD=[Valor do Desconto]
   VCOLD=[Valor da Comissao]
   CHAVEI=8

   if CONTA()
      then SEQ_BAIXA    = [Sequencia da Baixa]
           TIT()
           Moveto "DupBaixa"
           Moveto [Sequencia da Baixa]
           Locate SEQ_BAIXA
            
           RateioPC("RATEIO_EXCLUSAO") 
           
           Moveto "DupBaixa"
           Grava_LogEx("Duplic Baixa")
           Del
      else     
           bxok=false
   endif
EndWhile
Moveto "Duplic"                    

if bxok
   then
        SEQ_BAIXA    = "0"
        RateioPC("RATEIO_EXCLUSAO") 
        
        Moveto "DupNotas"
        While RecordStatus("New")=False
           Del
        EndWhile
                   
        If Not IsBlank([Duplic->Numero Lancamento Cheque])
           Then Moveto "\\Sistemas\\CheqRec\\ChequeI"
                While RecordStatus("New")=False
                   while islockrecord() endwhile
                   Del
                EndWhile
        
                Moveto "\\Sistemas\\CheqRec\\ChequeC"
                Moveto [Numero do Lancamento]
                Locate [Duplic->Numero Lancamento Cheque]
                If RetVal
                   Then 
                        while islockrecord() endwhile
                        Del
                EndIf
        EndIf
        
        Moveto "Duplic"
        Grava_LogEx("Duplic")
        Del
endif

If MODOFILTRAR and STATUSFILTRO="UPDATE" Then STATUSFILTRO="DEL" EndIf
If MODOFILTRAR and STATUSFILTRO="INSERT" Then STATUSFILTRO=""    EndIf

EndProc  ; (EXCLUSAO)

;*******************************************************************************
;* Atualizacao do Titulo                                                       *
;*******************************************************************************
Proc TIT()
Private CODPESSOA,DT_PAGTO,VR_PAGTO

Moveto "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 

        ;Nesse momento foi preciso sair do FORM p/ realizar o processo a baixo na ficha financeira
        ;Como ‚ uma atualiza‡Æo da ficha financeira, ‚ verificado antes se h  a pessoa neste cadastro
        ANT_TAB   = Table()
        ANT_FIELD = Field()
        
        CODPESSOA = [Duplic->Codigo do Destinatario]
        DT_PAGTO  = [DupBaixa->Data do Pagamento]
        VR_PAGTO  = [DupBaixa->Valor do Recebimento]

        Moveto "Duplic"
        UnLockRecord
        FormKey
        
        Moveto "\\Sistemas\\Cadastro\\Fichacli"
        while true
          Moveto [Codigo]
          Locate CODPESSOA
          If not RetVal
             Then end
                  down
                  [Codigo]=CODPESSOA
                  if isLockrecord() 
                     then del 
                     else quitloop
                  endif
             else 
                  While IsLockRecord() EndWhile
                  quitloop
          endif              
        endwhile        
        [Numero de Atrasos] = [Numero de Atrasos] + 1
        If [Maior Atraso] < NDA
           Then [Maior Atraso] = NDA
                [Data do Maior Atraso ]=DT_PAGTO
                [Valor do Maior Atraso]=VR_PAGTO
        EndIf
        UnLockRecord

        Moveto "Duplic"
        FormKey
        While IsLockrecord() EndWhile
        
        Moveto ANT_TAB
        Moveto Field ANT_FIELD
        Release Vars ANT_TAB,ANT_FIELD,CODPESSOA,DT_PAGTO,VR_PAGTO
EndIf

Moveto "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

;*******************************************************************************
;* Verifica a existˆncia de baixa no caixa/banco                               *
;*******************************************************************************
Proc Achou_Baixa(PARAM)
Private ACHOU_LANCTO_CTACOR,ii,CONTA_BAIXA,TEMP,PARAM,result
   
If PARAM="MSG_ERRO_BAIXA"   
   Then result = ""
        For ii From 1 To ArraySize(SEQ_BAIXA)
          If SEQ_BAIXA[ii]="" Then Loop EndIf
          If result<>"" Then result = result + ", " EndIf
          result = result + SEQ_BAIXA[ii]
        EndFor
        COR_MENSAGEM="ALERTA"
        MSG=    Completa("Foi detectado inconsistˆncia na baixa deste lan‡amento.",67," ")+"//"
        If Len(Rtrim(result)) = 6
           Then MSG=MSG+Completa("H   movimenta‡Æo  no caixa/banco referente ao lan‡amento "+result+" que",67," ")+"//"
           Else MSG=MSG+Completa("H   movimenta‡Æo no caixa/banco referente aos lan‡amentos: ",67," ")+"//" 
                MSG=MSG+Completa(result,67," ")+"//"
        EndIf   
        MSG=MSG+Completa("que correspondem … esta baixa.",67," ")+"////"
        MSG=MSG+Completa("Para a corre‡Æo deste lan‡amento, utilize a fun‡Æo F4 para calcular",67," ")+"//"
        MSG=MSG+Completa("baixas e assim … corre‡Æo ser  realizada!",67," ")
        Mensagem(MSG)
        
   Else CONTA_BAIXA = 0   
        Array SEQ_BAIXA[9]
        For ii From 1 To 9
          SEQ_BAIXA[ii]=""
        EndFor
        
        TEMP = False 
         
        Moveto "\\Sistemas\\CtaCor\\MovCont"
        Moveto [Empresa Gerador]
        Locate IndexOrder by "Indcxa30" [\Sistemas\CtaRec\Duplic->Codigo da Empresa], 
                                        [\Sistemas\CtaRec\Duplic->Numero do Lancamento]
        If RetVal
           Then While [Sistema Gerador    ]="CR"                                            And
                      [Empresa Gerador    ]=[\Sistemas\CtaRec\Duplic->Codigo da Empresa]    And 
                      [Lancamento Gerador ]=[\Sistemas\CtaRec\Duplic->Numero do Lancamento] And
                      [Numero do Documento]=[\Sistemas\CtaRec\Duplic->Numero do Documento ]
                      If [Codigo do EmitDest] = [\Sistemas\CtaRec\Duplic->Codigo do Destinatario] And
                         [Data Competencia  ] = [\Sistemas\CtaRec\Duplic->Data de Emissao       ]
                         Then If Not TEMP Then TEMP = True EndIf
                              CONTA_BAIXA = CONTA_BAIXA + 1
                              SEQ_BAIXA[CONTA_BAIXA] = [Numero do Lancamento] 
                      EndIf        
                      Skip
                      If Eot() Then QuitLoop EndIf
                      Locate Next IndexOrder by "Indcxa30" [\Sistemas\CtaRec\Duplic->Codigo da Empresa],
                                                           [\Sistemas\CtaRec\Duplic->Numero do Lancamento]
                      If Not RetVal Then QuitLoop EndIf
                EndWhile 
        EndIf
        
        Return TEMP
EndIf        

EndProc ;Achou_Baixa()

;*******************************************************************************
;* 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 "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"
               RateioPC("RATEIO_MOVCONT_EXCLUSAO") 
               RateioPC("RATEIO_MOVCONT_ADICAO") 
       EndIf        
  Case CHAVEI=1: 
       WB=0
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       End
			 If Numero_Lancamento("Interno","Locked_Down")
          Then NLANCMC=PROXLANCTO_NLANC
               Release Vars PROXLANCTO_NLANC
               [Codigo da Conta     ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
          Else Return False               
       EndIf
        
       [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 "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"
       RateioPC("RATEIO_MOVCONT_EXCLUSAO") 
       RateioPC("RATEIO_MOVCONT_ADICAO") 
       
  Case CHAVEI=8: 
       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 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
                       If Atualiza_SaldoConta()
                          Then 
                               WB=0
                          
                               [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"
                               RateioPC("RATEIO_MOVCONT_EXCLUSAO") 
                               
                          else
                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                               unlockrecord
                       EndIf
               EndIf
       EndIf       
  EndSwitch
  QuitLoop
EndWhile

Moveto "DupBaixa"

If WB=0
   Then Return True
   Else Return False
EndIf

EndProc ; (CONTA)


;*******************************************************************************
;* 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 Carrega Parametros                                                   *
;*******************************************************************************
Proc Carrega_Parametros()
Private Result, regp_duplic,msg

getrecord "\\sistemas\\ctarec\\p_duplic" [Duplic->Codigo da Empresa] to regp_duplic 
If Not RetVal
   Then 
        msg=    "// Empresa ["+empresa+"] sem configura‡Æo de parƒmetros !// //"
        msg=msg+" - Utilit rios / Parƒmetros / Contas a Receber//"
        msg=msg+" - Lan‡amentos e Baixas de T¡tulos          // //"
        msg=msg+"Verificar com Suporte da Vise !"
        Mensagem(msg)
        Result=False
   Else
        PARAM_RELAT                    =regp_duplic["Impressao_Recibo"         ]
        PARAM_UTILIZA_JUROS_DEVIDO     =regp_duplic["Utiliza_Juros_Devido"     ]
        PARAM_UTILIZA_COMISSAO         =regp_duplic["Utiliza_Comissao"         ]
        PARAM_UTILIZA_NUM_CARREGAMENTO =regp_duplic["Utiliza_Num_Carregamento" ]
        PARAM_UTILIZA_FORMAS_RECEBER   =regp_duplic["Utiliza_Formas_Receber"   ]
        PARAM_HISTORICO_DEFAULT        =regp_duplic["Historico_Default"        ]
        PARAM_PLANO_CONTA_DCC          =regp_duplic["Plano_Conta_DCC"          ]
        PARAM_PLANO_CONTA_AVISTA       =regp_duplic["Plano_Conta_AVista"       ]
        PARAM_PLANO_CONTA_APRAZO       =regp_duplic["Plano_Conta_APrazo"       ]
        PARAM_PLANO_CONTA_DEBITO       =regp_duplic["Plano_Conta_Debito"       ]
        PARAM_PLANO_CONTA_CREDITO      =regp_duplic["Plano_Conta_Credito"      ]
        PARAM_COMISSAO_JUROS_DESCTO    =regp_duplic["Comissao_Juros_Descto"    ]
        PARAM_CTA_BAIXA_IGUAL_LANCTO   =regp_duplic["Cta_Baixa_Igual_Lancto"   ]
        PARAM_CONTA_CAIXA              =regp_duplic["COdigo_Conta_Caixa"       ]  
        PARAM_BLOQUEIA_ANOTACAO        =regp_duplic["Bloqueia_Anotacao"        ]
        PARAM_BLOQUEIA_ALTERA_BAIXA    =regp_duplic["Bloqueia_Altera_Baixa"    ]
        PARAM_SALDO_GERA_NOVO_LANC     =regp_duplic["Saldo Gera Novo Lancament"]
        Result=True
EndIf

release vars regp_duplic

RateioPC("PLANO_CONTA_AUTOMATICO")
If PARAM_FT_RAT = "1"
   Then PARAM_CRIA_RATEIO_AUTOMATICO = True
   Else PARAM_CRIA_RATEIO_AUTOMATICO = False 
EndIf

Return Result
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para copiar em array registros do cadastro de itens                  *
;*******************************************************************************
Proc Verifica_Alteracao()
Private ALTERACAO

If REG_DUPLIC_OLD["Valor do Documento"]<>[Valor do Documento]
   Then GetRecord "DupRat" NLANC,"0" To REG_RATEIO
        If RetVal
           Then RateioPC("VERIFICA_RATEIO_CABECA")
                If PARAM_FT_RAT="0"
                   Then RateioPC("DIGITA_RATEIO_CABECA") 
                EndIf
        EndIf                
EndIf

EndProc ;Verifica_Alteracao()  

;*******************************************************************************
;* Rotina para copiar em array registros do cadastro de itens                   *
;*******************************************************************************
Proc Copia_Registro_Alteracao(PARAM)
Private PARAM

Switch
  Case PARAM="Old" : GetRecord "Duplic" NLANC To REG_DUPLIC_OLD
  Case PARAM="New" : GetRecord "Duplic" NLANC To REG_DUPLIC_NEW
EndSwitch  

EndProc ;Copia_Registro_Alteracao()

;*******************************************************************************
;* 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 "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 para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Private CampAnt, vrtotch 

If Not IsAssigned(MODOPAGINA) Then MODOPAGINA=False EndIF

If CHAVEC=0
   Then Copia_Registro_Alteracao("Old")
        CONTROLA_EDICAOC_ALTERACAO = True
   Else CONTROLA_EDICAOC_ALTERACAO = False
EndIf 

If Not IsAssigned(STATUSFILTRO) then STATUSFILTRO="" Endif
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 "Duplic"

  If Not TITULOS_SOBAIXAS And Not TITULOS_SOANOTACOES 
     Then DIGITAC()
          If CHAVEC=9 Then QuitLoop EndIf
  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 : Bib_Dup_Dados_Cliente()
                               Release Vars END_COB, CAD_COMP, FICHA_FIN, FAZ_FICHA_FIN, FAZ_ENDCOB, FAZ_COMP
      Case Tecla_Funcao="F8" : 
           Moveto "Duplic"
           Moveto [Pag_2]
           Origem_Disparo = "Duplic"
           
           Moveto "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 
                              if isblank([Data do pagamento])
                                 then Del
                              endif   
                              
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
             EndIf
             Controla_EdicaoI()
           EndWhile
           
      Case Tecla_Funcao="F6": 
           Moveto "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 "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([Duplic->Numero Lancamento Cheque])
               Then CH_Ok=False
               Else Locate [Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then CH_Ok=True
                       Else CH_Ok=False
                    EndIf
            EndIf
            If Not CH_OK                     
               Then 
                    Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    While True
                      End
                      Moveto [Numero do Lancamento]
                      If Numero_Lancamento("Interno","Locked_Down")
                         Then NLANCC = PROXLANCTO_NLANC
                              Release Vars PROXLANCTO_NLANC
                              quitloop
                      EndIf    
                    EndWhile
                    [Codigo da Empresa ]=[\Sistemas\CtaRec\Duplic->Codigo da Empresa ]
                    [Data de Entrada   ]=Today()
                    Controle_Dia()
                    UnLockRecord

                    Moveto "Duplic"
                    [Numero Lancamento Cheque]=NLANCC
                    UnLockRecord
                    IsLockRecord()
                    ;SaveTables
            EndIf

            Bib_Dup_Pega_DadosCliente()
            
            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 
                              if isblank([Data Vencimento])
                                 then Del
                              endif   
                         
                              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 [Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then 
                            while islockrecord() endwhile
                            Del
                    EndIf
                    
                    Moveto "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"
                    while islockrecord() endwhile
                    
                    [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 "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 
                              if isblank([Data da Anotacao])
                                 then Del
                              endif   
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
             EndIf
              
              Controla_EdicaoD()
           EndWhile
      OtherWise             : QuitLoop
    EndSwitch
  EndWhile
  
  If PARAM_CORRECAO_BAIXA And Not DIGITAC
     Then ;Processo para verificar baixa no caixa/banco -> Adicionado em 26/11/2018 
          If CHAVEC=0
             Then Moveto "DupBaixa"
                  Moveto [Sequencia da Baixa]
                  If RecordStatus("New")
                     Then If Achou_Baixa("") 
                             Then Achou_Baixa("MSG_ERRO_BAIXA") 
                          EndIf   
                  EndIf
          EndIf
          Release Vars COR_MENSAGEM
  EndIf            
  
EndWhile
Moveto "Duplic"
If RecordStatus("Locked") Then UnLockRecord EndIf

AtualizaRegistroControle("Numero do Lancamento",NLANC,MODOPAGINA)         
If OPCAO_FORM=FORM_RELACAO Then PickForm FORM_RELACAO EndIf
SaveTables                                                             

EndProc

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

If Not IsAssigned(SDFILTRO_ATIVO) Then SDFILTRO_ATIVO = False EndIf

If Not SDFILTRO_ATIVO
   Then {Ask} TypeIn "\\Sistemas\\CtaRec\\Duplic" Enter Check
        Moveto [Codigo da Empresa        ] TypeIn "~FILTRAREMPRESA.."
        Do_It!
        ClearAll                                                            
   Else If CIDADE<>"" Or VSDGESTADO<>""  
            Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
                 Moveto [Codigo             ] Example "cod"
                 If CIDADE<>""
                    Then Moveto [Cidade     ] TypeIn CIDADE
                 EndIf   
                 If VSDGESTADO<>""
                    Then Moveto [UF        ] TypeIn "~VSDGESTADO.."
                 EndIf   
        EndIf
        If VSDGGERENCIA<>""
           Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
                Moveto [Codigo do Representante] Example "crep"
                Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctarec\\DupliC" Enter Check
        If MODOFILTRAR_EMPRESA<>""
           Then Moveto [Codigo da Empresa     ] TypeIn "~FILTRAREMPRESA.."
           Else Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
        EndIf
        If CIDADE<>"" Or VSDGESTADO<>"" 
           Then Moveto [Codigo do Destinatario] Example "cod" TypeIn " ,~VSDGDESTINAT.."
           Else Moveto [Codigo do Destinatario]               TypeIn "~VSDGDESTINAT.."
        EndIf
        Switch
          Case ListaRegra_VSDGTPPAGTO_Ativo : Moveto [Tipo do Pagamento     ] TypeIn ListaRegra_VSDGTPPAGTO
          Case VSDGTPPAGTO<>""              : Moveto [Tipo do Pagamento     ] TypeIn "~VSDGTPPAGTO.."   
        Endswitch
        Switch
          Case ListaRegra_VSDGTPCART_Ativo  : Moveto [Tipo do Lancamento     ] TypeIn ListaRegra_VSDGTPCART 
          Case VSDGTPCART<>""               : Moveto [Tipo do Lancamento     ] TypeIn "~VSDGTPCART.." 
        endswitch
        Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
        Switch
          Case VSDGGERENCIA<>"" : Moveto [Codigo do Representante] Example "crep" TypeIn ", ~VSDGREPRESEN.."
          Case VSDGREPRESEN<>"" : Moveto [Codigo do Representante]                TypeIn "~VSDGREPRESEN.."
        Endswitch
        Do_It!
        ClearAll
        
        If VSDGOPSITCLIE<>"1"
           Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
                Moveto [Codigo                ] Example "cod"
                Moveto [Situacao do Cliente   ] 
                Switch
                  Case VSDGOPSITCLIE="3" : TypeIn "PESSIMO"       ; SEM PESSIMO 
                  Case VSDGOPSITCLIE="2" : TypeIn "not PESSIMO"   ; Sã PESSIMO
                Endswitch
                {Ask} {Answer} TypeIn "Fast Delete"
                Moveto [Codigo do Destinatario] Example "cod"
                Do_It!
                ClearAll
        EndIf
EndIf  

Release Vars REG_USUARIO
CriaTabelaControle()                     

Return True

EndPRoc ;SelecionaFiltroCtaRec()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogCtaRec(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento, Temp, MSG_CAMPO, TECLA
 
Temp=True
MSG_CAMPO=""
TECLA=""            
          
If Disparo="OPEN"  
   Then AoCriarShowDialog()
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9 : Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] = -60 Or 
          Evento["KeyCode"] = "F2" : If Campo="TG_TPPAGTO" Or Campo="TG_TPCART"  
                                        Then ListaRegra_F2() 
                                     EndIf
     Case Evento["KeyCode"] =  27 :
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"      : Campo="NO"        
            Case Campo="TG_DESTINAT"       : Campo="TG_EMPRESATE"     
            Case Campo="TG_GERENCIA"       : Campo="TG_DESTINAT"
            Case Campo="TG_REPRESEN"       : Campo="TG_GERENCIA"      
            Case Campo="TG_CIDADE"         : Campo="TG_REPRESEN"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_CONTA"          : Campo="TG_ESTADO"        
            Case Campo="TG_OPSITCLIE"      : Campo="TG_CONTA"         
            Case Campo="TG_TPPAGTO"        : Campo="TG_OPSITCLIE"         
            Case Campo="TG_TPCART"         : Campo="TG_TPPAGTO"   
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESATE"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch            
                    Case Campo="TG_EMPRESATE"      : Campo="TG_DESTINAT"
                         If Not IsBlank(VSDGEMPRESA) And MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA
                           Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                Campo="TG_EMPRESATE"
                         EndIf           
                    Case Campo="TG_DESTINAT"       : Campo="TG_GERENCIA"     
                    Case Campo="TG_GERENCIA"       : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN"       : Campo="TG_CIDADE"      
                    Case Campo="TG_CIDADE"         : Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf  
                    Case Campo="TG_ESTADO"         : Campo="TG_CONTA"
                    Case Campo="TG_CONTA"          : Campo="TG_OPSITCLIE"        
                    Case Campo="TG_OPSITCLIE"      : Campo="TG_TPPAGTO"         
                    Case Campo="TG_TPPAGTO"        : Campo="TG_TPCART"         
                    Case Campo="TG_TPCART"         : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog                               
   EndSwitch
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_DialogCtaRec      

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

Echo Normal
Echo Off

ListaRegra_Funcao("ListaRegra_TGAtivado","[TG_TPPAGTO],[TG_TPCART]")

If MODOFILTRAR_EMPRESA<>""
   Then VSDGEMPRESA=MODOFILTRAR_EMPRESA
EndIf    

CONSULTAF1     =  False
SDFILTRO_ATIVO = True
While True
  Result=False
  
  ShowDialog "Crit‚rio para filtro ?" Proc "SD_DialogCtaRec"
  Trigger "OPEN","ARRIVE","SELECT"                                                                             
  Mouse "UP"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,-60,"F2"
    @ 05,00   Height 17 Width 72
                                                                                         
    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST                                      

    Label  @ 04,00 "Gerˆncia " For "TG_GERENCIA"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 05,09 Width 25 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA
    
    Label  @ 06,00 "Representante"  For "TG_REPRESEN"
    Accept @ 07,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 08,00 "Cidade"  For "TG_CIDADE"
    Accept @ 09,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
    Label  @ 08,27 "Estado"  For "TG_ESTADO"
    Accept @ 09,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
    
    Label  @ 10,00 "Conta"  For "TG_CONTA"
    Accept @ 11,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA" To VSDGCONTA
  	Accept @ 11,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMCONT" To VSDGNOMCONTA    
    
    Label  @ 00,35 "Situa‡Æo do Cliente" For "TG_OPSITCLIE"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPSITCLIE" To VSDGOPSITCLIE
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPSITCLIE" To VSDGNOMOPSITCLIE

    Label  @ 02,35 "Forma de Pagamento"  For "TG_TPPAGTO"
    Accept @ 03,38 Width 05 "A2"  Picture "!*!" Tag "TG_TPPAGTO"    To VSDGTPPAGTO
    Accept @ 03,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPPG"    To VSDGNOMTPPAGTO

    Label  @ 04,35 "Tipo de Carteira"  For "TG_TPCART"
    Accept @ 05,39 Width 04 "A1"  Picture "!" Tag "TG_TPCART"  To VSDGTPCART
    Accept @ 05,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMCART" To VSDGNOMCART

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  If VSDGEMPRESA<>"" And MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA 
     Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
          Loop
  EndIf
  
  AGUARDE("Filtrando dados")
  If Not SelecionaFiltroCtaRec() Then Loop EndIf    
  Result=True
                             
  QuitLoop
EndWhile

SDFILTRO_ATIVO=False

Return Result

EndProc ;FiltrarCtaRec

;*******************************************************************************
;* Rotina Limpa Variaveis do Filtro                                            *
;*******************************************************************************
Proc LimpaFiltroCtaRec()                                                                        

CIDADE           = ""                                                                                       
VSDGEMPRESA      = ""
VSDGNOMEMP       = ""
VSDGDESTINAT     = ""
VSDGNOMDEST      = ""
VSDGGERENCIA     = ""
VSDGDESCGERENCIA = ""
VSDGREPRESEN     = ""
VSDGNOMREPR      = ""
VSDGCIDADE       = ""
VSDGESTADO       = ""
VSDGCONTA        = ""
VSDGNOMCONTA     = ""
VSDGOPSITCLIE    = ""
VSDGNOMOPSITCLIE = ""
VSDGTPPAGTO      = ""
VSDGNOMTPPAGTO   = ""
VSDGTPCART       = ""
VSDGNOMCART      = ""
REGRAFILTRO     = ""

EndProc ;LimpaFiltroCtaRec()     

;*******************************************************************************
;* 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 - Baixas                           *
;*******************************************************************************
Proc SetaCorRegistro_Baixa()

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

EndProc          

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Carrega_Tabelas()
ClearAll              
              
View NoWindow "\\Sistemas\\Cadastro\\Destinat"
View NoWindow "\\Sistemas\\Cadastro\\FichaCli"

If Not MODOFILTRAR
   Then CoEdit NoWindow "Duplic"
        ;************** Rotina para tratar o erro de tabela locada *************
        If ErrorCode()=4
           Then Do_It!
                ClearAll
                Release Vars All
                Release Procs All
                return false
        EndIf
        If Verifica_NRegistros("Duplic")
           Then COR_MENSAGEM="1"
                Mensagem(MSG_TABELA)
                Release Vars COR_MENSAGEM,MSG_TABELA
           Else Release Vars MSG_TABELA     
        EndIf
        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)
                        Return False
                EndIf
        EndIf
   Else If Not CoEditaTabelaControle() ; substitui Coedit da tabela principal
           Then Return False
        EndIf
EndIf

PickForm FORM_MANUTENCAO
Moveto "DupBaixa"                         SetaCorRegistro("Padrao")
Moveto "DupNotas"                         SetaCorRegistro("Invisivel")
Moveto "DupRat"                           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"

Moveto TabelaControle
PickForm FORM_RELACAO

Return True

EndProc ;Carrega_Tabelas()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot," +
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+        
        "\\Sistemas\\Ctarec\\Bib_Dup,"   +
        "\\Sistemas\\Ctacor\\Bib_Rat" 

SYS_VALOR()
LimpaFiltroCtaRec()

MSG=""
COR_MENSAGEM="PRETO"

{Ask} {Duplic} Check
Moveto [Numero do Lancamento] Example "LANCTO"
Moveto [Saldo do Documento  ] TypeIn "<0.01"
{Ask} {DupBaixa} 
Moveto [Numero do Lancamento] Example "LANCTO"
Moveto [Data do Pagamento   ] Typein "<(today-730)"
Do_It!
ClearAll
if not IsEmpty("Answer")
   then {Ask} {Answer}
        Moveto [Numero do Lancamento] Typein "Calc Count as Qtde"
        do_it!
        If [Qtde]>0
           Then MSG=MSG+"  Existe(m) "+strval([Qtde])+" lan‡amento(s) !   // //"
                MSG=MSG+"Para melhor seguran‡a e desempenho do Sistema,//"
                MSG=MSG+"recomendamos que fa‡a o fechamento mensal  das//"
                MSG=MSG+"mais antigas. Recomendamos manter apenas 1 ano//"
                MSG=MSG+"em aberto!                                    // //"
                MSG=MSG+"Verificar com o supervisor fechamento mensal !"
        EndIF       
endif   
ClearAll
if MSG<>"" then Mensagem(MSG) endif
Release Vars COR_MENSAGEM,MSG 

FORM_RELACAO    = "3"
FORM_MANUTENCAO = "4"
OPCAO_FORM      = FORM_RELACAO
           
If SYS_CODIGO_CLIENTE="0388" Or
   SYS_CODIGO_CLIENTE="0171"
   Then If IsFile("DUPL_388.sc")
           Then Release Procs All
                Play "DUPL_388"
                Return
        EndIf        
EndIf  

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   

Duplic_Comissao_Estorno=False
If SYS_NIVEL_USUARIO="S" Or SYS_NIVEL_USUARIO="E"
   Then Switch
          Case SYS_CODIGO_CLIENTE="0388" : Duplic_Comissao_Estorno=True
          Case SYS_CODIGO_CLIENTE="0427" : Duplic_Comissao_Estorno=True
          Case SYS_CODIGO_CLIENTE="0390" : Duplic_Comissao_Estorno=True
        EndSwitch
EndIf

LeiaINI(PrivDir()+"LER_CHQ.ini","VSD_LEITORCHQ.S.1")
     
PARAM_CORRECAO_BAIXA = True
TabelaTemp           = ""
TabelaPrincipal      = "Duplic"
TabelaControle       = TabelaPrincipal
MODOFILTRAR          = True
MODOFILTRARATIVO     = True
MODOFILTRAR_EMPRESA  = ""        
MODOFILTRATODOS      = False

If IsAssigned(MODOFILTRAR) And MODOFILTRAR 
   Then FILTRAREMPRESA = ""
        GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
        If RetVal
            Then If Not isblank(REG_USUARIO["Cod_Empresa"])
                    Then FILTRAREMPRESA = REG_USUARIO["Cod_Empresa"]
                 EndIf 
        EndIf
        If FILTRAREMPRESA<>""
           Then MODOFILTRAR_EMPRESA = FILTRAREMPRESA
                SelecionaFiltroCtaRec()
        EndIf
EndIf

If MODOFILTRAR_EMPRESA="" Or (TITULOS_BAIXASII Or TITULOS_SOANOTACOES)
   Then TabelaControle    = TabelaPrincipal
        MODOFILTRAR       = False
        MODOFILTRARATIVO  = True
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf

If Carrega_Tabelas()
   Then 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    =Today()
        ULTDATACHEQ=BlankDate()
        GERA_NOVO_LANC=False
        
        WS_DataEfetivadoBanco=BlankDate()
        
        CONTA=""
        NLANC=""
        NLANCC=0
        EMPRESA=""
        
        TIPO_TRABALHO=0
        CAMPO=""
        
        Origem_Disparo=""
        
        Switch
          Case TITULOS_BAIXASII:
            Play "DupBxII"       
        
          Case TITULOS_SOANOTACOES:
            Play "DupBxII"    
        
          OtherWise:
            While True
              vsvrcheques=BlankNum()
        
              Switch
                 Case TIPO_TRABALHO=0:
                      CHAVEC()
                      ;--- FILTRO ----------------------------------------------
                      If CHAVEC=99 
                         Then If FiltrarCtaRec()
                                 Then MODOFILTRAR=True
                              EndIf
                              Carrega_Tabelas()
                              Loop
                      EndIf                 
                      If CHAVEC=98 
                         Then AGUARDE("Visualizando todos registros")
                              MODOFILTRAR=False
                              Do_It!
                                            
                              TabelaControle=TabelaPrincipal
                              Carrega_Tabelas()
                              Loop
                      EndIf   
                      ;---------------------------------------------------------     
                 Case TIPO_TRABALHO=1:
                      Bib_Dup_CHAVEC2()
                 Case TIPO_TRABALHO=2:
                      Bib_Dup_CHAVEC3()
              EndSwitch
              If CHAVEC=9 Then QuitLoop EndIf
              If CHAVEC=5 Then     Loop EndIf
              If CHAVEC=6
                 Then If OPCAO_FORM=FORM_RELACAO
                         Then PickForm FORM_RELACAO
                         Else PickForm FORM_MANUTENCAO
                      EndIf
                      Loop
              EndIf
              Controla_EdicaoC()
            EndWhile
        EndSwitch
EndIf
Do_It!
ClearAll
Release Vars All
Release Procs All