;*  Duplic *********************************************************************
;*  Manutencao Carteira de Contas a Receber                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/10/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Dados do Cheque CDPessoa
;Ultima Alteracao: 06/12/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 03/01/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Confirma
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues              
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 04/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa Agencia,Conta,CPF
;Ultima Alteracao: 11/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 19/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo Carteira DESCONTADA..
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4=Copiar Parcelas
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 07/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Indice Inddup1/Duplic
;Ultima Alteracao: 12/09/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F4 Desdobramentos
;Ultima Alteracao: 03/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 31/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gravar Cheque
;Ultima Alteracao: 23/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes copiar parcelas
;Ultima Alteracao: 05/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 03/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Plano Contas Padrao
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 13/05/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Impressao Recibo
;Ultima Alteracao: 18/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes para ImpressÆo de Recibo
;Ultima Alteracao: 13/10/2010 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Leitura_Cheque                           
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 29/10/2010 por Bruno Carvalho
;Motivo Alteracao: Corre‡Æo e Ajustes Edita_Memo
;Ultima Alteracao: 01/02/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Rotina Cheque
;Ultima Alteracao: 14/02/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 17/02/2011 por Bruno Carvalho
;Motivo Alteracao: Op‡Æo para impressÆo de 2¦ Via de Recibo
;Ultima Alteracao: 17/02/2011 por Bruno Carvalho
;Motivo Alteracao: Novos Ajustes para Cliente "0112" (Liberar entrada de Cheques)
;Ultima Alteracao: 01/03/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes na ImpressÆo do Recibo
;Ultima Alteracao: 23/03/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Paramentro TITULOS_SOBAIXAS vinda o script DuplicBX
;Ultima Alteracao: 05/04/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para Cliente "0102"
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 27/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa por CANCELADO Altera‡Æo do Titulo para LUPUS
;Ultima Alteracao: 08/07/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa por CANCELADO/Valor Comissao para LUPUS
;Ultima Alteracao: 16/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Baixa Valor Comissao diferen‡a de 0,01 centavos LUPUS
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dados dos Cheques
;Ultima Alteracao: 16/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo WCSW_BAIXA =vr recebido * COTTA
;Ultima Alteracao: 29/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Layout, ajustes Fun‡äes e adicionado Notas
;Ultima Alteracao: 30/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao data da baixa s¢ do dia Tecidos BrasÆo
;Ultima Alteracao: 30/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Variavel FORM_CONTATO Lupus
;Ultima Alteracao: 12/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para rotina de anota‡äes
;Ultima Alteracao: 11/01/2012 por Bruno Carvalho
;Ultima Alteracao: Altera‡Æo no Controla_Edicao() "Table()"
;Ultima Alteracao: 19/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes TITULOS_SOANOTACOES
;Ultima Alteracao: 02/02/2012 por Karina Andrade
;Motivo Alteracao: Adcionado F11=Dados do Cliente(Form_Destinat)
;Ultima Alteracao: 25/05/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Carrega_Parametros de acordo com a empresa 
;Ultima Alteracao: 31/05/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo na baixa qd Dt de Vencto for no sabado ou domingo nÆo computar juros e atrasos
;Ultima Alteracao: 04/06/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes na verifica‡Æo dos parametros, estava ocorrendo erro ao voltar (ESC) em uma baixa
;Ultima Alteracao: 10/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusao do titulo, Tecla_Funcao=""
;Ultima Alteracao: 26/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes bloqueio de registro durante carrega_parametros()
;Ultima Alteracao: 27/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data de Entrada CHEQUEC
;Ultima Alteracao: 13/11/2012 por Bruno Carvalho
;Motivo Alteracao: PermissÆo p/ Altera‡Æo/ExclusÆo Anota‡äes       
;Ultima Alteracao: 19/11/2012 por Bruno Carvalho
;Motivo Alteracao: Add Parƒmetro p/ Altera‡Æo/ExcluisÆo Anota‡äes       
;Ultima Alteracao: 03/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conflito LockRecord - SaldCont       
;Ultima Alteracao: 15/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo incluir nova baixa se titulo ja liquidado
;Ultima Alteracao: 25/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusao de baixa e titulo estorno caixa/banco
;Ultima Alteracao: 25/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sobaixas nÆo excluir titulo

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

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

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

  MSGCAMPO=""
  TECLA="F4=N§ Documento"
  AguardaTeclasPadrao()
  
  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="3"
            Then OPCAO_FORM="4"
            Else OPCAO_FORM="3"
         EndIf
         Del
         CHAVEC=6
         Return
    Case RetVal="F4":
         TIPO_TRABALHO=1
         CHAVEC=5
         Del
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Origem_Disparo=""


           FORM_CONTATO =""

           If OPCAO_FORM="3"
              Then PAGINA("Duplic","MR")
              Else PAGINA("Duplic","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "
                          Switch
                             Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                             Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                             Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                             Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                             Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                             Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                          EndSwitch
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or 
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf

             Case EXCLUIR="S": 
                  If TITULOS_SOBAIXAS
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          If [Sistema Gerador]<>"MA"
                             Then MSG="Sistema Origem = "
                                  Switch
                                     Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                     Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                     Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                     Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                     Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                     Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                  EndSwitch
                                  MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                  MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf    
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="3"
              Then PickForm "3"
              Else PickForm "4"
           EndIf       
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del                    
         Return
    Case Retval="ENTER":
         If IsBlank([])
            Then If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES
                    Then FastMsg("Inclus„o n„o permitida !")
                         Loop
                 EndIf
                 If IsBlank(NLANC)
                    Then []="1"
                    Else []=StrVal(NumVal(NLANC)+1)
                 EndIf
         EndIf
         []=Alinh()
         NLANC=[]
         Del
         PickForm "4"
         Moveto [Numero do Lancamento]
         Locate NLANC
         If Retval
            Then CHAVEC=0
            Else If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES
                    Then FastMsg("Lan‡„mento n„o encontrado !")
                         If OPCAO_FORM="3"
                            Then PickForm "3"
                         EndIf
                         QuitLoop
                 EndIf
                 CHAVEC=1
                 End Pgdn PgDn PgDn PgDn
                 [Numero do Lancamento ]=NLANC
                 [Codigo da Empresa    ]=SYS_EMPRESA_DEFAULT
                 [Sistema Gerador      ]="MA"
         EndIf
         If Not IsLockRecord()
            Then Echo Normal
                 Echo Off
                 If (CHAVEC=1 And Checa_Controle(SYS_CONTROLE_DIA))
                    Then Return
                    Else If CHAVEC=0
                            Then If [Sistema Gerador]<>"MA"
                                    Then MSG="Sistema Origem = "
                                         Switch
                                            Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                            Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                            Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                            Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                            Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                            Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                         EndSwitch
                                         FastMsg(MSG)
                                 EndIf
                                 If TITULOS_SOBAIXAS    Or 
                                    TITULOS_SOANOTACOES Or
                                    Checa_Controle([Numero_Controle_Dia])
                                    Then Return
                                 EndIf
                         EndIf
                 EndIf
         EndIf
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

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

While True
  Origem_Disparo=""

  End
  If OPCAO_FORM="3"
     Then Down
     Else Pgdn PgDn PgDn PgDn
  EndIf

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

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

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

  AguardaTeclasPadrao()

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

           FORM_CONTATO =""

           If OPCAO_FORM="3"
              Then PAGINA("Duplic","MR")
              Else PAGINA("Duplic","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "
                          Switch
                             Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                             Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                             Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                             Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                             Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                             Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                          EndSwitch
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or 
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOBAIXAS
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          If [Sistema Gerador]<>"MA"
                             Then MSG="Sistema Origem = "
                                  Switch
                                     Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                     Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                     Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                     Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                     Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                     Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                  EndSwitch
                                  MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                  MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="3"
              Then PickForm "3"
              Else PickForm "4"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         If Field()="Codigo da Empresa"
            Then CHAVEC=9
                 Del
                 Return
         EndIf
         If Field()="Codigo do Documento"
            Then [Codigo do Documento]=""
                 Moveto [Codigo da Empresa]
         EndIf
         If Field()="Numero do Documento"
            Then Moveto [Codigo do Documento]
         EndIf
    Case Retval="ENTER":
         Switch
           Case Field()="Codigo da Empresa": 
                EMPRESA=[]
                Moveto [Codigo do Documento]
                Loop
           Case Field()="Codigo do Documento":
                Moveto [Numero do Documento]
                Loop
           Case Field()="Numero do Documento":
                EMPRESA =[Codigo da Empresa  ]
                TPDOCTO =[Codigo do Documento]
                NUMDOCTO=[Numero do Documento]
         EndSwitch
         PASSOU=True
         CODEMP= [Codigo da Empresa]
         TIPODOC=[Codigo do Documento]
         Del
         PickForm "4"
         Moveto [Codigo da Empresa]
         Locate IndexOrder by "IndDup1" EMPRESA,TPDOCTO,NUMDOCTO
         If Not Retval
            Then FastMsg("Lan‡„mento n„o encontrado !")
            Else CHAVEC=0
                 If Not IsLockRecord()
                    Then Echo Normal
                         Echo Off
                         If [Sistema Gerador]<>"MA"
                            Then MSG="Sistema Origem = "
                                 Switch
                                    Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                    Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                    Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                    Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                    Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                    Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                 EndSwitch
                                 FastMsg(MSG)
                         EndIf
                         If TITULOS_SOBAIXAS    Or 
                            TITULOS_SOANOTACOES Or 
                            Checa_Controle([Numero_Controle_Dia])
                            Then Return
                         EndIf
                 EndIf
         EndIf   
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC2)

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

While True
  Origem_Disparo=""

  End
  Pgdn PgDn PgDn PgDn

  Moveto [Documento no Banco]

  FORM_CONTATO =""
  SetaCorRegistro("Editar")

  While True

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

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

           FORM_CONTATO =""

           PAGINA("Duplic","MT")
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "4"
                  Echo Normal
                  Echo Off
                  If [Sistema Gerador]<>"MA"
                     Then MSG="Sistema Origem = "
                          Switch
                             Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                             Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                             Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                             Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                             Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                             Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                          EndSwitch
                          FastMsg(MSG)
                  EndIf
                  If TITULOS_SOBAIXAS    Or 
                     TITULOS_SOANOTACOES Or
                     Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOBAIXAS
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else PickForm "4"
                          Echo Normal
                          Echo Off
        
                          If [Sistema Gerador]<>"MA"
                             Then MSG="Sistema Origem = "
                                  Switch
                                     Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                     Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                     Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                     Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                     Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                     Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                  EndSwitch
                                  MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                  MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                             Else MSG=""
                          EndIf
                          MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                          If CONFGERAL_Supervisor(MSG)
                             Then EXCLUSAO()
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         If Field()="Documento no Banco"
            Then CHAVEC=9
                 Del
                 Return
         EndIf
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         Switch
           Case Field()="Documento no Banco":
                DOCTOBANCO=[Documento no Banco]
         EndSwitch
         Del
         Moveto [Documento no Banco]
         Locate DOCTOBANCO
         If Not Retval
            Then FastMsg("Lan‡„mento n„o encontrado !")
            Else CHAVEC=0
                 If Not IsLockRecord()
                    Then Echo Normal
                         Echo Off
                         If [Sistema Gerador]<>"MA"
                            Then MSG="Sistema Origem = "
                                 Switch
                                    Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                                    Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                                    Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                                    Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                                    Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                                    Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                                 EndSwitch
                                 FastMsg(MSG)
                         EndIf
                         If TITULOS_SOBAIXAS    Or 
                            TITULOS_SOANOTACOES Or 
                            Checa_Controle([Numero_Controle_Dia])
                            Then Return
                         EndIf
                 EndIf
         EndIf   
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC3)

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

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

KeyPress "ESC"

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

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

If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES 
   Then Moveto [Pag_1]
EndIf

While True

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

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

  Prompt TECLA

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

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

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

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

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

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

       Moveto "\\Sistemas\\CtaRec\\Duplic"
       [Saldo do Documento]=([Valor do Documento]-
                            (TOTREC-TOTJUR+TOTDES))
       [Saldo da Comissao ]=[Valor da Comissao ]-TOTCOM
       
       Tecla_Funcao="F8"
       Quitloop              
  Case RetVal="F5":  
       If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
          Then JANELA_DIALOG_DESABILITA=True
       EndIf
       Edita_Memo("Observacoes",08,01,15,76,"Observa‡”es")
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":   
       If CHAVEC=0        
          Then 
               If TITULOS_SOBAIXAS
                  Then FastMsg("Exclus„o n„o permitida !")
                       Loop
               EndIf        

               If [Sistema Gerador]<>"MA"
                  Then MSG="Sistema Origem = "
                       Switch
                          Case [Sistema Gerador]="DI" : MSG=MSG+"Digita‡Æo de Notas de Sa¡da//"
                          Case [Sistema Gerador]="BA" : MSG=MSG+"EmissÆo Romaneio p/ BalcÆo//"
                          Case [Sistema Gerador]="FT" : MSG=MSG+"EmissÆo Nota Fiscal/Romaneio//"
                          Case [Sistema Gerador]="TR" : MSG=MSG+"EmissÆo Romaneio p/ Troca//"
                          Case [Sistema Gerador]="GD" : MSG=MSG+"Gera‡Æo de Duplicatas//"
                          Case [Sistema Gerador]="BO" : MSG=MSG+"Bordero de Cheques/Terceiros//"
                       EndSwitch
                       MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                       MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                  Else MSG=""
               EndIf
               MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
               If CONFGERAL_Supervisor(MSG)
                  Then EXCLUSAO()
                       DIGITAC =False
                       Tecla_Funcao=""
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa":
            If QuerDesfazer("")
               Then If CHAVEC=0
                       Then Undo
                       Else Del
                    EndIf
                    DIGITAC =False
                    Tecla_Funcao=""
                    QuitLoop
            EndIf
       Case Field()="Codigo da Conta"       : Moveto [Codigo da Empresa]
       Case Field()="Codigo do Destinatario": Moveto [Codigo da Conta]
       Case Field()="Codigo do Documento"   : Moveto [Codigo do Destinatario]
       Case Field()="Numero do Documento"   : Moveto [Codigo do Documento]
       Case Field()="Codigo do Destinatario": Moveto [Numero do Documento]
       Case Field()="Data de Emissao": 
            If CHAVEC=0
               Then If [Saldo do Documento]<>[Valor do Documento]
                       Then DIGITAC =False
                            Tecla_Funcao=""
                            QuitLoop
                    EndIf
            EndIf
            If [Sistema Gerador]="MA"
               Then Moveto [Numero_Carregamento_Orig]
               Else Moveto [Numero do Documento]
            EndIf
       Case Field()="Documento Referente":
            Moveto [Numero do Documento]
       Case Field()="Valor do Documento":
            Moveto [Data de Vencimento]
       Case Field()="Valor da Comissao":
            Moveto [Valor do Documento]
 
       Case Field()="Multa":
            If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
               Then Moveto [Valor do Documento]
               Else Moveto [Valor da Comissao ]
            EndIf
       Case Field()="Tipo Taxa de Juros":
            Moveto [Multa]
       Case Field()="Tipo do Lancamento":
            Moveto [Data Limite Desconto] 
       Case Field()="Tipo do Pagamento":
            Moveto [Tipo do Lancamento]
       Case Field()="Codigo do Representante":
            If IsBlank([])
               Then [Nome Fantasia Represent]=""
            EndIf
            Moveto [Tipo do Pagamento]
       Case Field()="Documento no Banco":
            Moveto [Codigo do Representante]
       Case Field()="Codigo Plano_Conta":
            Moveto [Documento no Banco]
       Case Field()="Codigo CCusto":
            Moveto [Codigo Plano_Conta]
			 Case Field()="Codigo do Cobrador":
						Moveto [Codigo CCusto]
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
               Else Tecla_Funcao="F9"
            EndIf   
            QuitLoop						
       OtherWise:
            Left
       EndSwitch

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

;******************* MODIFICADO P/ J.LUIS EM 24/06/04 *******************
       Case Field()="Codigo Plano_Conta":
            CodPlacon = [Codigo Plano_Conta]
            If Not IsBlank(CodPlacon)
               Then Ativa_Lookup()
                    Moveto [Codigo Plano_Conta]
                    Locate CodPlacon
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    Loop
                               Else DescPlacon = LTrim([Descricao Plano_Conta])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Conta n„o Cadastrada !")
                            KeyPress "Esc"
                            DescPlacon = ""
                            Loop
                    EndIf
                    If SubStr([],1,1)="2"
                       Then Mensagem("Conta n„o confere com tipo de movimento !")
                            Loop
                    EndIf
               Else DescPlacon = ""
            Endif
            [Descricao Plano_Conta]= DescPlacon
            Moveto [Codigo CCusto]
;*** FIM MODIFICACAO *******************************************************

;******************* MODIFICADO P/ J.LUIS EM 24/06/04 *******************
       Case Field()="Codigo CCusto":
            CodCCusto = [Codigo CCusto]
            If Not IsBlank(CodCCusto)
               Then Ativa_Lookup()
                    Moveto [Codigo CCusto]
                    Locate CodCCusto
                    If RetVal
                       Then If [Tipo de Conta] <> "A"
                               Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                    Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                    Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                    Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                    Msg = Msg + "do Tipo de Conta."
                                    Mensagem(Msg)
                                    KeyPress "Esc"
                                    DescCCusto = ""
                                    Loop
                               Else DescCCusto = LTrim([Descricao CCusto])
                                    KeyPress "Esc"
                            Endif
                       Else Mensagem("Centro de Custo n„o Cadastrado !")
                            KeyPress "Esc"
                            Loop
                    EndIf
               Else DescCCusto = ""
            EndIf
            [Descricao CCusto] = DescCCusto
            Moveto [Codigo do Cobrador]
;*** FIM MODIFICACAO *******************************************************

       Case Field()="Codigo do Cobrador":
            If IsBlank([])
							 Then [Descricao do Cobrador]=""
            EndIf
            Tecla_Funcao="F8"
            QuitLoop
       Case Field()="Pag_1":
            If TITULOS_SOBAIXAS
               Then Tecla_Funcao="F8"
               Else Tecla_Funcao="F9"
            EndIf  
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DIGITAC)

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

Moveto "DupBaixa"
Opcao_Ver=False

While True

  Exclusao_Cabeca=False

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

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

  SetaCorRegistro("Editar")
  While True

    Opcao_Ver=False

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

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

            RetVal=MenuVar
    EndIf

    Switch
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F6" Or RetVal="F9" Or
         RetVal=-115 Or RetVal=-116 Or
         RetVal=-133 Or RetVal="F11":
         Tecla_Funcao=RetVal
         CHAVEI=9
         Del
         Return   
         
    Case RetVal="F4": 
         Del
         If Not TITULOS_SOBAIXAS And Not TITULOS_SOANOTACOES And
            (CHAVEC=1 Or (CHAVEC=0 And [Duplic->Saldo do Documento]>0))
          Then If Inicial() Then
                If DynArraySize(Array_Vencimentos)>0
									 Then  Moveto "Duplic"
												 CopyToArray REG_VENC
												 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
																		 Moveto [Numero do Lancamento]
																		 [Numero do Lancamento]=NLANC

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

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

													 While True
																 NDIAS=0
                                 If Dow([Data a Receber])="Sat"
																		Then NDIAS=2
                                    Else If Dow([Data a Receber])="Sun"
																						Then NDIAS=1
																				 EndIf
																 EndIf
                                 DIA = [Data a Receber]
																 Moveto "\\Sistemas\\Cadastro\\Feriados"
																 Locate DIA
																 If Retval
                                    Then NDIAS=[Dias a Receber]
																 EndIf
																 Moveto "Duplic"
                                 [Data a Receber]=[Data a Receber]+NDIAS
																 If NDIAS=0 or Isblank(NDIAS)
																		Then QuitLoop
																 EndIf
													 EndWhile
													 UnLockRecord
												 EndFor
												 Tecla_Funcao=""
												 DIGITAC =False
												 CHAVEI=9
												 Return
								  EndIf
								 EndIf
					Else Switch
					       Case TITULOS_SOBAIXAS    : FastMsg("Fun‡Æo nÆo permitida, s¢ baixas !")
					       Case TITULOS_SOANOTACOES : FastMsg("Fun‡Æo nÆo permitida, s¢ anota‡”es !")
					       OtherWise                : FastMsg("Fun‡Æo nÆo permitida, t¡tulo j  baixado !")
					     EndSwitch  
				 EndIf
         QuitLoop
    Case RetVal="F5":
         TabAnt=Table()
         Moveto "Duplic"
         If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
            Then JANELA_DIALOG_DESABILITA=True
         EndIf
         Ver_Memo("Observacoes",08,01,15,76,"Observa‡”es")
         Moveto TabAnt         
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Opcao_Ver=False
           
           PAGINA("DupBaixa","MR")
           NLANC=[Numero do Lancamento]
           NITEM=[Sequencia da Baixa  ]
           Switch
             Case EDITAR="S":
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEI=0
                          Controla_EdicaoI()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  If TITULOS_SOANOTACOES
                     Then FastMsg("Exclus„o n„o permitida !")
                          UnLockRecord
                     Else If Checa_Controle([Numero_Controle_Dia])
                             Then CARREG_ACERTADO=False
                                  If Not IsBlank([Numero_Carregamento])
                                     Then Campo_Atual=Field()
                                          Moveto [Numero_Carregamento]
                                          Ativa_Lookup()
                                          Moveto [Numero_Carregamento]
                                          Locate [DupBaixa->Numero_Carregamento]
                                          If RetVal
                                             Then If [Situacao]="ACERTADO"
                                                     Then Mensagem("Carregamento J  foi ACERTADA !")
                                                          CARREG_ACERTADO=True
                                                  EndIf
                                          EndIf
                                          KeyPress "ESC"
                                          Moveto Field Campo_Atual
                                  EndIf
        
                                  If Not CARREG_ACERTADO
                                     Then If QuerExcluir("") And Checa_Supervisor()
                                             Then VROLD=[Valor do Recebimento]
                                                  JSOLD=[Valor do Juros      ]
                                                  DSOLD=[Valor do Desconto   ]
                                                  VCOLD=[Valor da Comissao   ]
                                                  CHAVEI=8
                                                  If CONTA()
                                                     Then TIT()
                                                          MSG="Excluiu Ctarec NL/Bx: "+[Numero do Lancamento]+"/"+[Sequencia da Baixa]+" Docto: "
                                                          MSG=MSG+[Duplic->Codigo do Documento]+"/"+[Duplic->Numero do Documento]
                                                          Grava_Logt("#","ExclCRec",MSG)
                                                          Del
                                                  EndIf
                                             Else UnLockRecord
                                          EndIf
                                     Else UnLockRecord
                                  EndIf
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         SetaCorRegistro("Padrao")
         If TITULOS_SOBAIXAS 
             Then DIGITAC =False
         EndIf
         
         If TITULOS_SOANOTACOES
            Then Tecla_Funcao="F9"
            Else Tecla_Funcao=-10
         EndIf
            
         CHAVEI=9
         Del
         Return
    Case Retval="PGDN":
         CHAVEI=9
         Tecla_Funcao=""
         DIGITAC =False
         Del
         Return
    Case RetVal="F3":
         Del
         Moveto [Sequencia da Baixa]
         If RecordStatus("New")
            Then MENSAGEM("Sem Baixa p/ ver !")
                 QuitLoop
         EndIf
         Opcao_Ver=True
         CHAVEI=0
         Home
         NITEM=[Sequencia da Baixa]
         Inicia_Registro()
         Digita_Baixa()
         QuitLoop
    Case Retval="ENTER":

         If [Duplic->Saldo do Documento]<=0
            Then Fastmsg("T¡tulo j  liquidado !")
                 Loop
         EndIf   

         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         NITEM=[]
         Del
         Locate NLANC,NITEM
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End Down
                 [Numero do Lancamento]=NLANC
                 [Sequencia da Baixa  ]=NITEM
                 UnLockRecord
                 Locate NLANC,NITEM
         EndIf
         If Not IsLockRecord()
            Then If (CHAVEI=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                    (CHAVEI=0 And Checa_Controle([Numero_Controle_Dia]))
                    Then Return
                 EndIf
         EndIf
         If CHAVEI=1
            Then Del
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc ; (CHAVEI)

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

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

       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_Vr_Pagto           =  [Valor do Recebimento   ]
       VSD_I_Vr_Descto          =  [Valor do Desconto      ]
       VSD_I_Vr_Juros           =  [Valor do Juros         ]

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

;;;;;;;If PARAM_CTA_BAIXA_IGUAL_LANCTO="S"
;;;;;;;   Then VSD_I_Conta              =  [Codigo da Conta        ]
;;;;;;;        VSD_I_Descricao_Conta    =  [Descricao da Conta     ]
;;;;;;;   Else VSD_I_Conta              =  ""
;;;;;;;        VSD_I_Descricao_Conta    =  ""
;;;;;;;Endif

       VSD_I_Tipo_Conta         =  [Tipo da Conta          ]
       VSD_I_TpBaixa            =  [Tipo da Baixa          ]
       VSD_I_JurosD             =  [Valor do Juros Devidos ]
       VSD_I_Vr_Comissao        =  [Valor da Comissao      ]
       VSD_I_DtPgComis          =  [Data Pagamento Comissao]
       VSD_I_PlContas           =  [Codigo Plano_Conta     ]
       VSD_I_Descricao_PlContas =  LTrim([Descricao Plano_Conta ])
       VSD_I_CCusto             =  [Codigo CCusto          ]
       VSD_I_Descricao_CCusto   =  LTrim([Descricao CCusto      ])
       VSD_I_Codigo_Hist        =  [Codigo do Historico    ]
       VSD_I_Descri_Hist        =  [Descricao do Historico ]
       VSD_I_NCarreg            =  [Numero_Carregamento    ]
       VSD_I_Vr_DN              =  [Valor Dinheiro         ]
       VSD_I_Vr_CH              =  [Valor Cheque           ]
       VSD_I_Vr_CP              =  [Valor Cheque Pre_Datado]
       VSD_I_Vr_FRC             =  VSD_I_Vr_DN+VSD_I_Vr_CH+VSD_I_Vr_CP
       VSD_I_NDA                 =  BlankNum()
       If Not IsBlank(VSD_I_DtPagto)
          Then VSD_I_NDA        =  VSD_I_DtPagto-[Duplic->Data de Vencimento]
          Else VSD_I_NDA        =  0
       EndIf
       If VSD_I_NDA<=0 Then  VSD_I_NDA=BlankNum() EndIf

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

       VSD_I_ObsBaixa           =  [Observacoes]
EndSwitch
EndProc  ; (Registro_Baixa)

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

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

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

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

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

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

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

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

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

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

  Label  @ 02,28 "Dt Pag.Comiss„o " For "I_DtPgComis"
  Accept @ 03,29 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DtPgComis" to VSD_I_DtPgComis

  Label  @ 02,60 "NDA" For "I_NDA"
  Accept @ 03,61 Width 09 "N" picture "#*#" Tag "I_NDA" to VSD_I_NDA

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

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

  Label  @ 06,14 "Dinheiro" For "I_Vr_DN"
  Accept @ 07,15 Width 13 "$" picture "#*#.[##]" Tag "I_Vr_DN" to VSD_I_Vr_DN

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

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

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

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

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

  Label  @ 10,55 "Lan‡to Cxa/Bco" For "I_LCXBC"
  Accept @ 11,61 Width 09 "A6" picture "#*#" Tag "I_LCXBC" to VSD_I_LCXBC

  Label  @ 12,00 "Historico" For "I_Codigo_Hist"
  Accept @ 13,01 Width 07 "A4" picture "#*#" Tag "I_Codigo_Hist" to VSD_I_Codigo_Hist
  Accept @ 13,08 Width 62 "A70" picture "!*!" Tag "I_Descri_Hist" to VSD_I_Descri_Hist

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

  @ 16,01 ?? " Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+" "+VSDGU_HORA+" "+VSDGU_CONTROLE
  PaintCanvas Attribute 7 16, 01, 16, 69

Enddialog
Mouse Show
EndProc  ; (Digita_Baixa)

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

Temp=True
TECLA    =" Esc=Retornar  "
MSG_CAMPO=""

If INICIO_DIALOG
   Then If [Tipo da Baixa]="CANCELADO"
          Then Opcao_Ver=True 
          Else If CHAVEI=0
                     Then Campo="I_Vr_Pagto"
                          If Not IsBlank([Numero_Carregamento])
                             Then Moveto [Numero_Carregamento]
                                  Ativa_Lookup()
                                  Moveto [Numero_Carregamento]
                                  Locate [DupBaixa->Numero_Carregamento]
                                  If RetVal
                                     Then If [Situacao]="ACERTADO"
                                             Then Mensagem("Carregamento J  foi ACERTADA !")
                                                  KeyPress "ESC"
                                                  UnLockRecord
                                                  CancelDialog
                                          EndIf
                                  EndIf
                                  KeyPress "ESC"
                          EndIf             
                     Else Campo="I_DtPagto"
                  EndIf
       EndIf   
       INICIO_DIALOG=False
EndIf
If Opcao_Ver 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
              Case Evento["KeyCode"] = -63:
                   ImageRights ReadOnly
                   If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
                      Then JANELA_DIALOG_DESABILITA=True
                   EndIf
                   Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                   ImageRights
              OtherWise:

                Mover_Reg=True
                Switch
                  Case Evento["KeyCode"] = -71:
                       If AtFirst()
                          Then Mover_Reg=False Beep
                          Else Home
                       EndIf
                  Case Evento["KeyCode"] = -79:
                       If AtLast()
                          Then Mover_Reg=False Beep
                          Else End
                       EndIf
                  Case Evento["KeyCode"] = -73:
                       If AtFirst()
                          Then Mover_Reg=False Beep
                          Else Up
                       EndIf
                  Case Evento["KeyCode"] = -81:
                       If AtLast()
                          Then Mover_Reg=False Beep
                          Else Down
                       EndIf
                EndSwitch
                If Mover_Reg=True
                   Then NITEM=[Sequencia da Baixa]
                        Inicia_Registro()
                EndIf
            EndSwitch
       Case Evento["KeyCode"] = 9:
            Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEI=0
               Then If QuerExcluir("") And Checa_Supervisor()
                       Then CopyFromArray RegItem
                            CHAVEI=8
                            If CONTA()
                               Then TIT()
                                    MSG="Excluiu Ctarec NL/Bx: "+[Numero do Lancamento]+"/"+[Sequencia da Baixa]+" Docto: "
                                    MSG=MSG+[Duplic->Codigo do Documento]+"/"+[Duplic->Numero do Documento]
                                    Grava_Logt("#","ExclCRec",MSG)
                                    Del
                            EndIf
                           CancelDialog
                    EndIf
            EndIf
       Case Evento["KeyCode"] = -63:
            Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
       Case Evento["KeyCode"] = -62  And Not IsBlank(PARAM_RELAT) And CHAVEI=0:
            Imprime_Recibo()
            CHAVEI=9
            DIGITAC =False
            AcceptDialog
       Case Evento["KeyCode"] = -59:
            Temp=False
            If Campo="I_Conta" Or
               Campo="I_PlContas" Or
               Campo="I_CCusto" Or
               Campo="I_Codigo_Hist" Or
               Campo="I_NCarreg"
               Then
                    Dynarray WinArray5[]
                    Window Handle Dialog to JANELA
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

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

                    ConsultaF1()

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

                    echo Normal
                    echo off

                    If Campo="I_Conta"
                       Then VSD_I_Conta          =[Codigo da Conta   ]
                            VSD_I_Descricao_Conta=[Descricao da Conta]
                            Campo="I_Conta"
                    Endif
                    If Campo="I_PlContas"
                       Then VSD_I_PlContas          =[Codigo Plano_Conta   ]
                            VSD_I_Descricao_PlContas=LTrim([Descricao Plano_Conta])
                            VSD_I_Codigo_Hist       =[Codigo do Historico]
                            Campo="I_PlContas"
                   EndIf
                    If Campo="I_CCusto"
                       Then VSD_I_CCusto          =[Codigo CCusto   ]
                            VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                            Campo="I_CCusto"
                   EndIf
                    If Campo="I_Codigo_Hist"
                       Then VSD_I_Codigo_Hist     =[Codigo do Historico]
                            VSD_I_Descri_Hist     =[Descricao do Historico]
                            Campo="I_Codigo_Hist"
                   EndIf
                   If Campo="I_NCarreg"
                       Then VSD_I_NCarreg         =[Numero_Carregamento]
                            Campo="I_NCarreg"
                   EndIf
                   Moveto "DupBaixa"
           EndIf
      Case Evento["KeyCode"] = 27: 
           Temp=False
           Switch
             Case Campo="I_DtPagto"            :
                  If QuerDesfazer("")
                     Then 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_JurosD"             : Campo="I_Vr_Descto"
             Case Campo="I_Vr_Comissao"        :
                      If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                         Then Campo="I_Vr_Descto"
                         Else Campo="I_JurosD"
                      EndIf
             Case Campo="I_DtPgComis"          :
               If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                  Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                          Then Campo="I_Vr_Descto"
                          Else Campo="I_JurosD"
                       EndIf
                  Else Campo="I_Vr_Comissao"
               EndIf
             Case Campo="I_Conta"              :
               If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                  Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                          Then Campo="I_Vr_Descto"
                          Else Campo="I_JurosD"
                       EndIf
                  Else Campo="I_DtPgComis"
               EndIf
             Case Campo="I_NCarreg"            :
                  If CHAVEI=0
                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                     Then Campo="I_Vr_Descto"
                                     Else Campo="I_JurosD"
                                  EndIf
                             Else Campo="I_DtPgComis"
                           EndIf
                     Else Campo="I_Conta"
                  EndIf
             Case Campo="I_Vr_DN"              :
                 If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                    Then Campo="I_Conta"
                    Else Campo="I_NCarreg"
                 EndIf
             Case Campo="I_Vr_CH"              : Campo="I_Vr_DN"
             Case Campo="I_Vr_CP"              : Campo="I_Vr_CH"
             Case Campo="I_PlContas"           :
                  If VSD_I_Tipo_Conta="X"
                     Then If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                             Then If CHAVEI=0
                                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                                             Then If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                                                     Then Campo="I_Vr_Descto"
                                                     Else Campo="I_JurosD"
                                                  EndIf
                                             Else Campo="I_DtPgComis"
                                           EndIf
                                     Else Campo="I_Conta"
                                  EndIf
                             Else Campo="I_NCarreg"
                          EndIF
                     Else If CHAVEI=0
                             Then Campo="I_DtPgComis"
                             Else Campo="I_Conta"
                          EndIf
                  EndIf
             Case Campo="I_CCusto"             : Campo="I_PlContas"
             Case Campo="I_Codigo_Hist"        : Campo="I_CCusto"
             Case Campo="I_Descri_Hist"        : Campo="I_Codigo_Hist"
           EndSwitch
      Case Evento["KeyCode"] = 13:
           Temp=False
           Switch
             Case Campo="I_DtPagto"            : Campo="I_TpBaixa"
									VSD_I_DtPagto=ControlValue("I_DtPagto")
                  If IsBlank(VSD_I_DtPagto)
                     Then VSD_I_DtPagto=Today()
                  EndIf

                  If Not IntervaloData(VSD_I_DtPagto)
                     Then Campo="I_DtPagto"
                  EndIf

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

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

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

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

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

                          If VSD_I_DtPagto=[Duplic->Data de Emissao]
                             Then If Not IsBlank(PARAM_PLANO_CONTA_AVISTA) And IsBlank([Codigo Plano_Conta])
                                     Then VSD_I_PlContas=PARAM_PLANO_CONTA_AVISTA
                                          [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA
                                          VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                                  EndIf
                             Else If Not IsBlank(PARAM_PLANO_CONTA_APRAZO) And IsBlank([Codigo Plano_Conta])
                                     Then VSD_I_PlContas=PARAM_PLANO_CONTA_APRAZO
                                          [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
                                          VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                                  EndIf
                          EndIf

                  EndIf
                  ULTDATA=VSD_I_DtPagto
             Case Campo="I_TpBaixa"           : Campo="I_Vr_Pagto"
                  VSD_I_TpBaixa=ControlValue("I_TpBaixa")
                  If IsBlank(VSD_I_TpBaixa)
                     Then VSD_I_TpBaixa="N"
                     Else If (VSD_I_TpBaixa="DEVOLUCAO" Or VSD_I_TpBaixa="CANCELADO") And (SYS_CODIGO_CLIENTE="0246")
                             Then If Not Checa_Supervisor()
                                     Then VSD_I_TpBaixa=""
                                          Return
                                  EndIf
                             Else If VSD_I_TpBaixa="CANCELADO" And SYS_CODIGO_CLIENTE="0229"      
                                     Then If Not Checa_Supervisor()
                                             Then VSD_I_TpBaixa=""
                                                  Return
                                          EndIf
                                  EndIf
                          EndIf        
                  EndIf
                  Switch
                    Case VSD_I_TpBaixa="N": VSD_I_TpBaixa="NORMAL"
                    Case VSD_I_TpBaixa="D": VSD_I_TpBaixa="DEVOLUCAO"
                    Case VSD_I_TpBaixa="C": VSD_I_TpBaixa="CANCELADO"
                  EndSwitch
                  If VSD_I_TpBaixa<>"NORMAL"
                     Then If Edita_Memo("Observacoes",16,02,07,74,"Observa‡”es")
                             Then Campo="I_TpBaixa"  
                             Else If VSD_I_TpBaixa="CANCELADO"
                                     Then VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="CANCELADO "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                          Registro_Baixa("Gravar")
                                          If CONTA()
                                             Then TIT()
                                                  AcceptDialog
                                          EndIf
                                     Else VSD_I_Codigo_Hist=""
                                          VSD_I_Descri_Hist="REC. "+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                  EndIf
                          EndIf  
                  EndIf
             Case Campo="I_Vr_Pagto"           : Campo="I_Vr_Juros"
                  VSD_I_Vr_Pagto=ControlValue("I_Vr_Pagto")
                  If IsBlank(VSD_I_Vr_Pagto)
                     Then VSD_I_Vr_Pagto=0
                     Else If VSD_I_Vr_Pagto < 0
                             Then Campo="I_Vr_Pagto"
                          EndIf
                  EndIf         
             Case Campo="I_Vr_Juros"           : Campo="I_Vr_Descto"
                  VSD_I_Vr_Juros=ControlValue("I_Vr_Juros")
                  If IsBlank(VSD_I_Vr_Juros)
                     Then VSD_I_Vr_Juros=0
                     Else If VSD_I_Vr_Juros < 0
                             Then Campo="I_Vr_Juros"
                          EndIf
                  EndIf
             Case Campo="I_Vr_Descto"          :
                  VSD_I_Vr_Descto=ControlValue("I_Vr_Descto")
                  If IsBlank(VSD_I_Vr_Descto)
                     Then VSD_I_Vr_Descto=0
                     Else If VSD_I_Vr_Descto < 0
                             Then Campo="I_Vr_Descto"
                          EndIf
                  EndIf

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

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

                  If PARAM_UTILIZA_JUROS_DEVIDO="N" or IsBlank(PARAM_UTILIZA_JUROS_DEVIDO)
                     Then If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                             Then If CHAVEI=0
                                     Then If VSD_I_Tipo_Conta="X"
                                             Then Campo="I_NCarreg"
                                             Else Campo="I_PlContas"
                                          EndIf
                                     Else Campo="I_Conta"
                                  EndIf
                             Else Campo="I_DtPgComis"
                          EndIf
                     Else Campo="I_JurosD"
                  EndIf
             Case Campo="I_JurosD"            :
                  VSD_I_JurosD=ControlValue("I_JurosD")
                  If VSD_I_JurosD=0
                     Then VSD_I_JurosD=BlankNum()
                  EndIf
                  If PARAM_UTILIZA_COMISSAO="N" or IsBlank(PARAM_UTILIZA_COMISSAO)
                     Then If CHAVEI=0
                             Then If VSD_I_Tipo_Conta="X"
                                     Then Campo="I_NCarreg"
                                     Else Campo="I_PlContas"
                                  EndIf
                             Else Campo="I_Conta"
                          EndIf
                     Else Campo="I_DtPgComis"
                  EndIf
             Case Campo="I_Vr_Comissao"       : Campo="I_DtPgComis"
                  VSD_I_Vr_Comissao=ControlValue("I_Vr_Comissao")
                  If IsBlank(VSD_I_Vr_Comissao)
                     Then VSD_I_Vr_Comissao=0
                     Else If VSD_I_Vr_Comissao < 0
                             Then Campo="I_Vr_Comissao"
                          EndIf
                  EndIf
             Case Campo="I_DtPgComis"       :
                  VSD_I_DtPgComis=ControlValue("I_DtPgComis")
                  If CHAVEI=0
                     Then If VSD_I_Tipo_Conta="X"
                             Then Campo="I_NCarreg"
                             Else Campo="I_PlContas"
                          EndIf
                     Else Campo="I_Conta"
                  EndIf
             Case Campo="I_Conta"              :
									VSD_I_Conta=ControlValue("I_Conta")
									If Not IsBlank(VSD_I_Conta)
                     Then VSD_I_Conta=AlinhM(VSD_I_Conta,4)
                          Moveto [Codigo da Conta]
                          Ativa_Lookup()
													Moveto [Codigo da Conta]
													Locate VSD_I_Conta
													If RetVal
                             Then VSD_I_Conta          =[Codigo da Conta   ]
																	VSD_I_Descricao_Conta=[Descricao da Conta]
                                  VSD_I_Tipo_Conta     =[Tipo da Conta     ]
																	KeyPress "ESC"
                                  [Codigo da Conta   ]=VSD_I_Conta

                                  If VSD_I_Tipo_Conta="X"
                                     Then If PARAM_UTILIZA_NUM_CARREGAMENTO="N" or IsBlank(PARAM_UTILIZA_NUM_CARREGAMENTO)
                                             Then Campo="I_PlContas"
                                             Else Campo="I_NCarreg"
                                          EndIf
                                     Else VSD_I_NCarreg=""
                                          VSD_I_Vr_DN  =BlankNum()
                                          VSD_I_Vr_CH  =BlankNum()
                                          VSD_I_Vr_CP  =BlankNum()
                                          Campo="I_PlContas"
                                  EndIf
                                  If SYS_CODIGO_CLIENTE="0102"
                                     Then If Not IsBlank(VSD_I_PlContas) And
                                             Not IsBlank(VSD_I_Descri_Hist)
                                             Then Campo="I_Descri_Hist"
                                          EndIf
                                  EndIf
														 Else Mensagem("Conta n„o Cadastrada !")
																	VSD_I_Conta 				 =""
																	VSD_I_Descricao_Conta=""
																	KeyPress "ESC"
													EndIf
													Echo Off
									EndIf
             Case Campo="I_NCarreg"       :
                  VSD_I_NCarreg=ControlValue("I_NCarreg")
                  If Not IsBlank(VSD_I_NCarreg)
                     Then VSD_I_NCarreg=AlinhM(VSD_I_NCarreg,6)
                          Moveto [Numero_Carregamento]
                          Ativa_Lookup()
                          Moveto [Numero_Carregamento]
                          Locate VSD_I_NCarreg
                          If RetVal
                             Then SITUACAO_CARREG=[Situacao]
                                  KeyPress "ESC"
                                  If SITUACAO_CARREG="ACERTADO"
                                     Then Mensagem("Carregamento J  foi ACERTADO !")
                                     Else Campo="I_Vr_DN"
                                  EndIf  
                             Else Mensagem("N§ Carregamento n„o Encontrado !")
                                  VSD_I_NCarreg=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else If PARAM_UTILIZA_FORMAS_RECEBER="N" or IsBlank(PARAM_UTILIZA_FORMAS_RECEBER)
                             Then Campo="I_PlContas"
                             Else Campo="I_Vr_DN"
                          EndIf
                  EndIf
             Case Campo="I_Vr_DN"              : Campo="I_Vr_CH"
                  VSD_I_Vr_DN=ControlValue("I_Vr_DN")
                  If VSD_I_Vr_DN=0
                     Then VSD_I_Vr_DN=BlankNum()
                  EndIf
             Case Campo="I_Vr_CH"              : Campo="I_Vr_CP"
                  VSD_I_Vr_CH=ControlValue("I_Vr_CH")
                  If VSD_I_Vr_CH=0
                     Then VSD_I_Vr_CH=BlankNum()
                  EndIf
             Case Campo="I_Vr_CP"              : Campo="I_PlContas"
                  VSD_I_Vr_CP=ControlValue("I_Vr_CP")
                  If VSD_I_Vr_CP=0
                     Then VSD_I_Vr_CP=BlankNum()
                  EndIf
                  VSD_I_Vr_FRC=VSD_I_Vr_DN+VSD_I_Vr_CH+VSD_I_Vr_CP

             Case Campo="I_PlContas"           :
                  VSD_I_PlContas=ControlValue("I_PlContas")
                  If Not IsBlank(VSD_I_PlContas)
                     Then Moveto [Codigo Plano_Conta]
                          Ativa_Lookup()
                          Moveto [Codigo Plano_Conta]
                          Locate VSD_I_PlContas
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "   Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          KeyPress "ESC"
                                     Else
                                          VSD_I_PlContas          =[Codigo Plano_Conta]
                                          VSD_I_Descricao_PlContas=LTrim([Descricao Plano_Conta])
                                          If Not IsBlank(PARAM_HISTORICO_DEFAULT)
                                             Then VSD_I_Codigo_Hist       =PARAM_HISTORICO_DEFAULT
                                                  VSD_I_Descri_Hist=""
                                             Else VSD_I_Codigo_Hist       =[Codigo do Historico]
                                          EndIf
                                          KeyPress "ESC"
                                          [Codigo Plano_Conta] =VSD_I_PlContas
                                          Campo="I_CCusto"
                                  Endif
                             Else Mensagem("Conta nao Cadastrada !")
                                  VSD_I_PlContas          =""
                                  VSD_I_Descricao_PlContas=""
                                  KeyPress "ESC"
                          EndIf
                          If SubStr(VSD_I_PlContas,1,1)="2"
                             Then Mensagem("Conta n„o confere com tipo de movimento !")
                                  Campo="I_PlContas"
                          EndIf
                          Echo Off
                     Else VSD_I_Descricao_PlContas=""
                          Campo="I_CCusto"
                  EndIf
             Case Campo="I_CCusto"             : 
                  VSD_I_CCusto=ControlValue("I_CCusto")
                  If Not IsBlank(VSD_I_CCusto)
                     Then Moveto [Codigo CCusto]
                          Ativa_Lookup()
                          Moveto [Codigo CCusto]
                          Locate VSD_I_CCusto
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          KeyPress "ESC"
                                     Else VSD_I_CCusto          =[Codigo CCusto]
                                          VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                                          KeyPress "ESC"
                                          [Codigo CCusto]       =VSD_I_CCusto
                                          Campo="I_Codigo_Hist"
                                  Endif
                             Else Mensagem("Centro de Custo n„o Cadastrado !")
                                  VSD_I_CCusto          =""
                                  VSD_I_Descricao_CCusto=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else VSD_I_CCusto          =""
                          VSD_I_Descricao_CCusto=""
                          Campo="I_Codigo_Hist"
                  EndIf
             Case Campo="I_Codigo_Hist"        : Campo="I_Descri_Hist"
									VSD_I_Codigo_Hist=ControlValue("I_Codigo_Hist")
									If Not IsBlank(VSD_I_Codigo_Hist)
                     Then VSD_I_Codigo_Hist=AlinhM(VSD_I_Codigo_Hist,4)
                          Moveto [Codigo do Historico]
                          Ativa_Lookup()
													Moveto [Codigo do Historico]
													Locate VSD_I_Codigo_Hist
                          If RetVal
                             Then If HIOLD<>VSD_I_Codigo_Hist
                                     Then VSD_I_Descri_Hist  =[Descricao do Historico]
                                  EndIf
                                  KeyPress "ESC"
                                  If HIOLD<>VSD_I_Codigo_Hist
                                     Then HISTORICO()
                                  EndIf
                                  HIOLD =VSD_I_Codigo_Hist
														 Else Mensagem("Historico n„o Cadastrado !")
                                  VSD_I_Codigo_Hist=""
                                  VSD_I_Descri_Hist=""
                                  KeyPress "ESC"
                                  Campo="I_Codigo_Hist"
                          EndIf
                          Echo Off
                     Else HIOLD =VSD_I_Codigo_Hist
                  EndIf
             Case Campo="I_Descri_Hist"     :
                  VSD_I_Descri_Hist=ControlValue("I_Descri_Hist")
                  Registro_Baixa("Gravar")
                  If CONTA()
                     Then TIT()
                          If CHAVEI=1 And Not IsBlank(PARAM_RELAT)
                             Then Imprime_Recibo() 
                             Else If CHAVEI=0 And Not IsBlank(PARAM_RELAT)
                                     Then ConfGeral("Deseja imprimir a 2¦ Via do Recibo?")
                                          If OK="S"
                                             Then Imprime_Recibo() 
                                                  AcceptDialog
                                             Else CancelDialog
                                          EndIf
                                  EndIf
                          EndIf
                          AcceptDialog
                  EndIf
                  
                  If CHAVEI=1
                     Then VRANT_NCARREG=VSD_I_NCarreg
                          VRANT_PLCONTA=VSD_I_PlContas
                          VRANT_CTCUSTO=VSD_I_CCusto
                  EndIf
                  
           EndSwitch
   EndSwitch
EndIf

SelectControl Campo
RefreshDialog
Switch
  Case Campo="I_Conta"      : TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_TpBaixa"    : MSG_CAMPO="N=NORMAL  D=DEVOLUCAO  C=CANCELADO"
  Case Campo="I_PlContas"   : MSG_CAMPO="C¢digo do Plano de Contas"
                              TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_CCusto"     : MSG_CAMPO="C¢digo do Centro de Custo"
                              TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Codigo_Hist": MSG_CAMPO="C¢digo do Hist¢rico"
                              TECLA=TECLA+"F1=Tabelas  "
  Case Campo="I_Descri_Hist": MSG_CAMPO="Descreva o Hist¢rico"
EndSwitch

If CHAVEI=0 And Not Opcao_Ver
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf
If Not IsBlank(PARAM_RELAT) And CHAVEI=0 And Not Opcao_Ver
   Then TECLA=TECLA+"F4=Rec.Pagto  "
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(MSG_CAMPO)
Mouse Hide
Return TEMP
EndProc  ; (Baixa_Dialog)

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

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

      Switch
      Case COMP = "*CHEQUE*":
           NOVOHIST = NOVOHIST + VSD_I_NoCheque
      Case COMP = "*CONTDEST*":
           NOVOHIST = NOVOHIST + VSD_I_Descricao_Conta
      Case COMP = "*CONTORIG*":
           NOVOHIST = NOVOHIST + VSD_I_Descricao_Conta
      Case COMP = "*DATALCTO*":
           NOVOHIST = NOVOHIST + StrVal(VSD_I_DtPagto)
      Case COMP = "*MESANO*":
           NOVOHIST = NOVOHIST + ALINHM(StrVal(Month(VSD_I_DtPagto)),2)+"/"+SubStr(StrVal(Year(VSD_I_DtPagto)),3,2)
      Case COMP = "*TPDOCTO*":
           NOVOHIST = NOVOHIST + [Duplic->Tipo do Documento] +"/"+ [Duplic->Serie do Documento]
      Case COMP = "*LIVRE*":
           COMPLEMENTO()
      Case COMP = "*DOCTO*":
           NOVOHIST = NOVOHIST + [Duplic->Numero do Documento]
      OtherWise:
           NOVOHIST = NOVOHIST + SubStr(COMP,2,SearchFrom("*",COMP,2)-2)
      EndSwitch
      POS = POSN
EndWhile
VSD_I_Descri_Hist = NOVOHIST
EndProc ; (HISTORICO)

;***********************************************************
;** Rotina para Digitacao de Complemento                  **
;***********************************************************
Proc COMPLEMENTO()
LIVRE=""
ShowDialog "[ Complemento ]" @ 13,12 height 06 width 53
  @ 0,1 ?? "Texto:"

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

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

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

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

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

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

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

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

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

   Else HIOLD =[Codigo do Historico  ]
EndIf

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

Registro_Baixa("Ler")
EndProc ; (Inicia_Registro)

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

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

  Echo Normal
  Echo Off

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

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

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

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

EndWhile
EndProc

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

While True
 Moveto "Duplic"

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

 NLANCC=[\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
 Moveto [Sequencia do Cheque]
 End
 NITEMCH=[Sequencia do Cheque]
 Down
 [Numero do Lancamento]=NLANCC
 Opcao_Ler_Cheque=False

 SetaCorRegistro("Editar")
 While true

  MSGCAMPO=""
  Tecla=""
  AguardaTeclasPadraoIt2()

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

  Switch
  Case RetVal="F8" Or RetVal="F9" Or
       RetVal=-115 Or RetVal=-116 Or
       RetVal=-133 Or RetVal="F11":
       Tecla_Funcao=RetVal
       CHAVEB=9
       Del
       Return     
  Case RetVal=-94 : MsgTeclasPadraoIt2()
  Case RetVal="F4":
       Del
       Ler_Cheque()
       Return
  Case RetVal="F5": 
       Del
       TabAnt=Table()
       Moveto "Duplic"
       If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
          Then JANELA_DIALOG_DESABILITA=True
       EndIf
       Ver_Memo("Observacoes",08,01,15,76,"Observa‡”es")
       Moveto TabAnt 
       Down
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         Moveto "\\Sistemas\\CheqRec\\ChequeI"
         Moveto [Valor]   VSVRCHEQUES=ImageCSum()

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

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

Moveto "DupNotas"    

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

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

  SetaCorRegistro("Editar")
  While True

    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

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

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

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

Moveto "DupNotas" 

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

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

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

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

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

 EndWhile

EndProc ; (DIGNOTAS)
;*******************************************************************************
;* Rotina para Ver Calculo do Custo                                            *
;*******************************************************************************
Proc Dados_Cliente()
Private TabTemp

TabTemp=Table()
If TabTemp="Duplic"
  Then UnlockRecord
       Formkey
       IsLockRecord()
  Else Formkey
EndIf
               
Moveto "\\Sistemas\\Cadastro\\Destinat"
PickForm "13"
Moveto [Codigo]
Locate [Duplic->Codigo do Destinatario]
If Retval
  Then COD=[CODIGO]
       Prompt " Esc=Retornar  "
       Wait Field 
        Until "ESC"
       [CODIGO]=COD 
  Else Mensagem("Cliente nÆo cadastrado !")
EndIf

FormKey
Moveto "Duplic"
FormKey

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

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

Moveto "\\Sistemas\\CtaRec\\DupBaixa"
While RecordStatus("New")=False
   VROLD=[Valor do Recebimento]
   JSOLD=[Valor do Juros]
   DSOLD=[Valor do Desconto]
   VCOLD=[Valor da Comissao]
   CHAVEI=8
   CONTA()
   TIT()

   MSG="Excluiu Ctarec NL/Bx: "+[Numero do Lancamento]+"/"+[Sequencia da Baixa]+" Docto: "
   MSG=MSG+[Duplic->Codigo do Documento]+"/"+[Duplic->Numero do Documento]
   Grava_Logt("#","ExclCRec",MSG)
   Del
EndWhile

Moveto "\\Sistemas\\CtaRec\\DupNotas"
While RecordStatus("New")=False
   Del
EndWhile

Moveto "\\Sistemas\\CheqRec\\ChequeI"
While RecordStatus("New")=False
   Del
EndWhile
Moveto "\\Sistemas\\CheqRec\\ChequeC"
Moveto [Numero do Lancamento]
Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
If RetVal
   Then Del
EndIf
Moveto "\\Sistemas\\CtaRec\\Duplic"

MSG="Excluiu Ctarec NL: "+[Numero do Lancamento]+" Docto: "
MSG=MSG+[Codigo do Documento]+"/"+[Numero do Documento]
Grava_Logt("#","ExclCRec",MSG)
Del
EndProc  ; (EXCLUSAO)

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

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

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


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


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

;;;;;Valor Recebido - Juros+Descontos
;;;;;WCSW_BAIXA=Round(WCSW_BAIXA-((VROLD-JSOLD)+DSOLD),2)

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

EndSwitch

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

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

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


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

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

Return True
EndProc

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

TIPO_CARREG=""
Moveto [Numero_Carregamento]
Ativa_Lookup()
Moveto [Numero_Carregamento]
Locate [DupBaixa->Numero_Carregamento]
If RetVal
   Then TIPO_CARREG=[Tipo_Carregamento]
EndIf
KeyPress "Esc"

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

While True
  Switch
  Case CHAVEI=0:
       WB=1
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\DupBaixa->Lancamento Conta Corrente],
              [\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
       If Not RetVal
          Then MSG=    "Lan‡amento no Caixa/Banco n„o encontrado p/ esta Baixa !//"
               MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
               MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o sera efefuado !//"
               MSG=MSG+"Talvez algum outro erro gerou este problema !//"
               MSG=MSG+"Se necess rio exclua esta Baixa e fa‡a-a novamente !"
               Mensagem(MSG)
               QuitLoop
          Else If [Sistema Gerador       ]<>"CR" Or
                  [Empresa Gerador       ]<>[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa] Or
                  [Lancamento Gerador    ]<>[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento] Or
                  [Sequencia Gerador     ]<>[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa] Or
                  [Codigo do Documento   ]<>[\Sistemas\CtaRec\Duplic->Codigo do Documento] Or
                  [Numero do Documento   ]<>[\Sistemas\CtaRec\Duplic->Numero do Documento]
                  Then MSG=    "Movimento no Caixa/Banco n„o corresponde a esta Baixa !//"
                       MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
                       MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o sera efefuado !//"
                       MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                       MSG=MSG+"Se necess rio exclua esta Baixa e fa‡a-a novamente !"
                       Mensagem(MSG)
                       QuitLoop
               EndIf
               WB=0
               [Valor                 ]=[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
               [Valor do Desconto     ]=[\Sistemas\CtaRec\DupBaixa->Valor do Desconto   ]
               [Valor do Juros        ]=[\Sistemas\CtaRec\DupBaixa->Valor do Juros      ]
               [Codigo do Documento   ]=[\Sistemas\CtaRec\Duplic->Codigo do Documento]
               [Numero do Documento   ]=[\Sistemas\CtaRec\Duplic->Numero do Documento]
               [Codigo do EmitDest    ]=[\Sistemas\CtaRec\Duplic->Codigo do Destinatario]
               [Codigo Plano_Conta    ]=[\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta]
               If [DupBaixa->Data do Pagamento]=[Duplic->Data de Emissao]
                  Then [Tipo do Lancamento    ]="I"
                  Else [Tipo do Lancamento    ]="J"
               EndIf
               [Codigo CCusto         ]=[\Sistemas\CtaRec\DupBaixa->Codigo CCusto ]
               [Codigo do Historico   ]=[\Sistemas\CtaRec\DupBaixa->Codigo do Historico]
               [Descricao do Historico]=[\Sistemas\CtaRec\DupBaixa->Descricao do Historico]
               If IsBlank([Descricao do Historico])
                  Then [Codigo do Historico   ]=""
                       [Descricao do Historico]="REC. "+[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                                                "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]
               EndIf
               UnLockRecord

               If Atualiza_SaldoConta()
                  Then [Entradas]=([Entradas]-VROLD)+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
                       UnLockRecord
               EndIf        

               Moveto "\\Sistemas\\CtaRec\\DupBaixa"
               [Lancamento Conta Corrente]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
       EndIf
  Case CHAVEI=1:
       WB=0
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       While True
         End
         If [Numero do Lancamento]=""
            Then NLANCMC="000001"
            Else NLANCMC=ALINHM(StrVal(NumVal([Numero do Lancamento])+1),6)
         EndIf
         Down
         [Numero do Lancamento]=NLANCMC
         [Codigo da Conta     ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Conta   ]
         If Not IsLockRecord()
            Then QuitLoop
            Else Del
         EndIf
       EndWhile
       [Codigo da Empresa     ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa ]
       [Tipo de Operacao      ]="07"
       [Data                  ]=[\Sistemas\CtaRec\DupBaixa->Data do Pagamento ]
       [Valor                 ]=[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
       [Valor do Desconto     ]=[\Sistemas\CtaRec\DupBaixa->Valor do Desconto   ]
       [Valor do Juros        ]=[\Sistemas\CtaRec\DupBaixa->Valor do Juros      ]
       [Codigo do Documento   ]=[\Sistemas\CtaRec\Duplic->Codigo do Documento]
       [Numero do Documento   ]=[\Sistemas\CtaRec\Duplic->Numero do Documento]
       [Sistema Gerador       ]="CR"
       [Empresa Gerador       ]=[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa]
       [Lancamento Gerador    ]=[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento]
       [Sequencia Gerador     ]=[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa]
       [Codigo do EmitDest    ]=[\Sistemas\CtaRec\Duplic->Codigo do Destinatario]
       [Codigo Plano_Conta    ]=[\Sistemas\CtaRec\DupBaixa->Codigo Plano_Conta ]
       If [DupBaixa->Data do Pagamento]=[Duplic->Data de Emissao]
          Then [Tipo do Lancamento    ]="I"
          Else [Tipo do Lancamento    ]="J"
       EndIf
       [Codigo CCusto         ]=[\Sistemas\CtaRec\DupBaixa->Codigo CCusto ]
       [Codigo do Historico   ]=[\Sistemas\CtaRec\DupBaixa->Codigo do Historico]
       [Descricao do Historico]=[\Sistemas\CtaRec\DupBaixa->Descricao do Historico]
       If IsBlank([Descricao do Historico])
          Then [Codigo do Historico   ]=""
               [Descricao do Historico]="REC. "+[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                                        "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]
       EndIf
       Controle_Dia()
       UnLockRecord

       If Atualiza_SaldoConta()
          Then [Entradas]=[Entradas]+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
               UnLockRecord
       EndIf

       Moveto "\\Sistemas\\CtaRec\\DupBaixa"
       [Lancamento Conta Corrente]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
       UnLockRecord
  Case CHAVEI=8:
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\DupBaixa->Lancamento Conta Corrente],
              [\Sistemas\CtaRec\DupBaixa->Codigo da Conta]
       If Not RetVal
          Then If Not Exclusao_Cabeca
                  Then MSG=    "Lan‡amento no Caixa/Banco n„o encontrado p/ esta Baixa !//"
                       MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
                       MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o sera efefuado !//"
                       MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                       MSG=MSG+"Deseja Excluir esta Baixa assim mesmo ?"
                       ConfGeral(MSG)
                       If OK="S"
                          Then WB=0
                          Else WB=1
                       EndIf
                  Else WB=0
               EndIf
          Else If [Sistema Gerador       ]<>"CR" Or
                  [Empresa Gerador       ]<>[\Sistemas\CtaRec\DupBaixa->Codigo da Empresa] Or
                  [Lancamento Gerador    ]<>[\Sistemas\CtaRec\DupBaixa->Numero do Lancamento] Or
                  [Sequencia Gerador     ]<>[\Sistemas\CtaRec\DupBaixa->Sequencia da Baixa] Or
                  [Codigo do Documento   ]<>[\Sistemas\CtaRec\Duplic->Codigo do Documento] Or
                  [Numero do Documento   ]<>[\Sistemas\CtaRec\Duplic->Numero do Documento]
                  Then MSG=    "Lan‡amento no Caixa/Banco n„o corresponde a esta Baixa !//"
                       MSG=MSG+"Verificar no Caixa/Banco se o mes n„o foi fechado !//"
                       MSG=MSG+"Neste caso o estorno no Caixa/Banco n„o sera efefuado !//"
                       MSG=MSG+"Talvez algum outro erro gerou este problema !//"
                       MSG=MSG+"Deseja Excluir esta Baixa assim mesmo ?"
                       ConfGeral(MSG)
                       If OK="S"
                          Then WB=0
                          Else WB=1
                       EndIf
                  Else WB=0
                       If Atualiza_SaldoConta()
                          Then [Entradas]=[Entradas]-VROLD
                               UnLockRecord
                               Moveto "\\Sistemas\\CtaCor\\MovCont"
                               Del
                       EndIf
               EndIf
       EndIf
  EndSwitch
  QuitLoop
EndWhile

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

If WB=0
   Then Return True
   Else Return False
EndIf

EndProc ; (CONTA)

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

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        If Opcao_Ler_Cheque = True
           Then If AchouPessoa
                   Then Campo ="DataV"
                   Else Campo ="TipoEmit"
                Endif   
                VSD_Situacao   ="EM ABERTO"
           Else Campo ="CBanco"
        EndIf
        If CHAVEB=1
           Then VSD_Situacao="EM ABERTO"
           Else If VSD_Situacao<>"EM ABERTO"
                   Then FastMsg("Altera‡„o n„o permitida!")
                        CancelDialog
                EndIf        
        EndIf
EndIf      

Temp=True
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9:
           Temp=False
      Case Evento["KeyCode"] = 4:
           If COPIOU_REGISTRO and CHAVEB=1
              Then CopyFromArray REGISTRO
                   [Numero do Lancamento]=NLANCC
                   [Sequencia do Cheque ]=NITEMCH
                   Ler_Gravar_Cheque("Ler")
           EndIf
           RefreshDialog
      Case Evento["KeyCode"] = -59:
           If Campo="CBanco" Or
                    Campo="Cidade" Or
                    Campo="UF"
              Then
                    Dynarray WinArray5[]
                    Window Handle Dialog to JANELA                 
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

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

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

                    echo Normal
                    echo off

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

                    Moveto "\\Sistemas\\CheqRec\\ChequeI"
                    RefreshDialog
           EndIf
           If Campo="TipoEmit"
              Then ShowPopup " Emitente " @ 14,42
                      "~P~roprio" : " O Proprio Cliente" : "PROPRIO",
                      "~T~erceiro": " De Terceiro": "TERCEIRO"
                   EndMenu
                    To MenuVar
                       If MenuVar<>"Esc"
                          Then VSD_TipoEmit=MenuVar
                       EndIf
                   RefreshDialog
           EndIf
           Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEB=0
               Then If QuerExcluir("")
                       Then CHAVEB=8
                            CancelDialog
                    EndIf
            EndIf
      Case Evento["KeyCode"] = -81:
             VSD_CBanco   =ControlValue("CBanco")
             VSD_NCheque  =ControlValue("NCheque")
             VSD_Nome     =ControlValue("Nome")
             VSD_Agencia  =ControlValue("Agencia")
             VSD_CCorrente=ControlValue("CCorrente")
             VSD_TipoEmit =ControlValue("TipoEmit")
             VSD_Cidade   =ControlValue("Cidade")
             VSD_UF       =ControlValue("UF")
             VSD_DataV    =ControlValue("DataV")
             VSD_Valor    =ControlValue("Valor")
             VSD_Situacao =ControlValue("Situacao")
             VSD_Obs      =ControlValue("Obs")
             VSD_CPF      =ControlValue("CPF")

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

             If Pode_Gravar
                Then Ler_Gravar_Cheque("Gravar")
                     CancelDialog
             EndIf
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="CBanco":
                  If QuerDesfazer("")
                     Then If CHAVEB=1
                             Then Del
                             Else Undo
                          EndIf
                          CancelDialog            
                  EndIf
             Case Campo="Agencia"     : Campo="CBanco"
             Case Campo="CCorrente"   : Campo="Agencia"
             Case Campo="NCheque"     : Campo="CCorrente"
             Case Campo="TipoEmit"    : Campo="NCheque"
             Case Campo="CPF"         : Campo="TipoEmit"
             Case Campo="Nome"        : Campo="CPF"
             Case Campo="Cidade"      : Campo="Nome"
             Case Campo="UF"          : Campo="Cidade"
             Case Campo="DataV"       : Campo="UF"
             Case Campo="Valor"       : Campo="DataV"
             Case Campo="Obs"         : Campo="Valor"
           EndSwitch

           Temp=False
      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 "\\Sistemas\\CheqRec\\ChequeI"
                                  [Codigo_Banco]=VSD_CBanco
                                  Campo="Agencia" 
                             Else Mensagem("Banco n„o Cadastrado !")
                                  VSD_CBanco=""
                                  VSD_NBanco=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                  EndIf
             Case Campo="Agencia":
                  VSD_Agencia=ControlValue("Agencia")
                  Campo="CCorrente"
             Case Campo="CCorrente": Campo="NCheque"
                  VSD_CCorrente=ControlValue("CCorrente")

                  AchouPessoa=False
                  If CHAVEB=1 And
                     Not IsBlank(VSD_AGENCIA) And
                     Not IsBlank(VSD_CCORRENTE)
                     Then Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                          Moveto [Codigo_Banco]
                          Locate VSD_CBANCO, VSD_AGENCIA, VSD_CCORRENTE
                          If RetVal
                             Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
                                  VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                  VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                  VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                  AchouPessoa=True
                                  If CLIENTE_CPF=VSD_CPF
                                     Then VSD_TipoEmit="PROPRIO"
                                     Else VSD_TIPOEmit="TERCEIRO"
                                  EndIf
                                  
                          EndIf                       
                          Moveto "\\Sistemas\\CheqRec\\ChequeI"
                  EndIf   
             Case Campo="NCheque":
                  VSD_NCheque=ControlValue("NCheque")
                  If CHAVEB=1 And AchouPessoa
                     Then Campo="DataV"
                     Else Campo="TipoEmit"
                  EndIf   
             Case Campo="TipoEmit":
                  VSD_TipoEmit=ControlValue("TipoEmit")
                  If Not IsBlank(VSD_TipoEmit)
                     Then If CHAVEB=1 And VSD_Nome="" And VSD_TipoEmit="PROPRIO"
                             Then VSD_CPF   =CLIENTE_CPF
                                  VSD_Nome  =CLIENTE_NOME
                                  VSD_Cidade=CLIENTE_CIDADE
                                  VSD_UF    =CLIENTE_UF
                                  Campo="DataV"
                             Else Campo="CPF"
                          EndIf
                  Endif
             Case Campo="CPF":
                  VSD_CPF=ControlValue("CPF")
                  wok=true
                  If Not IsBlank(VSD_CPF)
                     Then If Tipo_CGC_CPF(VSD_CPF)<>"CGC" And
                             Tipo_CGC_CPF(VSD_CPF)<>"CPF"
                             Then Mensagem("CPF/CGC Invalido !")
                                  wok=false
                          EndIf
                  EndIf
                  If wok
                     Then Campo="Nome"
                          If CHAVEB=1 And 
                             Not AchouPessoa And 
                             Not IsBlank(VSD_CPF)
                             Then Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                                  Moveto [CPF]
                                  Locate IndexOrder by "Ind_CPF1" VSD_CPF
                                  If RetVal
                                     Then VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                          VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                          VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                          Campo="DataV"
                                  EndIf                       
                                  Moveto "\\Sistemas\\CheqRec\\ChequeI"
                          EndIf   
                  EndIf
             Case Campo="Nome":
                  VSD_Nome=ControlValue("Nome")
                  Campo="Cidade"
             Case Campo="Cidade":
                  VSD_Cidade=ControlValue("Cidade")                      
                  If IsBlank(VSD_Cidade) 
                     Then Campo="Cidade"                     
                     Else Campo="UF"     
                  EndIf 
             Case Campo="UF":
                  VSD_UF=ControlValue("UF")
                  If IsBlank(VSD_UF) 
                     Then Campo="UF"                     
                     Else Campo="DataV"     
                  EndIf                  
                  If Not IsBlank(VSD_Cidade)
                     Then Moveto [Cidade]
                          Ativa_Lookup()
                          Moveto [Cidade]
                          Locate VSD_Cidade,VSD_UF
                          If RetVal
                             Then VSD_Cidade=[Cidade ]
                                  VSD_UF=[UF]
                                  KeyPress "ESC"                                  
                                  [Cidade]=VSD_Cidade
                                  [UF]=VSD_UF                                
                             Else Mensagem("Cidade/UF n„o Cadastrada !")
                                  VSD_Cidade=""
                                  Campo="Cidade"
                                  KeyPress "ESC"
                          EndIf
                          Echo Off                  
                  EndIf
             Case Campo="DataV":
                  VSD_DataV=ControlValue("DataV")
                  If Not IsBlank(VSD_DataV)
                     Then Campo="Valor"
                  EndIf
             Case Campo="Valor":
                  VSD_Valor=ControlValue("Valor")
                  If Not IsBlank(VSD_Valor)
                     Then Campo="Obs"
                  EndIf
             Case Campo="Obs":
                  VSD_Obs=ControlValue("Obs")
                  Ler_Gravar_Cheque("Gravar")
                  CancelDialog
           EndSwitch

           Temp=False
   EndSwitch
EndIf
SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="CBanco"      Or
   Campo="TipoEmit"    Or
   Campo="Cidade"      Or
   Campo="UF"          Or
   Campo="Situacao"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf
If CHAVEB=0
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf
If CHAVEB=1 And COPIOU_REGISTRO
   Then TECLA=TECLA+"Ctrl+D=Copiar  PgDn=Finalizar  "
EndIf

Switch
  Case Campo="*******":
       MSGCAMPO=""
  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  ; (Geral_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Ler_Gravar_Cheque(Opcao)
Private Opcao,CDPessoaNova,wi

Switch
  Case Opcao="Ler":
       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_Situacao =[Situacao            ]
       VSD_CPF      =[CPF                 ]
  Case Opcao="Gravar":
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [CPF                 ]=VSD_CPF
       [Tipo_Emitente       ]=VSD_TipoEmit
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Data Vencimento     ]=VSD_DataV
       [Valor               ]=VSD_Valor
       [Observacao do Cheque]=VSD_Obs
       [Sistema Origem      ]="CR"
       [Lancamento Origem   ]=[Duplic->Numero do Lancamento]
       [Tipo do Documento   ]=[Duplic->Codigo do Documento ]
       [Numero do Documento ]=[Duplic->Numero do Documento ]
       [Situacao            ]=VSD_Situacao
       [Codigo_Cliente      ]=[Duplic->Codigo do Destinatario]
       If [Situacao]<>"LIQUIDADO"
          Then [Data_Liquidado]=BlankDate()
       EndIF
       If [Situacao]="LIQUIDADO" And
          SITUACAO_CHEQUE<>"LIQUIDADO"
          Then [Data_Liquidado]=Today()
       EndIf
       
       If CHAVEB=1 
          Then [Data_Entrada  ]=Today()
               Controle_Dia() 
       EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True

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

       Moveto "\\Sistemas\\CheqRec\\ChequeI"
EndSwitch
EndProc  ; (Ler_Gravar_Cheque)

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

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

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

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

Showdialog "Dados do Cheque" Proc "Geral_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","ENTER","ESC","ClearArea","PGDN","Ditto"
     @ 09,2 height 13 width 76

   Label  @ 0,00 "Situacao" for "Situacao"
   Accept @ 1,01  Width 15 "A12" picture "EM ABERTO,LIQUIDADO,PRORROGADO,SEM FUNDO" Tag "Situacao" to VSD_Situacao

   Label  @ 0,16 "N§ Banco Nome Banco" for "CBanco"
   Accept @ 1,17  Width 8 "A4" picture "!*!" Tag "CBanco" to VSD_CBanco

   Accept @ 1,26  Width 28 "A20" picture "!*!" Tag "NBanco" to VSD_NBanco

   Label  @ 0,54 "Agencia" for "Agencia"
   Accept @ 1,55  Width 9 "A6" picture "!*!" Tag "Agencia" to VSD_Agencia

   Label  @ 2,00 "C/C" for "CCorrente"
   Accept @ 3,01  Width 15 "A10" picture "!*!" Tag "CCorrente" to VSD_CCorrente

   Label  @ 2,16 "N§ Cheque" for "NCheque"
   Accept @ 3,17  Width 13 "A10" picture "!*!" Tag "NCheque" to VSD_NCheque

   Label  @ 2,54 "Emitente" for "TipoEmit"
   Accept @ 3,55  Width 11 "A8" picture "PROPRIO,TERCEIRO" Tag "TipoEmit" to VSD_TipoEmit

   Label  @ 4,00 "CPF/CGC" for "CPF"
   Accept @ 5,01  Width 21 "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,31 "Dt Vencto " for "DataV"
   Accept @ 7,32  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataV" to VSD_DataV

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

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

  @ 10,01 ?? " Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+" "+VSDGU_HORA+" "+VSDGU_CONTROLE
  PaintCanvas Attribute 7 10, 01, 10, 72

Enddialog
Mouse Show
If CHAVEB=8
   Then Del
EndIf
EndProc  ; (Digita_Cheque)

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

While Not EOT()
  Switch
    Case OPCAODIVERSAS="Codigo da Conta":
         wcg=wcg+1
         Opcoes[wcg]=Completa([Descricao da Conta],31," ")+[Codigo da Conta]
  EndSwitch
  Skip
EndWhile
KeyPress "ESC"
Moveto Field nomecampo
EndProc    ; (Monta_Opcoes)

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

If DynArraySize(Opcoes)=0
   Then Return False
EndIf

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

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

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

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

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

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

Switch
  Case OPCAODIVERSAS="Codigo da Conta"   : LJ=37 nc=1
EndSwitch

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

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

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

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

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

TECLA=""
MSG_CAMPO=""
Temp=True

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

If Disparo="OPEN" Then AoCriarShowDialog() EndIf

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

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

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

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

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

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

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

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

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

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

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "

Switch
  Case Campo="TG_OPDTEM"       : MSGCAMPO="Defina a op‡„o"
                                 TECLA="Barra de Espa‡o=Marca/Desmarca  "
  Case Campo="TG_PARCELA"      : MSGCAMPO="Informe a quantidade de desdobramentos a mais que deseja gerar"
  Case Campo="TG_DOCTO"        : MSGCAMPO="Informe o documento "
  Case Campo="TG_DTEMID"       : MSGCAMPO="Informe a emissäo "
  Case Campo="TG_DTREFE"       : MSGCAMPO="Informe o vencimento "
  Case Campo="TG_VALOR"        : MSGCAMPO="Informe o valor "

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

  Case Campo="TG_OPDOCTO"      : MSGCAMPO="Exemplos: 999999/A, 999999/9, MM/AAAA ou 9/9"
       TECLA=TECLA+Chr(27)+Chr(26)+"=Selecionar  "
  Case Campo="TG_VENCIMENTOS"  : MSGCAMPO="Vencimentos "
       If DynArraySize(Array_Vencimentos)>0
          Then TECLA=TECLA+"Del=Excluir  Enter=Editar  "+Chr(27)+""+Chr(26)+"=Selecionar  "
       EndIf

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

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

RefreshDialog
Return TEMP
EndProc  ; (Sd_Dialog)

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

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

VSDGOPDOCTO=1
VSD_I_SEQ=1

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

SD=1
INICIO_DIALOG=True

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

    Frame Single From 00,00 to 14,54

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

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

EndProc  ;(Inicial)

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

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

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

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

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

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

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

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

  EndDialog
  Mouse Show
  If Not RetVal
		 Then QuitLoop
  EndIf

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

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

SD=1
EndProc    ; (Vencimento)

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

SD=3
INICIO_DIALOG=True

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

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

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

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

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

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

SD=1
EndProc  ;(Quant)

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

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

Release Vars Array_Vencimentos
DynArray Array_Vencimentos[]

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

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

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

CONT =2

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

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

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

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

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

   CONT=CONT+1
 EndWhile

EndProc  ;(Datas)

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

Ok=False

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

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

Return Ok
EndProc  ;(Ver_Data)

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

MSGDISPOSITIVO="Recibo"
DispositivoI("RCB")

If OK="" 
   Then Return
EndIf

clieant="****"
ULTIMA_BAIXA=True

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

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

Moveto "Dupbaixa"
Moveto [Sequencia da Baixa]

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



;ArqImp="Recibo.txt"
;Deleta_Arquivo(Arqimp)
;Sleep 700
;
;Play PARAM_RELAT
;
;ImpriArq(ArqImp)
EndProc

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

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

Moveto "Duplic"
KeyPress "F7"

Return Result
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
Inicia_Registro()
Digita_Baixa()
Moveto "\\Sistemas\\CtaRec\\DupBaixa"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

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

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

If CHAVEI=1 Then Controle_Dia() EndIf

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

DIGITA_CHEQUE()

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

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

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

If CHAVEB=0 Then Controle_Dia() EndIf

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

DIGITA_NOTAS()

If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

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

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

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Private CampAnt
COD_EMPRESA=[Duplic->Codigo da Empresa]
DIGITAC=True
Tecla_Funcao=-10

While DIGITAC

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

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

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

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

  If CHAVEC=1
     Then Controle_Dia()
  EndIf

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

    Switch
      Case Tecla_Funcao=-10  : DIGITAC()
      Case Tecla_Funcao="F11" or 
           Tecla_Funcao=-133 : Dados_Cliente()
      Case Tecla_Funcao="F8" : 
           Moveto "\\Sistemas\\CtaRec\\Duplic"
           Moveto [Pag_2]
           Origem_Disparo="Duplic"
           While True 
             CHAVEI()
             If CHAVEI=9
                Then If TITULOS_SOBAIXAS
                        Then If Tecla_Funcao<>"F6" And 
                                Tecla_Funcao<>"F9" And 
                                Tecla_Funcao<>-115 And  
                                Tecla_Funcao<>-116 And
                                Tecla_Funcao<>-133
                                Then Tecla_Funcao=""
                             EndIf   
                     EndIf
                     QuitLoop
             EndIf
             
             If TITULOS_SOANOTACOES
                Then  If Field()="Sequencia da Baixa"
                         Then Del
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
             EndIf
             Controla_EdicaoI()

           EndWhile

      Case Tecla_Funcao="F6": 
           Moveto "\\Sistemas\\CtaRec\\Duplic"
           Moveto [Numero_Carregamento_Cheq]
            
           While true

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

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

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

              Switch
              Case RetVal=-94 : MsgTeclasPadraoIt2()
              Case Retval="F1":
                   CONSULTAF1()
              Case RetVal="F5": 
                   TabAnt=Table()
                   Moveto "Duplic"
                   If TITULOS_SOBAIXAS Or TITULOS_SOANOTACOES Or TITULOS_EDITBX
                      Then JANELA_DIALOG_DESABILITA=True
                   EndIf
                   Ver_Memo("Observacoes",08,01,15,76,"Observa‡”es")
                   Moveto TabAnt     
              Case RetVal="F8" Or RetVal="F9" Or 
                   RetVal=-115 Or RetVal=-116 :
                   Moveto "\\sistemas\\cheqrec\\chequei"
                   Tecla_Funcao=RetVal
                   CHAVEB=9
                   QuitLoop
              Case Retval="PGDN":
                   CHAVEB=9
                   Tecla_Funcao=""
                   DIGITAC =False
                   QuitLoop
              Case Retval="ESC":
                   If TITULOS_SOBAIXAS
                      Then [Numero_Carregamento_Cheq]=""
                   EndIf
                   If TITULOS_SOANOTACOES
                      Then Tecla_Funcao="F9"
                      Else Tecla_Funcao="F8"
                   EndIf
                   CHAVEB=9
                   QuitLoop
              Case Retval="ENTER":
                   CHAVEB=0
                   QuitLoop
              EndSwitch
            EndWhile
            
            If TITULOS_SOANOTACOES
               Then TabAnt=Table()
                    Moveto "Duplic"              
                    [Numero_Carregamento_Cheq]=""
                    Moveto TabAnt
            EndIf 
        
            If CHAVEB=9
               Then TabAnt = Table()
                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    If IsBlank([Numero Lancamento Cheque])
                       Then [Numero_Carregamento_Cheq]=""
                    EndIf
                    Moveto TabAnt
                    Loop
            EndIf
            
            Moveto "\\Sistemas\\CheqRec\\ChequeC"
            Moveto [Numero do Lancamento]
            If IsBlank([\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque])
               Then CH_Ok=False
               Else Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then CH_Ok=True
                       Else CH_Ok=False
                    EndIf
            EndIf
            If Not CH_OK                     
               Then End
                    NLANCC=[Numero do Lancamento]
                    Down
                    NLANCC=NLANCC+1
                    [Numero do Lancamento]=NLANCC
                    [Codigo da Empresa ]=[\Sistemas\CtaRec\Duplic->Codigo da Empresa ]
                    [Data de Entrada   ]=Today()
                    Controle_Dia()
                    UnLockRecord

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

            Moveto "\\Sistemas\\CheqRec\\ChequeI"
            While True                                      
              CHAVEB()
              If CHAVEB=9
                 Then QuitLoop
              EndIf
              If CHAVEB=13
                 Then Loop
              EndIf               
              If TITULOS_SOANOTACOES
                 Then If Field()="Sequencia do Cheque"
                         Then Del
                              FastMsg("Inclus„o n„o permitida !")
                              Loop
                      EndIf
              EndIf                 
              Controla_EdicaoB()      
            EndWhile     
                  
            If RecordStatus("New")
               Then CHAVEI=1
                    Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    Moveto [Numero do Lancamento]
                    Locate [\Sistemas\Ctarec\Duplic->Numero Lancamento Cheque]
                    If RetVal
                       Then Del
                    EndIf
                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    [Numero Lancamento Cheque]=BlankNum()
                    [Numero_Carregamento_Cheq]=""
                    Moveto "\\sistemas\\cheqrec\\chequei"                    
                    ;UnLockRecord
               Else CHAVEI=0
                    Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    [Codigo                  ] = [\Sistemas\Ctarec\Duplic->Codigo do Destinatario ]
                    [Razao Social            ] = [\Sistemas\Ctarec\Duplic->Nome Fantasia EmitDest ]
                    [Codigo do Representante ] = [\Sistemas\CtaRec\Duplic->Codigo do Representante]
                    [Observacao do Lancamento] = "REF. CR/"+
                            [\Sistemas\CtaRec\Duplic->Numero do Lancamento]+" "
                            +[\Sistemas\CtaRec\Duplic->Tipo do Documento]+
                            "/"+[\Sistemas\CtaRec\Duplic->Numero do Documento]+" - "+
                            [\Sistemas\CtaRec\Duplic->Nome Fantasia EmitDest]
                    [Sistema Gerador         ] = "CR"
                    [Numero Docto Gerador    ] = [\Sistemas\Ctarec\Duplic->Numero do Lancamento]
                    [Numero_Carregamento_Orig] = [\Sistemas\Ctarec\Duplic->Numero_Carregamento_Cheq]
                    UnLockRecord
                    
                    Moveto "\\sistemas\\cheqrec\\chequei"
            EndIf

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

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

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

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

  OtherWise: CAMPOS_OK=True

EndSwitch  
Return CAMPOS_OK
EndProc   ;  (Checagem_Pagina)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999"   EndIf
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""     EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""        EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""      EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""        EndIf

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

CoEdit "P_Duplic","\\Sistemas\\Cadastro\\Destinat","Duplic"
Moveto "Duplic"
PickForm "4"
;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf

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

Moveto "Duplic"
PickForm "3"

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

WCSW_SDINI      =BlankNum()
WCSW_SDATU      =BlankNum()

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

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

FORM_CONTATO =""

ULTDATA=BlankDate()

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

Origem_Disparo=""

Switch
  Case TITULOS_BAIXASII:
    Play "DupBxII"
  Case TITULOS_SOANOTACOES:
    Play "DupBxII"    
  OtherWise:
    While True
      vsvrcheques=BlankNum()
    
      Switch
         Case TIPO_TRABALHO=0:
              CHAVEC()
         Case TIPO_TRABALHO=1:
              CHAVEC2()
         Case TIPO_TRABALHO=2:
              CHAVEC3()
      EndSwitch
      If CHAVEC=9
         Then QuitLoop
      EndIf
      If CHAVEC=5
         Then Loop
      EndIf
      If CHAVEC=6
         Then If OPCAO_FORM="3"
                 Then PickForm "3"
                 Else PickForm "4"
              EndIf
              Loop
      EndIf
      Controla_EdicaoC()
    EndWhile
EndSwitch
Do_It!
ClearAll
Release Vars All
Release Procs All
