;** ContrDia *******************************************************************
;*  Programa p/ Controle de Dia                                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 28/07/2004 por Anivel Augusto Rodrigues
;Ultima Alteracao: 22/08/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Atualiza_Controle()
;Ultima Alteracao: 04/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas 
;Ultima Alteracao: 08/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro("Editar")
;Ultima Alteracao: 05/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_TITULO_MENU

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  SetaCorRegistro("Editar")

  End
  SEQ=[Numero_Controle_Dia]
  Down

  Moveto [Numero_Controle_Dia]

  TECLA="F5=Parƒmetros"
  AguardaTeclasPadrao()

  Switch
  Case RetVal=-33 : SemFuncoes()
  Case RetVal="F3": SemFicha()
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA("ContrDia","MR")
         If EDITAR="S"
            Then CHAVE=0
                 Return
            Else If EXCLUIR="S"
                    Then Mensagem("Opera‡„o n„o permitida !")
                         Ins
                    Else QuitLoop
                 EndIf
         EndIf
       EndWhile
  Case Retval="ESC":
       CHAVE=9
       Del
       QuitLoop
  Case RetVal="F5":
       Play "P_Contrd"

  Case RetVal="ENTER":
       If IsBlank([])
          Then If IsBlank(SEQ)
                  Then []="1"
                  Else []=StrVal(NumVal(SEQ)+1)
               EndIf
       EndIf
       []=Alinh()
       CODIGO=[]
       Del
       Locate CODIGO
       If Retval
          Then CHAVE=0
          Else CHAVE=1
               End Down
               [Numero_Controle_Dia]=CODIGO
       EndIf
       If IsLockRecord()
          Then Loop
       EndIf
       Quitloop
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Atualiza Dados de Controle                                                  *
;*******************************************************************************
Proc Atualiza_Controle(Usuario,Opcao)
Private s

UnLockRecord
FormKey
Moveto "Usuarios"
Moveto [Chapa]
Locate Usuario
If Not RetVal
   Then ;;Mensagem("Usu rio n„o cadastrado !")
   Else Switch
          Case Opcao="Criar" Or Opcao="Liberar":
               [Numero_Controle_Dia]=[ContrDia->Numero_Controle_Dia]
          Case Opcao="Finalizar":
               [Numero_Controle_Dia]="??????"
        EndSwitch
        UnLockRecord
EndIf

Moveto "ContrDia"
Switch
  Case Opcao="Criar":
       [Situacao_Controle_Dia]="L"
       [Chapa                ]=SYS_CHAPA_USUARIO
       [Nome                 ]=SYS_NOME_USUARIO
       [Data                 ]=Today()
       [Hora                 ]=Time()
  Case Opcao="Liberar":
       [Situacao_Controle_Dia]="L"
  Case Opcao="Finalizar":
       [Situacao_Controle_Dia]="B"
EndSwitch
If IsBlank(SYS_CHAPA_SUPERVISOR)
   Then Log_Obs(Opcao+": "+SYS_CHAPA_USUARIO)
   Else Log_Obs(Opcao+": "+SYS_CHAPA_SUPERVISOR)
EndIf
UnLockRecord

If Usuario=SYS_CHAPA_USUARIO
   Then SYS_CONTROLE_DIA=[\Sistemas\Cadastro\Usuarios->Numero_Controle_Dia]
        s=SYS_TITULO_MENU
        SYS_TITULO_MENU=SubStr(s,1,62)+SYS_CONTROLE_DIA+SubStr(s,69,10)

        Editor Open "Savevars.sc"
        Editor Find "SYS_CONTROLE_DIA"
        If RetVal
           Then DELETELINE
                ENTER
                UP
                TypeIn "SYS_CONTROLE_DIA = \""
                TypeIn SYS_CONTROLE_DIA
                TypeIn "\""
                DOWN
        EndIf
        Home
        Editor Find "SYS_TITULO_MENU"
        If RetVal
           Then DELETELINE
                ENTER
                UP
                TypeIn "SYS_TITULO_MENU = \""
                TypeIn SYS_TITULO_MENU
                TypeIn "\""
                DOWN
        EndIf
        Do_It!

        ShowPullDown
           SYS_TITULO_MENU : "" : ""
        EndMenu
EndIf

FormKey
Endproc

;*******************************************************************************
;* Bloquear Controle                                                           *
;*******************************************************************************
Proc Bloquear()
MSG=    "Controle N§ "+[Numero_Controle_Dia]+".//"
MSG=MSG+"Do usu rio "+[Chapa]+"/"+[Nome]+" !// //"
MSG=MSG+"Confirma finalizar os lan‡amentos deste controle ?"
CONFGERAL(MSG)
If OK="S"
   Then Atualiza_Controle([Chapa],"Finalizar")
EndIf
Endproc

;*******************************************************************************
;* Liberar Controle                                                            *
;*******************************************************************************
Proc Liberar()
MSG=    "Controle N§ "+[Numero_Controle_Dia]+".//"
MSG=MSG+"Do usu rio "+[Chapa]+"/"+[Nome]+" !// //"
MSG=MSG+"Deseja que os lan‡amentos efetuados com este controle//"
MSG=MSG+"sejam liberados e que novos lan‡amentos//"
MSG=MSG+"sejam controlados por este n£mero !// //"
MSG=MSG+"Confirma liberar este controle ?"
CONFGERAL(MSG)
If OK="S"
   Then Atualiza_Controle([Chapa],"Liberar")
EndIf
Endproc

;*******************************************************************************
;* Liberar Controle                                                            *
;*******************************************************************************
Proc LiberarNovo()
MSG=    "Controle N§ "+[Numero_Controle_Dia]+".//"
MSG=MSG+"Do usu rio "+[Chapa]+"/"+[Nome]+" !// //"
MSG=MSG+"Deseja que os lan‡amentos efetuados com este controle//"
MSG=MSG+"sejam liberados e que novos lan‡amentos//"
MSG=MSG+"sejam controlados por este n£mero !// //"
MSG=MSG+"Confirma liberar este controle para Vocˆ ?"
CONFGERAL(MSG)
If OK="S"
   Then Atualiza_Controle(SYS_CHAPA_USUARIO,"Liberar")
EndIf
Endproc

;*******************************************************************************
;* Liberar Controle                                                            *
;*******************************************************************************
Proc Log_Obs(Param)
MSG=Param+" "+Format("D13",Today())+" "+Time()+" "
[Observacao]=[Observacao]+MSG+"; "
Endproc

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

If Not IsAssigned(SYS_TITULO_MENU)      Then SYS_TITULO_MENU  ="."      EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)    Then SYS_CHAPA_USUARIO="9999"   EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)    Then SYS_NIVEL_USUARIO="C"      EndIf
If Not IsAssigned(SYS_NOME_USUARIO)     Then SYS_NOME_USUARIO ="."      EndIf
If Not IsAssigned(SYS_CHAPA_SUPERVISOR) Then SYS_CHAPA_SUPERVISOR =""   EndIf

View NoWindow "Usuarios"
CoEdit "ContrDia"
PickForm "F"
While True
  CHAVE()
  Switch
    Case CHAVE=0:
         SYS_CHAPA_SUPERVISOR=""
         If [Situacao_Controle_Dia]="L"
            Then
                 msg2="["+SYS_NOME_USUARIO+"/"+SYS_CHAPA_USUARIO+"]"

                 If SYS_CHAPA_USUARIO=[Chapa]
                    Then ShowPopup " Op‡”es " CENTERED
                           "~A~tivar"    : " Ativar este n£mero de Controle"    : "Ativar",
                           "~F~inalizar" : " Finalizar este n£mero de Controle" : "Finalizar",
                           "~C~ancelar"  : " Cancelar procedimento"             : "Cancelar"
                         EndMenu
                         To Opcaoc
                    Else If (SYS_NIVEL_USUARIO="S" or SYS_NIVEL_USUARIO="E")
                            Then
                                 ShowPopup " Op‡”es " CENTERED
                                   "~2~ - Ativar para "+msg2  : " Ativar este n£mero de Controle para vocˆ "+msg2 : "AtivarNovo",
                                   "~F~inalizar" : " Finalizar este n£mero de Controle" : "Finalizar",
                                   "~C~ancelar"  : " Cancelar procedimento"             : "Cancelar"
                                 EndMenu
                                 To Opcaoc
                            Else
                                 ShowPopup " Op‡”es " CENTERED
                                   "~2~ - Ativar para "+msg2  : " Ativar este n£mero de Controle para vocˆ "+msg2 : "AtivarNovo",
                                   "~C~ancelar"  : " Cancelar procedimento"             : "Cancelar"
                                 EndMenu
                                 To Opcaoc
                         EndIf
                 EndIf

                 If Opcaoc="Ativar"     Then Liberar()     EndIf
                 If Opcaoc="AtivarNovo" Then LiberarNovo() EndIf
                 If Opcaoc="Finalizar"  Then Bloquear()    EndIf

            Else If Checa_Supervisor()
                    Then Liberar()
                 EndIf
         EndIf
         Loop
    Case CHAVE=1:
				 MSG= 	 "Caso tenha algun controle em aberto e concluido,//"
         MSG=MSG+"n„o esque‡a de FINALIZA-LO primeiro !// //"
         MSG=MSG+"Novo controle N§ "+[Numero_Controle_Dia]+".//"
         MSG=MSG+"Todos lan‡amentos efetuados no sistema por vocˆ//"
         MSG=MSG+"a partir deste momento, ser„o controlados por este n£mero !// //"
         MSG=MSG+"Confirma este controle "+SYS_NOME_USUARIO+" ?"
         CONFGERAL(MSG)
         If OK<>"S"
            Then Del
                 Loop
         EndIf

         Atualiza_Controle(SYS_CHAPA_USUARIO,"Criar")
  EndSwitch
  QuitLoop
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
