;** OPAF_ECF *******************************************************************
;*  Informa‡äes adcionais ECF                                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/02/2011 por Karina Andrade
;Ultima Alteracao: 10/03/2011 por Karina Andrade
;Motivo Alteracao: Add Campo Reinicio Opera‡Æo
;Ultima Alteracao: 15/08/2011 por Karina Andrade 
;Motivo Alteracao: Ajustes Edicao
;Ultima Alteracao: 22/08/2011 por Karina Andrade 
;Motivo Alteracao: Ajustes Exclusao e Edicao
;Ultima Alteracao: 19/02/2013 por Kamila Gomes 
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 07/11/2016 por Bruno Carvalho 
;Motivo Alteracao: Adicionado "Codigo da Empresa"
;Ultima Alteracao: 15/12/2016 por Rafael Matos 
;Motivo Alteracao: Adicionado "Inativo"
;Ultima Alteracao: 02/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado Conta          
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVEC()
While True
   Moveto [Numero de Serie]
   End
   NSERIE=[Numero de Serie]
   If OPCAO_FORM="F"
     Then Down
     Else PgDn
   EndIf
   Moveto [Numero de Serie]

   SetaCorRegistro("Editar")
   While True

  MSGCAMPO=""
  TECLA   =""
  
  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":
         While True
           If OPCAO_FORM="F"
              Then PAGINA("Opaf_ECF","MR")
              Else PAGINA("Opaf_ECF","MT")
           EndIf
           NSERIE=[Numero de Serie]
           If EDITAR="S"
              Then PickForm "1"
                   CHAVEC=0
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then PickForm "1"
                                   EXCLUSAO()
                              Else UnLockRecord
                           EndIf
                           If OPCAO_FORM="1"
                              Then PickForm "1"
                              Else PickForm "F"
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER":
         If IsBlank([])
          Then Loop
          Else NSERIE=[]
               Del
               PickForm "1"
               Locate NSERIE
               If Retval
                Then CHAVEC=0
                Else CHAVEC=1
                     End Pgdn
                     Moveto [Numero de Serie]
                     []=NSERIE
               EndIf      
         EndIf
         If IsLockRecord()
            Then If OPCAO_FORM="F"
                    Then PickForm "F"
                         QuitLoop
                 EndIf
         EndIf
         Return
      EndSwitch
   EndWhile
EndWhile
EndProc  ; (ChaveC)

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

If CHAVEC=1
  Then Moveto [Numero ECF]
  Else If [Codigo da Empresa]=""
          Then Moveto [Modelo Impressora]
          Else Moveto [Reinicio Operacao]
       EndIF   
EndIf
  
While True

  TECLA=" Esc=Retornar  "
  MSGCAMPO=Field()
  
 	If Field()="Codigo da Empresa"   Or
	   Field()="Codigo do Usuario"        
	   Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
	EndIf
  
  If CHAVEC=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf

  Prompt TECLA
  
  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

  Switch
  Case RetVal="F1":
       If Field()="Codigo da Empresa" Or
          Field()="Codigo do Usuario" 
          Then CONSULTAF1() 
       EndIf
  Case Retval="ESC":
       Switch
         Case Field()="Numero ECF":
              If QuerDesfazer("")
                 Then If CHAVEC=1
                        Then Del
                        Else If RecordStatus("Modified")
                               Then Undo
                             EndIf
                      EndIf
                      CHAVEC=9
                      QuitLoop
              EndIf     
         Case Field()="Reinicio Operacao":
              If CHAVEC=1 
                 Then Left
                 Else If QuerDesfazer("")
                         Then If RecordStatus("Modified")
                                 Then Undo
                              EndIf    
                              CHAVEC=9
                              QuitLoop
                      EndIf
              EndIf
         OtherWise: Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Numero ECF": 
              If IsBlank([]) then FastMsg("Valor Inv lido !") loop endif
              []=Alinh()
              Moveto [Modelo Impressora]

         Case Field()="Reinicio Operacao": 
              If IsBlank([]) then FastMsg("Valor Inv lido !") loop endif
              []=Alinh()
              moveto [Codigo da Empresa]
              
         Case Field()="Codigo da Empresa":
              If IsBlank([]) then FastMsg("Valor Inv lido !") loop endif
              Moveto [Codigo do Usuario] 
         Case Field()="Inativo":
              If IsBlank([Inativo])
                 Then []="N"     
              EndIf
              QuitLoop   
         otherwise             : Right     
       EndSwitch   
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc  ; (DigitaC)
;*******************************************************************************
;* Rotina para Localizar Ordem                                                 *
;*******************************************************************************
Proc ChaveI()

While True
  End Down
  Moveto [Indice Aliquota]

  SetaCorRegistro("Editar")
  While True

    TECLA= " Esc=Retornar  PgDn=Finalizar  "
    MSGCAMPO=Field()
  
    If Field()="Tipo"
      Then MSGCAMPO="Tipo Totalizador = ICMS/ISSQN "
    EndIf
    Prompt TECLA
    SetaCorRegistro("Editando")
    Wait Field
         Until "ESC","ENTER","F7","HOME","PGDN","UP"

    Switch
      Case RetVal="ESC":
           Switch
            Case Field()="Indice Aliquota":
                 If QuerDesfazer("")
                  Then CHAVEI=9
                       Return  
                 EndIf  
            Case Field()="Tipo":
                 If QuerDesfazer("")
                  Then If CHAVEI=1
                        Then Del
                             QuitLoop
                       EndIf
                 EndIf
                 
              OtherWise: Left
           EndSwitch    
      Case RetVal="PGDN":
           Del
           CHAVEI=8
           Return
      Case RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           del
           While True
             PAGINA("OPAF_Tot","MR")
             IND=[Indice Aliquota]
             If EDITAR="S"
              Then FastMsg("Fun‡Æo nÆo permitida !")
                   UnLockRecord 
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                            Then del
                            Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           Switch
            Case Field()="Indice Aliquota":
                 []=Alinh()
                 IND=[]
                 CHAVEI=1
                 Moveto [Tipo]
            Case Field() = "Tipo":
                 TIPO=[]
                 Right
            Case Field() = "Aliquota":
                 ALIQ=[]
                 del
                 Moveto [Indice Aliquota]
                 Locate NSERIE,IND
                 If Retval
                    Then Mensagem("Indice j  existe !")
                         QuitLoop
                 EndIf
                 Moveto [Aliquota] 
                 Locate ALIQ
                 If Retval
                  Then While True
                        If [Tipo]=TIPO
                          Then Mensagem("Aliquota referente ao imposto j  existe !")
                               CHAVEI=0
                               Quitloop
                          Else Skip
                               If EOT()
                                Then QuitLoop
                               EndIf
                               Locate Next ALIQ
                               If Not Retval
                                Then Quitloop
                               EndIf 
                        EndIf       
                       EndWhile
                 EndIf      
                 If CHAVEI=1
                   Then End Down
                       [Numero de Serie]=NSERIE 
                       [Indice Aliquota]=IND
                       [Aliquota       ]=ALIQ
                       [Tipo           ]=TIPO
                       If IsLockRecord()
                        Then Del
                       EndIf  
                 EndIf 
                 QuitLoop               
           EndSwitch       
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)


;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO()

Moveto "Opaf_Tot"
While RecordStatus("New")=False
     Del
EndWhile
Moveto "Opaf_ECF"
Del
EndProc  ; (Exclusao)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()

If CHAVEC=1
  Then DIGITAC()
EndIf  
While CHAVEC<>9
  DIGITAC()
  If CHAVEC=9 Then QuitLoop EndIf
  Moveto "Opaf_Tot"
  CHAVEI()
  If CHAVEI=9 Or
     CHAVEI=8
     Then QuitLoop
  EndIf
EndWhile
Moveto "Opaf_ECF"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
   Else PickForm "1"
EndIf
EndProc

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

CHAVEC=""
CHAVEI=""

CoEdit "Opaf_ECF"
PickForm "F"
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
