;** Cta_0500 *******************************************************************
;*  Manutencao Cadastro de Plano de Contas / SPED bloco 0500                   *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 16/11/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: inclusao conta referenciada
;Ultima Alteracao: 02/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes data inclusĆo/altera‡Ćo livre

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  SetaCorRegistro("Editar") 
  End
  SEQ = [COD_CTA]
  Down Down
  Moveto [COD_CTA]
  EDITAR=""

  While True

  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
    Then Echo Normal
         Echo Off
         ShowPopup " Fun‡”es " CENTERED
          "~F9~ Editar Especial"                   : "Edi‡„o Especial                  " : "F9",
          Separator,
          "~C~ancelar         " : " Cancelar a Opera‡„o              " : "CANCELAR"
         EndMenu
         To MenuVar
         Echo Off

        If MenuVar="CANCELAR" or MenuVar="Esc"
            Then Loop
        EndIf      
        
        If MenuVar="F8"
           Then Del
                CHAVE=0
                Editar(MenuVar)
                CHAVE=5
                Return
        EndIf                              
        RetVal=MenuVar
        
  EndIf

  Switch
  Case RetVal="F3": SemFicha()
  Case RetVal=-94 : MsgTeclasPadrao() 
  Case RetVal="F5":
       PARAMETRO()
       QuitLoop
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
             PAGINA("ctc_0500","MR")
             If EDITAR="S"
                Then CHAVE=0
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then DEL
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop  
  Case RetVal="F9":
         Del
         While True
           PAGINA_PLANO("ctc_0500","MR")
           If CHAVE=9 Then QuitLoop EndIf
         EndWhile
         QuitLoop
  Case Retval="ESC":
         CHAVE=9
         Del
         Return
  Case Retval="ENTER":
         If Not Checa_Chave("N")
            Then QuitLoop
            Else Return
         EndIf
  EndSwitch
 EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para checagem da chave                                               *
;*******************************************************************************
Proc Checa_Chave(Tipo)
Private Tipo

CODIGO=[]
Del
If IsBlank(CODIGO)
   Then Return False
EndIf

Moveto [COD_CTA]
Locate CODIGO
If Retval
   Then CHAVE=0
   Else CHAVE=1
        If Tipo="E"
           Then Keypress "INS"
           Else End Down Down
        EndIf
        [COD_CTA]=CODIGO
        CHAVE=1
EndIf
If Not IsLockRecord()
   Then Locate CODIGO
        Return True
EndIf
Return False
EndProc

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

Moveto [NOME_CTA]
While True
      TECLA= " Esc=Retornar  "
      If CHAVE=0
         Then TECLA=TECLA + "Del=Excluir  "
      EndIf

      MSGCAMPO=Field()
      Switch  
        Case Field()="NOME_CTA"   : MSGCAMPO=MSGCAMPO+",Descri‡Ćo da Conta"
        Case Field()="IND_CTA"    : MSGCAMPO=MSGCAMPO+",Tipo da Conta: Analitica/Sintetica"
        case Field()="COD_NAT_CC" : MSGCAMPO=MSGCAMPO+",Codigo da Natureza da conta, [F1]Consultar tabela"
        case Field()="DT_ALT"     : MSGCAMPO=MSGCAMPO+",Data da InclusĆo/Altera‡Ćo"
        case Field()="NIVEL"      : MSGCAMPO=MSGCAMPO+",Nivel da Conta"
        Case Field()="COD_CTA_REF": MSGCAMPO=MSGCAMPO+",C˘digo Conta correlacionado no Plano Contas Referenciado"
      EndSwitch

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

      Switch
      Case RetVal="F1":
           If Field()="COD_NAT_CC"
              Then MSGCAMPO=""
              
                   Echo Normal
                   Echo Off
                   ShowPopup " Situa‡”es " CENTERED
                    "01=~A~tivo                ": " Contas de ativo      " :"01",
                    "02=~P~assivo              ": " Contas de passivo    " :"02",
                    "03=Patrim“nio ~L~ˇquido   ": " Patrim“nio lˇquido   " :"03",
                    "04=Contas de ~R~esultado  ": " Contas de resultado  " :"04",
                    "05=Contas de C~o~mpensa‡ao": " Contas de Compensa‡ao" :"05",
                    "09=Outras                 ": " Outras               " :"09",
                    "~C~ancelar  ": " Cancelar a Opera‡„o           " : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off

                  If MenuVar="CANCELAR" or MenuVar="Esc"
                      Then Loop
                      Else []=MenuVar
                  EndIf
           EndIf
      Case Retval="ESC":
           If Field()="NOME_CTA"
              Then If QuerDesfazer("")
                      Then If CHAVE=1
                              Then Del
                              Else Undo
                           EndIf
                           CHAVE=9
                           QuitLoop
                   Endif
              Else Left
           EndIf
      Case Retval="ENTER":
           Switch
             Case Field() = "NOME_CTA"    : If IsBlank([]) Then FastMsg("Valor inv lido") Loop EndIf
             Case Field() = "IND_CTA"     : If IsBlank([]) Then FastMsg("Valor inv lido") Loop EndIf
             Case Field() = "NIVEL"       : If []<=0       Then FastMsg("Valor inv lido") Loop EndIf
             Case Field() = "COD_NAT_CC"  : If IsBlank([]) Then FastMsg("Valor inv lido") Loop EndIf
             Case Field() = "DT_ALT"      : If IsBlank([]) Then FastMsg("Valor inv lido") Loop EndIf
             Case Field() = "COD_CTA_REF" :
               quitloop
           EndSwitch
           Right
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("")
                      Then DEL
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
UnLockRecord
EndProc

;*******************************************************************************
;*  ROTINA PARA PAGINACAO DE TABELA EM FORM                                    *
;*******************************************************************************
Proc Pagina_Plano(TabIda,Tipo)
Private TABIDA,TIPO

Home
While True
   SetaCorRegistro("Paginar")
   ImageRights ReadOnly

   Prompt " Esc=Retornar  Ins=Incluir  Enter=Editar  Del=Excluir  Ctrl+Z=Pesquisar  Alt+Z=Pr˘ximo"

   Wait Table
    Message Field()
     Until "F1","F2","F9","F35","ESC","ENTER","DEL","Down","Up","FIELDVIEW","ZOOM","ZOOMNEXT","INS"

     If RetVal = "F1"
        Then Loop
     EndIf

     If RetVal = "ZOOM"
        Then PESQUISA()
             Loop
     EndIf
     If RetVal = "ZOOMNEXT"
        Then PESQUISACON()
             Loop
     EndIf
     If Retval = "ESC"
        Then CHAVE=9
             QuitLoop
     EndIf
     If Retval = "Down"
        Then Down
     EndIf
     If Retval = "Up"
        Then Up
     EndIf
     If Retval = "F9" Or Retval = "F2" Or Retval = "ENTER"
        Then If Not IsLockRecord()
                Then ImageRights
                     SetaCorRegistro("Editar")
                     CHAVE=0
                     Controla_EdicaoC()
             EndIf
     EndIf
     If Retval = "INS"
        Then ImageRights
             Ins
             SetaCorRegistro("Editar")

             Moveto [COD_CTA]

             Prompt " Esc=Cancelar "

             Wait Field
                  Until "ESC","ENTER"

             Switch
             Case Retval="ESC":
                  Del
             Case Retval="ENTER":
                  If Checa_Chave("E")
                     Then DIGITA()
                  EndIf
             EndSwitch
     EndIf
     If Retval = "DEL"
        Then If Not IsLockRecord()
                Then CONFIRMA()
                     If OK="S"
                        Then ImageRights
                             DEL
                     EndIf
             EndIf
     EndIf
EndWhile
ImageRights
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 NoWINDOW "ctc_0500"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then PickForm "F"
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
