;** Grupos *********************************************************************
;*  Manutencao Cadastro de Grupos                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 20/06/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Atualiza_Itens()
;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: 10/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Atualiza_Itens()
;Ultima Alteracao: 10/04/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Atualiza_Itens()
;Ultima Alteracao: 02/01/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando")
;Ultima Alteracao: 16/07/2013 por Bruno Carvalho
;Motivo Alteracao: Inclusao Comissao do Grupo
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
Moveto [Codigo do Grupo]
End
SEQ = [Codigo do Grupo]
Down

While true
  SetaCorRegistro("Editar")

    TECLA=""
    AguardaTeclasPadrao()

   If Retval=-33
      Then
        ShowPopup " Fun‡”es " CENTERED
         "1-Descri‡Æo do Grupo" : " Aplicar altera‡„o da Descri‡„o para todos os itens" : "F5",
         "2-ComissÆo do Grupo " : " Aplicar altera‡„o da comissÆo para todos os itens"  : "F6",
         "~C~ancelar          " : " Cancelar a Opera‡„o"                                : "CANCELAR"
        EndMenu
         To MenuVar
        Echo off
 
        If MenuVar="CANCELAR" or MenuVar="Esc"
            Then Loop
        EndIf
        RetVal=MenuVar
   EndIf

   Switch
      Case RetVal="F3": SemFicha()
      Case RetVal="F5":
           ConfGeral("Aplicar as altera‡”es no cadastro de Itens ?")
           If Ok="S"
            Then Atualiza_Itens()
                 CHAVE=9
                 Quitloop
           EndIf     
    Case RetVal="F6":
         ConfGeral("Aplicar as altera‡”es das comissäes no cadastro de Itens ?")
         If Ok="S"
          Then Atualiza_Itens2()
               Quitloop
         EndIf            
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             PAGINA("Grupos","MR")
             If EDITAR="S"
                Then CHAVE=0
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        then If QuerExcluir("")
                                Then Grava_LogEx("Grupo")
                                     Del
                                Else UnLockRecord
                             EndIf
                        else Moveto [Codigo do Grupo]
                             End
                             SEQ = [Codigo do Grupo]
                             Down
                             QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC":
           CHAVE=9
           Del
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([])
              Then If IsBlank(SEQ)
                      Then SEQ="1"
                      Else SEQ=StrVal(NumVal(SEQ)+1)
                   EndIf
                   []=SEQ
           EndIf
           []=ALINH()
           CODIGO=[]
           Del
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Down
                   [Codigo do Grupo]=CODIGO
           EndIf
           If IsLockRecord()
              Then End
                   SEQ=[Codigo do Grupo]
                   Down
                   Moveto [Codigo do Grupo]
                   Loop
           EndIf
           Quitloop
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

Moveto [Descricao do Grupo]
While True

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

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

      Switch
      Case Retval="ESC":
           Switch
                 Case Field()="Descricao do Grupo":
                      If QuerDesfazer("")
                         Then If CHAVE=1
                                 Then DEL
                                 Else Undo
                              Endif
                              CHAVE=9
                              QuitLoop
                      Endif
                 OtherWise:
                      Left
           EndSwitch
      Case Retval="ENTER":
           Switch
                 Case Field()="Descricao do Grupo":
                      If IsBlank([])Then Loop EndIf
                      Moveto [Comissao do Grupo]
                 Case Field()="Conta Contabil":
                      QuitLoop
                 OtherWise:
                      Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("")
                      Then Grava_LogEx("Grupo")
                           DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Atualizar Itens                                                 *
;*******************************************************************************
Proc Atualiza_Itens()

Do_It!
ClearAll

NR = NRecords("Itens")
CoEdit "Itens"
Moveto [Codigo do Grupo]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando Itens "+BARRA_STRING)
  If Busca_Lookup("Codigo do Grupo",[Codigo do Grupo],"SM")
     Then cod=[Codigo do Grupo]
          [Codigo do Grupo]=""
          [Codigo do Grupo]=cod
  EndIf
EndScan
Do_It!
ClearAll

CoEdit "Grupos"
PickForm "F"

FastMsg("Fim do processo")
EndProc

;*******************************************************************************
;* Rotina para Atualizar Itens                                                 *
;*******************************************************************************
Proc Atualiza_Itens2()
Private codant, codok, cod

Do_It!                          
ClearAll

codant="****"

NR = NRecords("Itens")
CoEdit "Itens"
Moveto [Codigo do Grupo]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando itens "+BARRA_STRING)

  If [Codigo do Grupo]<>codant
     Then codant=[Codigo do Grupo]
          If Busca_Lookup("Codigo do Grupo",[Codigo do Grupo],"SM")
             Then codok=true
             Else codok=false
          EndIf
  EndIf
  If codok
     Then [Comissao do Item]=Reg_Busca_Lookup["Comissao do Grupo"]
  EndIf        

EndScan
Do_It!
ClearAll

CoEdit "Grupos"
PickForm "F"

FastMsg("Fim do processo")
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 "Grupos"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

Release Vars All
Release Procs All
