;** Bx_sch *********************************************************************
;*  Controle de Cheques utilizados de terceiros                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 29/01/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: 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/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()                
;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 Digitach()            
;Ultima Alteracao: 31/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowDialog       
;Ultima Alteracao: 19/10/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Relacao_Cheques()      

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

While True
  Moveto "Bxautis"
  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",
           "~S~ele‡„o    [F6] " : " Selecionar cheques utilizados"    : "F6",
           "~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("Bxautis","MR")
             If EDITAR="S"
                Then CHAVEI=0
                     Controla_EdicaoSCH()
                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_ChequeSCH()
           quitloop
           
      Case RetVal="F9": 
           Del                       
  
           If CONFGERAL("Confirma limpar todos estes cheques ?")
              Then
                   while recordstatus("New")=False
                     del
                   endwhile    
            EndIf   
            QuitLoop
            
      Case RetVal="F6":
           Del
           Selecaoch()
           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_EdicaoSCH()
           QuitLoop
      Case Retval="ENTER":
           If Not Seta_Sequencia(ITEM,True)
              Then Del
                   QuitLoop
           EndIf
           ITEM=[]
           Del
           Locate NLANC,ITEM
           If Retval
              Then CHAVEi=0
                   fastmsg("Alter‡Æo n„o permitida !")
                   quitloop
              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_ChequeSCH()
Private ChOk, wii
 
While True
  Moveto "Bxautis"
  SomaItens()

  Moveto [Sequencia]
  End
  ITEM = [Sequencia]
  Down

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

  SetaCorRegistro("Editar")

  CHAVEi=1
  ITEM   =[Sequencia]

  If Not Leitura_Cheque(5,0)
     Then Del
          Return False
  EndIf
  
  if not Relacao_Cheques(CODIGO_BANCO,NUMERO_CHEQUE,"1")
     then 
          Moveto "bxautis" 
          Moveto [Sequencia]
          Locate NLANC,ITEM
          del 
  endif    

EndWhile
EndProc

;*******************************************************************************
;* Rotina para Pesquisa Cheque                                                 *
;*******************************************************************************
Proc DIGITACH1()
Moveto [Codigo_Banco]

While True

     Prompt " Esc=Retornar  F1=Tabelas  "
     MSGCAMPO=""

     Wait Field
          Message MSGCAMPO
          Until "ESC","ENTER","F1","INS"
     Switch

     Case RetVal="ESC":
          Switch
             Case Field()="Codigo_Banco":
                  Del
                  CHAVEi=9
                  QuitLoop
             Case Field()="Numero_Cheque":
                  Moveto [Codigo_Banco]
          EndSwitch       
     Case RetVal="ENTER": 
          Switch
            Case Field()="Codigo_Banco":
              If Not IsBlank([Codigo_Banco])
                 Then Moveto [Numero_Cheque]
              EndIf
            Case Field()="Numero_Cheque": 
              If IsBlank([Numero_Cheque]) Then Loop EndIf
              
              If Relacao_Cheques([bxautis->Codigo_Banco],[bxautis->Numero_Cheque],"")
                 Then return 
              EndIf

              Moveto "bxautis" 
              Moveto [Sequencia]
              Locate NLANC,ITEM
              
              Moveto [Numero_Cheque]
                      
          EndSwitch
     Case RetVal="F1":
          vrcampo=Field()
          Moveto [Numero do Lancamento]
          If ConsultaF1()
             Then Moveto "\\Sistemas\\Cheqrec\\ChequeI"
                  Moveto [Numero do Lancamento]
                  Locate Reg_ConsultaF1["Numero do Lancamento"],
                         Reg_ConsultaF1["Sequencia do Cheque"]
                  If Retval
                     Then CopyToArray Reg_ConsultaF1
                          If chexistesch() and CHECACHEQ()
                             Then Return
                          EndIf

                          Moveto "bxautis" 
                          Moveto [Sequencia]
                          Locate NLANC,ITEM
                        
                  EndIf
          EndIf
          Moveto "Bxautis"
          Moveto Field vrcampo
     EndSwitch
EndWhile
EndProc   ; (DigitaI)

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

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

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

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc
           
;*******************************************************************************
;* Rela‡Æo de cheques                                                          *
;*******************************************************************************
Proc Relacao_Cheques(CODBC,NUMCH,CMC7)
Private CODBC,NUMCH,FAZ

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

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

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

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

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

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

EndProc ;

;*******************************************************************************
;* Cheque ja existe                                                            *
;*******************************************************************************
Proc chexistesch()
private ok

ok=true
moveto "bxautis"
scan

  if [Numero do Lancamento]=Reg_ConsultaF1["Numero do Lancamento"] and
     [Sequencia do Cheque ]=Reg_ConsultaF1["Sequencia do Cheque" ] 
     then ok=false
          quitloop 
  endif

endscan

if not ok
   then fastmsg("Cheque j  lan‡ado !")
        return false
   else return true
endif        
endproc

;*******************************************************************************
;* Checagem de Cheques                                                         *
;*******************************************************************************
Proc CHECACHEQ()
Private SitChOk, REG_BORDCHI

SitChOk=False

       Switch
         Case Reg_ConsultaF1["Situacao"]<>"LIQUIDADO"   And
              Reg_ConsultaF1["Situacao"]<>"EM COBRANCA" And
              Reg_ConsultaF1["Situacao"]<>"TROCADO"     And
              Reg_ConsultaF1["Situacao"]<>"SEM FUNDO": SitChOk=True
       EndSwitch

If Not SitChOk
   Then MSG=    Completa("Cheque.: "+Reg_ConsultaF1["Numero_Cheque"],50," ")+"//"
        MSG=MSG+Completa("Banco..: "+Reg_ConsultaF1["Codigo_Banco" ]+" "+Reg_ConsultaF1["Nome_Banco"],50," ")+"//"
        MSG=MSG+Completa("Agencia: "+Reg_ConsultaF1["Agencia"],50," ")+"//"
        MSG=MSG+Completa("Titular: "+Reg_ConsultaF1["Titular_Cheque"],50," ")+"//"
        MSG=MSG+Completa("Vencto.: "+Format("D13",Reg_ConsultaF1["Data Vencimento"]),50," ")+"//"
        MSG=MSG+Completa("Valor..: "+Format("W10.2,EIC",Reg_ConsultaF1["Valor"]),50," ")+"// //"
        MSG=MSG+"Situa‡„o: [ "+Reg_ConsultaF1["Situacao"]+" ] em "+Format("D13",Reg_ConsultaF1["Data_Liquidado"])
        Mensagem(MSG)
        Return False
EndIf

Moveto "Bxautis"
[Numero do Lancamento    ]=Reg_ConsultaF1["Numero do Lancamento"]
[Sequencia do Cheque     ]=Reg_ConsultaF1["Sequencia do Cheque"]
[Numero do Lancamento    ]=Reg_ConsultaF1["Numero do Lancamento"]
[Sequencia do Cheque     ]=Reg_ConsultaF1["Sequencia do Cheque"]
[Codigo_Banco            ]=Reg_ConsultaF1["Codigo_Banco"]
[Nome_Banco              ]=Reg_ConsultaF1["Nome_Banco"]
[Agencia                 ]=Reg_ConsultaF1["Agencia"]
[Numero_Conta            ]=Reg_ConsultaF1["Numero_Conta"]
[Numero_Cheque           ]=Reg_ConsultaF1["Numero_Cheque"]
[CPF                     ]=Reg_ConsultaF1["CPF"]
[Tipo_Emitente           ]=Reg_ConsultaF1["Tipo_Emitente"]
[Titular_Cheque          ]=Reg_ConsultaF1["Titular_Cheque"]
[Cidade                  ]=Reg_ConsultaF1["Cidade"]
[UF                      ]=Reg_ConsultaF1["UF"]
[Data Vencimento         ]=Reg_ConsultaF1["Data Vencimento"]
[Valor                   ]=Reg_ConsultaF1["Valor"]
[Observacao do Cheque    ]=Reg_ConsultaF1["Observacao do Cheque"]
[Codigo CMC7             ]=Reg_ConsultaF1["Codigo CMC7"]
[Codigo_Cliente          ]=Reg_ConsultaF1["Codigo_Cliente"]
[Data_Entrada            ]=Reg_ConsultaF1["Data_Entrada"]
[Situacao                ]=Reg_ConsultaF1["Situacao"]

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

AtualizaValores()
UnLockRecord

Return True
EndProc ; (ChecaCHEQ)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordenar Registros                                    *
;*******************************************************************************
Proc SELECIONACH()
private seq

{Ask} {\\Sistemas\\Cheqrec\\chequei}  Check
Moveto [Situacao            ] TypeIn "Not SEM FUNDO , Not LIQUIDADO, Not EM COBRANCA, Not COBRANCAPGTO, Not TROCADO.."

switch
  case VSDGSELECIONA=1:
       Moveto [Data Vencimento       ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
   
  case VSDGSELECIONA=2:
       Moveto [Data_Inclusao         ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
   
  case VSDGSELECIONA=3:
       Moveto [Numero do Lancamento  ] TypeIn "~VSDGLANC"
   
  case VSDGSELECIONA=4:
       Moveto [Numero do Lancamento  ] TypeIn "~VSDGLANC"
       Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
   
endswitch
Do_It!
ClearAll

If IsEmpty("Answer")=False
   Then 
        Sort "Answer" On "Data Vencimento","Codigo_Banco","Numero_Cheque"

        seq=0
        View "bxautc"
        View "bxautts"
        View "Answer"
        CoeditKey
        
        Moveto "bxautc"
        Moveto [Numero do Lote]
        Locate nlote
        if RetVal
           Then islockrecord()

                moveto "answer"
                scan
                  seq=seq+1
                
                  Moveto "Bxautts"
                  End
                  Down
                  [Numero do Lote        ]=NLANC
                  [Sequencia             ]=seq

                  [Numero do Lancamento    ]=[Answer->Numero do Lancamento]
                  [Sequencia do Cheque     ]=[Answer->Sequencia do Cheque ]
                  [Codigo_Banco            ]=[Answer->Codigo_Banco        ]
                  [Nome_Banco              ]=[Answer->Nome_Banco          ]
                  [Agencia                 ]=[Answer->Agencia             ]
                  [Numero_Conta            ]=[Answer->Numero_Conta        ]
                  [Numero_Cheque           ]=[Answer->Numero_Cheque       ]
                  [CPF                     ]=[Answer->CPF                 ]
                  [Tipo_Emitente           ]=[Answer->Tipo_Emitente       ]
                  [Titular_Cheque          ]=[Answer->Titular_Cheque      ]
                  [Cidade                  ]=[Answer->Cidade              ]
                  [UF                      ]=[Answer->UF                  ]
                  [Data Vencimento         ]=[Answer->Data Vencimento     ]
                  [Valor                   ]=[Answer->Valor               ]
                  [Observacao do Cheque    ]=[Answer->Observacao do Cheque]
                  [Situacao                ]=[Answer->Situacao            ]
                  [Codigo_Cliente          ]=[Answer->Codigo_Cliente      ]
                  [Data_Entrada            ]=[Answer->Data_Entrada        ]
                  [Codigo CMC7             ]=[Answer->Codigo CMC7         ]
                  
                  [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 ]
                  
                  UnLockRecord
                   
                  moveto "answer"
                endscan

        endif
EndIf
Do_It!
ClearAll

EndProc


;*******************************************************************************
;* Rotina para controle da Sele‡Æo                                                                      *
;*******************************************************************************
Proc Selecao_dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
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_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 Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
						 Then 		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
          EndIf
   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 Selecaoch()
private ntable

Echo Off

ntable      =table()

nlote       =[Bxautc->Numero do Lote]
VSDGDESTINAT=[Bxautc->Codigo        ]

;-- deleta answer linked e temporaria, bxautt ‚ uma tabela linked temporaria nÆo fica dados gravados
Moveto "bxautts"
While RecordStatus("New")=False
  del
EndWhile
Do_It!

moveto ntable

While True
  ShowDialog "Sele‡„o" Proc "Selecao_dialog"
   Trigger "OPEN","ARRIVE"
    Key "ENTER","ESC",-59
     @ 05,16   Height 15 Width 72

    Label @ 00,00 "Cheques por: " For "TG_SELECIONA"
    RadioButtons @ 01,00 Height 4 Width 35
       "Data de ~V~encimento   ",
       "Data de ~I~nclusao     ",
       "~N~umero do Lan‡amento ",
       "Numero de ~L~an‡amento/Dt.Vencto"
       Tag "TG_SELECIONA"
       To VSDGSELECIONA

    Label  @ 06,00 "Lan‡amento" For "TG_LANC"
    Accept @ 07,01 Width 33 "N"  Picture "#[#####]" Tag "TG_LANC" To VSDGLANC

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog
  If Not RetVal
     Then QuitLoop
     Else
          If ((VSDGDTFIM=BlankDate()) And (VSDGSELECIONA<>3))
             Then Mensagem("Data Final Invalida !")
                  Loop
          EndIf
  endif        

  AGUARDE("Aguarde, selecionando cheques")
  SELECIONACH() 
  
  Echo Off

  quitloop
EndWhile

ClearAll

Carrega_Tabelas()
Moveto "bxautc"
PickForm "F"
Moveto [Numero do Lote]
Locate nlote
if RetVal
   Then islockrecord()

endif

Moveto ntable
listavazia=recordstatus("New")

Moveto "bxautts"
if recordstatus("New")=false
   then 
        scan
          copytoarray reg_bxautts
        
          titexiste=false
          moveto ntable

          if not listavazia
             then 
                  scan
                    if [numero do lancamento]=reg_bxautts["numero do lancamento"] and
                       [Sequencia do Cheque ]=reg_bxautts["Sequencia do Cheque" ]
                       then titexiste=true
                            quitloop
                    endif        
                  endscan
          endif
          
          if not titexiste
             then
                  end
                  down
        
                  ITEM=ITEM+1
                  copyfromarray reg_bxautts
                  [Sequencia]=ITEM
                  AtualizaValores()
                  unlockrecord
          endif
        
          Moveto "bxautts"
        endscan
   
        Moveto "bxautts"
        While RecordStatus("New")=False
          del
        EndWhile
        
endif
Moveto ntable   

LimpAguarde()
EndProc ; 
                
;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc ch_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5
TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True

If Disparo="OPEN"
   Then
        TiraSombraShowDialog()
EndIf        

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        Campo ="Taxa_Juros"
EndIf        
If Opcao_Ver=True  Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then ITEM=[Sequencia]
                      Inicia_Registroch()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -46:
          If COPIOU_REGISTRO And CHAVEI=1
             Then CopyFromArray REGISTRO
                  [Numero do Lote      ]=NLANC
                  [Sequencia           ]=ITEM
                  Registro_Itemch("Ler")
          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"] = 27: 
          Switch
            Case Campo="Taxa_Juros" :
                 If QuerDesfazer("")
                    Then If CHAVEI=1
                            Then Del
                            Else CopyFromArray RegItem
                          EnDIf  
                          CHAVEI=9
                          CancelDialog
                 EndIf
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Switch
            Case Campo="Taxa_Juros"  : 
                 VSD_Taxa_Juros=ControlValue("Taxa_Juros")
                 AcceptDialog
          EndSwitch
          Temp=False                     
   EndSwitch 
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "

Switch  
  Case Campo="Taxa_Juros":
       MSG_CAMPO="Informe a Taxa de Juros"
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

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_Itemch(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_CBChq     =[Codigo CMC7         ]
       VSD_DataE     =[Data_Entrada        ]
       VSD_Taxa_Juros=[Taxa de Juros       ]
       
       VSDGU_USUARIO = ""
       VSDGU_DATA    = ""
       VSDGU_HORA    = ""
       VSDGU_CONTROLE= ""
       VSD_Lanctoch  =StrVal([Numero do Lancamento])+"/"+StrVal([Sequencia do Cheque])
       
  Case Opcao="Gravar":
       If CHAVEI=1 
          Then [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   ]
          Else [Taxa de Juros         ]=VSD_Taxa_Juros
       endif    
       AtualizaValores()
       UnLockRecord
EndSwitch
EndProc  ; (Registro_Item)

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

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

Showdialog "Dados do Cheque [      ]" Proc "ch_Dialog"
     Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP",-46, -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","CT/"+VSD_Lanctoch)+"]"
   PaintCanvas Attribute 10 11, 01, 11, 76

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoSCH()
ITEM=[Sequencia]
Inicia_Registroch()
Digita_ch()
Moveto "Bxautis"
If RecordStatus("Locked") Then UnLockRecord EndIf
EndProc
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

Moveto "Bxautc"
Moveto [Pag4]

Moveto "Bxautis"
While True
 chaveis()
 If chavei=9 Or chavei=99
    Then QuitLoop
 EndIf
 DIGITACH1()
EndWhile
 
Release Procs 
  CHAVEIS, SCH, DIGITACH1, Item_Dialogsch, Relacao_Cheques
, chexistesch, CHECACHEQ, SELECIONACH, Selecao_dialog
, Selecaoch, ch_Dialog, Registro_Itemch, Inicia_Registroch
, Digita_ch, Controla_EdicaoSCH,Finaliza_RegistroSCH
