;* 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: 09/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 16/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Pl.Conta Debito/Credito

;*******************************************************************************
;* Rotina para Pegar posicao Form MultiRecords                                 *
;*******************************************************************************
Proc PegaPosForm()
Private wc,nt,nf,nc,pok

If Not FormType("MultiRecord")
   Then Return
EndIf
If Not IsAssigned(Array_PosForm)
   Then DynArray Array_PosForm[]
EndIf

nt=table()
If Len(nt)>9
   Then wc=1
        While wc>0
          wc=SearchFrom("\\",nt,1)
          nt=RTrim(SubStr(nt,wc+1,50))
        EndWhile
EndIf
nf =Form()
nc =Field()
wc =1
pok=false
While wc<=DynArraySize(Array_PosForm)
  If RTrim(SubStr(Array_PosForm[wc],01,8))=nt And
     RTrim(SubStr(Array_PosForm[wc],10,2))=nf
     Then pok=true
          QuitLoop
  EndIf
  wc=wc+1
EndWhile
Array_PosForm[wc]=Completa(nt,08," ")+"|"+
                  Completa(nf,02," ")+"|"+
                  Completa(nc,25," ")+"|"+
                  AlinhM(StrVal(rowno()),02)+"|"+
                  AlinhM(StrVal(recno()),07)
EndProc

;*******************************************************************************
;* Rotina para Setar posicao Form MultiRecords                                 *
;*******************************************************************************
Proc SetaPosForm()
Private wc,nt,nf,nc,pok,nrv,prv

If Not FormType("MultiRecord")
   Then Return
EndIf
If Not IsAssigned(Array_PosForm)
   Then DynArray Array_PosForm[]
        Return
EndIf

nt=table()
If Len(nt)>9
   Then wc=1
        While wc>0
          wc=SearchFrom("\\",nt,1)
          nt=RTrim(SubStr(nt,wc+1,50))
        EndWhile
EndIf
nf =Form()
nc =Field()
wc =1
pok=false
While wc<=DynArraySize(Array_PosForm)
  If RTrim(SubStr(Array_PosForm[wc],01,8))=nt And
     RTrim(SubStr(Array_PosForm[wc],10,2))=nf
     Then pok=true
          QuitLoop
  EndIf
  wc=wc+1
EndWhile
If pok And
   NumVal(SubStr(Array_PosForm[wc],42,07))>0 And
   NumVal(SubStr(Array_PosForm[wc],39,02))>0
   Then If NImageRecords()>1
           Then nrv=NumVal(SubStr(Array_PosForm[wc],42,07))
                prv=NumVal(SubStr(Array_PosForm[wc],39,02))
                If NImageRecords()<nrv Then nrv=NImageRecords() EndIf
                If prv>NImageRecords() Then prv=NImageRecords() EndIf
                setrecordposition nrv prv
        EndIf
        Moveto Field RTrim(SubStr(Array_PosForm[wc],13,25))
        Array_PosForm[wc]=Completa(nt,08," ")+"|"+
                          Completa(nf,02," ")+"|"+
                          Completa(nc,25," ")+"|"+
                          AlinhM("0",02)+"|"+
                          AlinhM("0",07)
EndIf
EndProc


;*******************************************************************************
;* Rotina para Setar Cor Registro                                              *
;*******************************************************************************
Proc SetaCorRegistro(Tipo)
Private Tipo

Switch
 Case Tipo="Editar" : SetHighLight Current Record 112 Field 46
 Case Tipo="Paginar": SetHighLight Current Record  78 Field 78
EndSwitch  

Endproc

;*******************************************************************************
;*  ROTINA PARA PAGINACAO DE TABELA EM FORM                                    *
;*******************************************************************************
Proc Pagina2(TabIda,Tipo)
Private TABIDA,TIPO
Mouse Show
If RecordStatus("New")=True
   Then Del
EndIf

tpform=TIPO
EDITAR="N"
EXCLUIR="N"
If RecordStatus("New")
   Then If TIPO="MT"
           Then MENSAGEM("Tabela sem Registros !")
        EndIf   
        Return
EndIf

Moveto TABIDA
If TIPO="MR"
   Then Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
          Case RetVal="PGUP":
               PgUp
        EndSwitch
   Else Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
          Case RetVal="UP":
               Return
        EndSwitch
EndIf

  ImageRights ReadOnly
  SetaCorRegistro("Paginar")


  If TIPO="MR"
     Then Prompt_SpeedBar(" Esc=Retornar  Enter=Editar  Del=Excluir  Ctrl+Z=Pesquisar  Alt+Z=Pr¢ximo")
     Else Prompt_SpeedBar(" Esc=Retornar  F9=Editar  Del=Excluir  Ctrl+Z=Pesquisar  Alt+Z=Pr¢ximo")
  EndIf

  wait table
    proc "wait_pagina"
    trigger "ALL"
    Message "ALL"
    Key "F1","F2","F9","ESC","ENTER","DEL","DOWN","UP","ZOOM","ZOOMNEXT","F35","FIELDVIEW"
  endwait
  If EDITAR="S" Or EXCLUIR="S"
     Then PegaPosForm()
  EndIf
  SetaCorRegistro("Editar")

ImageRights
ClearSpeedBar
EndProc


;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC()
PASSOU=False
While True
  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
  EndIf
  Moveto [Numero do Lancamento]

  SetaCorRegistro("Editar")
  While True

    TECLA=""

    If OPCAO_FORM="3"
         Then TECLA=TECLA+"F3=Ficha  F4=N§ Documento  "
         Else TECLA=TECLA+"F3=Rela‡„o  F4=N§ Documento  "
    EndIf

    Prompt TECLA
    SpeedBar "[Ý]":"ESC","~Esc~Sair":"ESC","~Enter~Novo":"ENTER","~F7~Navegar":"F7"

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F3","F4",
          -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

    If SubStr(RetVal,1,2)="-1"
       Then SYS_TECLA_ACIONADA=RetVal
            Seta_Tecla_Acionada()
            RetVal="ESC"
    EndIf

    Switch
    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
           If OPCAO_FORM="3"
              Then PAGINA2("Duplic","MR")
              Else PAGINA2("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//"
                          EndSwitch
                          Mensagem(MSG)
                  EndIf
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="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//"
                          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

             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 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 CHAVEC=1
                 End 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//"
                                         EndSwitch
                                         Mensagem(MSG)
                                 EndIf
                                 If 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

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

  If PASSOU
     Then [Tipo do Documento]=TIPODOC
          [Codigo da Empresa]=CODEMP
          Moveto [Numero do Documento]
     Else [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
          Moveto [Codigo da Empresa]
  EndIf

  While True

    TECLA= " Esc=Sair  F7=Paginar  "

    If OPCAO_FORM="3"
         Then TECLA=TECLA+"F3=Ficha  F4=N§ Lan‡amento "
         Else TECLA=TECLA+"F3=Rela‡„o  F4=N§ Boleta "
    EndIf

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F4","F3"

    Switch
    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
           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 Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="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//"
                          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

             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="3"
              Then PickForm "3"
              Else PickForm "4"
           EndIf
         EndWhile
         QuitLoop
    Case Retval="ESC":
         If Field()="Codigo da Empresa"
            Then CHAVEC=9
                 Del
                 Return
         EndIf
         If Field()="Tipo do Documento"
            Then [Tipo do Documento]=""
                 Moveto [Codigo da Empresa]

         EndIf
         If Field()="Numero do Documento"
            Then Moveto [Tipo do Documento]
         EndIf
    Case Retval="ENTER":
         Switch
           Case Field()="Codigo da Empresa":
                EMPRESA=[]
                Moveto [Tipo do Documento]
                Loop
           Case Field()="Tipo do Documento":
                Moveto [Numero do Documento]
                Loop
           Case Field()="Numero do Documento":
                EMPRESA =[Codigo da Empresa  ]
                TPDOCTO =[Tipo do Documento  ]
                NUMDOCTO=[Numero do Documento]
         EndSwitch
         PASSOU=True
         CODEMP= [Codigo da Empresa]
         TIPODOC=[Tipo do Documento]
         Del
         PickForm "4"
         Moveto [Codigo da Empresa]
         Locate IndexOrder by "IndDup1" EMPRESA,TPDOCTO,NUMDOCTO
         If RetVal
            Then CHAVEC=0
                 NLANC  =[Numero do Lancamento]
                 If Not IsLockRecord()
                    Then If (CHAVEC=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                            (CHAVEC=0 And Checa_Controle([Numero_Controle_Dia]))
                            Then Return
                         EndIf
                 EndIf
            Else Mensagem("Duplicata N„o Encontrada !")
         EndIf
         If OPCAO_FORM="3"
            Then PickForm "3"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC2)

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

While True

  End
  PgDn PgDn

  Moveto [Documento no Banco]

  While True

    TECLA= " Esc=Sair  F7=Paginar  "

    TECLA=TECLA+"F3=Rela‡„o  F4=N§ Lan‡amento "

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F4","F3"

    Switch
    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
           PAGINA("Duplic","MT")
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":

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

             OtherWise: QuitLoop
           EndSwitch
         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 RetVal
            Then CHAVEC=0
                 NLANC  =[Numero do Lancamento]
                 DOCTOBANCO = [Documento no Banco  ]
                 If Not IsLockRecord()
                    Then If (CHAVEC=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                            (CHAVEC=0 And Checa_Controle([Numero_Controle_Dia]))
                            Then Return
                         EndIf
                 EndIf
            Else Mensagem("N§ do Boleto N„o Encontrado !")
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (CHAVEC3)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes Carteira                              *
;*******************************************************************************
Proc DIGITAC()
Moveto "Duplic"
ClearSpeedbar
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 ]

While True
  TECLA=" Esc=Retornar  "

  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 TECLA=TECLA + "F1=Tabelas  "
  EndIf
  TECLA=TECLA+"F5=Obs  "
  If CHAVEC=0
     Then TECLA=TECLA+"F4=CalcBx  F6=Cheques  F8/=Baixas  Del=Excluir "
  EndIf

  If Field()="Codigo da Conta"
     Then Monta_Opcoes("Codigo da Conta","")
  EndIf

  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

  Prompt TECLA

  Wait Field
       Message MSGCAMPO
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F8","F6","F5","F4","DOWN"

  Switch
  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 Seleciona_Opcoes("Codigo da Conta","CR")
         Endif
  Case RetVal="F8" or RetVal="DOWN":
       If CHAVEC = 0
          Then DIGITENS=1
               QuitLoop
          Else Loop
       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
  Case RetVal="F5":
       ObservacaoC()
  Case RetVal="F6":
       If CHAVEC = 0
          Then DIGITENS=2
               QuitLoop
          Else Loop
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       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//"
                       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()
                       DIGITENS=0
                       DIGITAC =False
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa":
            If CHAVEC=0
               Then Undo
               Else Del
            EndIf
            DIGITENS=0
            DIGITAC =False
            QuitLoop
       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 DIGITENS=0
                            DIGITAC =False
                            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()="Valor do Desconto":
            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 [Tipo Taxa de Juros]
       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]
       OtherWise:
            Left
       EndSwitch
  Case Retval="ENTER":
       Switch
       Case Field()="Codigo da Empresa":
            If Isblank([]) Then Loop EndIf
            EMPRESA=[]
            Moveto [Codigo da Conta]
       Case Field()="Codigo da Conta":
            If Checa_Opcoes("Codigo da Conta", [])
               Then Moveto [Codigo do Destinatario]
               Else [Codigo da Empresa]=EMPRESA
                    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 [Valor do Desconto ]
               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 [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
            Right
       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 [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
            If [Tipo do Pagamento]="CP"
               Then DIGITENS=2
               Else DIGITENS=1
            EndIf
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DIGITAC)

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

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)

  SetaCorRegistro("Editar")
  While True

    Opcao_Ver=False

    TEXTO=" Esc=Retornar  F3=Ficha  F6=Cheques  F7=Paginar  "
    If CHAVEC=1 Or
       (CHAVEC=0 And [Duplic->Saldo do Documento]>0)
       Then  TEXTO=TEXTO+ "F4=Copiar Parcelas  "
    EndIf
    TEXTO=TEXTO+ "PgDn=Finalizar  "

    Prompt TEXTO

    Wait Field
				 Until "ESC","ENTER","F7","HOME","UP","PGUP","F6","PGDN","F3","F4"

    Switch
    Case RetVal="F4" And Field()="Sequencia da Baixa" :
         If 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
																		 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]=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
												 DIGITENS=0
												 DIGITAC =False
												 CHAVEI=9
												 Return
								  EndIf
								 EndIf
				 EndIf
    Case RetVal="F6":
         CHAVEI=9
         DIGITENS=2
         Del
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA2("DupBaixa","MR")
           NLANC=[Numero do Lancamento]
           NITEM=[Sequencia da Baixa  ]
           Switch
             Case EDITAR="S":
                  If [Tipo da Baixa]="CANCELADO"
                     Then Mensagem("Baixa por Cancelamento!")
                          UnLockRecord
                          Loop
                  EndIf
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEI=0
                          Controla_EdicaoI()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  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 Confirma_Supervisor()
                                  If OK="S"
                                     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->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                                  Grava_Logt("#","ExclCRec",MSG)
                                                  Del

                                          EndIf
                                     Else UnLockRecord
                                  EndIf
                             Else UnLockRecord
                          EndIf
                     Else UnLockRecord
                  EndIf

             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEI=9
         DIGITENS=0
         Del
         Return
    Case Retval="PGDN":
         CHAVEI=9
         DIGITENS=0
         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 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
       [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         ]
       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]

EndSwitch
EndProc  ; (Registro_Baixa)

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

Showdialog "Dados da Baixa [    ]" Proc "Baixa_Dialog"
  Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea",
        "HOME","END","PGDN","PGUP","F5"
    @ 6,2 height 17 width 74

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

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

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 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
        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
              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 Confirma_Supervisor()
                    If OK="S"
                       Then CopyFromArray RegItem
                            CHAVEI=8
                            If CONTA()
                               Then TIT()
                                    MSG="Excluiu Ctarec NL/Bx: "+[Numero do Lancamento]+"/"+[Sequencia da Baixa]+" Docto: "
                                    MSG=MSG+[Duplic->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
                                    Grava_Logt("#","ExclCRec",MSG)
                                    Del
                            EndIf
                           CancelDialog
                    EndIf
            EndIf
       Case Evento["KeyCode"] = -63:
            Observacao()
       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"            :
                  Del
                  CancelDialog
             Case Campo="I_TpBaixa"           : Campo="I_DtPagto"
             Case Campo="I_Vr_Pagto"          : Campo="I_TpBaixa"
                  If CHAVEI=0
                     Then CopyFromArray RegItem
                          CancelDialog
                  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 CHAVEI=1
                     Then If VSD_I_DtPagto>[Duplic->Data de Vencimento]
                             Then NDA=VSD_I_DtPagto-[Duplic->Data de Vencimento]
                                  TXM=[Duplic->Multa]
                             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)

                          Switch
                            Case PARAM_PLANO_CONTA_DEBITO<>""  And [Duplic->Tipo do Pagamento]="CD" :
                                 VSD_I_PlContas=PARAM_PLANO_CONTA_DEBITO
                                 [Codigo Plano_Conta]=PARAM_PLANO_CONTA_DEBITO
                                 VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                            Case PARAM_PLANO_CONTA_CREDITO<>"" And [Duplic->Tipo do Pagamento]="CT" :
                                 VSD_I_PlContas=PARAM_PLANO_CONTA_CREDITO
                                 [Codigo Plano_Conta]=PARAM_PLANO_CONTA_CREDITO
                                 VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                            Case VSD_I_DtPagto=[Duplic->Data de Emissao] : 
                                 If Not IsBlank(PARAM_PLANO_CONTA_AVISTA)
                                    Then VSD_I_PlContas=PARAM_PLANO_CONTA_AVISTA
                                         [Codigo Plano_Conta]=PARAM_PLANO_CONTA_AVISTA
                                         VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                                  EndIf
                            OtherWise : If Not IsBlank(PARAM_PLANO_CONTA_APRAZO)
                                           Then VSD_I_PlContas=PARAM_PLANO_CONTA_APRAZO
                                                [Codigo Plano_Conta]=PARAM_PLANO_CONTA_APRAZO
                                                VSD_I_Descricao_PlContas=Ltrim([Descricao Plano_Conta])
                                        EndIf
                          EndSwitch
                  EndIf
                  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"
                  EndIf
                  Switch
                    Case VSD_I_TpBaixa="N": VSD_I_TpBaixa="NORMAL"
                    Case VSD_I_TpBaixa="D": VSD_I_TpBaixa="DEVOLUCAO"
                    Case VSD_I_TpBaixa="C": VSD_I_TpBaixa="CANCELADO"
                  EndSwitch
                  If VSD_I_TpBaixa<>"NORMAL"
                     Then If Not Observacao()
                             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 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

;******* MODIFICADO P/ J.LUIS EM 25/06/04 *************************************
             Case Campo="I_PlContas"           : Campo = "I_CCusto"
                  VSD_I_PlContas=ControlValue("I_PlContas")
                  If Not IsBlank(VSD_I_PlContas)
                     Then Moveto [Codigo Plano_Conta]
                          Ativa_Lookup()
                          Moveto [Codigo Plano_Conta]
                          Locate VSD_I_PlContas
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Plano de Contas a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          VSD_I_PlContas          =""
                                          VSD_I_Descricao_PlContas=""
                                          KeyPress "ESC"
                                     Else
                                          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
                                          VSD_I_PlContas          =[Codigo Plano_Conta]
                                          VSD_I_Descricao_PlContas=LTrim([Descricao Plano_Conta])
                                          KeyPress "ESC"
                                          [Codigo Plano_Conta]       =VSD_I_PlContas
                                          Campo="I_CCusto"
                                  Endif
                             Else Mensagem("Conta nao Cadastrada !")
                                  VSD_I_PlContas          =""
                                  VSD_I_Descricao_PlContas=""
                                  Campo="I_PlContas"
                                  KeyPress "ESC"
                          EndIf
                          If SubStr(VSD_I_PlContas,1,1)="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
                  
;********** FIM MODIFICACAO ***************************************************

;********* MODIFICADO P/ J.LUIS - 25/06/2004 *********************************
             Case Campo="I_CCusto"             : Campo = "I_Codigo_Hist"
                  VSD_I_CCusto=ControlValue("I_CCusto")
                  If Not IsBlank(VSD_I_CCusto)
                     Then Moveto [Codigo CCusto]
                          Ativa_Lookup()
                          Moveto [Codigo CCusto]
                          Locate VSD_I_CCusto
                          If RetVal
                             Then If [Tipo de Conta] <> "A"
                                     Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                          Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                          Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                          Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                          Msg = Msg + "do Tipo de Conta."
                                          Mensagem(Msg)
                                          VSD_I_CCusto          =""
                                          VSD_I_Descricao_CCusto=""
                                          KeyPress "ESC"
                                     Else
                                          VSD_I_CCusto          =[Codigo CCusto]
                                          VSD_I_Descricao_CCusto=LTrim([Descricao CCusto])
                                          KeyPress "ESC"
                                          [Codigo CCusto]       =VSD_I_CCusto
                                  Endif
                             Else Mensagem("Centro de Custo n„o Cadastrado !")
                                  VSD_I_CCusto          =""
                                  VSD_I_Descricao_CCusto=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else VSD_I_Descricao_CCusto=""
                          Campo="I_Codigo_Hist"
                  EndIf
;************** FIM MODIFICACAO **********************************************
             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()
                          AcceptDialog
                  EndIf

           EndSwitch
   EndSwitch
   RefreshDialog
EndIf

SelectControl Campo
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 Opcao_Ver
   Then TECLA=TECLA+"F5=Obs  "
EndIf

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

@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 = "*DESTEMIT*":
;;;;;;     NOVOHIST = NOVOHIST + [Duplic->Nome Fantasia EmitDest]
      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

   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 Digitacao da Observacao da Baixa                               *
;*******************************************************************************
Proc OBSERVACAO()
Private JANELA, WinArray6, ncampo

Dynarray WinArray6[]
Window Handle Dialog to JANELA
Window GetAttributes JANELA To WinArray6
WinArray6["FLOATING"]=False
Window SetAttributes JANELA From WinArray6
ncampo=Field()
Prompt " Esc=Cancelar  F2=Gravar "
Moveto [Observacoes]
FieldView
CENTRALIZAMEMOIP(16,02,07,74,"Observa‡”es")
Echo Normal
Echo Off
While True

    Wait Field
      Until "F2","ESC"

    If RetVal="F2"
       Then Do_It!
            OBS_CONFIRMADA=True
            QuitLoop
    EndIf

    If RetVal="ESC"
       Then CANCELEDIT
            OBS_CONFIRMADA=False
            QuitLoop
    EndIf

EndWhile

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

echo Normal
echo off

Moveto Field ncampo
If OBS_CONFIRMADA
   Then Return True
   Else Return False
EndIf               
EndProc    ; (Observacao)


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

  Dados_Cheque=""                                
  ShowDialog "Ler CHEQUE" Proc "SD_Dialog1"
  Trigger "OPEN","ARRIVE"
  Key "ALL"
   @ 13,09   Height 04 Width 41

    Label  @ 00,00 "CMC7"  For "TG_CMC7"
    Accept @ 01,01 Width 37 "A34"  Picture "!*!" Tag "TG_CMC7" To Dados_Cheque
    
  EndDialog
  Mouse Show
  If Not RetVal
     Then CHAVEB=13
          Del
          Return False
  EndIf

  If Len(Dados_Cheque)=34
     Then CODIGO_BANCO   =SubStr(Dados_Cheque,2,3)
          NUMERO_CHEQUE  =RTRIM(SubStr(Dados_Cheque,14,6))
          AGENCIA_CHEQUE =RTRIM(SubStr(Dados_Cheque,5,4))
          CONTA_CHEQUE   =RTRIM(SubStr(Dados_Cheque,25,8))
          NOME_BANCO     =""
          
          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

;          Inicia_Registro()
          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()

  EndIf
EndWhile

EndProc



;*******************************************************************************
;* Rotina para Localizar Registro Cheque                                       *
;*******************************************************************************
Proc CHAVEB()
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

  Prompt" Esc=Retornar  F4=Ler Cheque  F7=Paginar  F8=Baixa  PgDn=Finalizar"

  Wait Field
       Until "ESC","ENTER","F7","HOME","UP","PGUP","F8","PGDN","F4"

  Switch
  Case RetVal="F4":
       Del
       Ler_Cheque()
       Return
  Case RetVal="F8":
       CHAVEB=9
       DIGITENS=1
       Del
       Return
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA2("\\Sistemas\\CheqRec\\ChequeI","MR")
         Switch
           Case EDITAR="S":
             CHAVEB=0
             NLANCC =[Numero do Lancamento]
             NITEMCH  =[Sequencia do Cheque]
             Controla_EdicaoB()
           Case EXCLUIR="S":
             CONFIRMA()
             If OK="S"
                Then Del
                Else unLockRecord
             EndIf
           OtherWise:
             QuitLoop
         EndSwitch
         SetaPosForm()
       EndWhile
       QuitLoop
  Case Retval="ESC":
       CHAVEB=9
       DIGITENS=0
       Del
       Return
  Case Retval="PGDN":
       CHAVEB=9
       DIGITENS=0
       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)

;*******************************************************************************
;* 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->Tipo do Documento]+"/"+[Duplic->Numero do Documento]
   Grava_Logt("#","ExclCRec",MSG)
   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+[Tipo 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)

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

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 [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 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
  If Not IsBlank([DupBaixa->Data do Pagamento])
     Then ANOREF=StrVal(Year([DupBaixa->Data do Pagamento]))
          MESREF=AlinhM(StrVal(Month([DupBaixa->Data do Pagamento])),2)

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

               Moveto "\\Sistemas\\CtaCor\\SaldCont"
               While True
                  If Not IsLockRecord()
                     Then [Entradas]=([Entradas]-VROLD)+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
                          UnLockRecord
                          QuitLoop
                  EndIf
               EndWhile

               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
       [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

       Moveto "\\Sistemas\\CtaCor\\SaldCont"
       While True
          If Not IsLockRecord()
             Then [Entradas]=[Entradas]+[\Sistemas\CtaRec\DupBaixa->Valor do Recebimento]
                  UnLockRecord
                  QuitLoop
          EndIf
       EndWhile

       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
                       Del
                       Moveto "\\Sistemas\\CtaCor\\SaldCont"
                       While True
                          If Not IsLockRecord()
                             Then [Entradas]=[Entradas]-VROLD
                                  UnLockRecord
                                  QuitLoop
                          EndIf
                       EndWhile
               EndIf
       EndIf
  EndSwitch
  QuitLoop
EndWhile

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

If WB=0
   Then Return True
   Else Return False
EndIf

EndProc ; (CONTA)

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


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog1(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 27:
          Temp=False
          CancelDialog
     OtherWise:
          Dados_cheque=Dados_Cheque+Chr(Evento["KeyCode"])
          Temp=false
          If Len(Dados_Cheque)=34
             Then AcceptDialog
          EndIf
   EndSwitch
EndIf
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc



;*******************************************************************************
;* 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"
        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
                    ConsultaF1()

                    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 Confirma()
                    If OK="S"
                       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 CHAVEB=1
                     Then Del
                     Else If RecordStatus("Modified")=True
                             Then Undo
                          EndIf
                  EndIf
                  CancelDialog
             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 Not IsBlank(VSD_Cidade)
                     Then Moveto [Cidade]
                          Ativa_Lookup()
                          Moveto [Cidade]
                          Locate VSD_Cidade
                          If RetVal
                             Then VSD_Cidade=[Cidade ]
                                  KeyPress "ESC"
                                  [Cidade]=VSD_Cidade
                                  Campo="UF"
                             Else Mensagem("Cidade n„o Cadastrada !")
                                  VSD_Cidade=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else Campo="UF"
                  EndIf
             Case Campo="UF":
                  VSD_UF=ControlValue("UF")
                  If Not IsBlank(VSD_UF)
                     Then Moveto [UF]
                          Ativa_Lookup()
                          Moveto [UF]
                          Locate VSD_UF
                          If RetVal
                             Then VSD_UF=[UF]
                                  KeyPress "ESC"
                                  [UF]=VSD_UF
                                  Campo="DataV"
                             Else Mensagem("UF n„o Cadastrada !")
                                  VSD_UF=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else Campo="DataV"
                  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":
       [Data Vencimento     ]=VSD_DataV
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [Tipo_Emitente       ]=VSD_TipoEmit
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Observacao do Cheque]=VSD_Obs
       [Valor               ]=VSD_Valor
       [Situacao            ]=VSD_Situacao
       [CPF                 ]=VSD_CPF
       If RecordStatus("New")=True
          Then [Data_Entrada  ]=Today()
       EndIf

       If [Situacao]<>"LIQUIDADO"
          Then [Data_Liquidado]=BlankDate()
       EndIF
       If [Situacao]="LIQUIDADO" And
          SITUACAO_CHEQUE<>"LIQUIDADO"
          Then [Data_Liquidado]=Today()
       EndIf
       If CHAVEB=1 Then Controle_Dia() EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True

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

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

EndSwitch
EndProc  ; (Ler_Gravar_Cheque)

;*******************************************************************************
;* Digitacao de Cheques                                                        *
;*******************************************************************************
Proc Digita_Cheque()
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,4 height 12 width 71

   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 23 "A20" picture "!*!" Tag "NBanco" to VSD_NBanco

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

   Label  @ 2,00 "C/C" for "CCorrente"
   Accept @ 3,01  Width 13 "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,36 "Emitente" for "TipoEmit"
   Accept @ 3,37  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 43 "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,36 "Dt Vencto " for "DataV"
   Accept @ 7,37  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataV" to VSD_DataV

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

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

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

;*******************************************************************************
;* Rotina de Observacao do Titulo                                              *
;*******************************************************************************
Proc  ObservacaoC()
CampoAnt=Field()
Prompt " Esc=Cancelar  F2=Gravar"
Moveto [Observacoes]
FieldView
CENTRALIZAMEMOIP(08,01,15,76,"Observa‡”es")
While True
      Wait Field
           Until "F2","ESC"
      Switch
      Case RetVal="F2":
           Do_It!
           QuitLoop
      Case RetVal="ESC":
           CancelEdit
           QuitLoop
      EndSwitch
EndWhile
Moveto Field CampoAnt
Prompt TECLA
EndProc  ; (Observacao)

;*******************************************************************************
;* 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":
         Switch
           Case [Duplic->Codigo da Empresa]=[Codigo da Empresa]:
                wcg=wcg+1
                Opcoes[wcg]=Completa([Descricao da Conta],31," ")+[Codigo da Conta]
         EndSwitch
  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 Carrega Parametros                                                   *
;*******************************************************************************
Proc Carrega_Parametros()
If Not IsEmpty("P_Duplic")
   Then View "P_Duplic"

        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_AVISTA       =[Plano_Conta_AVista      ]
        PARAM_PLANO_CONTA_APRAZO       =[Plano_Conta_APrazo      ]
        PARAM_PLANO_CONTA_DEBITO       =[Plano_Conta_Debito      ]
        PARAM_PLANO_CONTA_CREDITO      =[Plano_Conta_Credito     ]
        PARAM_COMISSAO_JUROS_DESCTO    =[Comissao_Juros_Descto   ]
        PARAM_CTA_BAIXA_IGUAL_LANCTO   =[Cta_Baixa_Igual_Lancto  ]

        ClearAll
   Else PARAM_RELAT                    =""
        PARAM_UTILIZA_JUROS_DEVIDO     =""
        PARAM_UTILIZA_COMISSAO         =""
        PARAM_UTILIZA_NUM_CARREGAMENTO =""
        PARAM_UTILIZA_FORMAS_RECEBER   =""
        PARAM_HISTORICO_DEFAULT        =""
        PARAM_PLANO_CONTA_AVISTA       =""
        PARAM_PLANO_CONTA_APRAZO       =""
        PARAM_PLANO_CONTA_DEBITO       =""
        PARAM_PLANO_CONTA_CREDITO      =""
        PARAM_COMISSAO_JUROS_DESCTO    =""
        PARAM_CTA_BAIXA_IGUAL_LANCTO   ="S"

        Mensagem("N„o est„o configurados os parƒmetros para Lan‡amentos e Baixas de T¡tulos.// //Verificar !")
EndIf
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* 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="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
               Then CONFGERAL("Excluir vencimento ?")
                    If OK="S"
                       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,50)
                            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="YES"
                         VSDGPARCELA=ControlValue("TG_PARCELA")
                         
                    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_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)

;;a=""
;;a=a+" D: "+Disparo
;;a=a+" C: "+Campo
;;If Disparo="EVENT"
;;   Then a=a+" ET: "+Evento["Type"]
;;        If IsAssigned(Evento["KeyCode"]) Then a=a+" EK: "+StrVal(Evento["KeyCode"]) EndIf
;;        If IsAssigned(Evento["ACTION"])  Then a=a+" EA: "+Evento["ACTION"] EndIf
;;EndIf        
;;Message(a)
;;Sleep(3000)
;;Message("")
;;Sleep(1000)
RefreshDialog
Return TEMP
EndProc  ; (Sd_Dialog)

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

If IsAssigned(Opcoes)
   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
ShowDialog " +Desdobramento(s) " Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "ENTER","ESC"
 @ 03,20   Height 08 Width 57

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

  Label  @ 02,00 "Quantidade"  For "TG_PARCELA"
  Accept @ 03,03  Width 05 "A4"  Picture "#*#" Tag "TG_PARCELA" To VSDGPARCELA
  
  Pushbutton @ 04,30 width 11 "~O~k"       OK     Default Value "Ok" Tag "YES"          To BottonValue
  Pushbutton @ 04,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,DATA,VALOR,DIA,MES,ANO,CONT,pos, NMES, NANO, NPARC, TPARC

If DynArraySize(Array_Vencimentos)>0
  Then DOCTO=RTrim(SubStr(Array_Vencimentos[1],4,10))
       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])
       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])
       DIA  =NumVal(Day(DATA))
       MES  =NumVal(Month(DATA))
       ANO  =NumVal(Year(DATA))
   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)
       DIA  =NumVal(Day(DATA))
       MES  =NumVal(Month(DATA))
       ANO  =NumVal(Year(DATA))

EndIf

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

   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",DateVal([Duplic->Data de Emissao]))+" "+
                      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 para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
Inicia_Registro()
Digita_Baixa()
EndProc

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITAC=True
While DIGITAC
  Moveto "\\Sistemas\\CtaRec\\Duplic"
  DIGITAC()

  If DIGITENS<>0
     Then If CHAVEC=1
             Then Controle_Dia()
          EndIf

          Moveto [Codigo do Destinatario]
          Ativa_Lookup()
          Moveto [Codigo]
          Locate [Duplic->Codigo do Destinatario]
          If RetVal
             Then CLIENTE_NOME  =[Razao Social]
                  CLIENTE_CIDADE=[Cidade      ]
                  CLIENTE_UF    =[UF          ]
                  CLIENTE_CPF   =[CGC         ]
             Else CLIENTE_NOME  =""
                  CLIENTE_CIDADE=""
                  CLIENTE_UF    =""
                  CLIENTE_CPF   =""
          EndIf
          KeyPress "ESC"
  EndIf

  While DIGITENS<>0
    Switch
       Case DIGITENS=1:
            Moveto "\\Sistemas\\CtaRec\\Duplic"
            Moveto [Pag_1]

            Moveto "\\Sistemas\\CtaRec\\DupBaixa"
            While True
              CHAVEI()
              If CHAVEI=9
                 Then QuitLoop
              EndIf
              Controla_EdicaoI()
            EndWhile
       Case DIGITENS=2:
            Moveto "\\Sistemas\\CtaRec\\Duplic"

            Moveto [Numero_Carregamento_Cheq]
            While true

              Prompt" Esc=Retornar  F1=Tabelas  F8=Baixa  PgDn=Finalizar  "

              Wait Field
                   Message("N§ Carregamento do acerto")
                   Until "ESC","ENTER","F1","F8","PGDN"

              Switch
              Case Retval="F1":
                   CONSULTAF1()
              Case RetVal="F8":
                   CHAVEB=9
                   DIGITENS=1
                   QuitLoop
              Case Retval="PGDN":
                   CHAVEB=9
                   DIGITENS=0
                   DIGITAC =False
                   QuitLoop
              Case Retval="ESC":
                   CHAVEB=9
                   DIGITENS=0
                   QuitLoop
              Case Retval="ENTER":
                   CHAVEB=0
                   QuitLoop
              EndSwitch
            EndWhile
            If CHAVEB=9
               Then If IsBlank([Numero Lancamento Cheque])
                       Then [Numero_Carregamento_Cheq]=""
                    EndIf
                    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 ]
                    Controle_Dia()
                    UnLockRecord

                    Moveto "\\Sistemas\\CtaRec\\Duplic"
                    [Numero Lancamento Cheque]=NLANCC
            EndIf

            Moveto "\\Sistemas\\CheqRec\\ChequeI"
            While True
              CHAVEB()
              If CHAVEB=9
                 Then QuitLoop
              EndIf
              If CHAVEB=13
                 Then Loop
              EndIf
              Controla_EdicaoB()
            EndWhile
            If RecordStatus("New")
               Then 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]=""
                    UnLockRecord
               Else Moveto "\\Sistemas\\CheqRec\\ChequeC"
                    [Data de Entrada         ] = Today()
                    [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
            EndIf
    EndSwitch
  EndWhile
EndWhile
Moveto "\\Sistemas\\CtaRec\\Duplic"
UnLOckRecord
If OPCAO_FORM="3"
   Then PickForm "3"
EndIf

SaveTables
EndProc

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

Carrega_parametros()

CoEdit "Duplic"
{TableAdd} {\\Sistemas\\Cadastro\\Destinat}

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 "\\Sistemas\\Cadastro\\Feriados"   SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\Cadastro\\FichaCli"   SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CtaCor\\SaldCont"     SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CtaCor\\MovCont"      SetHighLight Current Record 51 Field 51
Moveto "\\Sistemas\\CheqRec\\ChequeC"     SetHighLight Current Record 51 Field 51
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

ULTDATA=BlankDate()

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

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
Do_It!
ClearAll
Release Vars All
Release Procs All
