;** PD_US **********************************************************************
;*  PlugDash  - usuarios                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/07/2019 por Anivel Augusto Rodrigues     
;Ultima Alteracao:   /  /     por                            
;Motivo Alteracao: 

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

While True
  SetaCorRegistro("Editar")
  Moveto [ID]
  End
  SEQ = [ID]
  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("PD_US","MR")
           If EDITAR="S"
              Then CHAVE=0
                   ID=[ID]
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then Grava_LogEx("PD_US")
                                   Del
                              Else UnLockRecord
                                   Return False
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case RetVal="ESC":
         CHAVE=9
         Del
         Return         
    Case RetVal="ENTER":
         If Not Seta_Sequencia(SEQ,True)
            Then Del
                 QuitLoop
         EndIf
         ID=[]
         Del
         Moveto [ID]
         Locate ID
         If RetVal
            Then CHAVE=0
            Else CHAVE=1
                 End Down
                 [ID]=ID
         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  F4=Senha  "
      If CHAVE=0
         Then TECLA=TECLA+"Alt+F=Fun‡Æo  "
      EndIf
      
      MSGCAMPO=""
      Prompt TECLA

      MSGCAMPO=Field()
      Switch
        Case Field()="Nome"                     : MSGCAMPO="Nome do Usu rio"
      EndSwitch  

      Wait Field
           MESSAGE MSGCAMPO
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F3","F4","F1","PGDN",-33

      Switch    
      Case RetVal=-33 :   
           ShowPopup " Fun‡Æo " CENTERED
            "[~F3~] Ativa/Inativa" : " Ativa/Inativa a opera‡Æo"         : "F3",
            "[~F4~] Senha        " : " Informe a senha para a opera‡Æo"  : "F4",
            Separator,
            "~C~ancelar          " : " Cancelar"                         : "CANCELAR"
           EndMenu
           To MenuVar
           Echo Off
      
           If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Retval=""    
           EndIf
           
           Switch
             Case MenuVar="F3" : Ativa_Inativa()
                                 If CHAVE=9 Then QuitLoop EnDIf
             Case MenuVar="F4" : If CHAVE=0
                                    Then Senha()
                                         If CHAVE=9 Then QuitLoop EnDIf
                                 Endif                    
           EndSwitch
           
      Case RetVal="F1":
           If Field()=""
              Then ConsultaF1() 
           EndIf           
      Case RetVal="F3":
           Ativa_Inativa()
           If CHAVE=9 Then QuitLoop EnDIf
      Case RetVal="F4":
           If CHAVE=0
              Then Senha()
                   If CHAVE=9 Then QuitLoop EnDIf
           Endif           
      Case RetVal="ESC":   
           Switch
               Case Field()="Nome" :
                    If QuerDesfazer("")
                       Then If CHAVE=1
                              Then Del
                              Else Undo
                            EndIf
                            CHAVE=9
                            QuitLoop
                    EndIf  
            OtherWise : Left
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="ENTER":
           Switch
              Case Field()="Nome" : 
                   If Not IsBlank([]) 
                      Then Moveto [Departamento ]
                   EndIf
              Case Field()="Departamento" : 
                   If Not IsBlank([]) 
                      Then Moveto [Email ]
                   EndIf
              Case Field()="Email" :
                   If Not IsBlank([])
                      then If CHAVE=1
                              Then If Senha()
                                      Then CHAVE=9
                                           QuitLoop
                                   EndIf         
                              Else CHAVE=9
                                   QuitLoop     
                           EndIf
                   EndIf
              otherwise: Right             
           EndSwitch
      EndSwitch
EndWhile

EndProc ;DIGITA()

;*******************************************************************************
;* Rotina para Ativar/Inativar a Opera‡Æo                                     *
;*******************************************************************************
Proc Ativa_Inativa()
Private INATIVO,MSG

Switch
  Case IsBlank([Inativo]) Or [Inativo]="N" : INATIVO = "S"
  Case [Inativo]="S"                       : INATIVO = "N"
EndSwitch

If INATIVO="S"
   Then MSG = "Deseja INATIVAR a opera‡Æo "+[Nome]+"?"
   Else MSG = "Deseja ATIVAR a opera‡Æo "+[Nome]+"?"
EndIf
    
If ConfGeral(MSG)
   Then [Inativo] = INATIVO
EndIf

Switch
  Case IsBlank([Nome])                    : Moveto [Nome]
  Case IsBlank([Departamento           ]) : Moveto [Departamento           ]
  Case IsBlank([Email                  ]) : Moveto [Email                  ]
  Case IsBlank([Senha])                   : Moveto [Nome]
  OtherWise                               : CHAVE=9
EndSwitch                                         

EndProc ;Ativa_Inativa()

;*******************************************************************************
;* 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 senha da opera‡Æo"
  Case Campo="TG_SENHA2":
       MSG_CAMPO="Confirme a senha da opera‡Æo"
  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 Senha()
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 "Informe a Senha" Proc "SD_Usuario"
    Trigger "OPEN","ARRIVE"
      Key "ENTER","ESC"
       @ 07,22   Height 09 Width 37

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

       Label  @ 3,00 "Confirmar 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 senha informada n„o conferem !// //Digite-as novamente !")
          Loop
  EndIf
  [Senha        ]=VSDGSENHA1
  
  Switch
    Case IsBlank([Nome])                    : Moveto [Nome]
    Case IsBlank([Departamento           ]) : Moveto [Departamento           ]
    Case IsBlank([Email                  ]) : Moveto [Email                  ]
    Case IsBlank([Senha])                   : Moveto [Nome]
    OtherWise                               : CHAVE=9
  EndSwitch
  Return True
EndWhile

EndProc ;Senha()

;*******************************************************************************
;* 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 "PD_US"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

Release Vars All
Release Procs All
