;** Cheque *********************************************************************
;*  Controle de Cheques Recebidos                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/04/1998 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/03/2006 por Davi Pereira Carrano
;Motivo Alteracao: Fazer Leitura de Cheque
;Ultima Alteracao: 24/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao CDPessoa
;Ultima Alteracao: 04/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa Agencia,Conta,CPF
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 23/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cdpessoa
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 06/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 27/09/2010 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Leitura_Cheque
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas                           
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 24/06/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado fun‡Æo de impressao de entrada de cheques 
;Ultima Alteracao: 20/01/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes importa‡Æo de lan‡amentos de cheques j  lan‡ados                           
;Ultima Alteracao: 29/02/2012 por Bruno Carvalho
;Ultima Alteracao: InclusÆo da op‡Æo de visualiza‡Æo para Lojas "LJ"
;Ultima Alteracao: 11/09/2012 por Kamila Gomes  
;Ultima Alteracao: Ajustes permissÆo de usuarios na exclusÆo
;Ultima Alteracao: 05/12/2012 por Bruno Carvalho  
;Ultima Alteracao: Ajustes PermissÆo de Usu rio para ExclusÆo no "DigitaC"
;Ultima Alteracao: 20/02/2012 por Bruno Carvalho  
;Ultima Alteracao: Checa Supervisor ao tentar alterar um cheque lancado #0298#
;Ultima Alteracao: 20/05/2013 por Bruno Carvalho  
;Ultima Alteracao: Incluido Codigo CMC7 na digita‡Æo manual do cheque 
;Ultima Alteracao: 31/05/2013 por Bruno Carvalho  
;Ultima Alteracao: Ajustes MSGCAMPO => MSG_CAMPO
;Ultima Alteracao: 04/06/2013 por Bruno Carvalho  
;Ultima Alteracao: Ao informar o CPF, AchouPessoa estava sem valor 
;Ultima Alteracao: 05/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lookup cidade, uf
;Ultima Alteracao: 12/06/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado leitura de variavel em arquivo "LER_CHQ.ini"
;Ultima Alteracao: 10/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 12/12/2013 por Andrey Fillipe
;Motivo Alteracao: Inclusao Media de dias 
;Ultima Alteracao: 08/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ao cancelar a inser‡Æo de cheques estava criando linha em branco
;Ultima Alteracao: 08/04/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado Verifica_NLancto() 
;Ultima Alteracao: 10/04/2014 por Bruno Carvalho
;Motivo Alteracao: Add Verifica_NRegistros() onde ir  informar limite de registros
;Ultima Alteracao: 23/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao informar o numero do lancamento
;Ultima Alteracao: 24/04/2014 por Bruno Carvalho
;Motivo Alteracao: Comentado o novo procedimento de numero de lan‡amento at‚ finaliza‡Æo de testes
;Ultima Alteracao: 16/10/2014 por Bruno Carvalho
;Motivo Alteracao: Removido o processo Verifica_NLancto(), devido a erro em acesso simultaneo e ajustado nova rotina para verifica‡Æo do Lancto
;Ultima Alteracao: 16/12/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando nÆo houver nenhum dado lan‡ado na tabela
;Ultima Alteracao: 28/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data_Entrada ChequeI = Data de Entrada ChequeC
;Ultima Alteracao: 02/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema Gerador
;Ultima Alteracao: 18/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LeiaINI cheque        
;Ultima Alteracao: 19/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowDialog Cheques    
;Ultima Alteracao: 17/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao ChequeJaExiste()     
;Ultima Alteracao: 08/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog Origem do cheque
;Ultima Alteracao: 25/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Existe_Cheque() para verificar a existˆncia de cheques j  lan‡ados    
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()  
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta corrente cheque            
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DigitaI()            
;Ultima Alteracao: 01/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes numerolancamento e outros
;Ultima Alteracao: 06/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 11/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 

;*******************************************************************************
;* Rotina para Localizar Registro Cabeca                                       *
;*******************************************************************************
Proc CHAVEC()
While True
  COPIOU_REGISTRO=False
  
  Moveto [Numero do Lancamento]
  End
  LANCTO=[Numero do Lancamento]
  If OPCAO_FORM="2"
     Then Down
     Else PgDn
  EndIf

  SetaCorRegistro("Editar")
  While true

  VCITENS=0

  TECLA=""
  AguardaTeclasPadrao()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             VCITENS=0
           
             If OPCAO_FORM="2"
                Then PAGINA("ChequeC","MR")
                Else PAGINA("ChequeC","MT")                                                         
             EndIf
             LANCTO=[Numero do Lancamento]
             Switch
               Case EDITAR="S":
                    PickForm "F"
                    Echo Normal
                    Echo Off
                    
                    If [Sistema Gerador]<>"MA"
                       Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                            FastMsg(MSG)
                    EndIf
                    
                    If Checa_Controle([Numero_Controle_Dia])
                       Then CHAVEC=0
                            Controla_EdicaoC()
                       Else UnLockRecord
                    EndIf
               Case EXCLUIR="S":
                    PickForm "F"
                    Echo Normal
                    Echo Off
                    
                    If Checa_Supervisor()
                       Then If QuerExcluir("")
                               Then OK="S"
                               Else OK="N"
                            EndIf
                            If OK="S"
                               Then If [Sistema Gerador]<>"MA"
                                       Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                            MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                            MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                                            MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                                            CONFGERAL(MSG)
                                    EndIf
                            Endif
                            If OK="S"
                               Then EXCLUSAO()
                               Else UnLockRecord
                            EndIf
                    endif

               OtherWise: QuitLoop
             EndSwitch
             If OPCAO_FORM="2"
                Then PickForm "2"
                Else PickForm "F"
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="2"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVEC=6
           Return
      Case Retval="ESC":
           CHAVEC=9
           Del
           Return
      Case Retval="ENTER":
           If Numero_Lancamento("","2")
              Then LANCTO = PROXLANCTO_NLANC
                   Release Vars PROXLANCTO_NLANC  
              Else QuitLoop
           EndIf

           PickForm "F"
           moveto [Numero do Lancamento]
           If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1    
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then 
                         [Codigo da Empresa    ]=SYS_EMPRESA_DEFAULT
                         [Sistema Gerador      ]="MA"
                         Return
                 EndIf                
           EndIf
           If CHAVEC=1
              Then Del
           EndIf
           If OPCAO_FORM="2"
              Then PickForm "2"
           EndIf

           QuitLoop
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveC)

;*******************************************************************************
;* Rotina para controle da Sele‡Æo                                             *
;*******************************************************************************
Proc Selecao_dialog1(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_LANC"                 : Campo="NO"
            Case (Campo="YES" Or Campo="NO")     : Campo="TG_LANC"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_LANC"                 :
                         VSDGLANC=ControlValue("TG_LANC")
                         If Not IsBlank(VSDGLANC)
                            Then Campo="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_LANC":
       MSG_CAMPO="Numero do Lan‡amento"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Seleciona os Cheques a serem importados
;*******************************************************************************
Proc Seleciona()
End
SEQ=[Sequencia do Cheque]
If IsBlank(SEQ)
   Then SEQ=0
EndIf
NUMLANC=[\Sistemas\Cheqrec\Chequec->Numero do Lancamento]
Do_It!

{Ask} {Chequei} Check
Moveto [Numero do Lancamento] TypeIn "~VSDGLANC"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Mensagem ("NÆo h  lan‡amentos para se importar!")
        Return
EndIf

Cont=1
Coedit "Answer"
Scan
  [Numero do Lancamento]=NUMLANC
  [Sequencia do Cheque]= SEQ+Cont
  Cont=Cont+1
EndScan
Do_It!

Add "Answer" "Chequei"
ClearAll
Mensagem("Lan‡amentos importados com sucesso! // //OBS: Delete os lan‡amentos importados!")

EndProc ;Seleciona

;*******************************************************************************
;* Importar Cheques
;*******************************************************************************
Proc Importa()
LimpAguarde()

VSDGLANC=0
While True
  ShowDialog "Importa‡„o de Cheques J  Lan‡ados" Proc "Selecao_dialog1"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC"
     @ 09,19   Height 07 Width 45
    

    Label  @ 01,03 "Lan‡amento" For "TG_LANC"
    Accept @ 01,15 Width 9 "N"  Picture "#[#####]" Tag "TG_LANC" To VSDGLANC

    Pushbutton @ 03,09 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 03,23 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal
     Then QuitLoop
  EndIf

  If VSDGLANC<>[\Sistemas\Cheqrec\Chequec->Numero do Lancamento]
     Then Seleciona()
     Else Mensagem("NÆo ‚ possivel importar um lan‡amento para ele mesmo!")
          Loop
  EndIf

  View NoWindow "ChequeI"
  Coedit "ChequeC"
  Moveto [Numero do Lancamento]
  Locate NUMLANC
  PickForm "F"

  Moveto "Chequei"
  QuitLoop

EndWhile

EndProc;(Importa)

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

Moveto "ChequeC"
Resynckey

Moveto "ChequeI" 
SetaCorRegistro("Padrao")

Moveto "ChequeC"
 
SetaCorRegistro("Editar")

DIGITAC=True
If CHAVEC=0
   Then Moveto [Observacao do Lancamento]
   
        If [Sistema Gerador]<>"MA"
           Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                FastMsg(MSG)
        EndIf
   
   Else Moveto [Codigo da Empresa       ]
EndIf

While True
  TECLA=" Esc=Retornar  "

  If CHAVEC=0
     Then TECLA=TECLA+"F8/=Cheques  Del=Excluir  "
  EndIf
  If Field()="Codigo da Empresa" Or
     Field()="Codigo do Representante" Or
     Field()="Codigo"
     Then TECLA=TECLA+"F1=Tabelas  "
  EndIf

  Prompt TECLA

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

  Switch
  Case RetVal="F1":
       If Field()="Codigo da Empresa" Or
          Field()="Codigo do Representante" Or
          Field()="Codigo"
          Then CONSULTAF1()
       EndIf
  Case RetVal="F8" or RetVal="DOWN":
       If CHAVEC = 0
          Then QuitLoop
          Else Loop
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa":
            If QuerDesfazer("")
               Then If CHAVEC=1
                       Then Del
                       Else Undo
                    EndIf
                    CHAVEC=9
                    QuitLoop
            EndIf
       Case Field()="Codigo":
            If CHAVEC=1
               Then Moveto [Data de Entrada]
               Else If QuerDesfazer("")
                       Then Undo
                            CHAVEC=9
                            QuitLoop
                    EndIf
            EndIf
       Case Field()="Data de Entrada":
            Moveto [Codigo da Empresa]
       Case Field()="Observacao do Lancamento":
            Moveto [Codigo do Representante]
       Case Field()="Codigo do Representante":
            Moveto [Codigo]
       Otherwise:
            Left
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If Checa_Supervisor()
                  Then If QuerExcluir("")
                          Then OK="S"
                          Else OK="N"
                       EndIf
                       If OK="S"
                          Then If [Sistema Gerador]<>"MA"
                                  Then MSG="Sistema Origem = "+PegaNomeSistemaGerador()+"//"
                                       MSG=MSG+"Excluir este lan‡amento em caso de erro no Sistema !//"
                                       MSG=MSG+"Caso contrario corriga o lan‡amento no Sistema Origem !//"
                                       MSG=MSG+"Confirma a Exclus„o do Lan‡amento ?"
                                       CONFGERAL(MSG)
                               EndIf
                       Endif
                       If OK="S"
                          Then EXCLUSAO()
                               CHAVEC=9
                               QuitLoop
                       EndIf
               endif
       EndIf
  Case Retval="ENTER":
       Switch
       Case Field()="Codigo da Empresa":
            If IsBlank([]) Then Loop EndIf
            Moveto [Data de Entrada]
       Case Field()="Data de Entrada":
            If IsBlank([])
               Then [Data de Entrada]=Today()
            EndIf
            If Not IntervaloData([Data de Entrada])
               Then Loop
            EndIf
            Moveto [Codigo]
       Case Field()="Codigo":
            Switch
              Case IsBlank([]) : Loop 
              Case CHAVEC=1    : If Cliente_Inativo() Then Loop EndIf     
            EndSwitch
            Moveto [Codigo do Representante]
       Case Field()="Codigo do Representante":
            If IsBlank([]) Then [Nome Fantasia Represent]="" EndIf
            Moveto [Observacao do Lancamento]
       Case Field()="Observacao do Lancamento":
            QuitLoop
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaC)


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

If Isblank([Codigo])
   Then Return False
EndIf   

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

Return False

EndProc ;Cliente_Inativo()

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

While True
  Moveto "Chequei"
  Moveto [Sequencia do Cheque]  VCITENS=ImageCCount()
  Moveto [Valor              ] TOTVALOR=ImageCSum()
  
  Moveto "ChequeC"
  [ChequeC->Valor Total]=TOTVALOR
; UnLockRecord
  
  Moveto "Chequei"
  Moveto [Sequencia do Cheque]
  while true
    End
    Down
    replacefields [Sequencia do Cheque] imagecmax()+1
    if retval
       then quitloop
    endif
  endwhile   
  CHAVEI=1
  [Data_Entrada        ]=[ChequeC->Data de Entrada]



  
; ITEM = [Sequencia do Cheque]
; Down
; Moveto [Sequencia do Cheque]
;
; Seta_Sequencia(ITEM,False)
; If IsLockRecord()
;    Then Del
;         Loop
; EndIf
; 
; CHAVEI=1
; [Numero do Lancamento]=LANCTO
; [Sequencia do Cheque ]=ITEM
; [Data_Entrada        ]=[ChequeC->Data de Entrada]
; UnLockRecord

  If Not Leitura_Cheque(5,0)
     Then Del
          Return False
  EndIf
           
  if ChequeJaExiste(ITEM, CODIGO_BANCO, AGENCIA_CHEQUE, CONTA_CHEQUE, NUMERO_CHEQUE)
     Then Del
          Loop
  endif   

  NOME_BANCO=""
  getrecord "\\sistemas\\cheqrec\\banco" CODIGO_BANCO to reg_banco
  If RetVal
     Then NOME_BANCO=reg_banco["Nome_banco"]
  EndIf

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

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

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

  Moveto "\\Sistemas\\CheqRec\\ChequeI"
  If AChouPessoa
     Then [Tipo_Emitente       ]=VSD_TipoEmit
          [Titular_Cheque      ]=VSD_Nome
          [Cidade              ]=VSD_Cidade
          [UF                  ]=VSD_UF
          [CPF                 ]=VSD_CPF
          UnLockRecord
  EndIf

  INICIO_DIALOG=True
  Registro_Item("Ler")
  
  DIGITAI()

EndWhile
EndProc

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

While True
  Moveto "Chequei"

  Moveto [Sequencia do Cheque]  VCITENS=ImageCCount()
  Moveto [Valor              ] TOTVALOR=ImageCSum()
  
  Moveto "ChequeC"
  [ChequeC->Valor Total]=TOTVALOR
; UnLockRecord
  
  Moveto "Chequei"
  End
  ITEM = [Sequencia do Cheque]
  Down
  Moveto [Sequencia do Cheque]

  Opcao_Ver=False
  Opcao_Ler_Cheque=False

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

  SetaCorRegistro("Editar")
  While True
      Moveto "Chequei"
      Moveto [Sequencia do Cheque]

      Prompt " Esc=Retornar  Alt+F=Fun‡”es  PgDn=Finalizar "

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

      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
               "~V~er Ficha  [F3]" : " Ver modo Ficha                       " : "F3",
               "~L~er Cheque [F4]" : " Ativar leitura de cheque             " : "F4",
               "~I~mprimir   [F5]" : " Imprimir entrada dos cheques         " : "F5",
               "~I~mportar   [F6]" : " Importar cheques de outro lan‡amento " : "F6",
               "~C~ancelar       " : " Cancelar a Opera‡„o                  " : "CANCELAR"
              EndMenu
               To MenuVar

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

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             Campo_Anterior=Field()
             Moveto [Sequencia do Cheque]  VCITENS=ImageCCount()
             Moveto [Valor              ] TOTVALOR=ImageCSum()
              
             Moveto "ChequeC"
             [ChequeC->Valor Total]=TOTVALOR
             UnLockRecord
              
             Moveto "Chequei"
             Moveto Field Campo_Anterior

             PAGINA("ChequeI","MR")

             If EDITAR="S"
                Then CHAVEI = 0
                     ITEM   = [Sequencia do Cheque]
                     If SYS_CODIGO_CLIENTE="0298"
                        Then If Checa_Supervisor()
                                Then Controla_EdicaoI()
                             EndIf   
                        Else Controla_EdicaoI()     
                     EndIf           
                Else If EXCLUIR="S"
                        Then If QuerExcluir("") And Checa_Supervisor()
                                Then Grava_LogEx("ChequeI")
                                     Del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
    
      Case RetVal="F5":
           LANC=[Numero do Lancamento]
           Del
           FormKey
           Do_It!
           
           Imprimir()
                               
           ClearAll

           View NoWindow "ChequeI"
           Coedit "ChequeC"
           PickForm "F"

           Moveto "ChequeI"
           DIGITAC =False
           CHAVEI=9
           Return
           
      Case RetVal="F6":
           Del
           Importa()
           QuitLoop

      Case RetVal="F4":
           Del
           Ler_Cheque()
           QuitLoop

      Case Retval="ESC" or Retval="PGDN": ; nÆo pode alterar a cabeca quando CHAVEC=0
           Del

           if recordstatus("New") and CHAVEC=1 and [ChequeC->Sistema Gerador]="MA"
              then If ConfGeral("NÆo h  cheques(s) nesta rela‡Æo ! // //Deseja cancelar esta rela‡Æo ?")
                      then Moveto "ChequeC"
                           EXCLUSAO()
                      else quitloop
                   endif   
           endif

           DIGITAC =False
           CHAVEI  =99
           Return
           

      Case RetVal="F3":
           Del
           Moveto [Sequencia do Cheque]
           If RecordStatus("New")
              Then MENSAGEM("Sem Item p/ ver !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVEI=0
           Home
           ITEM=[Sequencia do Cheque]
           Inicia_Registro()
           DigitaI()
           QuitLoop

      Case Retval="ENTER": 
           If Not Seta_Sequencia(ITEM,True)
              Then Del
                   QuitLoop
           EndIf
           ITEM=[]            
           Del
           Locate LANCTO,ITEM
           If Retval
              Then CHAVEI=0
              Else CHAVEI=1
                   End Down
                   [Numero do Lancamento]=LANCTO
                   [Sequencia do Cheque ]=ITEM
                   [Data_Entrada        ]=[ChequeC->Data de Entrada]
                   UnLockRecord
                   Locate LANCTO,ITEM
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveI)

;*******************************************************************************
;* Rotina para controle da impressao                                                                      *
;*******************************************************************************
Proc Selecao_dialog2(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
					Switch
						Case OPSHOW="Selecao":
							Switch
								Case Campo="TG_SELECIONA"            : Campo="NO"
								Case Campo="TG_LANC"                 : Campo="TG_SELECIONA"
								Case Campo="TG_DTINI"                : Campo="TG_SELECIONA"
								Case Campo="TG_DTFIM"                : Campo="TG_DTINI"
								Case (Campo="YES" Or Campo="NO")     : Campo="TG_SELECIONA"
							EndSwitch
						Case OPSHOW="Imprimir":
							Switch
								Case Campo="TG_SELECIONA"            : Campo="NO"
								Case Campo="TG_DTREF"                : Campo="TG_SELECIONA"
								Case (Campo="YES" Or Campo="NO")     : Campo="TG_SELECIONA"
							EndSwitch
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
						 Then Switch
										Case OPSHOW="Selecao":
											Switch
												Case Campo="TG_SELECIONA"            :
														 VSDGSELECIONA=ControlValue("TG_SELECIONA")
														 If (VSDGSELECIONA=3) or (VSDGSELECIONA=4)
																Then Campo="TG_LANC"
																		 VSDGDTINI=BlankDate()
																		 VSDGDTFIM=BlankDate()
																Else Campo="TG_DTINI"
																		 VSDGLANC=0
														 EndIf
												Case Campo="TG_LANC"                 :
														 VSDGLANC=ControlValue("TG_LANC")
														 If Not IsBlank(VSDGLANC)
																Then If VSDGSELECIONA=3
																				Then Campo="YES"
																						 VSDGDTINI=BlankDate()
																						 VSDGDTFIM=BlankDate()
																				Else Campo="TG_DTINI"
																		 EndIf
														 EndIf
												Case Campo="TG_DTINI"                : Campo="TG_DTFIM"
												Case Campo="TG_DTFIM"                : Campo="YES"
											EndSwitch
										Case OPSHOW="Imprimir":
											Switch
												Case Campo="TG_SELECIONA"            : Campo="TG_DTREF"
														 VSDGSELECIONA=ControlValue("TG_SELECIONA")
												Case Campo="TG_DTREF"                : Campo="YES"
											EndSwitch
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_SELECIONA":
       MensagemRadioButtons()
  Case Campo="TG_LANC":
       MSG_CAMPO="Numero do Lan‡amento"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina ShowDialog Sele‡Æo                                                   *
;*******************************************************************************
Proc Imprimir()
LimpAguarde()

VSDGDTREF=Today()
OPSHOW="Imprimir"
VSDGSELECIONA=1
While True
	ShowDialog "Imprimir" Proc "Selecao_dialog2"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC","F1"
     @ 05,16   Height 11 Width 40

    Frame Single From 00,00 to 03,37
		Label @ 00,01 "Cheques em ordem: " For "TG_SELECIONA"
    RadioButtons @ 01,01 Height 2 Width 35
			 "Data de ~V~encimento",
			 "~D~igitado          "
       Tag "TG_SELECIONA"
       To VSDGSELECIONA

    Label  @ 04,00 "Data Base" For "TG_DTREF"
    Accept @ 05,01 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

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

  EndDialog
  Mouse Show
  If Not RetVal
		 Then Return
		 Else If IsBlank(VSDGDTREF)
						 Then Mensagem("Data Base Invalida !")
                  Loop
          EndIf

					DISPOSITIVO()
					If OK=""
						 Then Return
					EndIf

					AGUARDE("Aguarde, gerando o relat¢rio")
          
					{Ask} {ChequeI} 
					Moveto [Numero do Lancamento] Check Example "l" TypeIn ",~LANC"
					Moveto [Data Vencimento     ] Check
          {Ask} {ChequeC} 
					Moveto [Numero do Lancamento] Example "l"
          Do_It!
          ClearAll
          
          CoEdit "Answer"
          MEDT  = 0 
          CONT  = 0
          Scan
             [Numero do Lancamento]=LANC
             If [Data Vencimento]>VSDGDTREF
                Then MED = [Data Vencimento]-VSDGDTREF
                     CONT = CONT+1
                Else MED = 0
             EndIf
             MEDT = MEDT+MED
          EndScan
          Do_It!
          ClearAll 
          
          MEDIA = Round(MEDT/CONT,0)
          
          {Ask} {ChequeI} Check
					Moveto [Numero do Lancamento] Example "l" TypeIn ",~LANC"
					{Ask} {ChequeC} Check
					Moveto [Numero do Lancamento] Check Example "l"
					Do_It!
          ClearAll
          
					If IsEmpty("Answer")
						 Then MENSAGEM("N„o existem registros a processar")
									Return
					EndIf

 	   	  	If VSDGSELECIONA=1
						 Then CopyReport "\\Base\\Sistemas\\CheqRec\\ChequeI" "1" "Answer" "R"
						 Else CopyReport "\\Base\\Sistemas\\CheqRec\\ChequeI" "R" "Answer" "R"
					EndIf

					IMPRIREL("Answer","R")

					Delete "Answer"
					QuitLoop
  EndIf
EndWhile    
EndProc   ; (Selecao)

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

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

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        If Opcao_Ler_Cheque = True
           Then If AchouPessoa
                   Then Campo ="DataV"
                   Else Campo ="TipoEmit"
                Endif   
                VSD_Situacao   ="EM ABERTO"
           Else If CHAVEI=1
                   Then Campo ="CBChq"  
                   Else If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                           Then Campo ="TIPOEmit"
                           Else Campo ="CBChq"
                        EnDIf   
                EndIf                
        EndIf
        If CHAVEI=1
           Then VSD_Situacao="EM ABERTO"
        EndIf
EndIf         
      
If Opcao_Ver        =True  Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then ITEM=[Sequencia do Cheque]
                      Inicia_Registro()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -46:
          If COPIOU_REGISTRO And CHAVEI=1
             Then CopyFromArray REGISTRO
                  [Numero do Lancamento]=LANCTO
                  [Sequencia do Cheque ]=ITEM
                  Registro_Item("Ler")
          EndIf
     Case Evento["KeyCode"] = -59:
          If Campo="CBanco" Or
             Campo="Cidade" Or
             Campo="UF"
             Then
                  Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5

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

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

                  echo Normal
                  echo off

                  If Campo="CBanco"
                     Then VSD_CBanco=[Codigo_Banco]
                          VSD_NBanco=[Nome_Banco  ]
                  EndIf
                  If Campo="Cidade"
                     Then VSD_Cidade=[Cidade]
                  EndIf
                  If Campo="UF"
                     Then VSD_UF=[UF]
                  EndIf
                  Moveto "ChequeI"
          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
          EndIf
     Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
          If CHAVEI=0
             Then If QuerExcluir("") And Checa_Supervisor()
                     Then CopyFromArray RegItem
                          CHAVEI=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 AcceptDialog
            EndIf
     Case Evento["KeyCode"] = 27: 
          Switch
            Case Campo="CBanco" Or Campo="CBChq" :
                 SAIR_CHQ=False
                 If Campo="CBanco"
                    Then If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                            Then If CHAVEI=1
                                    Then Campo="CBChq"
                                    Else SAIR_CHQ=True
                                 EndIf   
                            Else Campo="CBChq"
                         EndIf
                    Else SAIR_CHQ=True
                 EndIf
                 
                 If SAIR_CHQ   
                    Then If QuerDesfazer("")
                            Then If CHAVEI=1
                                    Then Del
                                    Else CopyFromArray RegItem
                                 EnDIf  
                                CHAVEI=9
                                CancelDialog      
                         EndIf
                 EndIf 
            Case Campo="Agencia"  : Campo="CBanco"
            Case Campo="CCorrente": Campo="Agencia"
            Case Campo="NCheque"  : Campo="CCorrente"
            Case Campo="TipoEmit" :
                 If Len(VSD_CBChq)=34 Or (VSD_CBanco<>"" And VSD_Agencia<>"" And VSD_CCorrente<>"" And VSD_NCheque<>"" And VSD_NBanco<>"")
                    Then If CHAVEI=1
                            then Campo="CBChq"
                            else CopyFromArray RegItem
                                 CHAVEI=9
                                 CancelDialog      
                         endif   
                    Else Campo="NCheque"
                 EndIf
            Case Campo="CPF"      : Campo="TipoEmit"
            Case Campo="Nome"     : Campo="CPF"
            Case Campo="Cidade"   : Campo="Nome"
            Case Campo="UF"       : Campo="Cidade"
            Case Campo="DataV"    : Campo="UF"
            Case Campo="Valor"    : Campo="DataV"
            Case Campo="Obs"      : Campo="Valor"
          EndSwitch
     Case Evento["KeyCode"] = 13 :
          Switch
            Case Campo="CBChq" :
                 VSD_CBChq=ControlValue("CBChq")
                 If Len(VSD_CBChq)<=4
                    Then VSD_CBChq=""
                 EndIf    
                 If Not IsBlank(VSD_CBChq)
                    Then If Len(VSD_CBChq)<>34 
                            Then Mensagem("Digite os 34 d¡gitos do C¢digo de Barra do Cheque !")
                                 Campo="CBChq"
                            Else If Valida_Leitura_Cheque(VSD_CBChq)
                                    Then VSD_CBChq="<"+SubStr(VSD_CBChq,02,08)+
                                                   "<"+SubStr(VSD_CBChq,11,10)+
                                                   ">"+SubStr(VSD_CBChq,22,12)+
                                                   ":"

                                         VSD_CBanco    = SubStr(VSD_CBChq,2,3)
                                         VSD_Agencia   = RTRIM(SubStr(VSD_CBChq,5,4))
                                         VSD_CCorrente = RTRIM(SubStr(VSD_CBChq,23,10))
                                         VSD_NCheque   = RTRIM(SubStr(VSD_CBChq,14,6)) 
                                            
                                         getrecord "\\sistemas\\cheqrec\\banco" VSD_CBanco to regbanco
                                         if retval
                                            Then
                                                 VSD_NBanco    =regbanco["Nome_Banco"]     
                                                    
                                                 AchouPessoa=False
                                                 wcp2       =VSD_CCORRENTE
                                                 for wcp1 from 1 to 2
                                                   getrecord "\\sistemas\\cheqrec\\CDPessoa" VSD_CBANCO, VSD_AGENCIA, wcp2 to regcdpessoa
                                                   if retval
                                                      Then VSD_CPF   =regcdpessoa["CPF"           ]
                                                           VSD_Nome  =regcdpessoa["Titular_Cheque"]
                                                           VSD_Cidade=regcdpessoa["Cidade"        ]
                                                           VSD_UF    =regcdpessoa["UF"            ]
                                                           AchouPessoa=True
                                                           If CLIENTE_CPF=VSD_CPF
                                                              Then VSD_TipoEmit="PROPRIO"
                                                              Else VSD_TIPOEmit="TERCEIRO"
                                                           EndIf
                                                           Campo="DataV"
                                                           quitloop
                                                   endif        
                                                   if wcp1=1 and len(VSD_CCORRENTE)=10
                                                      then wcp2=substr(VSD_CCORRENTE,3,8)
                                                      else 
                                                           AchouPessoa=false
                                                           Campo="TipoEmit"      
                                                           quitloop
                                                   endif
                                                 endfor  
                                                    
                                                 if ChequeJaExiste(ITEM, VSD_CBanco, VSD_Agencia, VSD_CCorrente, VSD_NCheque)
                                                    then Campo="CBChq" 
                                                 endif   
                                                                        
                                             Else Mensagem("Banco n„o Cadastrado !")
                                                  VSD_CBanco=""
                                                  VSD_NBanco=""
                                         EndIf 
                                    Else FastMsg("C¢digo inv lido! * Valor: "+VSD_CBChq)
                                         Campo="CBChq"
                                 EndIf                    
                          EndIf
                    Else Campo="CBanco"      
                 EndIf
                 If Campo<>"CBChq"
                    Then If Existe_Cheque("CHEQUE")
                            Then Campo="CBChq"
                         EndIf    
                 EndIf    
            Case Campo="CBanco":
                 VSD_CBanco=ControlValue("CBanco")
                 If Not IsBlank(VSD_CBanco)
                    Then Moveto [Codigo_Banco]
                         Ativa_Lookup()
                         Moveto [Codigo_Banco]
                         Locate VSD_CBanco
                         If RetVal
                            Then VSD_CBanco=[Codigo_Banco]
                                 VSD_NBanco=[Nome_Banco  ]
                                 KeyPress "ESC"
                                 Moveto "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 CHAVEI=1 And 
                     Not IsBlank(VSD_AGENCIA) And
                     Not IsBlank(VSD_CCORRENTE)
                     Then 
                          wcp2       =VSD_CCORRENTE
                          for wcp1 from 1 to 2
                            Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                            Moveto [Codigo_Banco]
                            Locate VSD_CBANCO, VSD_AGENCIA, wcp2
                            If RetVal
                               Then VSD_CPF   =[\Sistemas\CheqRec\CDPessoa->CPF]
                                    VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                    VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                    VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                    AchouPessoa=True
                                    If CLIENTE_CPF=VSD_CPF
                                       Then VSD_TipoEmit="PROPRIO"
                                       Else VSD_TIPOEmit="TERCEIRO"
                                    EndIf
                                    quitloop
                            EndIf           
                            if wcp1=1 and len(VSD_CCORRENTE)=10
                               then wcp2=substr(VSD_CCORRENTE,3,8)
                               else quitloop
                            endif
                          endfor  
                          
                          Moveto "\\Sistemas\\CheqRec\\ChequeI"
                          If AchouPessoa
                             Then [Tipo_Emitente       ]=VSD_TipoEmit
                                  [Titular_Cheque      ]=VSD_Nome
                                  [Cidade              ]=VSD_Cidade
                                  [UF                  ]=VSD_UF
                                  [CPF                 ]=VSD_CPF
                          EndIf
                  EndIf   
            Case Campo="NCheque" : Campo="TipoEmit"
                 VSD_NCheque=ControlValue("NCheque")
                 If ChequeJaExiste(ITEM, VSD_CBanco, VSD_Agencia, VSD_CCorrente, VSD_NCheque)
                    Then Campo="NCheque"
                 EndIf
                 If Campo="TipoEmit"
                    Then If Existe_Cheque("CHEQUE")
                            Then Campo="NCheque"
                         EndIf
                 EndIf           
            Case Campo="TipoEmit":
                 VSD_TipoEmit=ControlValue("TipoEmit")
                 If Not IsBlank(VSD_TipoEmit)
                    Then If CHAVEI=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 CHAVEI=1 And 
                             Not IsBlank(VSD_CPF)
                             Then AchouPessoa=False
                                  Moveto "\\Sistemas\\CheqRec\\CDPessoa"
                                  Moveto [CPF]
                                  Locate IndexOrder by "Ind_CPF1" VSD_CPF
                                  If RetVal
                                     Then VSD_Nome  =[\Sistemas\CheqRec\CDPessoa->Titular_Cheque]
                                          VSD_Cidade=[\Sistemas\CheqRec\CDPessoa->Cidade]
                                          VSD_UF    =[\Sistemas\CheqRec\CDPessoa->UF]
                                          AchouPessoa=True
                                          Campo="DataV"
                                  EndIf                       

                                  Moveto "\\Sistemas\\CheqRec\\ChequeI"
                                  If AchouPessoa
                                     Then [Titular_Cheque      ]=VSD_Nome
                                          [Cidade              ]=VSD_Cidade
                                          [UF                  ]=VSD_UF
                                  EndIf
                          EndIf   
                  EndIf

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

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

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

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

Switch
  Case Campo="*******":
       MSGCAMPO=""
  Case Campo="CBanco":
       MSGCAMPO="C¢digo do Banco"
  Case Campo="DataE":
       MSGCAMPO="Data de Entrada do Cheque"
  Case Campo="CBChq":
       MSGCAMPO="Digite ou use o leitor para o c¢digo CMC7 !"
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_Item(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_SEQ    =[Sequencia do Cheque ]
       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                 ]

       If [Situacao]="PRORROGADO"
          Then DATA_VENCIMENTO_ANTERIOR=Format("D13",[Data Vencimento Anterior])+" -> Vencto Anterior"
          Else DATA_VENCIMENTO_ANTERIOR=""
       EndIf
       VSDGU_USUARIO = [Codigo_Usuario     ]
       VSDGU_DATA    = [Data_Inclusao      ]
       VSDGU_HORA    = [Hora_Inclusao      ]
       VSDGU_CONTROLE= [Numero_Controle_Dia]
       If [Codigo CMC7]<>""
          Then If Len([Codigo CMC7])=34
                  Then VSD_CBChq="#"+SubStr([Codigo CMC7],02,08)+
                                 "#"+SubStr([Codigo CMC7],11,10)+
                                 "#"+SubStr([Codigo CMC7],22,12)+
                                 "#" 
                  Else VSD_CBChq=[Codigo CMC7]
               EndIf 
          Else VSD_CBChq=""       
       EndIf
       VSD_DataE    =[Data_Entrada        ]
       VSD_DataL    =[Data_liquidado      ]
       
       if not isblank([Lancamento Origem])
          then VSD_Lanctoch = [Sistema Origem]+"/"+[Lancamento Origem]
          else VSD_Lanctoch = [Sistema Origem]+"/"+[Tipo do Documento]+"/"+[Numero do Documento]
       endif

  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
       [Codigo_Cliente      ]=[ChequeC->Codigo]
       [Data_Entrada        ]=VSD_DataE
       
       If Len(VSD_CBChq)=34
          Then [Codigo CMC7 ]=VSD_CBChq
          Else [Codigo CMC7 ]=""
       EndIf   
        

       If [Situacao]<>"LIQUIDADO"
          Then [Data_Liquidado]=BlankDate()
       EndIF
       If [Situacao]="LIQUIDADO" And
          SITUACAO_CHEQUE<>"LIQUIDADO"
          Then [Data_Liquidado]=Today()
       EndIf
       If CHAVEI=1 
          Then [Data_Entrada  ]=[ChequeC->Data de Entrada]
               Controle_Dia() 
       EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True
       UnLockRecord

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

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

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

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

EndSwitch
EndProc  ; (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True

Moveto [Sequencia do Cheque]
Locate [ChequeC->Numero do Lancamento],ITEM
while islockrecord() endwhile

CopyToArray RegItem   
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

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

SITUACAO_CHEQUE="EM ABERTO"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Enddialog
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
EndProc ; (DigitaI)

;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_Registro(ok)
Private ok
If Ok
   Then Registro_Item("Gravar")
   Else If CHAVEI=8
           Then CopyFromArray RegItem
                Grava_LogEx("ChequeI")
                Del                  
        EndIf
EndIf
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO()
Moveto "ChequeI"
While RecordStatus("New")=False
  Grava_LogEx("ChequeI")
  Del
EndWhile
Moveto "ChequeC"
Grava_LogEx("Cheque")
Del
EndProc  ; (Exclusao)

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

unlockrecord

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

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

Moveto [Sequencia do Cheque]
Locate seq
Lockrecord

return chexiste
EndProc  ; (ChequeJaExiste)

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

s=""
Switch
   Case [Sistema Gerador]="DI" : s="Digita‡Æo de Notas de Sa¡da"
   Case [Sistema Gerador]="BA" : s="EmissÆo Romaneio p/ BalcÆo"
   Case [Sistema Gerador]="FT" : s="EmissÆo Nota Fiscal/Romaneio"
   Case [Sistema Gerador]="TR" : s="EmissÆo Romaneio p/ Troca"
   Case [Sistema Gerador]="GD" : s="Gera‡Æo de Duplicatas"
   Case [Sistema Gerador]="BO" : s="Bordero de Cheques/Terceiros"
   Case [Sistema Gerador]="CR" : s="Lan‡amento no Contas a Receber"
   Case [Sistema Gerador]="LJ" : s="Lan‡amento no Vendas - Loja"
   Case [Sistema Gerador]="AF" : s="Acerto Financeiro"
EndSwitch

return s
EndProc   ;  (Checagem_Pagina)


;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
VSD_Lanctoch  = ""

Inicia_Registro()
DIGITAI()
Moveto "ChequeI"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITAC=True
While DIGITAC
  DIGITAC()
  SetaCorRegistro("Padrao")
  If CHAVEC=9
     Then QuitLoop
  EndIf

  If CHAVEC=1
     Then Controle_Dia()
  EndIf

  getrecord "\\sistemas\\cadastro\\destinat" [ChequeC->Codigo] to reg_destinat 
  If RetVal
     Then CLIENTE_NOME  =reg_destinat["Razao Social"]
          CLIENTE_CIDADE=reg_destinat["Cidade"      ]
          CLIENTE_UF    =reg_destinat["UF"          ]
          CLIENTE_CPF   =reg_destinat["CGC"         ]
     Else CLIENTE_NOME  =""
          CLIENTE_CIDADE=""
          CLIENTE_UF    =""
          CLIENTE_CPF   =""
  EndIf

  Moveto "ChequeI"
  While True
    CHAVEI()
    If CHAVEI=9
       Then Scan For Not IsBlank([Sequencia do Cheque])
              while islockrecord() endwhile 
              [Codigo_Cliente]=[ChequeC->Codigo]
              unlockrecord
            EndScan
            UnLockRecord
            QuitLoop
    EndIf
    If CHAVEI=99
       Then QuitLoop
    EndIf

    Controla_EdicaoI()
  EndWhile
  Moveto "ChequeC"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="2"
   Then PickForm "2"
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
VSDGLANC=""
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""    EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf 

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

View NoWindow "ChequeI"
CoEdit "ChequeC"
PickForm "2"

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

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

OPCAO_FORM="2"
While True
  CHAVEC()
  If CHAVEC=9
     Then QuitLoop
  EndIf
  If CHAVEC=6
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "2"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
