;** Opaf_Us ********************************************************************
;*  Manutencao Cadastro de Usuarios do OPAF                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/07/2013 por Karina Andrade
;Ultima Alteracao: 25/07/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 12/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 14/12/2015 por Bruno Carvalho
;Motivo Alteracao: InclusĆo do tipo GERENTE

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()

While True
  SetaCorRegistro("Editar")
  Home
  Moveto [Chapa]
  End
  SEQ = [Chapa]
  Down

  While True
    TECLA=""
    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("Opaf_US","MR")
          CHAPA=[Chapa]
          If EDITAR="S"
             Then CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                     Then If QuerExcluir("deste cliente")
                             Then Del
                             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(SEQ)
                    Then []="1"
                    Else If SEQ="9999"
                            Then Mensagem("Fim dos c˝digos livres!!")
                                 Del
                                 QuitLoop 
                          EndIf   
                          []=StrVal(NumVal(SEQ)+1)
                 EndIf
         EndIf        
         []=Alinh()
         CHAPA=[]
         Del
         Locate CHAPA
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                 End Down
                 [Chapa]=CHAPA
         EndIf  
         If IsLockRecord()
            Then If CHAVE=1 Then Del EndIf
                 QuitLoop
         EndIf
         Return 
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (Chave)

;*******************************************************************************
;* Rotina para digitacao das informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Moveto [Nome]
While True
      TECLA=" Esc=Retornar  "
      
      If CHAVE=0
         Then TECLA = TECLA + "Del=Excluir  F3=Senha  "
              If Field()="Nivel de Acesso" 
                 Then TECLA = TECLA + "F1=Consulta  "
              EndIf
              TECLA = TECLA + "PgDn=Finalizar  "
         Else If Field()="Nivel de Acesso" 
                 Then TECLA = TECLA + "F1=Consulta  "
              EndIf     
      EndIf   
         
      Switch
        Case Field()="Chapa"           : MSGCAMPO="Sequencia"
        Case Field()="Nome"            : MSGCAMPO="Nome do Usu rio"
        Case Field()="Nivel de Acesso" : MSGCAMPO="Nˇvel de Acesso  Supervisor/Operador"
        Case Field()="Status"          : MSGCAMPO="Status do Usu rio  Ativo/Inativo"
        OtherWise                      : MSGCAMPO=Field() 
      EndSwitch      
      
      Prompt TECLA            

      Wait Field
           MESSAGE MSGCAMPO
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F3","F4","F1","PGDN"
      Switch
      Case RetVal="F1":
           If Field()="Nivel de Acesso"
              Then Echo Normal
                   Echo Off
                   ShowPopup " Nivel de Acesso " CENTERED
                             "Supervisor " : "Acesso total a rotina de emiss„o do cupom " : "SUP",
                             "Gerente    " : "Acesso especial a rotina de emiss„o do cupom " : "GER",
                             "Operador   " : "Acesso restrito a rotina de emiss„o do cupom " : "OP"
                   EndMenu
                   To MenuVar
                   Echo Off
                   
                   Switch
                     Case MenuVar="SUP" : [Nivel de Acesso]="SUPERVISOR" 
                     Case MenuVar="GER" : [Nivel de Acesso]="GERENTE" 
                     Case MenuVar="OP"  : [Nivel de Acesso]="OPERADOR"   
                   EndSwitch  
                   Loop
           EndIf              
      Case RetVal="F3":
           If CHAVE=0
              Then NovaSenha()
                   Moveto [Nome]
           Endif
      Case RetVal="PGDN" And CHAVE=0:
           If IsBlank([Senha])
              Then MSG=    "N„o foi informado a senha para este Usuario !  //"
                   MSG=MSG+"Por favor pressione a tecla F3 para cadastra-la. "
                   Mensagem(MSG)
              Else CHAVE=9
                   QuitLoop
           EndIf
      Case Retval="ESC":
           If Field()="Nome"
              Then If QuerDesfazer("")
                      Then If CHAVE=1
                              Then Del
                              Else If PRIMEIRAVEZ
                                      Then PRIMEIRAVEZ=False
                                           Del
                                      Else If RecordStatus("Modified")
                                              Then Undo
                                           EndIf
                                   EndIf        
                           EndIf
                           CHAVE=9
                           QuitLoop
                   EndIf
              Else Left
           EndIf           
      Case Retval="ENTER":
           If IsBlank([])
              Then Loop
           EndIf
           PRIMEIRAVEZ=False
           If Field() = "Status"
              Then If CHAVE=0
                      Then QuitLoop
                      Else PRIMEIRAVEZ=True
                           CHAVE=0
                           Moveto [Nome] 
                   EndIf   
              Else Right
           EndIf
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("")
                      Then DEL
                           QuitLoop
                   EndIf
           EndIf          
  EndSwitch
EndWhile
EndProc  ; (Digita)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Usuario(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_SENHA1"        : Campo="NO"
            Case Campo="TG_SENHA2"        : Campo="TG_SENHA1"
            Case Campo="YES" Or Campo="NO": Campo="TG_SENHA1"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_SENHA1"      : Campo="TG_SENHA2"
                         VSDGSENHA1 =ControlValue("TG_SENHA1")
                    Case Campo="TG_SENHA2"      : Campo="YES"
                         VSDGSENHA2 =ControlValue("TG_SENHA2")
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_SENHA1":
       MSG_CAMPO="Informe a nova senha do usu˙rio"
  Case Campo="TG_SENHA2":
       MSG_CAMPO="Confirme a nova senha do usu˙rio"
  Case Campo="NO" :
       MSG_CAMPO="Cancelar/Retornar !"
  Case Campo="YES":
       MSG_CAMPO="Confirmar Dados/Entrar !"
EndSwitch

SelectControl Campo

ExibeRodapeSD(MSG_CAMPO)
ExibeRodape(2,"Esc=Retornar  Enter=Avan‡ar  "+TECLA)
RefreshDialog

Return Temp
EndProc  ; (Sd_Usuario)

;*******************************************************************************
;* Rotina Monta Janela Digitacao De Senha/Vencida                              *
;*******************************************************************************
Proc NovaSenha()
Private wii,senhaok

MSG="Para sua maior seguran‡a, observe nossa(s) recomenda‡”es:       // //"
MSG=MSG+"- Evite utilizar sempre a mesma senha.                      //"
MSG=MSG+"- Procure utilizar os 6 caracteres dispon­veis em sua senha.//"
MSG=MSG+"- Evite utililzar mais de 2 caracters iguais consecutivos.  //"
Mensagem(MSG)

VSDGSENHA=[Senha]

VSDGSENHA1=""
VSDGSENHA2=""
While True
  Show_Janela=2
  ShowDialog "Alterar a senha do usu˙rio" Proc "SD_Usuario"
    Trigger "OPEN","ARRIVE"
      Key "ENTER","ESC"
       @ 07,22   Height 09 Width 37

       Label  @ 1,00 "Nova senha: " for "TG_SENHA1"
       Accept @ 1,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA1" to VSDGSENHA1

       Label  @ 3,00 "Confirmar nova senha: " for "TG_SENHA2"
       Accept @ 3,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA2" to VSDGSENHA2

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

  Enddialog
  If Not RetVal
     Then Return False
  EndIf

  If (VSDGSENHA1<>VSDGSENHA2) Or
     IsBlank(VSDGSENHA1) or
     IsBlank(VSDGSENHA2)
     Then MENSAGEM("A nova senha e a senha confirmada n„o conferem !// //Digite-as novamente !")
          Loop
  EndIf

  [Senha] = VSDGSENHA1
  Return True

EndWhile
EndProc ; (NovaSenha)

;*******************************************************************************
;* 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"

If Checa_Supervisor()
   Then CoEdit "OPAF_US"
        PickForm "F"
        While True
           CHAVE()
           If CHAVE=9
              Then QuitLoop
           EndIf
           Controla_EdicaoC()
        EndWhile
        Do_It!
        ClearAll
EndIf
Release Vars All
Release Procs All