;** Bx_ech *********************************************************************
;*  Controle de Cheques recebidos                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 01/02/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 19/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowDialog Cheques    
;Ultima Alteracao: 22/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo fazer release procs
;Ultima Alteracao: 29/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ITEM=[Sequencia] Controla_EdicaoIech()
;Ultima Alteracao: 08/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cheques emitidos                                          
;Ultima Alteracao: 18/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controle de teclas                                        
;Ultima Alteracao: 26/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Taxa de Juros por Aba                              
;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: 02/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusÆo de cheque ao sair da altera‡Æo            
;Ultima Alteracao: 06/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes juros()            
;Ultima Alteracao: 06/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TipoAplicacaoDeJuros                  
;Ultima Alteracao: 15/09/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado taxa de juros na digita‡Æo do cheque na aba [Cheques Recebidos] e [Cheques Utilizados]
;Ultima Alteracao: 24/09/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta corrente cheque            
;Ultima Alteracao: 24/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DigitaIech()  
;Ultima Alteracao: 27/11/2018 por Bruno Carvalho
;Motivo Alteracao: Alterado vari veis CODIGO_BANCO p/ VSD_CBANCO e AGENCIA_CHEQUE p/ VSD_AGENCIA ao verificar "CDPessoa" -> Item_Dialogech()          
;Ultima Alteracao: 13/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ctrl+D ou Alt+C copiar dados cheque
;Ultima Alteracao: 31/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ChequeJaExiste(), ShowDialog
;Ultima Alteracao: 12/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ler_ChequeECH()
;Ultima Alteracao: 27/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ler_ChequeECH() DigitaIech()
;Ultima Alteracao: 27/12/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado mensagem onde ‚ digitado o c¢digo CMC7 na caixa de dialog ->
;                  De  "Digite ou use o leitor para o c¢digo CMC7 !"  para  "Digite o c¢digo CMC7 !"

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

While True
  Moveto "Bxautie"
  SomaItens()

  Moveto [Sequencia]
  End
  ITEM = [Sequencia]
  Down

  Opcao_Ver=False
  Opcao_Ler_Cheque=False

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

  SetaCorRegistro("Editar")
  While True

    MSGCAMPO=""
    
    Switch
      Case Field()=""      : MSGCAMPO=""
    EndSwitch
    
    Tecla=""
    AguardaTeclasPadraoIt2()

    If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
           "~J~uros      [F2] " : " Porcentagem Taxa de Juros       " : "F2",
           "~L~er Cheque [F4] " : " Ativar leitura de cheque"         : "F4",
           "~L~impa      [F9] " : " Limpa todos cheques relacionados" : "F9",
           "~C~ancelar        " : " Cancelar a Opera‡„o             " : "CANCELAR"
          EndMenu
           To MenuVar

          Echo Off
          If MenuVar="CANCELAR" or MenuVar="Esc"
              Then Loop
          EndIf

          RetVal=MenuVar
      endif

      Switch
      Case RetVal=-94 : MsgTeclasPadraoIt2()
      
      Case RetVal=-115 Or RetVal=-116 Or
           RetVal=-133:
           Tecla_Funcao=RetVal
           chavei=9
           Del
           Return   
      
      Case Retval="PGDN":
           Tecla_Funcao=-116      
           chavei=9
           del
           Return   
           
      Case Retval="PGUP":
           Tecla_Funcao=-115      
           chavei=9
           del
           Return   
           
      Case Retval="ESC":
           Tecla_Funcao=-115      
           chavei=9
           del
           Return   
           
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             PAGINA("Bxautie","MR")
             If EDITAR="S"
                Then CHAVEI=0
                     Controla_EdicaoIech()     
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf

             SomaItens()           

             SetaPosForm()
           EndWhile
           QuitLoop
           
      Case RetVal="F2" :
           Del
           JUROS()
           quitloop
           
      Case RetVal="F4":  
           Del
           Ler_ChequeECH()
           quitloop
           
      Case RetVal="F9": 
           Del                       
  
           If CONFGERAL("Confirma limpar todos estes cheques ?")
              Then
                   while recordstatus("New")=False
                     del
                   endwhile    
            EndIf   
            QuitLoop
            
      Case RetVal="F3":
           Del
           Moveto [Sequencia]
           If RecordStatus("New")
              Then MENSAGEM("Sem Item p/ ver !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVEI=0
           Home
           ITEM=[Sequencia]
           Controla_EdicaoIech()
           QuitLoop
      Case Retval="ENTER":
           If Not Seta_Sequencia(ITEM,True)
              Then Del
                   QuitLoop
           EndIf
           ITEM=[]
           Del
           Locate NLANC,ITEM
           If Retval
              Then CHAVEi=0
              Else CHAVEi=1
                   End Down
                   [Numero do Lote   ]=NLANC
                   [Sequencia        ]=ITEM
                   UnLockRecord
                   
                   Locate NLANC,ITEM
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEIS)
                                                                    
;*******************************************************************************
;* Rotina para Leitura do Cheque                                               *
;*******************************************************************************
Proc Ler_ChequeECH()
Private ChOk, wii, wcp1, wcp2
 
While True
  Moveto "Bxautie"
  SomaItens()

  Moveto "Bxautie"
  Moveto [Sequencia]
  ITEM=[]
  If IsBlank(ITEM)
     Then ITEM=1
     Else ITEM=ITEM+1
  EndIf
  End Down
  CHAVEI=1
  [Numero do Lote        ]=NLANC
  [Sequencia             ]=ITEM
  [Data_Entrada          ]=[Bxautc->Data da Baixa         ]
  [Taxa de Juros         ]=[bxautc->Taxa de Juros         ]
  [Tipo Taxa de Juros    ]=[bxautc->Tipo Taxa de Juros    ]
  [NDias Taxa de Juros   ]=[bxautc->NDias Taxa de Juros   ]
  [Situacao              ]="EM ABERTO"        

  UnLockRecord

  Moveto [Sequencia]

  If Not Leitura_Cheque(5,0)
     Then Del
          Return False
  EndIf

  VSD_CBChq     =Dados_Cheque
  VSD_CBanco    =CODIGO_BANCO 
  VSD_Agencia   =AGENCIA_CHEQUE 
  VSD_NCheque   =NUMERO_CHEQUE  
  VSD_CCorrente =CONTA_CHEQUE 

  if ChequeJaExiste(ITEM, CODIGO_BANCO, AGENCIA_CHEQUE, CONTA_CHEQUE, NUMERO_CHEQUE)
     Then Del
          Loop
    Else If Existe_Cheque("BXCXAUTO")
            Then Del
                 Loop
         EndIf
  endif   
                   
  NOME_BANCO=""
  getrecord "\\sistemas\\cheqrec\\banco" CODIGO_BANCO to reg_banco
  If RetVal
     Then NOME_BANCO=reg_banco["Nome_banco"]
  EndIf

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

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

  AchouPessoa=False
  wcp2       =CONTA_CHEQUE
  for wcp1 from 1 to 2
    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 regdestinat["CGC"]=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 "Bxautie"
  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_Itemech("Ler")
  
  DIGITAIech()

EndWhile
EndProc

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

unlockrecord

chexiste=false
scan for [Sequencia]<>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]
Locate seq
Lockrecord

return chexiste
EndProc  ; (ChequeJaExiste)

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

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

If Disparo="OPEN"
   Then
        TiraSombraShowDialog()
EndIf        

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        If Opcao_Ler_Cheque = True
           Then If AchouPessoa
                   Then Campo ="DataV"
                   Else Campo ="TipoEmit"
                Endif   
           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 ="DataV"
                           Else Campo ="CBChq"
                        EnDIf   
                EndIf
        EndIf
EndIf         
          
If Opcao_Ver       =True  Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then ITEM=[Sequencia]
                      Inicia_Registroech()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -46 or
          Evento["KeyCode"] = 4  :
          If COPIOU_REGISTRO And CHAVEI=1
             Then CopyFromArray REGISTRO
                  [Numero do Lote      ]=NLANC
                  [Sequencia           ]=ITEM
                  Registro_Itemech("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 "Bxautie"
          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="Taxa_Juros" : Campo="Valor"
            Case Campo="Obs"      : Campo="Taxa_Juros"
          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_NCheque   = RTRIM(SubStr(VSD_CBChq,14,6)) 
                                         VSD_CCorrente = RTRIM(SubStr(VSD_CBChq,25,8))

                                         getrecord "\\sistemas\\cheqrec\\banco" VSD_CBanco to regbanco
                                         if retval
                                            Then
                                                 VSD_NBanco    =regbanco["Nome_Banco"]   

                                                 wcp2       =VSD_CCORRENTE
                                                 for wcp1 from 1 to 2
                                                   getrecord "\\sistemas\\cheqrec\\CDPessoa" VSD_CBANCO, VSD_AGENCIA, wcp2 to regcdpessoa
                                                   if retval
                                                      Then VSD_CPF   =regcdpessoa["CPF"           ]
                                                           VSD_Nome  =regcdpessoa["Titular_Cheque"]
                                                           VSD_Cidade=regcdpessoa["Cidade"        ]
                                                           VSD_UF    =regcdpessoa["UF"            ]
                                                           AchouPessoa=True
                                                           If regdestinat["CGC"]=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"
                                                    else If Existe_Cheque("BXCXAUTO")
                                                            Then Campo="CBChq"
                                                         EndIf    
                                                 endif   
                                                 
                                            Else Mensagem("Banco n„o Cadastrado !")
                                                 VSD_CBanco=""
                                                 VSD_NBanco=""
                                         EndIf 
                                    Else FastMsg("C¢digo inv lido! * Valor: "+VSD_CBChq)
                                         Campo="CBChq"
                                 EndIf                    
                          EndIf
                    Else Campo="CBanco"      
                 EndIf
            Case Campo="CBanco"     :      
                 VSD_CBanco=ControlValue("CBanco")
                 If Not IsBlank(VSD_CBanco)
                    Then Moveto [Codigo_Banco]
                         Ativa_Lookup()
                         Moveto [Codigo_Banco]
                         Locate VSD_CBanco
                         If RetVal
                            Then VSD_CBanco=[Codigo_Banco]
                                 VSD_NBanco=[Nome_Banco  ]
                                 KeyPress "ESC"
                                 Moveto "Bxautie"
                                 [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 regdestinat["CGC"]=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 "Bxautie"
                          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"
                    Else If Existe_Cheque("BXCXAUTO")
                            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   =regdestinat["CGC"]
                                 VSD_Nome  =regdestinat["Razao Social"]
                                 VSD_Cidade=regdestinat["Cidade"]
                                 VSD_UF    =regdestinat["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 "Bxautie"
                                  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 Campo="Valor"
                 EndIf
            Case Campo="Valor":
                 VSD_Valor=ControlValue("Valor")
                 If Not IsBlank(VSD_Valor)
                    Then 
                          If CHAVEI=1
                             then Campo="Obs"
                             else Campo="Taxa_Juros"
                          endif
                 EndIf

            Case Campo="Taxa_Juros" : Campo="Obs"
                 VSD_Taxa_Juros=ControlValue("Taxa_Juros")     

            Case Campo="Obs":
                 VSD_Obs=ControlValue("Obs")
                 AcceptDialog
          EndSwitch
          Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="CBanco"      Or
   Campo="TipoEmit"    Or
   Campo="Cidade"      Or
   Campo="UF"          Or
   Campo="Situacao"
   Then TECLA=TECLA+"F1=Tabelas  "
   Else TECLA=TECLA+"            "
EndIf

If CHAVEI=1 And COPIOU_REGISTRO
   Then TECLA=TECLA+"Alt+C=Copiar  PgDn=Finalizar  "
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

Switch
  Case Campo="Taxa_Juros":
       MSG_CAMPO="Informe a Taxa de Juros"
  Case Campo="CBanco":
       MSGCAMPO="C¢digo do Banco"
  Case Campo="DataE":
       MSGCAMPO="Data de Entrada do Cheque/Referente a Data Pagamento"
  Case Campo="CBChq":
       MSGCAMPO="Digite 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_Itemech(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_SEQ      =[Sequencia           ]
       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                 ]
       VSD_Taxa_Juros =[Taxa de Juros       ]
       VSD_DataE      =[Data_Entrada        ]
       If [Codigo CMC7]<>""
          Then If Len([Codigo CMC7])=34
                  Then VSD_CBChq="#"+SubStr([Codigo CMC7],02,08)+
                                 "#"+SubStr([Codigo CMC7],11,10)+
                                 "#"+SubStr([Codigo CMC7],22,12)+
                                 "#" 
                  Else VSD_CBChq=[Codigo CMC7]
               EndIf 
          Else VSD_CBChq=""       
       EndIf

  Case Opcao="Gravar":
       [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      ]=[Bxautc->Codigo]
       [Data_Entrada        ]=VSD_DataE
       If Len(VSD_CBChq)=34
          Then [Codigo CMC7 ]=VSD_CBChq
          Else [Codigo CMC7 ]=""
       EndIf   
       [Taxa de Juros       ]=VSD_Taxa_Juros
       AtualizaValores()

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

EndSwitch
EndProc  ; (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registroech()
INICIO_DIALOG=True
Moveto [Sequencia]
Locate [Bxautc->Numero do Lote],ITEM
CopyToArray RegItem   
Registro_Itemech("Ler")
EndProc ; (Inicia_Registro)

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

VSDGU_USUARIO = ""
VSDGU_DATA    = ""
VSDGU_HORA    = ""
VSDGU_CONTROLE= ""
VSD_Lanctoch  = ""

If CHAVEI=1 
  Then 
       VSD_DataE               =[Bxautc->Data da Baixa         ]
       VSD_Taxa_Juros          =[bxautc->Taxa de Juros         ]
       [Tipo Taxa de Juros    ]=[bxautc->Tipo Taxa de Juros    ]
       [NDias Taxa de Juros   ]=[bxautc->NDias Taxa de Juros   ]
       [Situacao              ]="EM ABERTO"        
endif    

Showdialog "Dados do Cheque [      ]" Proc "Item_Dialogech"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP",-46, 4, -6, -147
     @ 09,0 height 14 width 80

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

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

   Label  @ 0,48 "Situa‡„o" for "Situacao"
   Accept @ 1,49  Width 14 "A12" picture "!*!" Tag "Situacao" to VSD_Situacao

   Label  @ 0,63 "%Juros" for "Taxa_Juros"
   Accept @ 1,64  Width 13 "N" picture "!*!" Tag "Taxa_Juros" to VSD_Taxa_Juros
   
   Label  @ 2,00 "Banco" for "CBanco"
   Accept @ 3,01  Width 6 "A3" picture "!*!" Tag "CBanco" to VSD_CBanco
   Accept @ 3,06  Width 18 "A18" picture "!*!" Tag "NBanco" to VSD_NBanco

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

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

   Label  @ 2,48 "Cheque" for "NCheque"
   Accept @ 3,49 Width 14 "A9" picture "!*!" Tag "NCheque" to VSD_NCheque

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

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

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

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

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

   Label  @ 6,48 "Valor" for "Valor"
   Accept @ 7,49  Width 14 "$" picture "#*#.[##]" Tag "Valor" to VSD_Valor

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

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

   @ 11,00 ?? Format("W51,AL","[Usu rio: "+VSDGU_USUARIO+" "+Format("D13",VSDGU_DATA)+
              " "+VSDGU_HORA+" "+VSDGU_CONTROLE)+
              "Origem: "+Format("W18,AL","MA/"+VSD_Lanctoch)+"]"
   PaintCanvas Attribute 10 11, 01, 11, 76

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

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoIech()
ITEM=[Sequencia]
Inicia_Registroech()
DIGITAIech()
Moveto "Bxautie"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

Moveto "Bxautc"
Moveto [Pag3]

Moveto "Bxautie"
While True
 chaveie()
 If chavei=9 Or chavei=99
    Then QuitLoop
 EndIf
 Controla_EdicaoIech()
EndWhile
 
Release Procs 
  CHAVEIE, Ler_ChequeECH, Item_Dialogech
, Registro_Itemech, Inicia_Registroech
, Digitaiech, Controla_EdicaoeCH, Finaliza_Registroech
