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

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

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

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

  MSGCAMPO=""
  TECLA="F4=N§ Documento"
  AguardaTeclasPadrao()
  
  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM=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":
         Del
         While True
           Origem_Disparo=""
           FORM_CONTATO =""
           If OPCAO_FORM=FORM_RELACAO
              Then PAGINA("Duplic","MR")
              Else PAGINA("Duplic","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  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
                  EndIf

             Case EXCLUIR="S":  
                  If TITULOS_SOBAIXAS  Or TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     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    
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM=FORM_RELACAO
              Then PickForm FORM_RELACAO
              Else PickForm FORM_MANUTENCAO
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del                    
         Return
    Case Retval="ENTER":
         If isblank([]) and 
            TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES
            Then FastMsg("InclusÆo nÆo permitida !")
                 Loop
         EndIf
    
         If Numero_Lancamento("",FORM_RELACAO)
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC 
            Else QuitLoop
         EndIf

         PickForm FORM_MANUTENCAO
         Moveto [Numero do Lancamento]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 Echo Normal
                 Echo Off
            
                 If [Sistema Gerador]<>"MA"
                     Then FastMsg("Sistema Origem = "+PegaNomeSistemaGerador())
                 EndIf
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 [Codigo da Empresa    ]=SYS_EMPRESA_DEFAULT
                 [Sistema Gerador      ]="MA"
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Return  
                    Else OPCAO_FORM=FORM_RELACAO
                 EndIf
         EndIf
         
         If OPCAO_FORM=FORM_RELACAO
            Then PickForm FORM_RELACAO
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

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

;;;;Resynckey

VSDGCONTAGEM="NDAV"

If CHAVEC=0
   Then If NumVal([Saldo do Documento])<>NumVal([Valor do Documento])
           Then Moveto [Data de Emissao  ]
           Else Moveto [Codigo da Empresa]
        EndIf
        UTILIZA_RAT_CABECA  = [Tem Rateio        ]
        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 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 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]
       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 Pagar"]
                  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)

;*******************************************************************************
;* 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"           :
                  If VSD_I_Tipo_Conta="X"
                     Then If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                             Then If CHAVEI=0
                                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                     Then Campo="I_Vr_Descto"
                                                     Else Campo="I_JurosD"
                                                  EndIf
                                             Else Campo="I_DtPgComis"
                                           EndIf
                                     Else If IsAssigned(CONTA_USUARIO)
                                             Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                                     Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                             Then Campo="I_Vr_Descto"
                                                             Else Campo="I_JurosD"
                                                          EndIf             
                                                     Else Campo="I_DtPgComis"
                                                  EndIf
                                             Else Campo="I_Conta"
                                          EndIf
                                  EndIf
                             Else Campo="I_NCarreg"
                          EndIF
                     Else If CHAVEI=0
                             Then Campo="I_DtPgComis"
                             Else If IsAssigned(CONTA_USUARIO)
                                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                     Then Campo="I_Vr_Descto"
                                                     Else Campo="I_JurosD"
                                                  EndIf             
                                             Else Campo="I_DtPgComis"
                                          EndIf
                                     Else Campo="I_Conta"
                                  EndIf    
                          EndIf
                  EndIf
             Case Campo="I_CCusto"             : Campo="I_PlContas"
             Case Campo="I_Codigo_Hist"        : Campo="I_CCusto"
             Case Campo="I_Descri_Hist"        : Campo="I_Codigo_Hist"
           EndSwitch
      Case Evento["KeyCode"] = 13:  
           Temp=False
           Switch
             Case Campo="I_DtPagto"            : Campo="I_TpBaixa"
									VSD_I_DtPagto=ControlValue("I_DtPagto")
                  If IsBlank(VSD_I_DtPagto)
                     Then VSD_I_DtPagto=Today()
                  EndIf
                                                              
                  If Not IntervaloData(VSD_I_DtPagto)
                     Then Campo="I_DtPagto"
                  EndIf

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

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

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

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

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

                  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 = ""
                  If Not IsBlank(VSD_I_PlContas)
                     Then If PlContas(VSD_I_PlContas,"E")
                             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
                                  Campo="I_CCusto"
                             Else VSD_I_PlContas           = ""
                                  VSD_I_Descricao_PlContas = "" 
                          EndIf
                     Else VSD_I_Descricao_PlContas = ""
                          Campo="I_CCusto"      
                  EndIf
             Case Campo="I_CCusto"             : 
                  VSD_I_CCusto=ControlValue("I_CCusto")
                  If Not IsBlank(VSD_I_CCusto)
                     Then Moveto [Codigo CCusto]
                          Ativa_Lookup()
                          Moveto [Codigo CCusto]
                          Locate VSD_I_CCusto
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          KeyPress "ESC"
                                     Else VSD_I_CCusto          =[Codigo CCusto]
                                          VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                                          KeyPress "ESC"
                                          [Codigo CCusto]       =VSD_I_CCusto
                                          Campo="I_Codigo_Hist"
                                  Endif
                             Else Mensagem("Centro de Custo n„o Cadastrado !")
                                  VSD_I_CCusto          =""
                                  VSD_I_Descricao_CCusto=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else VSD_I_CCusto          =""
                          VSD_I_Descricao_CCusto=""
                          Campo="I_Codigo_Hist"
                  EndIf
             Case Campo="I_Codigo_Hist"        : Campo="I_Descri_Hist"
									VSD_I_Codigo_Hist=ControlValue("I_Codigo_Hist")
									If Not IsBlank(VSD_I_Codigo_Hist)
                     Then VSD_I_Codigo_Hist=AlinhM(VSD_I_Codigo_Hist,4)
                          Moveto [Codigo do Historico]
                          Ativa_Lookup()
													Moveto [Codigo do Historico]
													Locate VSD_I_Codigo_Hist
                          If RetVal
                             Then If HIOLD<>VSD_I_Codigo_Hist
                                     Then VSD_I_Descri_Hist  =[Descricao do Historico]
                                  EndIf
                                  KeyPress "ESC"
                                  If HIOLD<>VSD_I_Codigo_Hist
                                     Then HISTORICO()
                                  EndIf
                                  HIOLD =VSD_I_Codigo_Hist
														 Else Mensagem("Historico n„o Cadastrado !")
                                  VSD_I_Codigo_Hist=""
                                  VSD_I_Descri_Hist=""
                                  KeyPress "ESC"
                                  Campo="I_Codigo_Hist"
                          EndIf
                          Echo Off
                     Else HIOLD =VSD_I_Codigo_Hist
                  EndIf
             Case Campo="I_Descri_Hist"     : 
                  VSD_I_Descri_Hist=ControlValue("I_Descri_Hist")

                  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 INFORMATICA !")
                          EndIf            
                  EndIf     
           EndSwitch
   EndSwitch
EndIf

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

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

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

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

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


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

MontaRodapeSD(MSGCAMPO, TECLA)

Mouse Hide
RefreshDialog
Return Temp


EndProc  ; (Baixa_Dialog)

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

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

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

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

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

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

;*******************************************************************************
;* Rotina para 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 ou use o leitor para o c¢digo CMC7 !"
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

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

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

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True

       If Not IsBlank(VSD_Agencia) And
          Not IsBlank(VSD_CCorrente) And
          Not IsBlank(VSD_CPF) Then
          For wi From 1 To 5
            CDPessoaNova=False

            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
            Moveto [Codigo_Banco]
            Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
            If Not RetVal
               Then CDPessoaNova=True

                    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

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 CHAVEC=0
   Then Copia_Registro_Alteracao("Old")
        CONTROLA_EDICAOC_ALTERACAO = True
   Else CONTROLA_EDICAOC_ALTERACAO = False
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         
If OPCAO_FORM=FORM_RELACAO
   Then PickForm FORM_RELACAO
EndIf
SaveTables
EndProc

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

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

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

  OtherWise: CAMPOS_OK=True

EndSwitch  
Return CAMPOS_OK
EndProc   ;  (Checagem_Pagina)

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

s=""
Switch
   Case [Sistema Gerador]="DI" : s="Digita‡Æo de Notas de Sa¡da"
   Case [Sistema Gerador]="BA" : s="EmissÆo Romaneio p/ BalcÆo"
   Case [Sistema Gerador]="FT" : s="EmissÆo Nota Fiscal/Romaneio"
   Case [Sistema Gerador]="CF" : s="EmissÆo Cupom Fiscal"
   Case [Sistema Gerador]="TR" : s="EmissÆo Romaneio p/ Troca"
   Case [Sistema Gerador]="GD" : s="Gera‡Æo de Duplicatas"
   Case [Sistema Gerador]="BO" : s="Bordero de Cheques/Terceiros"
   Case [Sistema Gerador]="AF" : s="Acerto Financeiro"
   Case [Sistema Gerador]="CB" : s="Gera‡Æo de Cobran‡a"
EndSwitch

return s
EndProc   ;  (Checagem_Pagina)

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

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

EndProc

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

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

EndProc

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

sys_valor()

FORM_RELACAO    = "3"
FORM_MANUTENCAO = "4"
           
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")

View NoWindow "\\Sistemas\\Cadastro\\Destinat"
View NoWindow "\\Sistemas\\Cadastro\\FichaCli"
;;View NoWindow "\\Sistemas\\CheqRec\\Chequei"
CoEdit "Duplic"

If Verifica_NRegistros("Duplic")
   Then COR_MENSAGEM="1"
        Mensagem(MSG_TABELA)
        Release Vars COR_MENSAGEM,MSG_TABELA
   Else Release Vars MSG_TABELA     
EndIf    

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

PARAM_CORRECAO_BAIXA = True

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

SetaCorRegistro_Tabela()

Moveto "Duplic"
PickForm FORM_RELACAO

If TABELA_NOVA Then Del EndIf
Release Vars TABELA_NOVA

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

WCSW_SDINI      =BlankNum()
WCSW_SDATU      =BlankNum()

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

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

FORM_CONTATO =""

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

WS_DataEfetivadoBanco=BlankDate()

CONTA=""
NLANC=""
NLANCC=0
EMPRESA=""
OPCAO_FORM=FORM_RELACAO
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()
         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
Do_It!
ClearAll
Release Vars All
Release Procs All
