;** Titulos ********************************************************************
;*  Manutencao Carteira de Contas a Pagar                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 25/08/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: SaveTables
;Ultima Alteracao: 03/01/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Confirma
;Ultima Alteracao: 07/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dt Cheque Descontado
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 11/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Copiar Parcelas
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Copiar Parcelas
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;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: Inclusao Imprimir()
;Ultima Alteracao: 05/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cheques
;Ultima Alteracao: 13/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TitCheq/Titbaixa
;Ultima Alteracao: 23/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CdPessoa
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 31/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao P_CHEQ
;Ultima Alteracao: 07/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CHECACHEQ()
;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: 14/12/2009 por Cleber Alves
;Motivo Alteracao: Inclusao do Rateio
;Ultima Alteracao: 30/12/2009 por Cleber Alves
;Motivo Alteracao: Ajustes do Rateio
;Ultima Alteracao: 05/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Copiar Parcelas
;Ultima Alteracao: 07/01/2010 por Cleber Alves
;Motivo Alteracao: Ajustes do Rateio  "Valor do Documento"
;Ultima Alteracao: 12/01/2010 por Cleber Alves
;Motivo Alteracao: Ajustes do Rateio  
;Ultima Alteracao: 26/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Copia Parcelas
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 08/06/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Cheques Trocados
;Ultima Alteracao: 13/10/2010 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Leitura_Cheque                           
;Ultima Alteracao: 14/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: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 08/07/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes RTrim([Numero do Documento])  Multiplas Parcelas
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Localizar cheque pelo CMC7 primeiro
;Ultima Alteracao: 28/10/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado Impressao de Cheques conforme Parametros
;Ultima Alteracao: 10/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes ImpressÆo de Cheque
;Ultima Alteracao: 18/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes QuitLoop "Data Competencia"
;Ultima Alteracao: 28/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Localizar CMC7 < ou ,              
;Ultima Alteracao: 30/11/2011 por Bruno Carvalho
;Motivo Alteracao: Remove SD_DialogLerCh()
;Ultima Alteracao: 30/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes padronizar com script Titulos usando apenas paramentro
;                  diferenciador assim este script nunca muda !!
;Ultima Alteracao: 12/12/2011 por Karina Andrade
;Motivo Alteracao: Add Checagem_Pagina()
;Ultima Alteracao: 14/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes "novo layout" e "navega‡Æo em menu"
;Ultima Alteracao: 20/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Checagem de Pagina e "PgDn"
;Ultima Alteracao: 23/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes na ordena‡Æo de campos
;Ultima Alteracao: 02/01/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes na ordena‡Æo de campos 
;Ultima Alteracao: 05/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes View P_CHEQUE
;Ultima Alteracao: 10/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes na rotina de impressÆo de cheques
;Ultima Alteracao: 11/01/2012 por Bruno Carvalho
;Ultima Alteracao: Altera‡Æo no Controla_Edicao() "Table()"
;Ultima Alteracao: 18/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes Tecla_Funcao na ExclusÆo
;Ultima Alteracao: 20/01/2012 por Karina Andrade
;Ultima Alteracao: Ajuste Data Competencia e Lan‡amento de CHQ sem baixa
;Ultima Alteracao: 18/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes Tecla_Funcao na ExclusÆo
;Ultima Alteracao: 17/04/2012 por Bruno Carvalho
;Ultima Alteracao: PermissÆo de acesso ao campo "Data Competencia" ao editar um lan‡amento
;Ultima Alteracao: 28/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ver observacoes na baixa
;Ultima Alteracao: 23/04/2013 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo quando ocorrer duplicidade de t¡tulos
;Ultima Alteracao: 29/04/2013 por Bruno Carvalho
;Motivo Alteracao: Checa_Supervisor quando altera/exclui t¡tulo
;Ultima Alteracao: 29/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes VerificaRaT()                            
;Ultima Alteracao: 06/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F3 ver ficha nos itens sem senha supervisor
;Ultima Alteracao: 05/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes informar data liquidacao do cheque         
;Ultima Alteracao: 06/06/2013 por Bruno Carvalho
;Motivo Alteracao: Caracteres vari vel TECLA maior que 90 d¡gitos #Baixa_Dialog# 
;Ultima Alteracao: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado leitura de variavel em arquivo "LER_CHQ.ini"
;Ultima Alteracao: 26/07/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes sintaxe ao excluir lan‡amento DIGITAC()
;Ultima Alteracao: 27/09/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes nas rotinas do Monta_Opcoes "BIB_SHOW" 
;Ultima Alteracao: 10/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 27/01/2014 por Bruno Carvalho
;Motivo Alteracao: Criado fun‡Æo para ordena‡Æo de campos no CHAVEC()
;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: 07/05/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes FastMSG("Lan‡amento do Sistema Notas de Entrada !")
;Ultima Alteracao: 16/08/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes gravar [TitBaixa->Data do Pagamento] na [Data Competencia]
;Ultima Alteracao: 22/08/2014 por Andrey Fillipe
;Motivo Alteracao: Correcao gravar [Titulos->Data Competencia] na [Data Competencia] do MOVCONT
;Ultima Alteracao: 15/10/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes Proc EXCLUSAO() quando Sistema Gerador "FA" Limpar dados na Rfacc
;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: 01/11/2014 por Andrey Fillipe
;Motivo Alteracao: Corrigido Mensagem "O Acerto destas Produ‡”es voltar„o com status em Aberto !"
;Ultima Alteracao: 23/12/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado nova rotina para n£mero de lan‡amentos 
;Ultima Alteracao: 06/10/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado SaveTables no final da proc Controla_EdicaoI()
;Ultima Alteracao: 21/10/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes no lan‡amento do cheque manual e por CMC7
;Ultima Alteracao: 05/12/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes controle MSGCAMPO e Teclas padrÆo e Sistema Origem na Baixa
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getp_titulo(), getp_cheq() em Carrega_Parametros()
;Ultima Alteracao: 07/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema gerador AF=Acerto Financeiro e Mensagens      
;Ultima Alteracao: 19/01/2016 por Bruno Carvalho
;Motivo Alteracao: Ao excluir um registro, a vari vel MSG nÆo estava sendo setada em determinada situa‡Æo na proc CHAVEC() 
;Ultima Alteracao: 03/02/2016 por Kamila Gomes
;Motivo Alteracao: Ao excluir um registro, a vari vel MSG nÆo estava sendo setada em determinada situa‡Æo na proc DIGITAC() 
;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    
;Motivo Alteracao: Na proc CHAVEI() foi removido do inicio desta proc a Seta_Sequencia(NITEM,False) como era realizado no titulos em versäes anteriores
;                  p/ controle apenas se usu rio pressionar ENTER, assim  ser  verificado qual a sequˆncia, se mais de 9, ‚ exibido uma mensagem.
;Ultima Alteracao: 11/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VerificaRaT(), checagem ao sair PGDN                            
;Ultima Alteracao: 04/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes message no form                                       
;Ultima Alteracao: 21/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado IsLockRecord na Proc Conta() quando posicionado no MovCont 
;Ultima Alteracao: 04/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes PegaNomeSistemaGerador() para Bordero    
;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: 26/06/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data cheque descontado                     
;Ultima Alteracao: 15/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes multiplas parcela                     
;Ultima Alteracao: 18/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado controle ORDENA_CAMPO p/ bloquear a inclusÆo de lan‡amento
;Ultima Alteracao: 05/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Showdialog baixa 

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

ORDENA_CAMPO    = "ORD_LANC"
COPIOU_REGISTRO = False
While True
  Moveto [Numero do Lancamento]
  End                          
  NLANC=[Numero do Lancamento]
  Moveto [Numero do Lancamento]
  
  If OPCAO_FORM="6"
     Then Down          
     Else PgDn PgDn PgDn PgDn PgDn
  EndIf
  Moveto [Numero do Lancamento]

  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 :
    
         Echo Normal
         Echo Off

         ShowPopup " Fun‡”es " CENTERED
             "~O~rdena Campo     " : " Ordena Campos                " : "ORDENA",
             Separator,
             "~C~ancela          " : " Cancelar a Opera‡„o          " : "CANCELAR"
         EndMenu
         To MenuVar
         
         Echo Off
         If MenuVar="CANCELAR" or MenuVar="Esc"
            Then QuitLoop
         EndIf                                         
         RetVal=MenuVar  
    
         If MenuVar = "ORDENA"
            Then Echo Normal
                 Echo Off
                 ShowPopup " Ordena Campo " CENTERED
                  "Numero do ~L~an‡amento" : " Ordena Campo por Numero do Lan‡amento " : "ORD_LANC",
                  "Data de ~V~encimento  " : " Ordena Campo por Data de Vencimento   " : "ORD_VENC",
                  "Razao ~S~ocial        " : " Ordena Campo por Raz„o Social         " : "ORD_RAZ",
                  Separator,
                  "~C~ancelar            ": " Cancelar a Opera‡„o                   " : "CANCELAR"
                 EndMenu
                 To MenuVar
                 Echo Off
                 If MenuVar="CANCELAR" or MenuVar="Esc"
                    Then ORDENA_CAMPO = "ORD_LANC"
                         QuitLoop
                EndIf                                         
                RetVal=MenuVar
                
                Do_It!
                FormKey
                Switch
                  Case MenuVar = "ORD_VENC" : OrdenaCampo("Data de Vencimento")
                  Case MenuVar = "ORD_LANC" : OrdenaCampo("Numero do Lancamento")
                  Case MenuVar = "ORD_RAZ"  : OrdenaCampo("Razao Social")
                EndSwitch
                ORDENA_CAMPO = MenuVar
                CoeditKey
                FormKey
         EndIf
         QuitLoop
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="6"
            Then OPCAO_FORM="4"
            Else OPCAO_FORM="6"
         EndIf
         Del                     
         CHAVEC=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           If OPCAO_FORM="6"
              Then PAGINA("Titulos","MR")
              Else PAGINA("Titulos","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off

                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                          FastMsg(MSG)
                  EndIf
                  
                  If TITULOS_SOBAIXAS Or
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOBAIXAS
                     Then FastMsg("Exclus„o n„o permitida !")                                                   
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
                          MSG = ""
                          If [Sistema Gerador]<>"MA"
                             Then MSG = PegaNomeSistemaGerador()
                                  If MSG<>""
                                     Then MSG = "Sistema Origem = "+MSG+"//"
                                  EndIf
                          EndIf
                          Switch
                            Case [Sistema Gerador]="FA"  : MSG = MSG + "O Acerto destas Produ‡”es voltar„o com status em Aberto !//"
                                                           MSG = MSG + "Acerto = N//"
                            Case [Sistema Gerador]<>"MA" : MSG = MSG + "Excluir  este  lan‡amento  em caso de erro no Sistema !//"
                                                           MSG = MSG + "Caso contrario corriga o lan‡amento no Sistema Origem !//"
                          EndSwitch  
                          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="4"
              Then PickForm "4"
              Else PickForm "6"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER" : 
         ;---- Devido ao processo automatico p/ gerar lancto -------------------  
         If ORDENA_CAMPO <> "ORD_LANC"                                         
            Then FastMsg("Inclus„o n„o permitida para este tipo de visualiza‡„o!")
                 Loop
         EndIf   
         If Numero_Lancamento("","6")
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC   
            Else QuitLoop
         EndIf
         ;----- Peculiaridade do Contas a Receber ------------------------------
         If Not PROXIMO_LANCTO_REG_ACHOU
            Then If TITULOS_SOBAIXAS
                    Then FastMsg("Inclus„o n„o permitida !")
                         Loop
                 EndIf
         EndIf
         ;----------------------------------------------------------------------
         PickForm "4"
         Moveto [Numero do Lancamento]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 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="6"
                 EndIf
         EndIf
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="6"
            Then PickForm "6"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes Carteira                              *
;*******************************************************************************
Proc DIGITAC()
DIGITAC=True
             
If CHAVEC=0
   Then If [Saldo do Documento]<>[Valor do Documento]
           Then if sys_codigo_Cliente="0092"
                   Then Moveto [Codigo da Empresa]
                   Else Moveto [Data Competencia ]
                EndiF
           Else Moveto [Codigo da Empresa]
        EndIf
   Else Moveto [Codigo da Empresa]
EndIf

TPLANCTO2=[Tipo do Lancamento]
VALDOC=[Valor do Documento]

If TITULOS_SOBAIXAS
   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()="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()="Documento Referente"  : MSGCAMPO="Documento Origem"
  EndSwitch

  If Field()="Codigo do Emitente"  Or
     Field()="Codigo do Documento" Or
     Field()="Codigo da Empresa"   Or
     Field()="Codigo da Conta"     Or
     Field()="Tipo do Lancamento"  Or
     Field()="Tipo do Pagamento"   Or
     Field()="Codigo CCusto"       Or
     Field()="Codigo Plano_Conta"
     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

  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F10","F8","F6","F5","F4","DOWN","F9",-33,-145,-115,-116

  If Retval=-33
     Then
       ShowPopup " Fun‡”es " CENTERED
        "Recalcula Baixas [F4] " : " Recalcular o Saldo deste T¡tulo pelas baixas lan‡adas"        : "F4",
        "Observa‡„o       [F5] " : " Observa‡„o do T¡tulo"                                         : "F5",
        "Cheques          [F6] " : " Relacionar Cheques de Terceiros usados p/ baixa deste T¡tulo" : "F6",
        "Baixas           [F8] " : " Baixa do T¡tulo"                                              : "F8",
        "Notas            [F9] " : " Relacionar Notinhas p/ este T¡tulo"                           : "F9",
        "Rateio           [F10]" : " Rateio Pl.Contas/Ct.Custo"                                    : "F10",
        Separator,
        "~C~ancelar"             : " Cancelar a Opera‡„o"                                          : "CANCELAR"
       EndMenu
        To MenuVar
       echo off

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

  If (RetVal="DOWN" or RetVal=-145)
     Then RetVal="F8"
  EndIf     

  Switch
  Case  RetVal="F6"  Or RetVal="F8" Or RetVal="F9" Or 
        RetVal="F10" Or RetVal=-115  Or RetVal=-116 :
        Tecla_Funcao=RetVal
        If Checagem_Pagina()
           Then Return
        EndIf  
  
  Case RetVal="F1":
        If Field()="Codigo do Emitente"   Or
           Field()="Tipo do Lancamento"   Or
           Field()="Tipo do Pagamento"    Or
           Field()="Codigo CCusto"        Or
           Field()="Codigo Plano_Conta"
           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" And CHAVEC=0:
       CONFGERAL("Esta fun‡„o soma as baixas deste lan‡amento// para corre‡„o dos saldos !// // Confirma opera‡„o ?")
       If OK="S"
          Then Calc_Baixas()
       EndIf   
  Case RetVal="F5":
       Edita_Memo("Observacoes",14,00,09,79,"Observa‡”es")
       
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL" And CHAVEC=0: 
       MSG = "" 
       If [Sistema Gerador]<>"MA"
          Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
 
               If [Sistema Gerador]="FA" 
                   Then MSG=MSG+"O Acerto destas Produ‡”es voltar„o com status em Aberto !//"
                        MSG=MSG+"Acerto = N//"
                   else 
                        MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                        MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
               EndIf
       EndIf
       MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
       If CONFGERAL_Supervisor(MSG)
          Then EXCLUSAO()
               Tecla_Funcao=""
               DIGITAC =False
               QuitLoop
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa":
            If QuerDesfazer("")
               Then If CHAVEC=0
                       Then Undo
                       Else Del
                    EndIf
                    CHAVEC=9
                    Tecla_Funcao=""
                    DIGITAC =False
                    QuitLoop
            EndIf 
       Case Field()="Codigo da Conta":
            Moveto [Codigo da Empresa]
       Case Field()="Codigo do Emitente":
            Moveto [Codigo da Conta]
       Case Field()="Codigo do Documento":
            Moveto [Codigo do Emitente]
       Case Field()="Numero do Documento":
            Moveto [Codigo do Documento]
       Case Field()="Documento Referente":
            Moveto [Numero do Documento]
       Case Field()="Data a Pagar":
            Moveto [Valor do Documento]
       Case Field()="Valor do Documento":
            Moveto [Data de Vencimento]     
       Case Field()="Data Competencia":
            If sys_Codigo_Cliente<>"0092"
               Then If CHAVEC=0
                       Then If [Saldo do Documento]<>[Valor do Documento]
                               Then Undo
                                    Tecla_Funcao=""
                                    DIGITAC =False
                                    QuitLoop
                            EndIf
                    EndIf
            EndIf       
            If [Sistema Gerador]="MA"
               Then Moveto [Documento Referente]   
               Else Moveto [Numero do Documento]
            EndIf            
       Case Field()="Data de Emissao":
            Moveto [Data Competencia]
       Case Field()="Tipo Taxa de Juros":
            Moveto [Multa]
       Case Field()="Tipo do Pagamento":
            Moveto [Tipo do Lancamento]
       Case Field()="Codigo Plano_Conta":
            Moveto [Tipo do Pagamento]
       Case Field()="Codigo CCusto":
            Moveto [Codigo Plano_Conta]
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
            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 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 Emitente]
                    EndIf
            EndIf    
       Case Field()="Codigo do Emitente":
            Switch
              Case IsBlank([]) : Loop 
              Case CHAVEC=1    : If Cliente_Inativo() Then Loop EndIf     
            EndSwitch
            If [Nome Fantasia EmitDest]="DIVERSOS"
               Then Moveto [Razao Social       ]
               Else Moveto [Codigo do Documento]
            EndIf
            [Tipo do Lancamento]=TPLANCTO2
       Case Field()="Razao Social":
            Moveto [Codigo do Documento]            
       Case Field()="Codigo do Documento":
            If Not Checa_Opcoes("Codigo do Documento",[])
               Then [Tipo do Documento  ]=""
                    [Serie do Documento ]=""
                    [Numero do Documento]=""
                    Mensagem("Codigo do Documento Inv lido !")
                    Loop
            EndIf       
            If Not IsBlank([])
               Then Moveto [Numero do Documento]
            EndIf
       Case Field()="Numero do Documento":
            If Not IsBlank([])
							 Then If [Sistema Gerador]="MA"
                       Then CAMPO="Documento Referente"
                       Else CAMPO="Data Competencia"
					        	EndIf
                    If CHAVEC=1 
                       Then If CHECA_DUPLICIDADE()
                               Then CAMPO="Numero do Documento"
                            EndIf
                    EndIf
 		                Moveto Field CAMPO
            EndIf
       Case Field()="Documento Referente":
						Moveto [Data Competencia]
			 Case Field()="Data Competencia":
						Moveto [Data de Emissao]
       Case Field()="Data de Emissao":
            If IsBlank([])
               Then []=Today()
            EndIf
            If IsBlank([Data Competencia])
               Then [Data Competencia]=[Data de Emissao]
            EndIf             
            Moveto [Data de Vencimento]					
       Case Field()="Data de Vencimento":
            If [] < [Data de Emissao]
               Then MENSAGEM("Data de vencimento menor que a data de emiss„o !")
                    Loop
            EndIf
            [Data a Pagar]=[]
            While True
                  NDIAS=0
                  If Dow([Data a Pagar])="Sat"
                     Then NDIAS=2
                     Else If Dow([Data a Pagar])="Sun"
                             Then NDIAS=1
                          EndIf
                  EndIf
                  DIA = [Data a Pagar]
                  Moveto "\\Sistemas\\Cadastro\\Feriados"
                  Locate DIA
                  If Retval
                     Then NDIAS=[Dias a Pagar]
                  EndIf
                  Moveto "Titulos"
                  [Data a Pagar]=[Data a Pagar]+NDIAS
                  If NDIAS=0 or Isblank(NDIAS)
                     Then QuitLoop
                  EndIf
            EndWhile
            Moveto [Valor do Documento]    			
			 Case Field()="Valor do Documento":
            If IsBlank([]) Then []=0  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]                    
                            Moveto "TitRat"
                            If RecordStatus("New") = false
                                Then QuitLoop
                            EndIf
                            Moveto "Titulos"
                    EndIf
            EndIf
            Moveto [Data a Pagar      ]
            VALDOC=[Valor do Documento] 
	
       Case Field()="Data a Pagar":
            If Not IsBlank([])
               Then Right
            EndIf

       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 Not ISBlank([])
               Then Moveto [Tipo do Pagamento]
                    TPLANCTO2=[Tipo do Lancamento]
            EndIf
       Case Field()="Tipo do Pagamento":
            If Not IsBlank([])
               Then Moveto [Codigo Plano_Conta]
            EndIf
       Case Field()="Codigo Plano_Conta":
            CodPlacon = [Codigo Plano_Conta]
            If Not IsBlank(CodPlacon)
               Then Ativa_Lookup()
                    Moveto [Codigo Plano_Conta]
                    Locate CodPlacon
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    Loop
                               Else DescPlacon = LTrim([Descricao Plano_Conta])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Conta n„o Cadastrada !")
                            KeyPress "Esc"
                            DescPlacon = ""
                            Loop
                    EndIf
                    If SubStr([],1,1)="1"
                       Then Mensagem("Conta n„o confere com tipo de movimento !")
                            Loop
                    EndIf
               Else DescPlacon = ""
            Endif
            [Descricao Plano_Conta]= DescPlacon
            KeyPress "Esc"
            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      
            If [Tipo do Pagamento]="CP"
               Then Tecla_Funcao="F6"
               Else Tecla_Funcao="F8"
            EndIf                                      
            If Checagem_Pagina() Then QuitLoop EndIf   
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
            EndIf  
            QuitLoop     
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc   ; (DigitaC)

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

If [Sistema Gerador]="FA"
   Then NL = [Numero do Lancamento]
        Do_It!
        FormKey
        
        CoEdit "\\Sistemas\\Faccao\\Rfacc"
        Moveto [Numero Lancamento Titulos]
        Scan For NL = [Numero Lancamento Titulos]
             [Numero Lancamento Titulos] = ""
             [Acerto_Realizado         ] = "N"
             [Data de Vencimento       ] = BlankDate()
        EndScan
        Do_It!

        Moveto "\\Sistemas\\Faccao\\Rfacc"  ClearImage
        Moveto "Titulos"
        FormKey
        CoEditKey
EndIf

Moveto "TitBaixa"
While RecordStatus("New")=False
   VROLD=[Valor do Pagamento]
   JSOLD=[Valor do Juros]
   DSOLD=[Valor do Desconto]
   CHAVEI=8
   CONTA()
   TIT()
   Del
EndWhile

Moveto "TitNota"
While RecordStatus("New")=False
   Del
EndWhile

moveto "TitRat"
While RecordStatus("New")=False
   Del
EndWhile

Moveto "TitCheq"

While RecordStatus("New")=False
   If Not IsBlank([Numero Lancamento Cheque]) Then
      NLANCCH=[Numero Lancamento Cheque]
      SITEMCH=[Sequencia do Cheque     ]

      Moveto "\\Sistemas\\CheqRec\\ChequeI"
      Moveto [Numero do Lancamento]
      Locate NLANCCH,SITEMCH
      If RetVal
         Then [Situacao          ]="EM ABERTO"
              [Sistema Destino   ]=""
              [Tipo de Destino   ]=""
              [Lancamento Destino]=""
              [Data_Liquidado    ]=BlankDate()
              UnLockRecord
      EndIf
   EndIf
   Moveto "TitCheq"
   Del
EndWhile

Moveto "Titulos"
Del
UnLockrecord

EndProc ; (Exclusao)

;*******************************************************************************
;* Atualizacao do Titulo                                                       *
;*******************************************************************************
Proc TIT()
Moveto "Titulos"
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\CtaPag\TitBaixa->Valor do Pagamento]-
                            [\Sistemas\CtaPag\TitBaixa->Valor do Juros      ])+
                            [\Sistemas\CtaPag\TitBaixa->Valor do Desconto]),2)

     WCSW_BAIXA=Round(WCSW_BAIXA-((VROLD-JSOLD)+DSOLD),2)
     WCSW_BAIXA=Round(WCSW_BAIXA+
                          (([\Sistemas\CtaPag\TitBaixa->Valor do Pagamento]-
                            [\Sistemas\CtaPag\TitBaixa->Valor do Juros      ])+
                            [\Sistemas\CtaPag\TitBaixa->Valor do Desconto]),2)

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

Moveto "TitBaixa"
EndProc  ; (Tit)



;+-----------------------------------------------------------------------------+
;   [ INICIO ]     Rotinas comuns Titulos, Bxforn, Titulobx               

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

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

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

Return False

EndProc ;Cliente_Inativo()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

TECLA=""
MSG_CAMPO=""
Temp=True

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

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

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

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

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

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

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

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

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

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

                            Release Vars Array_Vencimentos
                            DynArray Array_Vencimentos[]
                            For i From 1 To DynArraySize(Array_VencimentosI)
                              Array_Vencimentos[i]=Array_VencimentosI[i]
                            EndFor
                            Release Vars Array_VencimentosI

                    EndIf
            EndIf
       Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_OPDOCTO"   : Campo="TG_PARCELA"
                         VSDGOPDOCTO=ControlValue("TG_OPDOCTO")
                    Case Campo="TG_PARCELA"   : Campo="TG_OPDTEM"
                         VSDGPARCELA=ControlValue("TG_PARCELA")
                    Case Campo="TG_OPDTEM"   : Campo="YES"

                    Case Campo="TG_DOCTO"          : Campo="TG_DTEMID"
                         VSDGDOCTO=ControlValue("TG_DOCTO")
                    Case Campo="TG_DTEMID"         : Campo="TG_DTREFE"
                         VSDGDTEMID=ControlValue("TG_DTEMID")
                    Case Campo="TG_DTREFE"         : Campo="TG_DTCOMP"
                         VSDGDTREFE=ControlValue("TG_DTREFE")
                    Case Campo="TG_DTCOMP"         : Campo="TG_VALOR"
                         VSDGDTCOMP=ControlValue("TG_DTCOMP")
                    Case Campo="TG_VALOR"          :
                         VSDGVALOR=ControlValue("TG_VALOR")
                         AcceptDialog

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

                  EndSwitch
          EndIf
   EndSwitch
EndIf

RefreshDialog
SelectControl Campo
TECLA=" Esc=Retornar  "

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

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

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

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

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

RefreshDialog
Return TEMP
EndProc  ; (Sd_Dialog)

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

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

VSDGOPDOCTO=1
VSD_I_SEQ=1

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

SD=1
INICIO_DIALOG=True

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

    Frame Single From 00,00 to 14,63

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

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

EndProc  ;(Inicial)

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

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

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

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

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

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

    Label  @ 00,30 "DtVencto"  For "TG_DTREFE"
    Accept @ 01,29 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREFE" To VSDGDTREFE
    
    Label  @ 00,44 "DtCompet"  For "TG_DTCOMP"
    Accept @ 01,43 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTCOMP" To VSDGDTCOMP
    
    Label  @ 00,56 "Valor" For "TG_VALOR"
    Accept @ 01,57 Width 12 "$" picture "#*#.[##]" Tag "TG_VALOR" To VSDGVALOR

  EndDialog
  Mouse Show
  If Not RetVal
		 Then QuitLoop
  EndIf

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

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

SD=1
EndProc    ; (Vencimento)

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

SD=3
INICIO_DIALOG=True

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

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

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

  Label @ 00,00 "Desdobramento do Documento por" For "TG_OPDOCTO"
   RadioButtons @ 01,01 Height 1 Width 50
     "~L~etra",
     "~N~umero",
     "~M~es/Ano",
     "~P~arcela"
     Tag "TG_OPDOCTO"
     To VSDGOPDOCTO

  @ 02,00 ?? "      docto/A    docto/1      MM/AA        NP/TP"
  
  Label  @ 04,00 "Quantidade"  For "TG_PARCELA"
  Accept @ 05,03  Width 05 "A4"  Picture "#*#" Tag "TG_PARCELA" To VSDGPARCELA
  
  CheckBoxes @ 05,12 Height 1 Width 40 Tag "TG_OPDTEM"
  TG_OPDTEM[1] to CheckTG_OPDTEM[1]

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

SD=1
EndProc  ;(Quant)

;*******************************************************************************
;* Calcula as Datas das Parcelas                                               *
;*******************************************************************************
Proc Datas(PARCELAS)

Private PARCELAS,DOCTO,VALOR,
        DATA,DIA,MES,ANO,CONT,pos,
        DATAEM,DIAEM,MESEM,ANOEM,CONT,pos,
        NMES, NANO, NPARC, TPARC, DATAP, DATAE, DATACOM

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

Release Vars Array_Vencimentos
DynArray Array_Vencimentos[]

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

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

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

DIACOM=NumVal(Day(DATACOM))
MESCOM=NumVal(Month(DATACOM))
ANOCOM=numVal(Year(DATACOM))

CONT =2

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

   DATAP=DateVal(AlinhM(StrVal(MES),2)+"/"+AlinhM(StrVal(DIA),2)+"/"+StrVal(ANO))
   ;*******************************
   If Not  CheckTG_OPDTEM[1]
      Then DATAC=DATACOM
      Else If MESCOM<12
              Then MESCOM=MESCOM+1
              Else ANOCOM=ANOCOM+1
                   MESCOM=1
           EndIf
           If Day(Ultimo_dia(AlinhM(StrVal(MESCOM),2)+StrVal(ANOCOM)))<DIACOM
              Then DIACOM=Day(Ultimo_dia(AlinhM(StrVal(MESCOM),2)+StrVal(ANOCOM)))
           EndIf
           DATAC=DateVal(AlinhM(StrVal(MESCOM),2)+"/"+AlinhM(StrVal(DIACOM),2)+"/"+StrVal(ANOCOM))
   EndIf

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

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

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

   CONT=CONT+1
 EndWhile

EndProc  ;(Datas)

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

Ok=False

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

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

Return Ok
EndProc  ;(Ver_Data)

;*******************************************************************************
;* Rotina Recalcular Saldos conforme as baixas                                 *
;*******************************************************************************
Proc Calc_Baixas()
Moveto "\\Sistemas\\CtaPag\\TitBaixa"
Moveto [Valor do Pagamento]
TOTREC=Round(ImageCSum(),2)
Moveto [Valor do Juros]
TOTJUR=Round(ImageCSum(),2)
Moveto [Valor do Desconto]
TOTDES=Round(ImageCSum(),2)

Moveto "\\Sistemas\\CtaPag\\Titulos"

[Saldo do Documento]=([Valor do Documento]-
                     (TOTREC-TOTJUR+TOTDES))

EndProc

;*******************************************************************************
;* Rotina para Localizar Registro Notinhas                                     *
;*******************************************************************************
Proc CHAVEN()

Exclusao_Cabeca=False
While True
  Moveto [Sequencia da Nota]
  End
  NITEM_N = [Sequencia da Nota]
  Down

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

  SetaCorRegistro("Editar")
  While true
    Moveto [Valor do Documento]
    TOTVALOR = ImageCSum()
    If TOTVALOR>0 Or Saldo_Atualizado
       Then Moveto "Titulos"
            [Valor do Documento]=TOTVALOR
            Calc_Baixas()
            Moveto "TitNota"
            Saldo_Atualizado=True
    EndIf
    Moveto [Sequencia da Nota]

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    If Retval=-33
       Then
         ShowPopup " Fun‡”es " CENTERED
          "C~h~eques    [F6]"  : " Relaciona Cheques/Terceiros       " : "F6",
          "~B~aixas     [F8]"  : " Baixa do T¡tulo"                    : "F8",
          "R~a~teio     [F10]" : " Rateio Pl.Contas/Ct.Custo"         : "F10",
          Separator,
          "~C~ancelar"         : " Cancelar a Opera‡„o"                : "CANCELAR"
         EndMenu
          To MenuVar
         Echo off

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

    Switch   
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F6" Or RetVal="F9" Or
         RetVal=-115 Or RetVal=-116 Or
         RetVal=-133 Or RetVal="F11":
         Tecla_Funcao=RetVal
         CHAVEN=9
         Del
         Return   
    
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True

           Moveto [Valor do Documento]
           TOTVALOR = ImageCSum()
           If TOTVALOR>0 Or Saldo_Atualizado
              Then Moveto "Titulos"
                   [Valor do Documento]=TOTVALOR
                   Calc_Baixas()
                   Moveto "TitNota"
                   Saldo_Atualizado=True
           EndIf
           Moveto [Sequencia da Nota]

           PAGINA("TitNota","MR")
           If EDITAR="S"
              Then 
                   If TITULOS_SOBAIXAS
                      Then FastMsg("Altera‡Æo n„o permitida !")
                           UnLockRecord
                           Loop
                   EndIf   

                   CHAVEN=0
                   NLANC  =[Numero do Lancamento]
                   NITEM_N  =[Sequencia da Nota]
                   Controla_EdicaoN()
              Else If EXCLUIR="S"
                      Then 
                           If TITULOS_SOBAIXAS
                              Then FastMsg("Exclus„o n„o permitida !")
                                   UnLockRecord
                                   Loop
                           EndIf   
                           
                           If QuerExcluir("")And Checa_Supervisor()
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           Endif
           SetaPosForm()
         EndWhile
         QuitLoop   
    Case Retval="ESC":
         SetaCorRegistro("Padrao")
         Del
         CHAVEN=9
         If TITULOS_SOBAIXAS 
            Then Tecla_Funcao="F8"
                 DIGITAC =False
            Else Tecla_Funcao=-10 
         EndIf
         Return
    Case Retval="PGDN":
         Del
         If Not VerificaRaT()
            Then QuitLoop
         EndIf    
    
         CHAVEN=9
         Tecla_Funcao=""
         DIGITAC =False
         Return
    Case Retval="ENTER":
         If TITULOS_SOBAIXAS
            Then FastMsg("Inclus„o n„o permitida !")
                 Loop
         EndIf   
    
         If Not Seta_Sequencia(NITEM_N,True)
            Then Del
                 QuitLoop
         EndIf
         NITEM_N=[]
         Del
         Locate NLANC,NITEM_N
         If Retval
            Then CHAVEN=0
            Else CHAVEN=1
                 End Down
                 [Numero do Lancamento]=NLANC
                 [Sequencia da Nota   ]=NITEM_N
                 UnLockRecord
                 Locate NLANC,NITEM_N
         EndIf
         Resynckey
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao do Rateio                                             *
;*******************************************************************************
Proc DIGITAR()

If CHAVER=0
   Then Moveto [Codigo Plano_Conta]
   Else 
        Moveto [Codigo Plano_Conta]
EndIf

While True

      TECLA=" Esc=Retornar  "

      If Field()="Codigo do Documento"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf
      If CHAVER=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf
      MSGCAMPO=Field()

      Prompt TECLA

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

      Switch
      Case RetVal="F1":
           If Field()="Codigo Plano_Conta"
              Then CONSULTAF1()
           EndIf
           If Field()="Codigo CCusto"
              Then CONSULTAF1()
           EndIf          
      Case Retval="ESC":
           Switch
           Case Field()="Codigo Plano_Conta":
                If QuerDesfazer("")
                   Then If CHAVER=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                EndIf
           Case Field()="Porcentagem":
                Moveto [Codigo CCusto]
           Case Field()="Codigo CCusto":
                Moveto [Codigo Plano_Conta]     
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
          Case Field()="Codigo Plano_Conta":
            CodPlacon = [Codigo Plano_Conta]
            If Not IsBlank(CodPlacon)
               Then Ativa_Lookup()
                    Moveto [Codigo Plano_Conta]
                    Locate CodPlacon
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    Loop
                               Else DescPlacon = LTrim([Descricao Plano_Conta])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Conta n„o Cadastrada !")
                            KeyPress "Esc"
                            DescPlacon = ""
                            Loop
                    EndIf
                    If SubStr([],1,1)="1"
                       Then Mensagem("Conta n„o confere com tipo de movimento !")
                            Loop
                    EndIf
               Else DescPlacon = ""
            Endif
            [Descricao Plano_Conta]= DescPlacon
            KeyPress "Esc"                     
            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
            If IsBlank ([Codigo Plano_Conta])and IsBlank ([Codigo CCusto])
               Then Loop
            else             
            moveto [Porcentagem] 
            EndIf             
      Case Field()="Porcentagem":           
           [Valor]= Round(([Titulos->Valor do Documento]*[Porcentagem])/100,2)
           moveto [Valor]
      
      Case Field()="Valor":
           QuitLoop                    
           OtherWise:
           Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVER=0
              Then If QuerExcluir("") 
                      Then Del
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc
;*******************************************************************************
;* Rotina para Digitacao das Notinhas                                          *
;*******************************************************************************
Proc DIGITAN()
                       
If CHAVEN=0
   Then Moveto [Valor do Documento]
   Else [Data de Emissao   ]=Today()
        Moveto [Codigo do Documento]
EndIf

While True

      TECLA=" Esc=Retornar  "

      If Field()="Codigo do Documento"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf
      If CHAVEN=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf
      MSGCAMPO=Field()
      
      Prompt TECLA

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

      Switch
      Case RetVal="F1":
           If Field()="Codigo do Documento"
              Then CONSULTAF1()
           EndIf
      Case Retval="ESC":
           Switch
           Case Field()="Codigo do Documento":
                If QuerDesfazer("")
                   Then If CHAVEN=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                EndIf
           Case Field()="Data de Emissao":
                Moveto [Codigo do Documento]
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
           Case Field()="Codigo do Documento":
                If IsBlank([]) Then Loop EndIf
                Moveto [Numero do Documento]
           Case Field()="Numero do Documento":
                If IsBlank([]) Then Loop EndIf
                Right
           Case Field()="Data de Emissao":
                If IsBlank([])
                   Then []=Today()
                EndIf
                Right
           Case Field()="Valor do Documento":
                QuitLoop
           OtherWise:
                Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEN=0
              Then If QuerExcluir("") And Checa_Supervisor()
                      Then Del
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro Baixa                                        *
;*******************************************************************************
Proc CHAVEI()
Exclusao_Cabeca=False

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

  SetaCorRegistro("Editar")
  While true
    Opcao_Ver=False

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    If Retval=-33
       Then
         ShowPopup " Fun‡”es " CENTERED
          "~V~er Ficha       [F3]" : " Ver modo Ficha                    " : "F3",
          "Copiar ~P~arcelas [F4]" : " Copiar Parcelas                   " : "F4",
          "~I~mprimir        [F5]" : " Imprimir Controle de Pagamento    " : "F5",
          "C~h~eques         [F6]" : " Relaciona Cheques/Terceiros       " : "F6",
          "~N~otas           [F9]" : " Relacionar Notinhas p/ este T¡tulo" : "F9",
          "R~a~teio          [F10]": " Rateio Pl.Contas/Ct.Custo"          : "F10",
          Separator,
          "~C~ancelar"             : " Cancelar a Opera‡„o"                : "CANCELAR"
         EndMenu
          To MenuVar
         echo off

         If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
             Else RetVal=MenuVar
         EndIf
    EndIf
 
    Switch
    Case RetVal=-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="F5":
         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
           PAGINA("TitBaixa","MR")
           NLANC=[Numero do Lancamento]
           NITEM=[Sequencia da Baixa  ]
           Switch
             Case EDITAR="S":
                  If [Tipo da Baixa]="CANCELADO"
                     Then Mensagem("Baixa por Cancelamento!")
                          UnLockRecord
                     Else If Checa_Controle([Numero_Controle_Dia])
                             Then CHAVEI=0
                                  Controla_EdicaoI()
                             Else UnLockRecord
                          EndIf
                  EndIf
             Case EXCLUIR="S":
                  If QuerExcluir("") And Checa_Supervisor()
                     Then VROLD=[Valor do Pagamento  ]
                          JSOLD=[Valor do Juros      ]
                          DSOLD=[Valor do Desconto   ]
                          CHAVEI=8
                          If CONTA()
                             Then TIT()
                                  Del
                          EndIf
                     Else UnLockRecord
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    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="F4":            
         If Not TITULOS_SOBAIXAS And 
            (CHAVEC=1 Or (CHAVEC=0 And [Titulos->Saldo do Documento]>0))
            Then If Inicial()
                    Then If DynArraySize(Array_Vencimentos)>0
                            Then Moveto "Titulos"
                                 CopyToArray REG_VENC
        
                                 DynArray Array_Rateio[]
                                 moveto "TitRat"
                                 n=0
                                 Scan
                                   If not isblank([Sequencia]) Then
                                    n=n+1
                                    Array_Rateio[n]=
                                    Format("W5,AL",[TitRat->Sequencia])+" "+
                                    Format("W13,AL",([TitRat->Codigo Plano_Conta]))+" "+
                                    Format("W7,AL",([TitRat->Codigo CCusto]))+" "+
                                    Format("W5,AL",[TitRat->Porcentagem])+" "+
                                    Format("W12.2,AL",[TitRat->Valor])
                                   EndIf
                                 EndScan
        
                                 Moveto "Titulos"
                                 For i From 1 To DynArraySize(Array_Vencimentos)
                                   If i>1
                                      Then While True
                                             Moveto [Numero do Lancamento]
                                             End
                                             NLANC=AlinhM(StrVal(NumVal([Numero do Lancamento])+1),6)
                                             Pgdn PgDn PgDn PgDn PgDn
                                             Moveto [Numero do Lancamento]
                                             [Numero do Lancamento]=NLANC
        
                                             LockRecord
                                             If RetVal
                                                Then REG_VENC["Numero do Lancamento"]=NLANC
                                                     REG_VENC["Saldo do Documento"  ]=REG_VENC["Valor do Documento"]
                                                     CopyFromArray REG_VENC
                                                     QuitLoop
                                                Else Del
                                             EndIf
                                         EndWhile
                                   EndIf
                                   [Numero do Documento]=RTrim(SubStr(Array_Vencimentos[i],4,10))
                                   [Data de Emissao    ]=DateVal(LTrim(SubStr(Array_Vencimentos[i],15,2))+"."+
                                                                       SubStr(Array_Vencimentos[i],18,2)+"."+
                                                                       SubStr(Array_Vencimentos[i],21,4))
                                   [Data de Vencimento ]=DateVal(LTrim(SubStr(Array_Vencimentos[i],26,2))+"."+
                                                                       SubStr(Array_Vencimentos[i],29,2)+"."+
                                                                       SubStr(Array_Vencimentos[i],32,4))
                                   [Data Competencia   ]=DateVal(LTrim(SubStr(Array_Vencimentos[i],37,2))+"."+
                                                                       SubStr(Array_Vencimentos[i],40,2)+"."+
                                                                       SubStr(Array_Vencimentos[i],43,4))
                                   [Valor do Documento ]=NumVal(SubStr(Array_Vencimentos[i],61,12))
        
                                   If i>1
                                      Then [Saldo do Documento ]=[Valor do Documento]
                                   EndIf
                                   [Data a Pagar       ]=[Data de Vencimento]
                                   lc=[Tipo do Lancamento]
                                   [Tipo do Lancamento]=""
                                   [Tipo do Lancamento]=lc
        
                                   While True
                                         NDIAS=0
                                         If Dow([Data a Pagar])="Sat"
                                            Then NDIAS=2
                                            Else If Dow([Data a Pagar])="Sun"
                                                    Then NDIAS=1
                                                 EndIf
                                         EndIf
                                         DIA = [Data a Pagar]
                                         Moveto "\\Sistemas\\Cadastro\\Feriados"
                                         Locate DIA
                                         If Retval
                                            Then NDIAS=[Dias a Pagar]
                                         EndIf
                                         Moveto "Titulos"
                                         [Data a Pagar]=[Data a Pagar]+NDIAS
                                         If NDIAS=0 or Isblank(NDIAS)
                                            Then QuitLoop
                                         EndIf
                                   EndWhile
                                   UnLockRecord
                                   ;99999 9999999999999 9999999 99999 999999999999.99
                                   ;12345678901234567890123456789012345678901234567890123456
        
                                   If i>1
                                      Then If n>0
                                              Then moveto "TitRat"
                                                   For ii From 1 To DynArraySize(Array_Rateio)
                                                       end down down
                                                       [Numero do Lancamento ]=NLanc
                                                       [Sequencia            ]=NumVal(SubStr(Array_Rateio[ii],1,5))
                                                       [Codigo Plano_Conta   ]=RTrim(SubStr(Array_Rateio[ii],7,13))
                                                       [Codigo CCusto        ]=RTrim(SubStr(Array_Rateio[ii],21,7))
                                                       [Porcentagem          ]=NumVal(SubStr(Array_Rateio[ii],29,5))
                                                       [Valor                ]=NumVal(SubStr(Array_Rateio[ii],35,15))
                                                       [Descricao Plano_Conta]=LTrim([Descricao Plano_Conta])
                                                       [Descricao CCusto     ]=LTrim([Descricao CCusto])
                                                   EndFor
                                                   moveto "Titulos"
                                            Endif
                                   Endif
                                 EndFor
                                 DIGITAC =False
                                 CHAVEI=9
                                 Return
                         EndIf
                 EndIf
           Else FastMsg("Fun‡Æo nÆo permitida!")        
         EndIf
    Case Retval="ESC":
         Del
         CHAVEI=9
         If TITULOS_SOBAIXAS 
             Then DIGITAC =False
         EndIf   
         Tecla_Funcao=-10
         Return
    Case Retval="PGDN":
         Del
         If Not VerificaRaT()
            Then QuitLoop
         EndIf    
    
         CHAVEI=9
         Tecla_Funcao=""
         DIGITAC =False
         Return
        
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         NITEM=[]
         Del
         Locate NLANC,NITEM
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End Down
                 [Numero do Lancamento]=NLANC
                 [Sequencia da Baixa  ]=NITEM
                 UnLockRecord
                 Locate NLANC,NITEM
         EndIf
         If Not IsLockRecord()
            Then If (CHAVEI=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                    (CHAVEI=0 And Checa_Controle([Numero_Controle_Dia]))
                    Then Return
                 EndIf
         EndIf
         If CHAVEI=1
            Then Del
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc ; (ChaveI)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Moveto [Sequencia da Baixa]
Locate NLANC,NITEM
CopyToArray RegItem

If CHAVEI=1
   Then [Data do Pagamento  ]=Today()
        [Codigo da Conta    ]=[Titulos->Codigo da Conta]
        [Codigo CCusto      ]=[Titulos->Codigo CCusto     ]
        [Codigo Plano_Conta ]=[Titulos->Codigo Plano_Conta]
        [Tipo de Lancamento ]=[Titulos->Tipo do Lancamento]

        Switch
          Case [Tipo da Conta]="C":
            If [Titulos->Tipo do Pagamento]="DA" Or
               [Titulos->Tipo do Pagamento]="PE" Or
               [Titulos->Tipo do Pagamento]="TE"
               Then [Tipo de Operacao]="14"
            EndIf
            If [Titulos->Tipo do Pagamento]="CH" Or
               [Titulos->Tipo do Pagamento]="CP"
               Then [Tipo de Operacao]="05"
            EndIf
          Case [Tipo da Conta]="X":
            [Tipo de Operacao]="06"
        EndSwitch

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

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

   Else HIOLD =[Codigo do Historico]
EndIf

DTOLD =[Data do Pagamento          ]
VROLD =[Valor do Pagamento         ]
JSOLD =[Valor do Juros             ]
DSOLD =[Valor do Desconto          ]
CCOLD =[Codigo da Conta            ]
NCHOLD=[Numero do Cheque           ]
DCHOLD=[Data Cheque Descontado     ]
LCOLD =[Lancamento Conta Corrente  ]

Registro_Baixa("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Lancamento a Vista                                              *
;*******************************************************************************
Proc Digita_Baixa()

If CHAVEI=1
   Then NC_CDTDESC=50
   Else NC_CDTDESC=80
        if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
           then NC_CDTDESC=50
        endif   
EndIf

Showdialog "Dados da Baixa [    ]" Proc "Baixa_Dialog"
  Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea","HOME","END","PGDN","PGUP","F5"
    @ 04,0 height 19 width 80

  Accept @ -01,44 Width 4 "A2" 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 "Vr Pago" 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 "Conta" For "I_Conta"
  Accept @ 03,00 Width 07 "A4" picture "#*#" Tag "I_Conta" to VSD_I_Conta
  Accept @ 03,07 Width 43 "A30" picture "!*!" Tag "I_Descricao_Conta" to VSD_I_Descricao_Conta

  Label  @ 04,00 "Tp Opera‡„o" For "I_Tpoper"
  Accept @ 05,00 Width 05 "A2" picture "#*#" Tag "I_Tpoper" to VSD_I_Tpoper
  Accept @ 05,05 Width 31 "A20" picture "!*!" Tag "I_Descricao_Tpoper" to VSD_I_Descricao_Tpoper

  Label  @ 04,36 "Tp Lan‡amento" For "I_Tplanc"
  Accept @ 05,37 Width 04 "A1" picture "&" Tag "I_Tplanc" to VSD_I_Tplanc
  Accept @ 05,41 Width 37 "A20" picture "!*!" Tag "I_Descricao_Tplanc" to VSD_I_Descricao_Tplanc

  Label  @ 06,04 "N§ CH/Docto" For "I_NoCheque"
  Accept @ 07,05 Width 15 "A11" picture "!*!" Tag "I_NoCheque" to VSD_I_NoCheque

  Label  @ 06,20 "Serie" For "I_SrCheq"
  Accept @ 07,21 Width 11 "A6" picture "!*!" Tag "I_SrCheq" to VSD_I_SrCheq

  Label  @ 06,32 "Dt Pre-Datado" For "I_DtCPrDat"
  Accept @ 07,33 Width 04 "A1" picture "S,N" Tag "I_ChPreDat" to VSD_I_ChPreDat
  Accept @ 07,37 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DtCPrDat" to VSD_I_DtCPrDat

  Label  @ 06,NC_CDTDESC "Dt Descontado" For "I_DtDesc"
  Accept @ 07,NC_CDTDESC+1 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DtDesc" to VSD_I_DtDesc

  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 71 "A70" picture "!*!" Tag "I_Descri_Hist" to VSD_I_Descri_Hist

  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 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 Pagamento    ] = VSD_I_Vr_Pagto
       [Tipo da Baixa         ] = VSD_I_TpBaixa
       [Valor do Desconto     ] = VSD_I_Vr_Descto
       [Valor do Juros        ] = VSD_I_Vr_Juros
       [Codigo da Conta       ] = VSD_I_Conta
       [Codigo da Empresa     ] = [Titulos->Codigo da Empresa]
       [Numero do Cheque      ] = VSD_I_NoCheque
       [Serie do Cheque       ] = VSD_I_SrCheq
       [Cheque Pre-Datado     ] = VSD_I_ChPreDat
       [Data Cheque Pre-Datado] = VSD_I_DtCPrDat
       [Codigo Plano_Conta    ] = VSD_I_PlContas
;;;;;;;[Descricao Plano_Conta ] = VSD_I_Descricao_PlContas
       [Codigo CCusto         ] = VSD_I_CCusto
;;;;;;;[Descricao CCusto      ] = VSD_I_Descricao_CCusto
       [Codigo do Historico   ] = VSD_I_Codigo_Hist
       [Descricao do Historico] = VSD_I_Descri_Hist
       [Tipo de Operacao      ] = VSD_I_Tpoper
       [Tipo de Lancamento    ] = VSD_I_Tplanc

       if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
          then [Data Cheque Descontado] = VSD_I_DtDesc
          else [Data Cheque Descontado] = blankDate()
       endif   
       VSD_I_NDA                = BlankNum()

       If CHAVEI=1
          Then Controle_Dia()
       EndIf
  Case Funcao_Registro="Ler":
       VSD_I_SEQ                = [Sequencia da Baixa    ]
       VSD_I_LCXBC              = [Lancamento Conta Corrente]
       VSD_I_DtPagto            = [Data do Pagamento     ]
       VSD_I_TpBaixa            = [Tipo da Baixa         ]
       VSD_I_Vr_Pagto           = [Valor do Pagamento    ]
       VSD_I_Vr_Juros           = [Valor do Juros        ]
       VSD_I_Vr_Descto          = [Valor do Desconto     ]
       VSD_I_Conta              = [Codigo da Conta       ]
       VSD_I_Descricao_Conta    = [Descricao da Conta    ]
       VSD_I_NoCheque           = [Numero do Cheque      ]
       VSD_I_SrCheq             = [Serie do Cheque       ]
       VSD_I_ChPreDat           = [Cheque Pre-Datado     ]
       VSD_I_DtCPrDat           = [Data Cheque Pre-Datado]
       VSD_I_DtDesc             = [Data Cheque Descontado]
       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]

       VSD_I_Tpoper             = [Tipo de Operacao      ]
       VSD_I_Descricao_Tpoper   = [Descricao Operacao    ]
       VSD_I_Tplanc             = [Tipo de Lancamento    ]
       VSD_I_Descricao_Tplanc   = [Descricao do Lancamento]
       VSD_I_NDA                = VSD_I_DtPagto-[Titulos->Data de Vencimento]
       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_ObsBaixa           =  [Observacoes]
       if CHAVEI=0 And [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
          then
               Moveto "\\Sistemas\\CtaCor\\MovCont"
               Moveto [Numero do Lancamento]
               Locate [TitBaixa->Lancamento Conta Corrente],
                      [TitBaixa->Codigo da Conta]
               If RetVal
                  then 
                       If [Sistema Gerador       ]="CP"                             and
                          [Empresa Gerador       ]=[TitBaixa->Codigo da Empresa   ] and
                          [Lancamento Gerador    ]=[TitBaixa->Numero do Lancamento] and
                          [Sequencia Gerador     ]=[TitBaixa->Sequencia da Baixa  ] and
                          [Codigo do Documento   ]=[Titulos->Codigo do Documento  ] and
                          [Numero do Documento   ]=[Titulos->Numero do Documento  ]
                          then 
                               VSD_I_DtDesc       =[Data Cheque Descontado        ]
                       endif   
               endif
               Moveto "TitBaixa"
       endif   
       
EndSwitch
EndProc  ; (Registro_Baixa)

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

Private JANELA, WinArray5
Temp=True
TECLA    =" Esc=Retornar  "
MSGCAMPO=""

If INICIO_DIALOG
   Then If CHAVEI=0
           Then Campo="I_Vr_Pagto"
           Else Campo="I_DtPagto"
        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
              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 QuerExcluir("") And Checa_Supervisor()
                       Then CopyFromArray RegItem
                            CHAVEI=8
                            If CONTA()
                               Then TIT()
                                    Del
                            EndIf
                            CancelDialog
                    Endif
            EndIf
       Case Evento["KeyCode"] = -63:
            Temp=False
            Edita_Memo("Observacoes",16,03,07,73,"Observa‡”es")
            VSD_I_ObsBaixa           =  [Observacoes]

       Case Evento["KeyCode"] = -59:
            Temp=False
            If Campo="I_PlContas" Or
               Campo="I_CCusto" Or
               Campo="I_Codigo_Hist"
               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
                    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
                   Moveto "TitBaixa"
           EndIf

           If Campo="I_Conta"
              Then If SD_Seleciona_Opcoes("Codigo da Conta","CR",8,5)
                      Then VSD_I_Conta          =[Codigo da Conta   ]
                           VSD_I_Descricao_Conta=[Descricao da Conta]
                   EndIf
                   Campo="I_Conta"
           Endif

           If Campo="I_Tpoper"
              Then If SD_Seleciona_Opcoes("Tipo de Opera‡„o","CR",10,5)
                      Then VSD_I_Tpoper          =[Tipo de Operacao]
                           VSD_I_Descricao_Tpoper=[Descricao Operacao]
                   EndIf
                   Campo="I_Tpoper"
           Endif

           If Campo="I_Tplanc"
              Then If SD_Seleciona_Opcoes("Tipo de Lan‡amento","CR",10,33)
                      Then VSD_I_Tplanc          =[Tipo de Lancamento]
                           VSD_I_Descricao_Tplanc=[Descricao do Lancamento]
                   EndIf
                   Campo="I_Tplanc"
           Endif

      Case Evento["KeyCode"] = 27:
           Temp=False
           Switch
             Case Campo="I_DtPagto"            :
                  If QuerDesfazer("")
                     Then Del
                          CancelDialog
                  EndIf
             Case Campo="I_TpBaixa"           : Campo="I_DtPagto"
             Case Campo="I_Vr_Pagto"          :
                  If CHAVEI=0
                     Then If QuerDesfazer("")
                             Then CopyFromArray RegItem
                                  CancelDialog
                          EndIf
                     Else Campo="I_TpBaixa"
                  EndIf
             Case Campo="I_Vr_Juros"           : Campo="I_Vr_Pagto"
             Case Campo="I_Vr_Descto"          : Campo="I_Vr_Juros"
             Case Campo="I_Conta"              : Campo="I_Vr_Descto"

             Case Campo="I_Tpoper"             :
                  If CHAVEI=0
                     Then Campo="I_Vr_Descto"
                     Else Campo="I_Conta"
                          Monta_Opcoes("Codigo da Conta","")
                  EndIf
             Case Campo="I_Tplanc"             : Campo="I_Tpoper"
                  Monta_Opcoes("Tipo de Opera‡„o",VSD_I_Conta)
             Case Campo="I_NoCheque"           : Campo="I_Tplanc"
                  Monta_Opcoes("Tipo do Lan‡amento",VSD_I_Tpoper)

             Case Campo="I_SrCheq"             : Campo="I_NoCheque"
             Case Campo="I_ChPreDat"           : Campo="I_SrCheq"
             Case Campo="I_DtCPrDat"           : Campo="I_ChPreDat"
             Case Campo="I_DtDesc"             :
                  If VSD_I_ChPreDat="S"
                     Then Campo="I_DtCPrDat"
                     Else Campo="I_ChPreDat"
                  EndIf
             Case Campo="I_PlContas"           :
                  If [Tipo da Conta]<>"C"
                     Then Campo="I_Tplanc"
                     Else Campo="I_NoCheque"
                  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 Not IntervaloData(VSD_I_DtPagto)
                     Then Campo="I_DtPagto"
                  EndIf

                  If VSD_I_DtPagto < [Titulos->Data de Emissao]
                     Then MENSAGEM("Data de pagamento menor que a data de emiss„o")
                          Campo="I_DtPagto"
                  EndIf
                  If CHAVEI=1
                     Then
                          If VSD_I_DtPagto>[Titulos->Data de Vencimento]
                             Then NDA=VSD_I_DtPagto-[Titulos->Data de Vencimento]
                                  TXM=[Titulos->Multa]
                             Else NDA=0
                                  TXM=0
                          EndIf

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

                          If VSD_I_DtPagto<=[Titulos->Data Limite Desconto]
                             Then VSD_I_Vr_Pagto =[Titulos->Saldo do Documento]-
                                                  [Titulos->Valor do Desconto ]
                                  VSD_I_Vr_Descto=[Titulos->Valor do Desconto ]
                             Else VSD_I_Vr_Pagto =[Titulos->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)
                  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"
                  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,03,07,73,"Observa‡”es")
                             Then Campo="I_TpBaixa"
                             Else VSD_I_ObsBaixa           =  [TitBaixa->Observacoes]
                                  If VSD_I_TpBaixa="CANCELADO"
                                     Then VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="CANCELADO "+[Titulos->Tipo do Documento]+"/"+[Titulos->Numero do Documento]
                                          Registro_Baixa("Gravar")
                                          If CONTA()
                                             Then TIT()
                                                  AcceptDialog
                                          EndIf
                                     Else VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="PAG. "+[Titulos->Tipo do Documento]+"/"+[Titulos->Numero do Documento]
                                  EndIf
                          EndIf  
                  EndIf
             Case Campo="I_Vr_Pagto"           : Campo="I_Vr_Juros"
                  VSD_I_Vr_Pagto=ControlValue("I_Vr_Pagto")
                  If VSD_I_Vr_Pagto<=0
                     Then Campo="I_Vr_Pagto"
                  EndIf
             Case Campo="I_Vr_Juros"           : Campo="I_Vr_Descto"
                  VSD_I_Vr_Juros=ControlValue("I_Vr_Juros")
                  If VSD_I_Vr_Juros<0 And
                     Not IsBlank(VSD_I_Vr_Juros)
                     Then Campo="I_Vr_Juros"
                  EndIf

             Case Campo="I_Vr_Descto"          :
                  VSD_I_Vr_Descto=ControlValue("I_Vr_Descto")
                  If VSD_I_Vr_Descto<0 And
                     Not IsBlank(VSD_I_Vr_Descto)
                     Then Campo="I_Vr_Descto"
                     Else If CHAVEI=0
                             Then Campo="I_Tpoper"
                                  Monta_Opcoes("Tipo de Opera‡„o",VSD_I_Conta)
                             Else Campo="I_Conta"
                                  Monta_Opcoes("Codigo da Conta","")
                          EndIf
                  EndIf
             Case Campo="I_Conta"              :
                  VSD_I_Conta=AlinhM(ControlValue("I_Conta"),4)
                  If Checa_Opcoes("Codigo da Conta",VSD_I_Conta)
                     Then Campo="I_Tpoper"
                          VSD_I_Conta          =Registro_F1["Codigo da Conta"]
                          VSD_I_Descricao_Conta=Registro_F1["Descricao da Conta"]
                          [Codigo da Conta     ]=VSD_I_Conta
                          If [Tipo da Conta]<>"C"
                             Then VSD_I_NoCheque=""
                                  VSD_I_SrCheq  =""
                                  VSD_I_ChPreDat=""
                                  VSD_I_DtCPrDat=BlankDate()
                                  VSD_I_DtDesc  =BlankDate()
                          EndIf
                          Monta_Opcoes("Tipo de Opera‡„o",VSD_I_Conta)
                     Else Mensagem("Conta n„o cadastrada !")
                          VSD_I_Descricao_Conta=""
									EndIf
             Case Campo="I_Tpoper"             :
                  VSD_I_Tpoper=AlinhM(ControlValue("I_Tpoper"),2)
                  If Checa_Opcoes("Tipo de Opera‡„o",VSD_I_Tpoper)
                     Then Campo="I_Tplanc"
                          VSD_I_Tpoper          =Registro_F1["Tipo de Operacao"]
                          VSD_I_Descricao_Tpoper=Registro_F1["Descricao Operacao"]
                          [Tipo de Operacao    ]=VSD_I_Tpoper

                          Monta_Opcoes("Tipo do Lan‡amento",VSD_I_Tpoper)
                     Else Mensagem("Tipo Opera‡„o n„o cadastrada !")
                          VSD_I_Descricao_Tpoper=""
                  EndIf
             Case Campo="I_Tplanc"             :
                  VSD_I_Tplanc=ControlValue("I_Tplanc")
                  If Checa_Opcoes("Tipo do Lan‡amento",VSD_I_Tplanc)
                     Then Campo="I_NoCheque"
                          VSD_I_Tplanc          =Registro_F1["Tipo do Lancamento"]
                          VSD_I_Descricao_Tplanc=Registro_F1["Descricao do Lancamento"]
                          [Tipo de Lancamento  ]=VSD_I_Tplanc
                          If [Tipo da Conta]<>"C"
                             Then Campo="I_PlContas"
                             Else Campo="I_NoCheque"
                          EndIf
                     Else Mensagem("Tipo Lan‡amento n„o cadastrado !")
                          VSD_I_Descricao_Tplanc=""
                  EndIf
             Case Campo="I_NoCheque"           :
                  VSD_I_NoCheque=ControlValue("I_NoCheque")
                  If Not IsBlank(VSD_I_NoCheque)
                     Then If [Tipo de Operacao]="14"
                             Then VSD_I_SrCheq  =""
                                  VSD_I_ChPreDat=""
                                  VSD_I_DtCPrDat=BlankDate()
                                  VSD_I_DtDesc  =VSD_I_DtPagto
                                  Campo="I_PlContas"
                             Else Campo="I_SrCheq"
                          EndIf
                  EndIf
             Case Campo="I_SrCheq"             : Campo="I_ChPreDat"
                  VSD_I_SrCheq=ControlValue("I_SrCheq")
             Case Campo="I_ChPreDat"           :
                  VSD_I_ChPreDat=ControlValue("I_ChPreDat")
                  Switch
                    Case VSD_I_ChPreDat="S"    : Campo="I_DtCPrDat"
                    OtherWise                  :
                         VSD_I_ChPreDat="N"
                         VSD_I_DtCPrDat=BlankDate()

                         if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
                            Then Campo="I_DtDesc"
                            Else Campo="I_PlContas"
                         EndIf
                  EndSwitch
             Case Campo="I_DtCPrDat"           :
									VSD_I_DtCPrDat=ControlValue("I_DtCPrDat")
                  If Not IsBlank(VSD_I_DtCPrDat)
                     Then If VSD_I_DtCPrDat<VSD_I_DtPagto
                             Then Mensagem("Data menor que Data do Pagamento !")
                             Else 
                                  if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
                                     Then Campo="I_DtDesc"
                                     Else Campo="I_PlContas"
                                  EndIf
                          EndIf
                  EndIf
             Case Campo="I_DtDesc"             :
									VSD_I_DtDesc=ControlValue("I_DtDesc")

                  If Not IsBlank(VSD_I_DtDesc) and
                     VSD_I_DtDesc<VSD_I_DtPagto
                     Then Mensagem("Data de desconto do cheque menor que data do pagamento !")
                     Else Campo="I_PlContas"
                  EndIf

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

                  If CONTA()
                     Then TIT()
                          If PARAM_IMPRIME_CHEQUE="S" And CHAVEI=1 And VSD_I_Tpoper="05" 
                             Then IMPRIME_CHEQUE()
                          EndIf

                          If Not IsBlank(PARAM_RELAT)
                             Then Recbok=False
                                  Switch
                                    Case CHAVEI=1: RecbOk=True
                                    Case CHAVEI=0: RecbOk=ConfGeral("Deseja imprimir a 2¦ Via do Recibo?")
                                  EndSwitch
                                  If RecbOk Then Imprime_Recibo() EndIf
                          EndIf  
                           
                          AcceptDialog   
                  EndIf                  
           EndSwitch
   EndSwitch
EndIf
RefreshDialog

SelectControl Campo
Switch
  Case Campo="I_Conta"      : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Tpoper"     : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Tplanc"     : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_TpBaixa"    : MSGCAMPO="N=NORMAL  D=DEVOLUCAO  C=CANCELADO"
  Case Campo="I_NoCheque"   : Switch
                                Case [Tipo de Operacao]="14": MSGCAMPO="Informe o N£mero do Documento da Transa‡„o"
                                Case [Tipo de Operacao]="05": MSGCAMPO="Informe o N£mero do Cheque Emitido"
                              EndSwitch
  Case Campo="I_SrCheq"     : MSGCAMPO="Serie do Cheque"
  Case Campo="I_ChPreDat"   : MSGCAMPO="Cheque Pre-Datado (Sim/N„o)"
  Case Campo="I_DtCPrDat"   : MSGCAMPO="Data do Cheque Pre-Datado"
  Case Campo="I_DtDesc"     : MSGCAMPO="Data do Cheque Descontado"
  Case Campo="I_PlContas"   : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_CCusto"     : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Codigo_Hist": MSGCAMPO="C¢digo do Hist¢rico"
                              TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Descri_Hist": MSGCAMPO="Descreva o Hist¢rico"
EndSwitch

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

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

;@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 = "*DESTEMIT*":
;;;;;;     NOVOHIST = NOVOHIST + [Titulos->Nome Fantasia EmitDest]
      Case COMP = "*TPDOCTO*":
           NOVOHIST = NOVOHIST + [Titulos->Tipo do Documento] +"/"+ [Titulos->Serie do Documento]
      Case COMP = "*LIVRE*":
           COMPLEMENTO()
      Case COMP = "*DOCTO*":
           NOVOHIST = NOVOHIST + [Titulos->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)

;*******************************************************************************
;* Atualizacao Conta Corrente                                                  *
;*******************************************************************************
Proc CONTA()
Private WB
If [\Sistemas\CtaPag\TitBaixa->Tipo da Baixa]<>"NORMAL"
   Then Return True
EndIf

While True
  If Not IsBlank([TitBaixa->Data do Pagamento])
     Then ANOREF=StrVal(Year([TitBaixa->Data do Pagamento]))
          MESREF=AlinhM(StrVal(Month([TitBaixa->Data do Pagamento])),2)

          Moveto "\\Sistemas\\CtaCor\\SaldCont"
          Moveto [Codigo da Conta]
          Locate [TitBaixa->Codigo da Conta],ANOREF,MESREF
          If Not RetVal
             Then ;;If CHAVEI<>1
                  ;;   Then MENSAGEM("Saldo da conta em "+MESREF+"/"+ANOREF+" n„o cadastrada !")
                  ;;        WB=1
                  ;;        QuitLoop
                  ;;EndIf
                  ;;CONFGERAL("Data da baixa fora do per¡odo em aberto !//Deseja criar novo per¡odo ?")
                  ;;If OK="N"
                  ;;   Then WB=1
                  ;;        QuitLoop
                  ;;   Else CONTAREF=[TitBaixa->Codigo da Conta]
                  ;;        GERCONT()
                  ;;        Loop
                  ;;EndIf
                  CONTAREF=[TitBaixa->Codigo da Conta]
                  GERCONT()
                  Loop
          EndIf
  EndIf

  Switch
    Case CHAVEI=0:
         Moveto "\\Sistemas\\CtaCor\\MovCont"
         Moveto [Numero do Lancamento]
         Locate [TitBaixa->Lancamento Conta Corrente],
                [TitBaixa->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 Mˆs 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)
                 WB=1
                 QuitLoop
            Else If [Sistema Gerador       ]<>"CP" Or
                    [Empresa Gerador       ]<>[TitBaixa->Codigo da Empresa] Or
                    [Lancamento Gerador    ]<>[TitBaixa->Numero do Lancamento] Or
                    [Sequencia Gerador     ]<>[TitBaixa->Sequencia da Baixa] Or
                    [Codigo do Documento   ]<>[Titulos->Codigo do Documento] Or
                    [Numero do Documento   ]<>[Titulos->Numero do Documento]
                    Then MSG=    "Movimento no Caixa/Banco n„o corresponde a esta Baixa !//"
                         MSG=MSG+"Verificar no Caixa/Banco se o Mˆs 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)
                         WB=1
                         QuitLoop
                 EndIf
                 While IsLockRecord() EndWhile
                 WB=0
                 [Valor                 ]=[TitBaixa->Valor do Pagamento]
                 [Valor do Desconto     ]=[TitBaixa->Valor do Desconto ]
                 [Valor do Juros        ]=[TitBaixa->Valor do Juros    ]
                 [Codigo do Documento   ]=[Titulos->Codigo do Documento]
                 [Numero do Documento   ]=[Titulos->Numero do Documento]
                 [Numero do Cheque      ]=[TitBaixa->Numero do Cheque  ]
                 [Serie do Cheque       ]=[TitBaixa->Serie do Cheque   ]
                 [Cheque Pre-Datado     ]=[TitBaixa->Cheque Pre-Datado ]
                 [Data Cheque Pre-Datado]=[TitBaixa->Data Cheque Pre-Datado]
                 [Tipo de Operacao      ]=[TitBaixa->Tipo de Operacao   ]
                 [Codigo do EmitDest    ]=[Titulos->Codigo do Emitente  ]
                 [Tipo do Lancamento    ]=[TitBaixa->Tipo de Lancamento ]

                 [Codigo Plano_Conta    ]=[TitBaixa->Codigo Plano_Conta    ]
                 [Codigo CCusto         ]=[TitBaixa->Codigo CCusto         ]
                 [Codigo do Historico   ]=[TitBaixa->Codigo do Historico   ]
                 [Descricao do Historico]=[TitBaixa->Descricao do Historico]
                 
                 if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
                    then [Data Cheque Descontado]=[titBaixa->Data Cheque Descontado]
                    else [Data Cheque Descontado]=blankDate()
                 endif     
                 UnLockRecord

                 Moveto "\\Sistemas\\CtaCor\\SaldCont"
                 [Saidas]=[Saidas]-VROLD+[TitBaixa->Valor do Pagamento]
                 UnLockRecord

                 Moveto "TitBaixa"
                 [Lancamento Conta Corrente]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
         EndIf
    Case CHAVEI=1:
         WB=0
         Moveto "\\Sistemas\\CtaCor\\MovCont"
         Moveto [Numero do Lancamento]
         While True
           End
           If Numero_Lancamento("Interno","")
              Then NLANCMC = PROXLANCTO_NLANC
                   Release Vars PROXLANCTO_NLANC
           EndIf
           Down
           [Numero do Lancamento]=NLANCMC
           [Codigo da Conta     ]=[TitBaixa->Codigo da Conta   ]
           If Not IsLockRecord()
              Then QuitLoop
              Else Del
           EndIf
         EndWhile  
         [Codigo da Empresa     ]=[TitBaixa->Codigo da Empresa     ]
         [Tipo de Operacao      ]=[TitBaixa->Tipo de Operacao      ]
         [Data                  ]=[TitBaixa->Data do Pagamento     ]
         [Data Competencia      ]=[Titulos->Data Competencia       ]
         [Valor                 ]=[TitBaixa->Valor do Pagamento    ]
         [Valor do Desconto     ]=[TitBaixa->Valor do Desconto     ]
         [Valor do Juros        ]=[TitBaixa->Valor do Juros        ]
         [Numero do Cheque      ]=[TitBaixa->Numero do Cheque      ]
         [Serie do Cheque       ]=[TitBaixa->Serie do Cheque       ]
         [Cheque Pre-Datado     ]=[TitBaixa->Cheque Pre-Datado     ]
         [Data Cheque Pre-Datado]=[TitBaixa->Data Cheque Pre-Datado]
         [Codigo do Documento   ]=[Titulos->Codigo do Documento    ]
         [Numero do Documento   ]=[Titulos->Numero do Documento    ]
         [Codigo Plano_Conta    ]=[TitBaixa->Codigo Plano_Conta    ]
         [Codigo CCusto         ]=[TitBaixa->Codigo CCusto         ]
         [Codigo do Historico   ]=[TitBaixa->Codigo do Historico   ]
         [Descricao do Historico]=[TitBaixa->Descricao do Historico]

         [Sistema Gerador       ]="CP"
         [Empresa Gerador       ]=[TitBaixa->Codigo da Empresa     ]
         [Lancamento Gerador    ]=[TitBaixa->Numero do Lancamento  ]
         [Sequencia Gerador     ]=[TitBaixa->Sequencia da Baixa    ]
         [Codigo do EmitDest    ]=[Titulos->Codigo do Emitente     ]
         [Tipo do Lancamento    ]=[Titbaixa->Tipo de Lancamento    ]

         [Codigo Plano_Conta    ]=[TitBaixa->Codigo Plano_Conta    ]
         [Codigo CCusto         ]=[TitBaixa->Codigo CCusto         ]
         [Codigo do Historico   ]=[TitBaixa->Codigo do Historico   ]
         [Descricao do Historico]=[TitBaixa->Descricao do Historico]

         if [Tipo da Conta]="C" and ([Tipo de Operacao]="05" Or [Tipo de Operacao]="14")
            then [Data Cheque Descontado]=[titBaixa->Data Cheque Descontado] 
            else [Data Cheque Descontado]=blankDate()
         endif     

         Controle_Dia()
         UnLockRecord

         Moveto "\\Sistemas\\CtaCor\\SaldCont"
         [Saidas]=[Saidas]+[TitBaixa->Valor do Pagamento]
         UnLockRecord

         Moveto "TitBaixa"
         [Lancamento Conta Corrente]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
    Case CHAVEI=8:
         Moveto "\\Sistemas\\CtaCor\\MovCont"
         Moveto [Numero do Lancamento]
         Locate [TitBaixa->Lancamento Conta Corrente],
                [TitBaixa->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 Mˆs 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       ]<>"CP" Or
                    [Empresa Gerador       ]<>[TitBaixa->Codigo da Empresa] Or
                    [Lancamento Gerador    ]<>[TitBaixa->Numero do Lancamento] Or
                    [Sequencia Gerador     ]<>[TitBaixa->Sequencia da Baixa] Or
                    [Codigo do Documento   ]<>[Titulos->Codigo do Documento] Or
                    [Numero do Documento   ]<>[Titulos->Numero do Documento]
                    Then MSG=    "Lan‡amento no Caixa/Banco n„o corresponde a esta Baixa !//"
                         MSG=MSG+"Verificar no Caixa/Banco se o Mˆs 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
                         Moveto "\\Sistemas\\CtaCor\\SaldCont"
                         [Saidas]=[Saidas]-VROLD
                         UnLockRecord
                         
                         Moveto "\\Sistemas\\CtaCor\\MovCont"
                         While IsLockRecord() EndWhile
                         Del
                 EndIf
         EndIf
  EndSwitch
  QuitLoop
EndWhile
SaveTables

Moveto "TitBaixa"
If WB=0
   Then Return True
   Else Return False
EndIf
EndProc  ; (Conta)

;*******************************************************************************
;* Gera Saldo de Conta                                                         *
;*******************************************************************************
Proc GERCONT()
End Down
[Codigo da Conta]=CONTAREF
[Ano Referencia ]=ANOREF
[Mes Referencia ]=MesREF
[Saldo Inicial  ]=0
[Entradas       ]=0
[Saidas         ]=0
UnLockRecord
EndProc  ; (GerCont)


;*******************************************************************************
;* Imprimir Cheque                                                            *
;*******************************************************************************
Proc IMPRIME_CHEQUE()
Private CH_Valor, CH_Numero, CH_Historico, CH_CEmitente, CH_DtE, CH_DtV, CH_Data,
CH_Juros, CH_Desconto, CH_Custo, CH_Conta, CH_Lanc, CH_Cidade, CH_DESC, Continuar, BANCO,
CH_Observacoes, CH_Ndocto, CH_Nominal, Ch_PreDat, CH_CodPlConta, CH_CodPlConta, Ch_NumConta, 
Ch_DesConta, CH_CodCusto

VSDGNOMINAL=[Titulos->Razao Social]

CONFGERAL("Deseja Imprimir o Cheque?")
If OK="N"
   Then Return False
Endif

Play "Nominal"
If BANCO=0                
   Then Return False
EndIf

CH_DESC    =[TitBaixa->Data Cheque Descontado]
CH_Valor   =[TitBaixa->Valor do Pagamento    ]
CH_Desconto=[TitBaixa->Valor do Desconto     ]
CH_Data    =[TitBaixa->Data do Pagamento     ]
CH_Numero  =[TitBaixa->Numero do Cheque      ]
CH_Serie   =[TitBaixa->Serie do Cheque       ]
CH_Conta   =[TitBaixa->Codigo da Conta       ]
CH_Juros   =[TitBaixa->Valor do Juros        ]
Ch_PreDat  =[Data Cheque Pre-Datado          ]
UnLockRecord

Moveto "Titulos"
UnLockRecord
FormKey          

Moveto "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate [Titulos->Codigo da Empresa]
If RetVal
   Then CH_Titular=[\Sistemas\Cadastro\Empresas->Razao Social Empresa]
        CH_Cidade =[\Sistemas\Cadastro\Empresas->Cidade Empresa]
EndIf

Moveto "\\Sistemas\\CtaCor\\Conta"
Moveto [Codigo da Conta]
Locate CH_Conta
If RetVal
   Then CH_CBanco=[\Sistemas\CtaCor\Conta->Numero do Banco   ]
        CH_NBanco=[\Sistemas\CtaCor\Conta->Nome do Banco     ]
        CH_NConta=[\Sistemas\CtaCor\Conta->Numero da Conta   ]
EndIf   

Continuar=False
        
While True

  Continuar=True
  
  AGUARDE("Imprimindo Cheque")
  
  Moveto "Titulos"
  Ch_NumConta    = [Codigo da Conta   ]
  Ch_DesConta    = [Descricao da Conta]
  CH_Lanc        = [Numero do Lancamento]
  Ch_Rotina      = "CONTAS A PAGAR"
  CH_CodPlConta  = [Codigo Plano_Conta]
  CH_PlConta     = [Descricao Plano_Conta]     
  CH_CodCusto    = [Codigo CCusto]
  CH_Custo       = [Descricao CCusto]
  CH_CEmitente   = [Codigo do Emitente]
  CH_Destino     = [Razao Social]
  CH_DtE         = [Data de Emissao]
  CH_DtV         = [Data de Vencimento]
  CH_Ndocto      = [Tipo do Documento]+"/"+[Numero do Documento]
  CH_Historico   = VSD_I_Descri_Hist
  CH_Observacoes = [Observacoes]

 
  Moveto "P_Cheque"
  Moveto [Numero do Banco]
  Locate CH_CBanco
  If RetVal
     Then If BANCO=1
             Then SCRIPT=[Script_Avulso]
             Else SCRIPT=[Script_Continuo]
          EndIf
     Else Mensagem("Banco n„o cadastrado nos parametros do Cheque! // //Verificar com o Suporte!")
          QuitLoop             
  EndIf                    
  
  If SCRIPT=""
     Then Mensagem("Falha ao imprimir o cheque! // Script n„o encontrado! // //Verificar com o Suporte!")
          QuitLoop
  EndIf             
  
  Seta_Printer = PARAM_PORTA_CHEQ
  
  If Seta_Printer=""
      Then MSGDISPOSITIVO="Impress„o de Cheque"
           DispositivoI("CHQ")
           If OK=""
              Then QuitLoop
              Else Play SCRIPT
           EndIf
      Else CONFGERAL("Coloque o cheque na impressora e clique em SIM para prosseguir!")
            If OK="N"
               Then QuitLoop
               Else Play SCRIPT
            Endif
  EndIf
  
  LIMPAGUARDE()
  CONFGERAL("Deseja realizar a Impress„o do Historico? // //"+
            "Coloque Apenas a Copia de Cheque p/ a impress„o !")
  If OK="N"
     Then QuitLoop
     Else AGUARDE("Imprimindo o Hist¢rico")
          If Seta_Printer=""
             Then MSGDISPOSITIVO="Impress„o de Cheque"
                  DispositivoI("CHQ")
                  If OK=""
                     Then QuitLoop
                     Else Play "C_Ch"
                  EndIf
             Else Play "C_Ch"
         EndIf
  EndIf
  
  If PARAM_CONTROLA_TALAO = "S"
    Then Moveto "\\Sistemas\\CtaCor\\TalaoChq"
         Moveto [Codigo da Conta]
         Locate CH_CONTA,NumVal(CH_NUMERO)
         If RetVal
            Then If CH_DESC = BlankDate()
                    Then [Situacao]="A DESCONTAR"
                    Else [Situacao]="DESCONTADO"
                         [Data Descontado]=CH_DESC
                 Endif
                 [Valor do Pagamento       ] = CH_VALOR
                 [Data do Pagamento        ] = CH_DATA
                 [Valor do Juros           ] = CH_JUROS
                 [Valor do Desconto        ] = CH_DESCONTO
                 [Numero do Lancamento     ] = CH_LANC
                 [Codigo do Emitente       ] = CH_CEMITENTE
                 [Data de Emissao          ] = CH_DTE
                 [Data de Vencimento       ] = CH_DTV
                 [Codigo CCusto            ] = Substr(CH_CUSTO,1,(SEARCHFROM ("-",CH_CUSTO,1) -2))
                 [Descricao CCusto         ] = Substr(CH_CUSTO,(SEARCHFROM ("-",CH_CUSTO,1) +2),Len(CH_CUSTO)-(SEARCHFROM ("-",CH_CUSTO,1) +2))
                 [Razao Social Destinatario] = CH_DESTINO
                 [Tipo do Documento        ] = Substr(CH_Ndocto, 1, (SEARCHFROM("/", CH_Ndocto, 1) - 1 ))
                 [Numero do Documento      ] = Substr(CH_Ndocto, (SEARCHFROM("/", CH_Ndocto, 1) + 1 ),(LEN(CH_Ndocto)-SEARCHFROM("/",CH_Ndocto, 1)))
         Endif
   Endif
  
      LIMPAGUARDE()
      Continuar=True
      QuitLoop
EndWhile

Moveto "Titulos"
FormKey

Moveto "TitBaixa"
Moveto [Sequencia da Baixa]
Locate NLANC,NITEM

Return Continuar
EndProc  ; (Imprimi_Cheque)

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

MSGDISPOSITIVO="Recibo"
DispositivoI("RCB")

If OK="" 
   Then Return
EndIf

forant="****"
ULTIMA_BAIXA=True

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

Moveto "Titulos"
Moveto [Codigo do Emitente]
Ativa_Lookup()
Moveto [Codigo]
Locate [Titulos->Codigo do Emitente]
If RetVal
  Then ENDERECO = [Endereco ]                
       BAIRRO   = [Bairro   ]
       CIDADE   = [Cidade   ]
       TELEFONE = [Telefone ]
       RG       = [RG       ]
EndIf
KeyPress "ESC"
UnLockRecord

Moveto "TitBaixa"
Moveto [Sequencia da Baixa]

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

EndProc

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

While True

  Moveto [Valor]   VSVRCHEQUES=ImageCSum()

  Moveto [Sequencia]
  End
  ITEM = [Sequencia]
  Down
  Moveto [Sequencia]

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

  Opcao_Ver=False
  Opcao_Ler_Cheque=False

  SetaCorRegistro("Editar")
  While True

    Opcao_Ver=False

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

      If Retval=-33
         Then
           ShowPopup " Fun‡”es " CENTERED
            "~V~er Ficha  [F3]" : " Ver modo Ficha                    " : "F3",
            "~L~er Cheque [F4]" : " Ativar leitura de cheque"           : "F4",
            "~I~mprimir   [F5]" : " Imprimir Controle de Pagamento    " : "F5",
            "~B~aixas     [F8]" : " Baixa do T¡tulo"                    : "F8",
            "~N~otas      [F9]" : " Relacionar Notinhas p/ este T¡tulo" : "F9",
            "R~a~teio     [F10]" : " Rateio Pl.Contas/Ct.Custo"         : "F10",
            Separator,
            "~C~ancelar"        : " Cancelar a Opera‡„o"                : "CANCELAR"
           EndMenu
            To MenuVar
           echo off

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

      Switch
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F6" Or RetVal="F9" Or
         RetVal=-115 Or RetVal=-116 Or
         RetVal=-133 Or RetVal="F11":
         Tecla_Funcao=RetVal
         CHAVECH=9
         Del
         Return   
         
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             Moveto [Valor]   VSVRCHEQUES=ImageCSum()
             Moveto [Sequencia]

             PAGINA("Titcheq","MR")
             If EDITAR="S"
                Then If IsBlank([Numero Lancamento Cheque])
                        Then CHAVECH = 0
                             ITEM   = [Sequencia]
                             Controla_EdicaoCH()
                        Else Mensagem("Cheque cadastrado edi‡„o n„o permitida !")
                             UnLockRecord
                     EndIf
                Else If EXCLUIR="S"
                        Then If QuerExcluir("") And Checa_Supervisor()
                                Then If Not IsBlank([Numero Lancamento Cheque]) Then

                                        NLANCCH=[Numero Lancamento Cheque]
                                        SITEMCH=[Sequencia do Cheque     ]

                                        Moveto "\\Sistemas\\CheqRec\\ChequeI"
                                        Moveto [Numero do Lancamento]
                                        Locate NLANCCH,SITEMCH
                                        If RetVal
                                           Then [Situacao          ]="EM ABERTO"
                                                [Sistema Destino   ]=""
                                                [Lancamento Destino]=""
                                                [Tipo de Destino   ]=""
                                                [Data_Liquidado    ]=BlankDate()
                                                UnLockRecord
                                        EndIf
                                     EndIf
                                     Moveto "TitCheq"
                                     Del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F4":
           Del
           Ler_Cheque()
           QuitLoop
      Case Retval="F5":
           Del
           Play "Rp_0000"

           CHAVECH =9
           DIGITAC =False
           Return
      Case Retval="ESC":
           Del
           CHAVECH =9
           If TITULOS_SOBAIXAS 
               Then Tecla_Funcao="F8"
                    DIGITAC =False
               Else Tecla_Funcao=-10 
           EndIf
           Return
      Case Retval="PGDN":
           Del
           If Not VerificaRaT()
              Then QuitLoop
           EndIf    
      
           CHAVECH =9
           Tecla_Funcao=""
           DIGITAC =False
           Return
           
      Case RetVal="F3":
           Del
           Moveto [Sequencia]
           If RecordStatus("New")
              Then MENSAGEM("Sem Item p/ ver !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVECH=0
           Home
           ITEM=[Sequencia]
           Controla_EdicaoCh()
           QuitLoop

      Case Retval="ENTER":
           If Not Seta_Sequencia(ITEM,True)
              Then Del
                   QuitLoop
           EndIf
           ITEM=[]
           Del
           Locate NLANC,ITEM
           If Retval
              Then CHAVECH=0
                   If Not IsBlank([Numero Lancamento Cheque])
                      Then Mensagem("Cheque cadastrado edi‡„o n„o permitida !")
                           QuitLoop
                   EndIf
              Else CHAVECH=1
                   End Down
                   [Numero do Lancamento]=NLANC
                   [Sequencia           ]=ITEM
                   UnLockRecord
                   Locate NLANC,ITEM
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVECH)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogCH(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
                                    
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
          Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
          SYS_TECLA_ACIONADA=Evento["KeyCode"]
          Seta_Tecla_Acionada()
          CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_I_CHEQUE"         : Campo="NO"
            Case Campo="YES" Or Campo="NO"   : Campo="TG_I_CHEQUE"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_I_CHEQUE" : Campo="YES"
                  EndSwitch
          EndIf                     
   EndSwitch 
EndIf

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

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc

;*******************************************************************************
;* Rela‡Æo de cheques                                                          *
;*******************************************************************************
Proc Relacao_Cheques(CODBC,NUMCH,CMC7)
Private CODBC,NUMCH,FAZ

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

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

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

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

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

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

EndProc ;

;*******************************************************************************
;* Rotina para Pesquisa Cheque                                                 *
;*******************************************************************************
Proc DIGITACH1()

If [\Sistemas\Ctapag\Titulos->Valor do Documento]=[\Sistemas\Ctapag\Titulos->Saldo do Documento]
   Then Del
        CHAVECH=9                    
        Mensagem("Nenhuma baixa realizada para informar cheques utilizados!")
        Return
EndIf   

Moveto [Codigo_Banco]

While True

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

     Wait Field
          Until "ESC","ENTER","HOME","UP","PGUP","F1","PGDN","INS"
     Switch

     Case RetVal="ESC":
          Switch
             Case Field()="Codigo_Banco":
                  Del
                  CHAVECH=9
                  QuitLoop
             Case Field()="Numero_Cheque":
                  Moveto [Codigo_Banco]
          EndSwitch
     Case RetVal="ENTER":
          Switch
            Case Field()="Codigo_Banco":
              If Not IsBlank([Codigo_Banco])
                 Then Moveto [Numero_Cheque]
              EndIf
            Case Field()="Numero_Cheque":
              If IsBlank([Numero_Cheque]) Then Loop EndIf
               
              If Relacao_Cheques([Titcheq->Codigo_Banco],[Titcheq->Numero_Cheque],"")
                 Then Return
              Endif
              Moveto "Titcheq"
              Moveto [Sequencia]
              Locate NLANC,ITEM

              Moveto [Numero_Cheque]

          EndSwitch
     Case RetVal="INS":
          If PARAM_UTILIZA_CHLIVRE="S"
             Then Controla_EdicaoCh()
                  CHAVECH=9
                  QuitLoop
             Else Mensagem("Fun‡„o n„o permitida, Verificar com Supervisor !")
          EndIf
     Case RetVal="F1":
          vrcampo=Field()
          Moveto [Numero Lancamento Cheque]
          If ConsultaF1()
             Then Moveto "\\Sistemas\\Cheqrec\\ChequeI"
                  Moveto [Numero do Lancamento]
                  Locate Reg_ConsultaF1["Numero do Lancamento"],
                         Reg_ConsultaF1["Sequencia do Cheque"]
                  If Retval
                     Then CopyToArray Reg_ConsultaF1
                          If CHECACHEQ()
                             Then Return
                          EndIf
                  EndIf
          EndIf
          Moveto "Titcheq"
          Moveto Field vrcampo
     EndSwitch
EndWhile
EndProc   ; (DigitaI)

;*******************************************************************************
;* Rotina para Pesquisa Rateio                                                 *
;*******************************************************************************
Proc ChaveR()

Var = false
Exclusao_Cabeca=False
While True
  Moveto [Valor]   VRRATEIO=ImageCSum()      

  Moveto [Sequencia]
  End
  NITEM_R = [Sequencia]
  Down Down 
  Moveto [Sequencia]
  Seta_Sequencia(NITEM_R,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While true
    Moveto [Sequencia]

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    If Retval=-33
       Then
         ShowPopup " Fun‡”es " CENTERED
          "C~h~eques    [F6]" : " Relaciona Cheques/Terceiros       " : "F6",
          "~B~aixas     [F8]" : " Baixa do T¡tulo"                    : "F8",
          "~N~otas      [F9]" : " Relacionar Notinhas p/ este T¡tulo" : "F9",   
          Separator,       
          "~C~ancelar"        : " Cancelar a Opera‡„o"                : "CANCELAR"
         EndMenu
          To MenuVar
         echo off

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

    Switch
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F6" Or RetVal="F9" Or
         RetVal=-115 Or RetVal=-116 Or
         RetVal=-133 Or RetVal="F11":
         Del
         Tecla_Funcao=RetVal 
         CHAVER=9
         Return
               
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Moveto [Valor]   VRRATEIO=ImageCSum()
           Moveto [Sequencia]
           PAGINA("TitRat","MR")
           If EDITAR="S"
              Then CHAVER=0
                   NITEM_R  =[Sequencia]
                   Controla_EdicaoR()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           Endif
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Del
         CHAVER=9
         If TITULOS_SOBAIXAS 
            Then Tecla_Funcao="F8"
                 DIGITAC =False
            Else Tecla_Funcao=-10 
         EndIf
         Return

    Case Retval="PGDN":
         Del
         If Not VerificaRaT()
            Then QuitLoop
         EndIf             

         CHAVER=9
         Tecla_Funcao=""
         DIGITAC =False
         Return

    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM_R,True)
            Then Del
                 QuitLoop
         EndIf
         NITEM_R=[]
         Del
         Locate NLANC,NITEM_R
         If Retval
            Then CHAVER=0
            Else CHAVER=1
                 End Down Down
;                 [Numero do Lancamento]=NLANC
                 [Sequencia           ]=NITEM_R
                 UnLockRecord
                 Locate NLANC,NITEM_R
         EndIf
         Resynckey
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina Verifica Valor do Rateio                                             *
;*******************************************************************************
Proc VerificaRaT()
private ntable, pcbranco, ccbranco, rateio, baixa, Msg             

ntable=table()

pcbranco = 0
ccbranco = 0
rateio   = 0
baixa    = 0

moveto "titbaixa"
Scan for Not IsBlank([Sequencia da Baixa])
   if [Tipo da Baixa]<>"NORMAL"
      then baixa=baixa+ (([Valor do Pagamento]+[Valor do Desconto])-[Valor do Juros])
   endif
EndScan

moveto "titrat"
Scan for Not IsBlank([Sequencia])
   If IsbLank([Codigo Plano_Conta ]) 
      then pcbranco = pcbranco + 1   
   EndIf 
   If IsbLank([Codigo CCusto ]) 
      then ccbranco = ccbranco + 1
   EndIf
   rateio= rateio+[Valor]
EndScan

Msg = ""
If (rateio>0) And ( format("W12.2",rateio) <> format("W12.2",[Titulos->Valor do Documento]-baixa) ) 
   Then Msg = Msg + "Valor Rateio: "+ltrim(format("W12.2,EIC",rateio                             )) 
        Msg = Msg + " <> Valor T¡tulo: "+ltrim(format("W12.2,EIC",[Titulos->Valor do Documento]-baixa))+"// //" 
        Msg = Msg + "Valor Rateio difere do Valor T¡tulo,// deduzindo baixa CANCELADO E DEVOLU€¶O !// //"
EndIf 

;If ccbranco>0 
;  Then Msg = Msg + "Existem rateios sem Centro de Custo! //"
;EndIf  

If pcbranco>0 
  Then Msg = Msg + "Existem rateios sem Plano de contas! //"
EndIf

moveto ntable

if msg<>""
   then Mensagem(Msg+ "Verificar!")
        return false
   else return true
EndIf             

EndProc

;*******************************************************************************
;* Rotina para Leitura do Cheque                                               *
;*******************************************************************************
Proc Ler_Cheque()
Private ChOk, wii

While True

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

  Moveto [Valor]   VSVRCHEQUES=ImageCSum()
  Moveto [Sequencia]

  [Numero do Lancamento]=NLANC
  [Sequencia           ]=ITEM
    
  If Not Leitura_Cheque(7,0)
     Then Del
          Return False
  EndIf
  
  If Relacao_Cheques(CODIGO_BANCO,NUMERO_CHEQUE,"1")
     Then Loop
  EndIf   
  If Not CH_N_CADASTRADO
     Then Moveto "Titcheq" 
          Del
          Loop
  EndIf
  
  If PARAM_UTILIZA_CHLIVRE="S"
     Then ConfGeral("Deseja incluir cheque livre ?")
          If OK<>"S"
             Then Loop
          EndIf
     Else Loop
  EndIf
  
  Moveto "Titcheq"
  Moveto [Sequencia]
  Locate NLANC,ITEM

  Moveto [Codigo_Banco]
  Ativa_Lookup()
  Moveto [Codigo_Banco]
  Locate CODIGO_BANCO
  If RetVal
     Then NOME_BANCO=[Nome_banco]
  EndIf
  KeyPress "Esc"

  [Numero_cheque]=NUMERO_CHEQUE
  [Agencia      ]=AGENCIA_CHEQUE
  [Numero_Conta ]=CONTA_CHEQUE
  [Nome_Banco   ]=NOME_BANCO
  [Codigo CMC7  ]=Dados_Cheque

  VSD_CBanco     =CODIGO_BANCO
  If IsBlank(NOME_BANCO)
     Then Opcao_Ler_Cheque=False
          Mensagem("Banco "+CODIGO_BANCO+" nÆo cadastrado !")
     Else Opcao_Ler_Cheque=True
          [Codigo_Banco ]=CODIGO_BANCO
  EndIf

  AchouPessoa=False
  Moveto "\\Sistemas\\CheqRec\\CDPessoa"
  Moveto [Codigo_Banco]
  Locate CODIGO_BANCO, AGENCIA_CHEQUE, CONTA_CHEQUE
  If RetVal
     Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
          VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
          VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
          VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
          VSD_TipoEmit="TERCEIRO"
          AchouPessoa=True
  EndIf                       

  Moveto "Titcheq"
  If AChouPessoa
     Then [Tipo_Emitente       ]=VSD_TipoEmit
          [Titular_Cheque      ]=VSD_Nome
          [Cidade              ]=VSD_Cidade
          [UF                  ]=VSD_UF
          [CPF                 ]=VSD_CPF
  EndIf

  Controla_EdicaoCH()

EndWhile
EndProc

;*******************************************************************************
;* Checagem de Cheques                                                         *
;*******************************************************************************
Proc CHECACHEQ()
If [Situacao]="LIQUIDADO"   Or
   [Situacao]="SEM FUNDO"   Or
   [Situacao]="EM COBRANCA" Or
   Search("TROCADO",[Situacao])>0
   Then MSG=    Completa("Cheque.: "+[Numero_Cheque],50," ")+"//"
        MSG=MSG+Completa("Banco..: "+[Codigo_Banco ]+" "+[Nome_Banco],50," ")+"//"
        MSG=MSG+Completa("Agencia: "+[Agencia],50," ")+"//"
        MSG=MSG+Completa("Titular: "+[Titular_Cheque],50," ")+"//"
        MSG=MSG+Completa("Vencto.: "+Format("D13",[Data Vencimento]),50," ")+"//"
        MSG=MSG+Completa("Valor..: "+Format("W10.2,EIC",[Valor]),50," ")+"// //"
        MSG=MSG+"Situa‡„o: [ "+[Situacao]+" ] em "+Format("D13",[Data_Liquidado])
        Mensagem(MSG)
        Return False
EndIf

Moveto "TitCheq"
[Numero Lancamento Cheque]=Reg_ConsultaF1["Numero do Lancamento"]
[Sequencia do Cheque     ]=Reg_ConsultaF1["Sequencia do Cheque"]
[Codigo_Banco            ]=Reg_ConsultaF1["Codigo_Banco"]
[Nome_Banco              ]=Reg_ConsultaF1["Nome_Banco"]
[Agencia                 ]=Reg_ConsultaF1["Agencia"]
[Numero_Conta            ]=Reg_ConsultaF1["Numero_Conta"]
[Numero_Cheque           ]=Reg_ConsultaF1["Numero_Cheque"]
[CPF                     ]=Reg_ConsultaF1["CPF"]
[Tipo_Emitente           ]=Reg_ConsultaF1["Tipo_Emitente"]
[Titular_Cheque          ]=Reg_ConsultaF1["Titular_Cheque"]
[Cidade                  ]=Reg_ConsultaF1["Cidade"]
[UF                      ]=Reg_ConsultaF1["UF"]
[Data Vencimento         ]=Reg_ConsultaF1["Data Vencimento"]
[Valor                   ]=Reg_ConsultaF1["Valor"]
[Observacao do Cheque    ]=Reg_ConsultaF1["Observacao do Cheque"]
Controle_Dia()

If Not IsBlank(DTLIQ_CH)
   Then [Data_Liquidado   ]=DTLIQ_CH
   Else
        MSG=   "Informe a data da liquida‡Æo deste cheque//"
        MSG=MSG+"conforme a data da  baixa correspondente.// //"
        MSG=MSG+"Os demais cheques da  baixa deste  t¡tulo//"
        MSG=MSG+"assumiram esta mesma data de liquida‡Æo. "
        Mensagem(MSG)

        Moveto [Data_Liquidado]
        TECLA=" Esc=Cancelar "
        MSGCAMPO="Informe a data referente a baixa/pagamento do titulo !"
        While True
          Prompt TECLA
        
          Wait Field
               Until "ESC","ENTER"
        
          If Retval="ESC"
             Then Moveto "\\Sistemas\\Cheqrec\\ChequeI"
                  Return False
          EndIf    
          If Retval="ENTER"
             Then If IsBlank([Data_Liquidado])
                     Then [Data_Liquidado   ]=Today()
                  EndIf
                  DTLIQ_CH=[Data_Liquidado   ]
                  QuitLoop  
          EndIf    
        EndWhile
EndIf   
UnLockRecord

Moveto "\\Sistemas\\Cheqrec\\ChequeI"
[Situacao           ]="LIQUIDADO"
[Sistema Destino    ]="CP"
[Numero do Documento]=[Titulos->Numero do Documento ]
[Lancamento Destino ]=[Titulos->Numero do Lancamento]
[Tipo de Destino    ]="PAGAMENTO"
[Data_Liquidado     ]=[TitCheq->Data_Liquidado      ]
UnLockRecord
SaveTables

Moveto "Titcheq"

Return True
EndProc ; (ChecaCHEQ)


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

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

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

                  echo Normal
                  echo off

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

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

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

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

                  AchouPessoa=False
                  If CHAVECH=1 And
                     Not IsBlank(VSD_AGENCIA) And
                     Not IsBlank(VSD_CCORRENTE)
                     Then Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                          Moveto [Codigo_Banco]
                          Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
                          If RetVal
                             Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
                                  VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                  VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                  VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                  VSD_TIPOEmit="TERCEIRO"
                                  AchouPessoa=True
                          EndIf                       

                          Moveto "Titcheq"
                          If AchouPessoa
                             Then [Tipo_Emitente       ]=VSD_TipoEmit
                                  [Titular_Cheque      ]=VSD_Nome
                                  [Cidade              ]=VSD_Cidade
                                  [UF                  ]=VSD_UF
                                  [CPF                 ]=VSD_CPF
                          EndIf
                  EndIf   
            Case Campo="NCheque":
                 VSD_NCheque=ControlValue("NCheque")
                 VSD_TipoEmit="TERCEIRO"
                 Campo="DataL"

            Case Campo="DataL":
                 VSD_DataL=ControlValue("DataL")
                 If IsBlank(VSD_DataL)
                    Then VSD_DataL=Today()
                 EndIf
                 Campo="CPF"

             Case Campo="CPF":
                  VSD_CPF=ControlValue("CPF")
                  wok=true
                  If Not IsBlank(VSD_CPF)
                     Then If Tipo_CGC_CPF(VSD_CPF)<>"CGC" And
                             Tipo_CGC_CPF(VSD_CPF)<>"CPF"
                             Then Mensagem("CPF/CGC Invalido !")
                                  wok=false
                          EndIf
                  EndIf
                  If wok
                     Then Campo="Nome"
                          If CHAVECH=1 And
                             Not AchouPessoa And
                             Not IsBlank(VSD_CPF)
                             Then AchouPessoa=False
                                  Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                                  Moveto [CPF]
                                  Locate IndexOrder by "Ind_CPF1" VSD_CPF
                                  If RetVal
                                     Then VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                          VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                          VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                          AchouPessoa=True
                                          Campo="DataV"
                                  EndIf                       

                                  Moveto "Titcheq"
                                  If AchouPessoa
                                     Then [Titular_Cheque      ]=VSD_Nome
                                          [Cidade              ]=VSD_Cidade
                                          [UF                  ]=VSD_UF
                                  EndIf
                          EndIf   
                  EndIf

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

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

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

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

Switch
  Case Campo="CCorrente":
       MSGCAMPO="Conta Corrente"
  Case Campo="DataV":
       MSGCAMPO="Data do Vencimento"
  Case Campo="DataL":
       MSGCAMPO="Data referente a qual baixa/pagamento do titulo"
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

EndProc   ; Item_Dialog()

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_ItemCH(Opcao)
Private Opcao

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

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

  Case Opcao="Gravar":
       [Data Vencimento     ]=VSD_DataV
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [Tipo_Emitente       ]=VSD_TipoEmit
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Observacao do Cheque]=VSD_Obs
       [Valor               ]=VSD_Valor
       [CPF                 ]=VSD_CPF
       [Data_Liquidado      ]=VSD_DataL
       If CHAVECH=1 Then Controle_Dia() EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True
       UnLockRecord

       If Not IsBlank(VSD_Agencia) And
          Not IsBlank(VSD_CCorrente) And
          Not IsBlank(VSD_CPF) Then
          For wi From 1 To 5
            CDPessoaNova=False
            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
            Moveto [Codigo_Banco]
            Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
            If Not RetVal
               Then CDPessoaNova=True
                    End
                    Down
                    [Codigo_Banco        ]=VSD_CBanco
                    [Agencia             ]=VSD_Agencia
                    [Numero_Conta        ]=VSD_CCorrente
            EndIf                       
            If IsLockRecord()
               Then If CDPessoaNova
                       Then Del
                    EndIf
                    If wi=5 
                       Then QuitLoop
                       Else Loop 
                    EndIf
            EndIF   
            [CPF                 ]=VSD_CPF
            [Titular_Cheque      ]=VSD_Nome
            [Cidade              ]=VSD_Cidade
            [UF                  ]=VSD_UF
            [Numero_Cheque       ]=VSD_NCheque
            [Data Vencimento     ]=VSD_DataV
            UnLockRecord
            QuitLoop
          EndFor
       EndIf
       Moveto "Titcheq"

EndSwitch
EndProc  ; (Registro_ItemCH)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_RegistroCH()
INICIO_DIALOG=True
Moveto [Sequencia]
Locate NLANC,ITEM
CopyToArray RegItem
Registro_ItemCH("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Digitacao de Cheques                                                        *
;*******************************************************************************
Proc DigitaCH()
 
If [\Sistemas\Ctapag\Titulos->Valor do Documento]=[\Sistemas\Ctapag\Titulos->Saldo do Documento]
   Then Del
        CHAVECH=9                    
        Mensagem("Nenhuma baixa realizada para informar cheques recebidos!")
        Return
EndIf

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_RegistroCH(ok)
Private ok
If Ok
   Then Registro_ItemCH("Gravar")
   Else If CHAVECH=8
           Then If Not IsBlank([Numero Lancamento Cheque]) Then

                   NLANCCH=[Titcheq->Numero Lancamento Cheque]
                   SITEMCH=[Sequencia do Cheque]

                   Moveto "\\Sistemas\\CheqRec\\ChequeI"
                   Moveto [Numero do Lancamento]
                   Locate NLANCCH,SITEMCH
                   If RetVal
                      Then [Situacao          ]="EM ABERTO"
                           [Sistema Destino   ]=""
                           [Lancamento Destino]=""
                           [Tipo de Destino   ]=""
                           [Data_Liquidado    ]=BlankDate()
                           UnLockRecord
                   EndIf
                EndIf
                Moveto "TitCheq"
                Del
        EndIf
EndIf
EndProc   ; (Finaliza_RegistroCH)

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
Inicia_Registro()
If CHAVEI=0
   Then If Not Checa_Supervisor()
           Then Return
        EndIf   
EndIf   
Digita_Baixa()  
Moveto "TitBaixa"
If RecordStatus("Locked") Then UnLockRecord EndIf
SaveTables         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoN()
DIGITAN()
Moveto "TitNota"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;+-----------------------------------------------------------------------------+
;*******************************************************************************
;* Rotina para controlar Edicao do registro (Rateio)                           *
;*******************************************************************************
Proc Controla_EdicaoR()
DIGITAR()
Moveto "TitRat"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;   [ FIM ]        Rotinas comuns Titulos, Bxforn, Titulobx               
;+-----------------------------------------------------------------------------+
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
COD_EMPRESA=[Codigo da Empresa]
DIGITAC=True
DTLIQ_CH=BlankDate()

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

  Switch                          
    Case TITULOS_SOBAIXAS    : Tecla_Funcao="F8"
    OtherWise                : Tecla_Funcao=-10
                               If CHAVEC=1
                                  Then Controle_Dia()
                               EndIf
  EndSwitch  
  
  While Not IsBlank(Tecla_Funcao)
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case Table()="Titulos"  : Tecla_Funcao="F8"       ;F8  => Baixa de T¡tulos (Titbaixa)
						 Case Table()="Titbaixa" : Tecla_Funcao="F6"       ;F6  => Lan‡amento de Cheques (Titcheq)
             Case Table()="Titcheq"  : Tecla_Funcao="F9"       ;F9  => Notinhas (Titnota)
             Case Table()="Titnota"  : Tecla_Funcao="F10"      ;F10 => Rateio (Titrat)
             Case Table()="Titrat"   : Tecla_Funcao=-10        ;-10 => Informa‡äes B sicas do T¡tulo (Titulos)
             OtherWise       : Tecla_Funcao=""
           EndSwitch     
      Case Tecla_Funcao=-115:
           Switch
             Case Table()="Titulos"  : Tecla_Funcao="F10"
						 Case Table()="Titbaixa" : Tecla_Funcao=-10
             Case Table()="Titcheq"  : Tecla_Funcao="F8"
             Case Table()="Titnota"  : Tecla_Funcao="F6"
             Case Table()="Titrat"   : Tecla_Funcao="F9"
             OtherWise       : Tecla_Funcao=""
           EndSwitch
    EndSwitch
    
    Switch
      Case Tecla_Funcao=-10  : Moveto "Titulos"
                               DIGITAC()
      
      Case Tecla_Funcao="F8" : 
           Moveto "Titulos"
           Moveto [Pag_4]
           Moveto "TitBaixa"
           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    ; Verificar as teclas
                                Then Tecla_Funcao=""
                             EndIf   
                     EndIf
                     QuitLoop
             EndIf
             Controla_EdicaoI()
           EndWhile

      Case Tecla_Funcao="F6": 
           Moveto "Titulos"
           Moveto [Pag_2]

           Moveto "TitCheq"
           While True
             CHAVECH()
             If CHAVECH=9
                Then QuitLoop
             EndIf
             If CHAVECH=1
                Then DigitaCH1()
                Else Controla_EdicaoCH()
             EndIf
           EndWhile
            
      Case Tecla_Funcao="F9" : 
           Moveto "Titulos"
           Moveto [Pag_3]
            
           Moveto "TitNota" 
           Saldo_Atualizado=False
           While True
             CHAVEN()
             If CHAVEN=9
                Then QuitLoop
             EndIf
             Controla_EdicaoN()
           EndWhile
           
      Case Tecla_Funcao="F10" :          
           Moveto "Titulos"
           Moveto [Tipo]
            
           Moveto "TitRat"            
           While True
             CHAVER()
             If CHAVER=9
                Then QuitLoop
             EndIf
             Controla_EdicaoR()
           EndWhile    
    EndSwitch
  EndWhile
EndWhile
Moveto "Titulos"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="6"
   Then PickForm "6"
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 Emitente])  : Mensagem("Emitente 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 Competencia])    : Mensagem("Data de Competencia Inv lida !")
  Case IsBlank([Tipo do Lancamento])  : Mensagem("Tipo de Lancamento Inv lido !")
  Case IsBlank([Tipo do Pagamento])   : Mensagem("Tipo de Pagamento Inv lido !")
  
  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)

;*******************************************************************************
;* Rotina para checar digita‡Æo de duplicidade de notas                        *
;*******************************************************************************
Proc CHECA_DUPLICIDADE()
Private CONS_CGC, CONS_NDOC, CONS_CDOC, CONS_TDOC, CONS_SDOC, NAO_FAZ

NAO_FAZ=False

UnLockRecord
FormKey

CONS_CDOC=[Codigo do Documento]
CONS_NDOC=[Numero do Documento]
CONS_CODE=[Codigo do Emitente ]

Moveto "Titulos"
Home 
Moveto [Codigo do Documento]
Locate IndexOrder by "Indtit25" CONS_CDOC,CONS_NDOC,CONS_CODE 
If RetVal
   Then MSG_DUPLICIDADE=""
        While CONS_CDOC=[Codigo do Documento] And
              CONS_NDOC=[Numero do Documento] And
              CONS_CODE=[Codigo do Emitente ] 
              If [Numero do Lancamento]<>NLANC
                Then MSG_DUPLICIDADE="Documento "+CONS_CDOC+" "+CONS_NDOC+" j  esta lan‡ado no sistema !//"+
                                     "Numero do Lancamento: "+[Numero do Lancamento]+"////"+
                                     "Deseja continuar assim mesmo ?"
                     ConfGeral(MSG_DUPLICIDADE)
                     If Ok<>"S"
                        Then NAO_FAZ=True
                     EndIf
                     QuitLoop
              EndIf
              Skip
              If Eot() Then QuitLoop EndIf
              Locate Next IndexOrder by "Indtit25" CONS_CDOC,CONS_NDOC,CONS_CODE 
              If Not RetVal Then QuitLoop EndIf
        EndWhile
EndIf

Moveto [Numero do Lancamento]
Locate NLANC

UnLockRecord
FormKey
LockRecord

If NAO_FAZ
   Then Return True
   Else Return False
EndIf    

EndProc ;CHECA_DUPLICIDADE()


;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc SD_Seleciona_Opcoes(OPCAODIVERSAS,SEMRETORNO,NL,NC)
Private OPCAODIVERSAS, LJ, AJ, ncp, SEMRETORNO

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

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

Switch
  Case OPCAODIVERSAS="Tipo de Opera‡„o"  : ncp=1 LJ=31
  Case OPCAODIVERSAS="Tipo de Lan‡amento": ncp=1 LJ=32
  Case OPCAODIVERSAS="Codigo da Conta"   : ncp=1 LJ=37
EndSwitch

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

   PickDynArray @0,01 Height AJ width LJ
   Columns ncp
   Opcoes
   Tag "TG_OPCAO"
   To ArrayElement
EndDialog
If RetVal
   Then If SEMRETORNO<>"SR"
           Then Switch
                  Case OPCAODIVERSAS="Tipo de Opera‡„o"        : [Tipo de Operacao  ]=Registro_F1["Tipo de Operacao"  ]
                  Case OPCAODIVERSAS="Tipo de Lan‡amento"      : [Tipo de Lancamento]=Registro_F1["Tipo de Lancamento"]
                  Case OPCAODIVERSAS="Codigo da Conta"         : [Codigo da Conta   ]=Registro_F1["Codigo da Conta"   ]
                EndSwitch
                Return True
        EndIf
   Else Return False
EndIf
EndProc   ; (Seleciona_Opcoes)

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()

Seta_Tipo_Impressora("Matricial")
            
if not getp_titulo([Titulos->Codigo da Empresa])
   then return false
endif   
if not getp_cheq([Titulos->Codigo da Empresa])
   then return false
endif   

Return True
EndProc ; (Carrega_Parametros)

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

s=""
Switch
   Case [Sistema Gerador]="NE" : s="Lan‡amento do Sistema Notas de Entrada"
   Case [Sistema Gerador]="AF" : s="Acerto Financeiro"
   case [Sistema Gerador]="FA" : s="Produ‡„o Confec‡Æo [Fac‡Æo]"
   Case [Sistema Gerador]="BO" : s="Bordero de Cheques/Terceiros"
EndSwitch

return s
EndProc   ;  (Checagem_Pagina)

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

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" 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(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S" EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S" EndIf
If Not IsAssigned(APLIC_ORIGEM)        Then APLIC_ORIGEM      =""  EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""  EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""  EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""  EndIf
If Not IsAssigned(SYS_VERSAO_SO)       Then SYS_VERSAO_SO="Windows"  EndIf

If Not IsAssigned(TITULOS_SOBAIXAS)    Then TITULOS_SOBAIXAS   =False  EndIf
If Not IsAssigned(TITULOS_BAIXASII)    Then TITULOS_BAIXASII   =False  EndIf
If Not IsAssigned(TITULOS_EDITBX)      Then TITULOS_EDITBX     =False  EndIf   
                 
Ler_Captura("")

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

View NoWindow "\\Sistemas\\CtaCor\\Conta"
View "\\Sistemas\\CheqRec\\ChequeI"
View "\\Sistemas\\CheqRec\\cdpessoa"
View NoWindow "TitNota"
View NoWindow "TitCheq"
View NoWindow "TitBaixa"
View NoWindow "TitRat"
View NoWindow "P_Cheque"

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

;*** Forms UnLinked *****
Moveto "\\Sistemas\\Cadastro\\Feriados"   SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CtaCor\\SaldCont"     SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CtaCor\\MovCont"      SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CheqRec\\ChequeI"     SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CheqRec\\cdpessoa"    SetHighLight Current Record 51 Field 51

Moveto "Titulos"
PickForm "6"

If NRecords("Titulos")>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

CONTA=""
NLANC=""
NLANCC=0

WCSW_NLANC =BlankNum()
WCSW_SDINI =BlankNum()
WCSW_SDATU =BlankNum()
WCSW_BAIXA =BlankNum()

OPCAO_FORM="6"
Switch
  Case TITULOS_BAIXASII:
    Play "TitBxII"
  OtherWise:  
    If Verifica_NRegistros("Titulos")
       Then COR_MENSAGEM="1"
            Mensagem(MSG_TABELA)
            Release Vars COR_MENSAGEM,MSG_TABELA
       Else Release Vars MSG_TABELA     
    EndIf      
  
    While True
      CHAVEC()
      If CHAVEC=9
         Then QuitLoop
      EndIf
      If CHAVEC=5
         Then If OPCAO_FORM="6"
                 Then PickForm "6"
                 Else PickForm "4"
              EndIf
              Loop
      EndIf
      Controla_EdicaoC()
    EndWhile
EndSwitch
Do_It!
ClearAll
Release Vars All
Release Procs All
Release Procs All
