;** Vales **********************************************************************
;*  Lancamento de Vales Faccao/Estamparia                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/04/2007 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas 
;Ultima Alteracao: 31/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado IntervaloData()

;*******************************************************************************
;* Rotina para Controlar Chave                                                 *
;*******************************************************************************
Proc CHAVE()
INICIO=True

While True
  Moveto "VALES"
  End
  Moveto [Numero do Lancamento]
  NLANC=[Numero do Lancamento]
  
  If OPCAO_FORM="F"
     Then Down
     Else PgDn PgDn
  EndIf
  Moveto [Numero do Lancamento]

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

    Switch
        Case RetVal=-33 : SemFuncoes()
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F3":
             If OPCAO_FORM="F"
                Then OPCAO_FORM="1"
                Else OPCAO_FORM="F"
             EndIf
             Del
             CHAVE=5
             Return
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             While True
               INICIO=True

               If OPCAO_FORM="F"
                  Then PAGINA("VALES","MR")
                  Else PAGINA("VALES","MT")
               EndIf
               CHAVE=0
               NLANC   =[Numero do Lancamento]
               If EDITAR="S"
                  Then If OPCAO_FORM="F"
                          Then PickForm "1"
                       EndIf
                       If Checa_Controle([Numero_Controle_Dia])
                          Then Controla_EdicaoC()
                          Else UnLockRecord
                       EndIf
                  Else If EXCLUIR="S"
                          Then If QuerEXcluir("") And Checa_Supervisor()
                                  Then If OPCAO_FORM="F"
                                          Then PickForm "1"
                                       EndIf
                                       Del
                                       If OPCAO_FORM="F"
                                          Then PickForm "F"
                                       EndIf
                                  Else UnLockRecord
                               EndIf
                          Else QuitLoop
                       EndIf
               EndIf
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="ESC":
             CHAVE=9
             Del
             Return
        Case Retval="ENTER":
             If IsBlank([])
                Then If IsBlank(NLANC)
                        Then NLANC=1
                        Else NLANC=NLANC+1
                     EndIf
                Else NLANC=[]
             EndIf
             If RecordStatus("New")=False
                Then QuitLoop
                Else Del
             EndIf

             If OPCAO_FORM="F"
                Then PickForm "1"
             EndIf
             Moveto [Numero do Lancamento]
             Locate NLANC
             If Retval
                Then CHAVE=0
                Else CHAVE=1
                     End
                     PgDn PgDn
                     Moveto [Numero do Lancamento]
                     [Numero do Lancamento]=NLANC
             EndIf

             If Not IsLockRecord()
                Then Echo Normal
                     Echo Off
                     If (CHAVE=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                        (CHAVE=0 And Checa_Controle([Numero_Controle_Dia]))
                        Then Return
                     EndIf
             EndIf

             If IsLockRecord()
                Then If OPCAO_FORM="F"
                        Then PickForm "F"
                     EndIf
                     If CHAVE=1
                        Then Del
                     EndIf
                     QuitLoop
             EndIf
             Return
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Digitacao Dados Gerais                                          *
;*******************************************************************************
Proc DIGITA()
If INICIO
   Then If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVE=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf
EndIf
INICIO=False

Moveto [Codigo da Empresa]

While True

      TECLA=" Esc=Retornar  "
      If Field()="Codigo da Empresa" Or
         Field()="Codigo"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf
      If CHAVE=0
         Then TECLA=TECLA+"Del=Exclui  "
      EndIf

      MSGCAMPO=Field()

      Prompt TECLA

      Wait Field
           Message MSGCAMPO
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35"

      Switch

      Case RetVal="F1":
           If Field()="Codigo da Empresa" Or
              Field()="Codigo"
              Then CONSULTAF1()
           EndIf
      Case Retval="ESC":
           Switch
           Case Field()="Codigo da Empresa":
                If QuerDesfazer("")
                   Then If CHAVE=1
                           Then Del
                           Else Undo
                        EndIf
                        CHAVE=9
                        QuitLoop
                EndIf
           Case Field()="Codigo":
                If CHAVE=0
                   Then If QuerDesfazer("")
                           Then Undo
                                CHAVE=9
                                QuitLoop
                        EndIf
                   Else Moveto [Codigo da Empresa]
                EndIf
           Case Field()="Descricao":
                Moveto [Codigo]
           OtherWise:
                Left
           EndSwitch

      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("") And Checa_Supervisor()
                      Then CHAVE=9
                           Del
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
        Switch
          Case Field()="Codigo da Empresa"  :
               If IsBlank([])
                  Then Loop
               EndIf
               Moveto [Codigo]
          Case Field()="Codigo"  :
               If IsBlank([])
                  Then Loop
               EndIf
               Moveto [Descricao]
          Case Field()="Data"  :
               If IsBlank([])
                  Then []=Today()
               EndIf
               If Not IntervaloData([Data])
                  Then Loop
               EndIf
               Moveto [Valor]
          Case Field()="Valor"  :
               Return
          OtherWise: Right
        EndSwitch
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

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

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S" EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S" EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""  EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""  EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""  EndIf

CoEdit "VALES"
PickForm "F"
OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=1 Then Controle_Dia() EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
