;** ConsCheq *******************************************************************
;*  Consulta de Cheques                                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/11/2004 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 14/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controles
;Ultima Alteracao: 21/10/2016 por Rafael Matos
;Motivo Alteracao: Ajustes tecla Down         
;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 usar Filtro                      

;*******************************************************************************
;* Rotina para Controlar Chave da Ordem de Compra                              *
;*******************************************************************************
Proc ChaveC()

INICIO_PAGINA=True
COPIOU_REGISTRO=False
FACA_DIGITAC=True

VCITENS =BlankNum()
VSVRCHQ=BlankNum()

While True
  Moveto TabelaControle ; FILTRO
  End
  Moveto [Numero_Cheque]
  If OPCAO_FORM="5"
    Then Down
    Else 
  EndIf
  Moveto [Numero_Cheque]

  SetaCorRegistro("Editar")
  While True
  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadraoCF()

  If RetVal="F5"
     Then If MODOFILTRAR
             Then Array MfOpcao[2]
                  MfOpcao[1] = "\"~O~rdenar por N§ CH\"   : \" Ordernar registros filtrados\" : \"15NOC\""
                  MfOpcao[2] = "\"~O~rdenar por Titular\" : \" Ordernar registros filtrados\" : \"15FORN\""
          EndIf
          RetVal = MenuFiltrar()
          Release Vars MfOpcao
  EndIf
  
  Switch
    ; ---- FILTRO --------------------------------------------------------------
    Case RetVal="15NOC"  And MODOFILTRAR And MODOFILTRARATIVO: Del OrdenaCampo("Numero_Cheque")  QuitLoop ; posso utilizar um indice jaïexistente
    Case RetVal="15FORN" And MODOFILTRAR And MODOFILTRARATIVO: Del OrdenaCampo("Titular_Cheque") QuitLoop
    Case RetVal="MENUFILTRAR" :
         CHAVEC=99
         Del
         Return
    Case RetVal="MENUFILTROTODOS" :
         MODOFILTRAR=False
         CHAVEC=98
         Del
         Return
    ;---------------------------------------------------------------------------
    Case RetVal=-33 : SemFuncoes()
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         Fastmsg("Fun‡Æo indisponivel!")
         loop
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         MODOPAGINA = True
         
         Del
         While True
           INICIO_PAGINA=True
           COPIOU_REGISTRO=False
           FACA_DIGITAC=True

           VCITENS =BlankNum()
           VSVRCHQ=BlankNum()

           If OPCAO_FORM="5"
              Then PAGINA(TabelaControle,"MR") ;FILTRO
              Else 
           EndIf
           NLC=[Numero do Lancamento]
           SLC=[Sequencia do Cheque ]
           Switch
             Case EDITAR="S":
                  If PegaRegistroControle("Numero do Lancamento",NLC) ;FILTRO
                     Then CHAVEI=0
                          Controla_EdicaoC()
                  EndIf   
             Case EXCLUIR="S":
                  UnLockRecord
                  FastMsg("ExclusÆo nÆo permitida !")
             OtherWise: QuitLoop
           EndSwitch
           
           FormKey
           Moveto TabelaControle
                                      
           If OPCAO_FORM="5"
              Then PickForm "5"
              Else 
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         []=""
         Fastmsg("InclusÆo nÆo permitida!")
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

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

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        Campo="Flag"
EndIf      
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -67:
          If Checa_Controle([Numero_Controle_Dia])
             Then Campo="CBanco"
          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
                  ConsultaF1()

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

                  echo Normal
                  echo off

                  If Campo="CBanco"
                     Then VSD_CBanco=[Codigo_Banco]
                          VSD_NBanco=[Nome_Banco  ]
                  EndIf
                  If Campo="Cidade"
                     Then VSD_Cidade=[Cidade]
                  EndIf
                  If Campo="UF"
                     Then VSD_UF=[UF]
                  EndIf
                  Moveto "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"] = -81:
            If Campo<>"Flag"
               Then 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
              Else CHAVEI=9
                   CancelDialog
            EndIf
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="CBanco" Or Campo="Flag":
                 CHAVEI=9
                 CancelDialog
            Case Campo="Agencia"  : Campo="CBanco"
            Case Campo="CCorrente": Campo="Agencia"
            Case Campo="NCheque"  : Campo="CCorrente"
            Case Campo="TipoEmit" : Campo="NCheque"
            Case Campo="CPF"      : Campo="TipoEmit"
            Case Campo="Nome"     : Campo="CPF"
            Case Campo="Cidade"   : Campo="Nome"
            Case Campo="UF"       : Campo="Cidade"
            Case Campo="DataV"    : Campo="UF"
            Case Campo="Valor"    : Campo="DataV"
            Case Campo="Obs"      : Campo="Valor"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Switch
            Case Campo="CBanco":
                 VSD_CBanco=ControlValue("CBanco")
                 If Not IsBlank(VSD_CBanco)
                    Then Moveto [Codigo_Banco]
                         Ativa_Lookup()
                         Moveto [Codigo_Banco]
                         Locate VSD_CBanco
                         If RetVal
                            Then VSD_CBanco=[Codigo_Banco      ]
                                 VSD_NBanco=[Nome_Banco        ]
                                 KeyPress "ESC"
                                 Moveto "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":
                 VSD_CCorrente=ControlValue("CCorrente")
                 Campo="NCheque"
            Case Campo="NCheque":
                 VSD_NCheque=ControlValue("NCheque")
                 Campo="TipoEmit"
            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")
                 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 !")
                            Else Campo="Nome"
                         EndIf
                    Else Campo="Nome"
                 EndIf
            Case Campo="Nome":
                 VSD_Nome=ControlValue("Nome")
                 Campo="Cidade"
            Case Campo="Cidade":
                 VSD_Cidade=ControlValue("Cidade")
                 If Not IsBlank(VSD_Cidade)
                    Then Moveto [Cidade]
                         Ativa_Lookup()
                         Moveto [Cidade]
                         Locate VSD_Cidade
                         If RetVal
                            Then VSD_Cidade=[Cidade ]
                                 KeyPress "ESC"
                                 Moveto "ChequeI"
                                 [Cidade]=VSD_Cidade
                                 Campo="UF"
                            Else Mensagem("Cidade n„o Cadastrada !")
                                 VSD_Cidade=""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                    Else Campo="UF"
                 EndIf
            Case Campo="UF":
                 VSD_UF=ControlValue("UF")
                 If Not IsBlank(VSD_UF)
                    Then Moveto [UF]
                         Ativa_Lookup()
                         Moveto [UF]
                         Locate VSD_UF
                         If RetVal
                            Then VSD_UF=[UF]
                                 KeyPress "ESC"
                                 Moveto "ChequeI"
                                 [UF]=VSD_UF
                                 Campo="DataV"
                            Else Mensagem("UF n„o Cadastrada !")
                                 VSD_UF=""
                                 KeyPress "ESC"
                         EndIf
                         Echo Off
                    Else Campo="DataV"
                 EndIf
            Case Campo="DataV":
                 VSD_DataV=ControlValue("DataV")
                 Campo="Valor"
            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<>"Flag"
   Then TECLA=TECLA+"                                                 PgDn=Finalizar "
   Else TECLA=TECLA+"F9=Editar                                        PgDn=Finalizar "
EndIf

Switch
  Case Campo="CBanco" : 
       MSGCAMPO="Banco, [F1]Consultar tabela"
  Case Campo="Agencia" : 
       MSGCAMPO="Agencia"
  Case Campo="CCorrente":
       MSGCAMPO="Conta Corrente"
  Case Campo="NCheque":
       MSGCAMPO="N£mero do cheque"
  Case Campo="TipoEmit" : 
       MSGCAMPO="Tipo do emitente, [F1]Consultar tabela"
  Case Campo="CPF":
       MSGCAMPO="CNPJ/CPF do titular do cheque"
  Case Campo="Nome":
       MSGCAMPO="Titular do cheque"
  Case Campo="Cidade":
       MSGCAMPO="Cidade do titular cheque, [F1]Consultar tabela"
  Case Campo="UF":
       MSGCAMPO="UF do titular cheque, [F1]Consultar tabela"
  Case Campo="DataV":
       MSGCAMPO="Data do Vencimento"
  Case Campo="Valor":
       MSGCAMPO="Valor do cheque"
  Case Campo="Obs":
       MSGCAMPO="Observa‡äes"

  OtherWise:
       MSGCAMPO=""

EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
MontaRodapeSD(MSGCAMPO, TECLA)
Mouse Hide
RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_Item(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_Lancto =[Numero do Lancamento]
       VSD_I_SEQ    =[Sequencia do Cheque ]

       VSD_LANCTO=strval(VSD_I_Lancto)+"/"+strval(VSD_I_SEQ)

       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_DataL    =[Data_liquidado      ]
       
       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        ]
       
       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":
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [Tipo_Emitente       ]=VSD_TipoEmit
       [CPF                 ]=VSD_CPF
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Data Vencimento     ]=VSD_DataV
       [Valor               ]=VSD_Valor
       [Observacao do Cheque]=VSD_Obs

EndSwitch
EndProc  ; (Registro_Item)

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

Moveto "ChequeC"
Moveto [Numero do Lancamento]
Locate NLC
If Not RetVal
   Then Mensagem("Cheque sem Lote de Lan‡amento, Verificar !// //Observe o N§ do Lan‡amento.")
        chavec=1
        End
        Down
   Else chavec=0
EndIf

VSD_C_CodigoE=[Codigo da Empresa       ]
VSD_C_NomeE  =[Nome Fantasia Empresa   ]
VSD_C_CodigoC=[Codigo                  ]
VSD_C_NomeC  =[Razao Social            ]
VSD_C_CodigoR=[Codigo do Representante ]
VSD_C_NomeR  =[Nome Fantasia Represent ]
VSD_C_Obs    =[Observacao do Lancamento]

Moveto "ChequeI"


INICIO_DIALOG=True
Opcao_Ver    =False
Showdialog "Dados do Cheque [               ]" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea","PGDN","F9"
  @ 05,00   Height 22 Width 80

   Accept @ -01,39 Width 15 "A15" Tag "I_Seq" To VSD_LANCTO

   Label  @ 0,00 "Empresa" for "C_Empresa"
   Accept @ 1,01  Width 07 "A4"  picture "!*!" Tag "C_Empresa" to VSD_C_CodigoE
   Accept @ 1,07  Width 43 "A20" picture "!*!" Tag "C_Empresa" to VSD_C_NomeE

   Accept @ 1,70  Width 03 "A1" picture "!" Tag "Flag" to VSD_Flag

   Label  @ 2,00 "Cliente" for "C_Cliente"
   Accept @ 3,01  Width 07 "A4"  picture "!*!" Tag "C_Cliente" to VSD_C_CodigoC
   Accept @ 3,07  Width 43 "A40" picture "!*!" Tag "C_Cliente" to VSD_C_NomeC

   Label  @ 4,00 "Representante" for "C_Repres"
   Accept @ 5,01  Width 07 "A4"  picture "!*!" Tag "C_Repres" to VSD_C_CodigoR
   Accept @ 5,07  Width 43 "A40" picture "!*!" Tag "C_Repres" to VSD_C_NomeR

   Label  @ 6,00 "Observa‡„o do Lan‡amento" for "C_Obs"
   Accept @ 7,01  Width 72 "A80" picture "!*!" Tag "C_Obs" to VSD_C_Obs

   Frame Single From 08,00 to 08,72

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

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

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

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

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

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

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

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

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

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

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

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

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

   @ 19,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 19, 01, 19, 72

Enddialog
Mouse Show
If RetVal
   Then Registro_Item("Gravar")
EndIf
unlockrecord

EndProc ; (DigitaI)

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaFiltro()
ClearAll

{Ask} TypeIn "\\Sistemas\\CheqRec\\ChequeC" Enter
Moveto [Numero do Lancamento   ] Example "a"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo                 ] TypeIn "~VSDGDESTINAT.."
moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."

{Ask} TypeIn "\\Sistemas\\CheqRec\\ChequeI" Enter Check
Moveto [Numero do Lancamento  ] Example "a"
switch
  case VSDGOPDTCHVLI="1" : Moveto [Data Vencimento     ] TypeIn  ">=~VSDGDTINI ,<=~VSDGDTFIM" 
  case VSDGOPDTCHVLI="2" : Moveto [Data_Liquidado      ] TypeIn  ">=~VSDGDTINI ,<=~VSDGDTFIM" 
  case VSDGOPDTCHVLI="3" : Moveto [Data_Inclusao       ] TypeIn  ">=~VSDGDTINI ,<=~VSDGDTFIM" 
  case VSDGOPDTCHVLI="4" : Moveto [Data_Entrada        ] TypeIn  ">=~VSDGDTINI ,<=~VSDGDTFIM" 
endswitch
switch
  case VSDGSITUACAOCHEQUE="EM ABERTO": moveto [Situacao ] TypeIn "\"EM ABERTO\" or \"PRORROGADO\""
  case VSDGSITUACAOCHEQUE<>"TODAS"   : moveto [Situacao ] TypeIn "~VSDGSITUACAOCHEQUE.."
endswitch
Moveto [CPF                   ] TypeIn VSDGCPFCGCTIT
Moveto [Titular_Cheque        ] TypeIn VSDGNOMETIT
Moveto [Numero_Cheque         ] TypeIn VSDGNUMCHEQ
Do_It!
ClearAll

CriaTabelaControle()
EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogFO(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento, Temp, MSG_CAMPO, TECLA
 
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_DESTINAT"       : Campo="TG_EMPRESA"
            Case Campo="TG_REPRESEN"       : Campo="TG_DESTINAT"
            Case Campo="TG_OPDTCHVLI"      : Campo="TG_REPRESEN"
            Case Campo="TG_DTINI"          : Campo="TG_OPDTCHVLI" 
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOCHEQUE" : Campo="TG_DTFIM"
            Case Campo="TG_CPFCGCTIT"      : Campo="TG_SITUACAOCHEQUE"
            Case Campo="TG_NOMETIT"        : Campo="TG_CPFCGCTIT"
            Case Campo="TG_NUMCHEQ"        : Campo="TG_NOMETIT"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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_EMPRESA"        : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT"       : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN"       : Campo="TG_OPDTCHVLI"
                    Case Campo="TG_OPDTCHVLI"      : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"          : Campo="TG_DTFIM" 
                    Case Campo="TG_DTFIM"          : Campo="TG_SITUACAOCHEQUE"
                    Case Campo="TG_SITUACAOCHEQUE" : Campo="TG_CPFCGCTIT"
                    Case Campo="TG_CPFCGCTIT"      : Campo="TG_NOMETIT"
                    Case Campo="TG_NOMETIT"        : Campo="TG_NUMCHEQ"
                    Case Campo="TG_NUMCHEQ"        : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
       MSG_CAMPO=""
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Filtrar()
Private Result

LimpAguarde()
Do_It!
ClearAll

Echo Normal
Echo Off

CONSULTAF1    = False
SDFILTRO_ATIVO=True
While True
  Result=False
  
  ShowDialog "Crit‚rio para filtro ?" Proc "SD_DialogFO"
  Trigger "OPEN","ARRIVE","SELECT"  
  Mouse "UP"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
  @ 05,00   Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A22" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST

    Label  @ 04,00 "Representante"  For "TG_REPRESEN"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 06,00 "Op‡äes de Datas" For "TG_OPDTCHVLI"
    Accept @ 07,04 Width 04 "A1"  Picture "1,2,3,4" Tag "TG_OPDTCHVLI" To VSDGOPDTCHVLI
    Accept @ 07,09 Width 25 "A22" Picture "!*!" Tag "TG_NOMOPDTCHVLI"  To VSDGNOMOPDTCHVLI

    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
    
    Label  @ 00,35 "Situacao do Cheque"  For "TG_SITUACAOCHEQUE"
    Accept @ 01,36 Width 33 "A20"  Picture "!*!" Tag "TG_SITUACAOCHEQUE"  To VSDGSITUACAOCHEQUE

    Label  @ 02,35 "CPF/CNPJ do Titular" for "TG_CPFCGCTIT"
    Accept @ 03,36  Width 33 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "TG_CPFCGCTIT" to VSDGCPFCGCTIT

    Label  @ 04,35 "Nome do Titular" for "TG_NOMETIT"
    Accept @ 05,36  Width 33 "A40" picture "!*!" Tag "TG_NOMETIT" to VSDGNOMETIT

    Label  @ 06,35 "Numero do Cheque"  For "TG_NUMCHEQ"
    Accept @ 07,36 Width 33 "A15"  Picture "!*!" Tag "TG_NUMCHEQ" To VSDGNUMCHEQ

    @ 19,52 ?? "[NÆo filtra mˆs fechado!]"

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  AGUARDE("Filtrando dados")
  SelecionaFiltro()

  Result=True

  QuitLoop
EndWhile

SDFILTRO_ATIVO=False

Return Result
EndProc

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

STATUSFILTRO = "UPDATE"
Registro_Item("Ler")

DigitaI()

AtualizaRegistroControle("Numero do Lancamento",NLC,MODOPAGINA)
If OPCAO_FORM="5"
  Then PickForm "5"
  Else 
EndIf
                           
EndProc

;*******************************************************************************
;* Rotina Limpa Variaveis do Filtro                                            *
;*******************************************************************************
Proc LimpaFiltro()

VSDGEMPRESA  =""
VSDGDESTINAT =""
VSDGREPRESEN =""
VSDGOPDTCHVLI=""
VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()
VSDGSITUACAOCHEQUE=""
VSDGCPFCGCTIT=""
VSDGNOMETIT  =""
VSDGNUMCHEQ  =""

REGRAFILTRO       = ""

EndProc

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Monta_Tabelas()                      
ClearAll

View NoWindow "ChequeC"
View NOWINDOW "ChequeI"

If Not CoEditaTabelaControle() ; substitui Coedit da tabela principal
   Then Return False
EndIf

Return True
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

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

LimpaFiltro()

TabelaTemp      = ""
TabelaPrincipal = "ChequeI"
TabelaControle  = TabelaPrincipal

If (IsAssigned(MODOFILTRAR) And MODOFILTRAR)
   Then If Not SetaFiltro()
           Then Return
        EndIf
        SelecionaFiltro()
   Else TabelaControle    = TabelaPrincipal
        MODOFILTRARATIVO  = True
        MODOFILTRAR       = False
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf
OPCAO_FORM = "5"

If Not Monta_Tabelas() ;Criado uma proc onde as tabelas serÆo abertas 
   Then Return
EndIf
;-------------------------------------------------------------------------------

VCITENS =BlankNum()
VSVRCHQ=BlankNum()

While True
  CHAVEC()
  ;--- FILTRO ------------------------------------------------------------------
  If CHAVEC=99 
     Then If Filtrar()
             Then MODOFILTRAR=True
          EndIf
          Monta_Tabelas()
          Loop
  EndIf
  If CHAVEC=98 
     Then AGUARDE("Visualizando todos registros")
          MODOFILTRAR=False
          Do_It!
          
          TabelaControle=TabelaPrincipal
          Monta_Tabelas()
          Loop
  EndIf   
  ;-----------------------------------------------------------------------------
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="5"
             Then PickForm "5"
             Else 
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
DeletaTabelaControle() ; FILTRO
Release Vars All
Release Procs All

