;** NumNf    *******************************************************************
;*  Alteracao e Inclusao de Notas Fiscais                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 20/02/2003 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 18/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 17/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Grava_LogEx("NumNF")

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Codigo da Empresa]
  End
  Down

  SetaCorRegistro("Editar")
  While true

    Switch
      Case Field()="Codigo da Empresa"  : MSGCAMPO="Codigo da Empresa"
      Case Field()="Codigo do Documento": MSGCAMPO="Codigo do Documento"
    EndSwitch

  TECLA="F1=Tabelas"
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal="F3": SemFicha()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F1":
         If Field()="Codigo da Empresa" Or
            Field()="Codigo do Documento"
            Then ConsultaF1()
         EndIf
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           PAGINA("NumeroNf","MR")
           If EDITAR="S"
              Then CHAVE=0
                   Controla_EdicaoC()
              Else If Excluir="S"
                      Then If QuerExcluir("")
                              Then Grava_LogEx("NumNF")
                                   Del
                              Else UnLockRecord
                           Endif
                      Else QuitLoop
                   Endif
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Switch
           Case Field()="Codigo da Empresa":
                CHAVE=9
                Del
                Return
           Case Field()="Codigo do Documento":
                Moveto [Codigo da Empresa]
           OtherWise:
                Left
         EndSwitch
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         Switch
           Case Field()="Codigo da Empresa":
                CODIGO=[]
                Moveto [Codigo do Documento]
                Loop
           Case Field()="Codigo do Documento":
                DOCTO=[]
         EndSwitch
         Del
         Locate CODIGO,DOCTO
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                End Down
                [Codigo da Empresa  ]=CODIGO
                [Codigo do Documento]=DOCTO
         EndIf
         If IsLockRecord()
            Then QuitLoop
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Moveto [Proximo Numero]
While True

  TECLA=" Esc=Retornar  "
  If CHAVE=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf
  TECLA=TECLA+"F4=Mensagem  "

  MSGCAMPO=Field()

  Prompt TECLA
  SetaCorRegistro("Editando")
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F4"

  Switch
    Case RetVal="DEL":
         If CHAVE=0
            Then If QuerExcluir("")
                    Then DEL
                         QuitLoop
                 EndIf
         EndIf
    Case RetVal="FIELDVIEW" or RetVal="F35":
         EDITFIELD()
    Case Retval="F4":
         CampoAnt=Field()
         Edita_Memo("Mensagem",08,07,07,65,"Mensagem")
         Moveto Field CampoAnt
    Case Retval="ESC":
         If Field()="Proximo Numero"
            Then If QuerDesfazer("")
                    Then If CHAVE=1
                            Then Del
                            Else Undo
                         EndIf
                         CHAVE=9
                         QuitLoop
                 Endif
            Else Left
         EndIf
    Case Retval="ENTER":
         Switch
              Case Field()="Proximo Numero":
                   If IsFieldNull([]) Then Loop EndIf
                   Right
              Case Field()="Data Ultima Emissao":
                   QuitLoop  
              OtherWise:
                   Right
         EndSwitch
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
Endproc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
CoEdit "NumeroNf"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
