;** GNRE ***********************************************************************
;*  Digitacao de GNRE                                                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 23/03/2011 por Karina Andrade
;Ultima Alteracao: 18/04/2011 por Bruno/Karina
;Motivo Alteracao: Ajustes campo Observa‡äes
;Ultima Alteracao: 13/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes campo CNPJ e IE
;Ultima Alteracao: 14/12/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes l¢gica           
;Ultima Alteracao: 01/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de controle 
;Ultima Alteracao: 01/04/2014 por Andrey Fillipe            
;Motivo Alteracao: Retirado verificacao de (Data Pag menor que data do vencimento)
;Ultima Alteracao: 06/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()      
                       
;*******************************************************************************
;* Rotina para Controlar Chave                                                 *
;*******************************************************************************
Proc CHAVEC()
While True
  Moveto [Numero do Lancamento]
  End
  NLANC= [Numero do Lancamento]
  Moveto [Numero do Lancamento]

  If OPCAO_FORM="F"
     Then Down
     Else PgDn
  EndIf
  Moveto [Numero do Lancamento]
  
  TECLA=""
  SetaCorRegistro("Editar")
  
While True
  AguardaTeclasPadrao()
  Switch
  Case RetVal=-33 : SemFuncoes()
  Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="F"
            Then OPCAO_FORM="1"
            Else OPCAO_FORM="F"
         EndIf
         Del
         CHAVEC=5   
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           If OPCAO_FORM="F"
              Then PAGINA("GNRE","MR")
              Else PAGINA("GNRE","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "1"
                  Echo Normal
                  Echo Off
                  CHAVEC=0
                  Controla_EdicaoC()
             Case EXCLUIR="S":
                  PickForm "1"
                  Echo Normal
                  Echo Off
                  If QuerExcluir("")
                     Then del
                          CHAVEC=9
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="1"
              Then PickForm "1"
              Else PickForm "F"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER":
         If IsBlank([])
            Then If IsBlank(NLANC)
                    Then []="1"
                    Else []=StrVal(NumVal(NLANC)+1)
                 EndIf
         EndIf
         []=Alinh()
         NLANC=[]
         Del
         PickForm "1"
         Moveto [Numero do Lancamento]
         Locate NLANC
         If Retval
            Then CHAVEC=0
            Else CHAVEC=1
                 End PgDn
                 [Numero do Lancamento ]=NLANC
                 [Codigo da Empresa    ]=SYS_EMPRESA_DEFAULT
         EndIf
         If Not IsLockRecord()
            Then Echo Normal
                 Echo Off
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()

If CHAVEC=1
  Then Moveto [Codigo da Empresa]
  Else Moveto [Data GNRE]
EndIf
  
While True

  TECLA=" Esc=Retornar  " 
  If Field()="Codigo da Empresa"   Or
     Field()="Codigo"              Or 
     Field()="Banco GNRE"          Or
     Field()="UF Favorecida"       Or 
     Field()="Codigo do Documento" 
     Then TECLA=TECLA+"F1=Tabelas  "
     Else TECLA=TECLA+"            "
  EndIf
  If CHAVEC=0
     Then TECLA=TECLA+"Del=Excluir  "
     Else TECLA=TECLA+"             "
  EndIf
  TECLA=TECLA+"F5=Informa‡”es Comp.  PgDn=Finalizar  "
  
  Prompt TECLA

  FORMMSGCAMPO=""
  MSGCAMPO=""
  Switch
    Case Field()="Numero do Documento_Ref" : MSGCAMPO="N£mero do Documento"
    Case Field()="Mes Referente"           : MSGCAMPO=Field()
    Case Field()="Ano Referente"           : MSGCAMPO=Field()
  EndSwitch

  Wait Field
    Message MSGCAMPO
     Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F5"
  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case RetVal="F1":
       If Field()="Codigo da Empresa"   Or
          Field()="Codigo"              Or 
          Field()="Banco GNRE"          Or
          Field()="UF Favorecida"       Or 
          Field()="Codigo do Documento" 
            Then CONSULTAF1()
       EndIf
  Case RetVal="F5":
       Edita_Memo("Observacao",08,00,10,48,"Informa‡”es Complementares")         
  Case RetVal="PGDN":
       CHAVEC=9
       QuitLoop
  Case Retval="DEL":
       If CHAVEC=0 And Checa_Supervisor()
          Then If QuerExcluir("deste lan‡amento")
                  Then Del
                       CHAVEC=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
         Case Field()="Codigo da Empresa":
              If QuerDesfazer("")
                 Then If CHAVEC=1
                         Then DEL
                         Else Undo
                      Endif
                      CHAVEC=9
                      QuitLoop
              EndIf
         Case Field()="Codigo"                   : 
              If CHAVEC=1
                 Then Moveto [Codigo da Empresa]
                 Else If QuerDesfazer("")
                         Then Undo
                              CHAVEC=9
                              QuitLoop
                      EndIf
              EndIf            
         Case Field()="CNPJ"                     : Moveto [Codigo             ]
         Case Field()="UF Favorecida"            : Moveto [Codigo             ]
         Case Field()="IE_UF Favorecida"         : Moveto [UF Favorecida      ]
         Case Field()="Numero do Convenio"       : Moveto [IE_UF Favorecida   ]
         Case Field()="Codigo do Documento"      : Moveto [Numero do Convenio ]
         Case Field()="Observacao"               : Moveto CAMPO
         OtherWise:
              Left
         EndSwitch
  Case Retval="ENTER":
       If IsBlank([])
          Then If Field()="Codigo da Empresa"       Or
                  Field()="CNPJ"                    Or
                  Field()="Codigo"                  Or
                  Field()="UF Favorecida"           Or
                  Field()="Codigo do Documento"     Or
                  Field()="Numero do Documento_Ref" Or
                  Field()="Data Vencimento"         Or
                  Field()="Data GNRE"               Or
                  Field()="Valor Principal"         Or
                  Field()="Valor GNRE"              Or
                  Field()="Banco GNRE"              Or
                  Field()="Agencia GNRE"            Or
                  Field()="Numero GNRE" 
                  Then Loop
               EndIf
       EndIf
       Switch
       Case Field()="Codigo da Empresa": Moveto [CNPJ]
       Case Field()="CNPJ":
            If Not Checa_CGC_CPF_Formatado([CNPJ])
               Then Loop
            EndIf
            CGC_OK=True
            Moveto [Codigo]
            Ativa_Lookup()
            Moveto [CGC]
            Locate IndexOrder by "CGC" [GNRE->CNPJ]
            If Not RetVal
               Then CGC_OK=False
               Else CODIGO_CLIENTE=[Codigo]
            EndIf
            KeyPress "ESC"
            If CGC_OK
               Then [Codigo]=CODIGO_CLIENTE
                    Moveto [UF Favorecida]
               Else Mensagem("Emitente n„o encontrado pelo CNPJ !")
                    Moveto [Codigo]
            EndIf
       Case Field()="Codigo"          : 
           If Busca_Lookup("Codigo",[Codigo],"")
             Then If CHAVEC=1
                     Then If Cliente_Inativo([Codigo])
                             Then Loop
                          EndIf   
                  EndIf
                  [CNPJ]=REG_BUSCA_LOOKUP["CGC"]
                  [IE  ]=REG_BUSCA_LOOKUP["IE" ]                  
                  Moveto [UF Favorecida   ]
           EndIf     
       Case Field()="UF Favorecida"   : Moveto [IE_UF Favorecida] 
       Case Field()="IE_UF Favorecida":
            If IsBlank([]) 
              Then []="INEXISTENTE"
              Else Aguarde("Validando IE")
                   If Not Valida_IE([],[UF Favorecida])
                      Then LimpAguarde()
                           Loop
                   EndIf
                   LimpAguarde()
            EndIf
            Moveto [Numero do Convenio]
       Case Field()="Numero do Convenio"      : Moveto [Codigo do Documento]
       Case Field()="Codigo do Documento"     : Moveto [Serie do Documento]
       Case Field()="Serie do Documento"      : Moveto [Numero do Documento_Ref]
       Case Field()="Numero do Documento_Ref" :
            If Len([Numero do Documento_Ref])>6
               Then Mensagem("O Sintegra s¢ aceita os £ltimos 6 d¡gitos a direita de um documento! // //Corrigir !")
                    Loop
            EndIf   
            Right
       Case Field()="Mes Referente":
            If IsBlank([])
               Then DTATUAL=Today()
                    []=ALINHM(StrVal(Month(DTATUAL)),2)
            EndIf
            Right
       Case Field()="Ano Referente":
            If IsBlank([])
               Then DTATUAL=Today() 
                    []=ALINHM(StrVal(YEAR(DTATUAL)),4)
            EndIf
            Right
       Case Field()="Data Vencimento": Moveto [Valor Principal] 
       Case Field()="Valor Principal": Moveto [Data GNRE]      
       Case Field()="Data GNRE"      :
            Moveto [Valor GNRE]     
       Case Field()="Numero GNRE":
            CHAVEC=8
            QuitLoop 
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ;(DigitaC)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
While True
  If CHAVEC=9 Then QuitLoop EndIf
  DIGITAC() 
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc ; Controla_EdicaoC

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
If Not IsAssigNed(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
LimpAguarde()

CHAVEC=""

Coedit NoWindow "GNRE"

PickForm "F"
If NRecords("GNRE")>1
   Then Home
        If IsBlank([Numero do Lancamento])
           Then Echo Normal
                Echo Off
                MSG="Existe registro com Erro !// //"
                MSG=MSG+"Verificar numero lan‡amento em branco !// //"
                MSG=MSG+"Excluir o lan‡amento e verificar a origem do mesmo !"
                Mensagem(MSG)
        EndIf
EndIf

OPCAO_FORM="F"
While True
  CHAVEC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
