;** Familia ********************************************************************
;*  Manutencao Cadastro de Familia                                             *
;*******************************************************************************
;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: 06/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Comissao da Familia
;Ultima Alteracao: 06/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes "-33" Descri‡Æo da Fam¡lia
;Ultima Alteracao: 28/04/2015 por Luis Gustavo
;Motivo Alteracao: Iclusao Campo [Comissao_Frete_Familia] no Form
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 25/06/2019 por Kamila Gomes
;Motivo Alteracao: Adicionado/ajustado campo Link_Site_Familia e form 2 (ManutencaoII)

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

While true
  Moveto [Codigo da Familia]
  End
  SEQ = [Codigo da Familia]
  If OPCAO_FORM="F"
   Then Down
   Else PgDn
  EndIf
  
  While true
    SetaCorRegistro("Editar")
  
    TECLA=""
    AguardaTeclasPadrao()
  
    If Retval=-33
       Then
         ShowPopup " Fun‡”es " CENTERED
          "1-Descri‡Æo da fam¡lia" : " Aplicar altera‡„o da Descri‡„o para todos os itens" : "F5",
          "2-ComissÆo da fam¡lia " : " 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": 
         If OPCAO_FORM="F"
            Then OPCAO_FORM="2"
            Else OPCAO_FORM="F"
         EndIf
         Del
         CHAVE=5
         Return
    Case RetVal="F5":
         ConfGeral("Aplicar as altera‡”es das descri‡äes no cadastro de Itens ?")
         If Ok="S"
          Then Atualiza_Itens()
               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
           If OPCAO_FORM="F"
              Then PAGINA("Familia","MR")
              Else PAGINA("Familia","MT")
           EndIf
           If EDITAR="S"
              Then CHAVE=0
                   PickForm "2"
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      then If QuerExcluir("")
                              Then Grava_LogEx("Familia")
                                   PickForm "2"
                                   Del
                              Else UnLockRecord
                           EndIf
                           If OPCAO_FORM="2"
                              Then PickForm "2"
                              Else PickForm "F"
                           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 SEQ="1"
                    Else SEQ=StrVal(NumVal(SEQ)+1)
                  EndIf
                  []=SEQ
         EndIf
         []=ALINH()
         CODIGO=[]
         del
         PickForm "2"
         Locate CODIGO
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                 End 
                 CtrlPgDn
                 [Codigo da Familia]=CODIGO
         EndIf
         If IsLockRecord()
            Then If OPCAO_FORM="F"
                    Then PickForm "F"
                         QuitLoop
                 EndIf
         EndIf
         Return  
    EndSwitch
  EndWhile
EndWhile
EndProc

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

Moveto [Descricao da Familia]
While True

      TECLA=" Esc=Retornar  "

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

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

      Switch

      Case Retval="ESC":
           Switch
                 Case Field()="Descricao da Familia":
                      If QuerDesfazer("")
                         Then If CHAVE=1
                                 Then DEL
                                 Else Undo
                              Endif
                              CHAVE=9
                              QuitLoop
                      EndIf
                 OtherWise:
                      Left
           EndSwitch
      Case Retval="ENTER":
           Switch
                 Case Field()="Link_Site_Familia" :  QuitLoop
                 OtherWise                        : Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("")
                      Then Grava_LogEx("Familia")
                           DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

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

Do_It!
ClearAll

codant="****"

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

  If [Codigo da Familia]<>codant
     Then codant=[Codigo da Familia]
          If Busca_Lookup("Codigo da Familia",[Codigo da Familia],"SM")
             Then codok=true
             Else codok=false
          EndIf
  EndIf
  If codok
     Then cod=[Codigo da Familia]
          [Codigo da Familia]=""
          [Codigo da Familia]=cod
  EndIf        

EndScan
Do_It!
ClearAll

CoEdit "Familia"
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 da Familia]
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando itens "+BARRA_STRING)

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

EndScan
Do_It!
ClearAll

CoEdit "Familia"
PickForm "F"

FastMsg("Fim do processo")
EndProc


;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
Moveto "Familia"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
   Else PickForm "2"
EndIf
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

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

CoEdit "Familia"
PickForm "F"
OPCAO_FORM="F"

While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "2"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll

Release Vars All
Release Procs All
