;** BxCheq *********************************************************************
;*  Baixa Simples de Cheques Pre-Datados                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/08/1996 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/06/2003 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS

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

If INICIO_DIALOG
   Then INICIO_DIALOG=False
        Campo="Situacao"
EndIf      
If Opcao_Ver=True  Then Campo="I_Seq" EndIf
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then ITEM=[Sequencia do Cheque]
                      Inicia_Registro()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -46:
          If COPIOU_REGISTRO And CHAVEI=1
             Then CopyFromArray REGISTRO
                  [Numero do Lancamento]=LANCTO
                  [Sequencia do Cheque ]=ITEM
                  Registro_Item("Ler")
          EndIf
     Case Evento["KeyCode"] = -59:
          If Campo="Situacao"
             Then ShowPopup " Situa‡„o " @ 12,06
                       "em ~A~berto" : " Cheque em Aberto"            : "EM ABERTO",
                       "~L~iquidado" : " Cheque Liquidado/Descontado" : "LIQUIDADO",
                       "~P~rorrogado": " Cheque Prorrogado"           : "PRORROGADO",
                       "~S~em Fundo" : " Cheque Sem Fundo/Devolvido"  : "SEM FUNDO"
                  EndMenu
                   To MenuVar
                      If MenuVar<>"Esc"
                         Then If MenuVar="EM ABERTO"
                                 Then VSD_Situacao=""
                                 Else VSD_Situacao=MenuVar
                              EndIf
                      EndIf
          EndIf
          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"] = -6 Or Evento["KeyCode"] = -147):
          If CHAVEI=0
             Then Confirma()
                  If OK="S"
                     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="Situacao":
                 If CHAVEI=1
                    Then Del
                    Else CopyFromArray RegItem
                 EndIf
                 CHAVEI=9
                 CancelDialog
            Case Campo="CBanco"   : Campo="Situacao"
            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="Situacao":
                 VSD_Situacao=ControlValue("Situacao")
                 Campo="CBanco"
            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="CBanco"      Or
   Campo="Cidade"      Or
   Campo="UF"          Or
   Campo="TipoEmit"    Or
   Campo="Situacao"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf
If CHAVEI=0
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf

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

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

Switch
  Case Campo="CCorrente":
       MSGCAMPO="Conta Corrente"
  Case Campo="DataV":
       MSGCAMPO="Data do Vencimento"
  OtherWise:
       MSGCAMPO=""
EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* Ler ou Gravar Dados do Cheque                                               *
;*******************************************************************************
Proc Registro_Item(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       VSD_I_SEQ    =[Sequencia do Cheque ]
       VSD_DataV    =[Data Vencimento     ]
       VSD_CBanco   =[Codigo_Banco        ]
       VSD_NBanco   =[Nome_Banco          ]
       VSD_Agencia  =[Agencia             ]
       VSD_CCorrente=[Numero_Conta        ]
       VSD_NCheque  =[Numero_Cheque       ]
       VSD_TipoEmit =[Tipo_Emitente       ]
       VSD_Nome     =[Titular_Cheque      ]
       VSD_Cidade   =[Cidade              ]
       VSD_UF       =[UF                  ]
       VSD_Valor    =[Valor               ]
       VSD_Obs      =[Observacao do Cheque]
       VSD_Situacao =[Situacao            ]
       VSD_CPF      =[CPF                 ]
  Case Opcao="Gravar":
       [Data Vencimento     ]=VSD_DataV
       [Codigo_Banco        ]=VSD_CBanco
       [Nome_Banco          ]=VSD_NBanco
       [Agencia             ]=VSD_Agencia
       [Numero_Conta        ]=VSD_CCorrente
       [Numero_Cheque       ]=VSD_NCheque
       [Tipo_Emitente       ]=VSD_TipoEmit
       [Titular_Cheque      ]=VSD_Nome
       [Cidade              ]=VSD_Cidade
       [UF                  ]=VSD_UF
       [Observacao do Cheque]=VSD_Obs
       [Valor               ]=VSD_Valor
       [Situacao            ]=VSD_Situacao
       [CPF                 ]=VSD_CPF
       If [Situacao]<>"LIQUIDADO"
          Then [Data_Liquidado]=BlankDate()
       EndIF
       If [Situacao]="LIQUIDADO" And
          SITUACAO_CHEQUE<>"LIQUIDADO"
          Then [Data_Liquidado]=Today()
       EndIf

       CopyToArray REGISTRO
       COPIOU_REGISTRO=True
EndSwitch
EndProc  ; (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
LANCTO=[Numero do Lancamento]
ITEM  =[Sequencia do Cheque ]
Moveto [Sequencia do Cheque]
Locate LANCTO,ITEM
CopyToArray RegItem
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

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

Moveto "ChequeC"
Moveto [Numero do Lancamento]
Locate [ChequeI->Numero do Lancamento]
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_I_Lancto =[ChequeI->Numero do Lancamento]
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_DataE  =[Data de Entrada         ]
VSD_C_Obs    =[Observacao do Lancamento]

Moveto "ChequeI"
SITUACAO_CHEQUE=[Situacao]
Showdialog "Dados do Cheque" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP",-46
     @ 04,4 height 19 width 71

   Label  @ 0,00 "Lancto" for "I_Lancto"
   Accept @ 1,01  Width 09 "N" picture "#*#" Tag "I_Lancto" to VSD_I_Lancto

   Label  @ 0,10 "Empresa" for "C_Empresa"
   Accept @ 1,11  Width 07 "A4"  picture "!*!" Tag "C_Empresa" to VSD_C_CodigoE
   Accept @ 1,17  Width 23 "A20" picture "!*!" Tag "C_Empresa" to VSD_C_NomeE

   Label  @ 0,40 "Data Entrada" for "C_DataE"
   Accept @ 1,41  Width 13 "D" picture "#[#];.##;.##[##]" Tag "C_DataE" to VSD_C_DataE

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

   Label  @ 4,10 "Observa‡„o do Lan‡amento" for "C_Obs"
   Accept @ 5,11  Width 57 "A70" picture "!*!" Tag "C_Obs" to VSD_C_Obs

   Frame Single From 06,00 to 06,68
   @ 06,02 ?? " Cheque "
   Label  @ 7,00 "Seq." for "I_Lancto"
   Accept @ 8,01  Width 04 "S" picture "#*#" Tag "I_Seq" to VSD_I_Seq

   Label  @ 7,06 "Situa‡„o" for "Situacao"
   Accept @ 8,07  Width 15 "A12" picture "EM ABERTO,LIQUIDADO,PRORROGADO,SEM FUNDO" Tag "Situacao" to VSD_Situacao

   Label  @ 7,24 "N§ Banco" for "CBanco"
   Accept @ 8,25  Width 8 "A4" picture "!*!" Tag "CBanco" to VSD_CBanco

   Label  @ 7,33 "Nome Banco" for "CBanco"
   Accept @ 8,34  Width 24 "A20" picture "!*!" Tag "NBanco" to VSD_NBanco

   Label  @ 7,58 "Agencia" for "Agencia"
   Accept @ 8,59  Width 9 "A6" picture "!*!" Tag "Agencia" to VSD_Agencia

   Label  @ 9,00 "C/C" for "CCorrente"
   Accept @ 10,01  Width 13 "A10" picture "!*!" Tag "CCorrente" to VSD_CCorrente

   Label  @ 9,16 "N§ Cheque" for "NCheque"
   Accept @ 10,17  Width 13 "A10" picture "!*!" Tag "NCheque" to VSD_NCheque

   Label  @ 9,33 "Emitente" for "TipoEmit"
   Accept @ 10,34  Width 11 "A8" picture "PROPRIO,TERCEIRO" Tag "TipoEmit" to VSD_TipoEmit

   Label  @ 11,00 "CPF/CGC" for "CPF"
   Accept @ 12,01  Width 21 "A18" picture "##[.]###.###/####-##,###.###.###-##" Tag "CPF" to VSD_CPF

   Label  @ 11,24 "Nome do Titular" for "Nome"
   Accept @ 12,25  Width 43 "A40" picture "!*!" Tag "Nome" to VSD_Nome

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

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

   Label  @ 13,37 "Data Vencto " for "DataV"
   Accept @ 14,37  Width 13 "D" picture "#[#];.##;.##[##]" Tag "DataV" to VSD_DataV

   Label  @ 13,51 "Valor do Cheque" for "Valor"
   Accept @ 14,52  Width 16 "$" picture "#*#.[##]" Tag "Valor" to VSD_Valor

   Label  @ 15,00 "Observa‡„o do Cheque" for "Obs"
   Accept @ 16,01  Width 67 "A70" picture "!*!" Tag "Obs" to VSD_Obs

Enddialog
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
Moveto "ChequeC"
If Chavec=1 then Del EndIf

Moveto "ChequeI"
EndProc ; (DigitaI)

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

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
CoEdit "ChequeI"
PickForm "5"
Moveto "ChequeC" SetHighLight Current Record 51  Field 51
Moveto "ChequeI"

Nome_Campo="Numero_Cheque"
ImageRights ReadOnly
Home
While True

  Moveto Field Nome_Campo

  Prompt " Esc=Sair  Ctrl+Z  Alt+Z  Del=Excluir  Enter=Editar  S=Situa‡„o"

  Wait Table
    Until "ESC","ENTER","ZOOM","ZOOMNEXT","S","s","DEL",
           -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

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


    Nome_Campo=Field()

    Switch
      Case RetVal = "ZOOM":
           PESQUISA()
      Case RetVal = "ZOOMNEXT":
           PESQUISACON()
      Case Retval="ESC":
           QuitLoop
      Case Retval="DEL":
           If Not IsLockRecord()
              Then Confirma()
                   If OK="S"
                      Then ImageRights
                           Del
                           ImageRights ReadOnly
                      Else UnLockRecord
                   EndIf
           EndIf
      Case Retval="ENTER":
           If Not IsBlank([Numero do Lancamento])
              Then If Not IsLockRecord()
                      Then ImageRights
                           ChaveI=0
                           Opcao_Ver=False
                           Inicia_Registro()
                           DigitaI()
                           UnLockRecord
                           ImageRights ReadOnly
                   EndIf
           EndIf
      Case (RetVal="S" Or RetVal="s") And Not IsBlank([Numero do Lancamento]):
           If Not IslockRecord()
              Then ImageRights
                   SITUACAO_CHEQUE=[Situacao]
                   ShowPopup " Situa‡„o " CENTERED
                        "em ~A~berto" : " Cheque em Aberto"            : "EM ABERTO",
                        "~L~iquidado" : " Cheque Liquidado/Descontado" : "LIQUIDADO",
                        "~P~rorrogado": " Cheque Prorrogado"           : "PRORROGADO",
                        "~S~em Fundo" : " Cheque Sem Fundo/Devolvido"  : "SEM FUNDO"
                   EndMenu
                    To MenuVar
                       If MenuVar<>"Esc"
                          Then If MenuVar="EM ABERTO"
                                  Then [Situacao]=""
                                  Else [Situacao]=MenuVar
                               EndIf

                               If [Situacao]<>"LIQUIDADO"
                                  Then [Data_Liquidado]=BlankDate()
                               EndIF
                               If [Situacao]="LIQUIDADO" And
                                  SITUACAO_CHEQUE<>"LIQUIDADO"
                                  Then [Data_Liquidado]=Today()
                               EndIf
                       EndIf
                       UnLockRecord
                   ImageRights ReadOnly
           EndIf
    EndSwitch
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All

