;* Ecf ************************************************************************
;* Mapa Resumo Redu‡Æo                                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 04/11/2003 por Karen Lauar Nery
;Ultima Alteracao: 03/03/2005 por Davi Pereira Carrano
;Motivo Alteracao: Ajustes quando cancela a inser‡Æo de um novo mapa resumo
;Ultima Alteracao: 15/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie de Documento CX?, X???
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 28/04/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes e Correcao de Campo Atualizados
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 16/02/2011 por Karina Andrade
;Motivo Alteracao: Ajustes Aliquotas,ISSQN e novos campos 
;Ultima Alteracao: 21/02/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout e corre‡äes diversas
;Ultima Alteracao: 28/02/2011 por Karina Andrade
;Motivo Alteracao: Ajustes Indice e Numero de Serie
;Ultima Alteracao: 09/03/2011 por Karina Andrade
;Motivo Alteracao: Retirado Data Emissao Red.Z
;Ultima Alteracao: 18/04/2011 por Anivel Augusto
;Motivo Alteracao: Ajuste LockRecord
;Ultima Alteracao: 03/04/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes setacorregistro(), Inclusao Controle_Dia()
;Ultima Alteracao: 25/03/2013 por Karina Andrade
;Motivo Alteracao: Ajustes Contador Redu‡Æo Z e Valor do ICMS
;Ultima Alteracao: 10/04/2014 por Bruno Carvalho
;Motivo Alteracao: Add Verifica_NRegistros() onde ir  informar limite de registros
;Ultima Alteracao: 04/11/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes no Form do Ecf_c, Ecf_t e Ecf_s, Add Campos COO_Incial e COO_Final
;Ultima Alteracao: 26/05/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes pra deixar passar com 000000 no Numero Cupom Inicial e Numero Cupom Final
;Ultima Alteracao: 15/12/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes ChaveC()
;Ultima Alteracao: 09/10/2020 por Bruno Carvalho                       
;Motivo Alteracao: Ajustes para avisar a execu‡Æo do FechaMes

;*******************************************************************************
;* Rotina para Controlar Chave do ECF                                          *
;*******************************************************************************
Proc CHAVEC()

While True
  Moveto "Ecf_C"
  End
  Moveto [Codigo da Empresa]

  If OPCAO_FORM="1"
     Then Down
     Else PgDn PgDn PgDn PgDn
  EndIf
  [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
  Moveto [Codigo da Empresa]

  SetaCorRegistro("Editar")
  While True
  
        If Field()="Serie do Documento"
           Then MSGCAMPO="CX?,X???"
           Else MSGCAMPO=Field()
        EndIf

        If Field()="Codigo da Empresa"
           Then TECLA="F1=Tabelas"
           Else TECLA=""
        EndIf
 
    AguardaTeclasPadrao()

    Switch
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F1":
             If Field()="Codigo da Empresa"
                Then CONSULTAF1()
              EndIf
        Case RetVal="F3":
             If OPCAO_FORM="1"
                Then OPCAO_FORM="F"
                Else OPCAO_FORM="1"
             EndIf
             Del
             CHAVEC=5
             Return
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             While True
               If OPCAO_FORM="1"
                  Then PAGINA("Ecf_C","MR")
                  Else PAGINA("Ecf_C","MT")
               EndIf
               CODEMP=[Codigo da Empresa  ]
               SERDOC=[Serie do Documento ]
               DATDOC=[Data               ]
               If EDITAR="S"
                  Then CHAVEC=0
                       If OPCAO_FORM="1"
                          Then PickForm "F"
                       EndIf
                       Controla_EdicaoC()
                  Else If EXCLUIR="S"
                          Then If QuerExcluir("")
                                  Then If OPCAO_FORM="1"
                                          Then PickForm "F"
                                       EndIf
                                       EXCLUSAO()
                                       If OPCAO_FORM="1"
                                          Then PickForm "1"
                                       EndIf
                                  Else UnLockRecord
                               EndIf
                          Else Quitloop
                       EndIf
               EndIf
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="ESC":
             Switch
                Case Field()="Codigo da Empresa":
                     CHAVEC=9
                     Del
                     Return
                Case Field()="Serie do Documento":
                     Moveto [Codigo da Empresa]
                Case Field()="Data":
                     Moveto [Serie do Documento]
                ;Case Field()="Data Emissao":
                ;    Moveto [Data]     
             EndSwitch
        Case Retval="ENTER":  
             If IsBlank([])
                Then Loop
             EndIf
             Switch
                  Case Field()="Codigo da Empresa":
                       CODEMP=AlinhM([Codigo da Empresa],4)
                       Moveto [Serie do Documento]
                  Case Field()="Serie do Documento":
                       SERDOC=[Serie do Documento ]
                       Moveto [Data]
                  Case Field()="Data":
                       If IsBlank([])
                          Then [Data]=Today()
                       EndIf
                       DATDOC =[Data]
                       Del
                       If OPCAO_FORM="1"
                          Then PickForm "F"
                       EndIf
                       Moveto [Codigo da Empresa]
                       Locate CODEMP,SERDOC,DATDOC
                       If Retval
                          Then CHAVEC=0
                          Else CHAVEC=1
                               PgDn PgDn PgDn PgDn
                               [Codigo da Empresa  ]=CODEMP
                               [Serie do Documento ]=SERDOC
                               [Data               ]=DATDOC
                               ;[Data Emissao       ]=DATEMI
                       EndIf
                       If IsLockRecord()
                          Then If OPCAO_FORM="1"
                                  Then PickForm "1"
                               EndIf
                               QuitLoop
                       EndIf
                       Return    
             EndSwitch
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
SetaCorRegistro("Editar")
If VOLTAR=True
   Then Moveto [Totalizador Inicial]
        VOLTAR=False
   Else Moveto [Reinicio Operacao]
EndIf

SpeedBar "~Fun‡”es~"      :-33,
         Chr(060)+Chr(17) :-115,
         Chr(16)+Chr(062) :-116,
         "~?~"            :-94

While True

  TECLA=" Esc=Retornar  "
  If CHAVEC=0
     Then Tecla=Tecla+"Del=Excluir  "
     Else Tecla=Tecla+"             "
  EndIf
  
  If Field()="Numero Serie Fabricacao"
    Then TECLA=" Esc=Retornar  F1=Consulta  PgDn=Finalizar  "
    Else Tecla=Tecla+"PgDn=Finalizar  "
  EndIf

  Prompt TECLA
  MSGCAMPO=""

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F8","F9","DOWN","F1",-116

 Switch
  Case RetVal=-116 :  
       Tecla_Funcao=RetVal
       TELA="TELA_TOTAL"
       Return
  Case RetVal="F1":
       If Field()="Numero Serie Fabricacao"
        Then ConsultaF1()
       EndIf 
  Case Retval="ESC":  
       Switch
         Case Field()="Reinicio Operacao":
              If QuerDesfazer("")
                 Then If CHAVEC=1
                         Then EXCLUSAO()
                         Else Undo
                      EndIf
                      CHAVEC=9
                      QuitLoop
              EndIf
         Case Field()="Numero Cupom Inicial": Moveto [Reinicio Operacao]      
         Case Field()="Numero Cupom Final"  : Moveto [Numero Cupom Inicial]
         Case Field()="Numero Cupom Reducao": Moveto [Numero Cupom Final]
         Case Field()="Contador Reducao"    : Moveto [Numero Cupom Reducao]
         Case Field()="COO_Inicial"         : Moveto [Contador Reducao]
         Case Field()="COO_Final"           : Moveto [COO_Inicial]
         Case Field()="Totalizador Inicial" : Moveto [COO_Final]
         Case Field()="Totalizador Final"   : Moveto [Totalizador Inicial]
         Case Field()="Cancelados"          : Moveto [Totalizador Final]
         Case Field()="Descontos"           : Moveto [Cancelados]
         Case Field()="ISSQN"               : Moveto [Descontos]
         Case Field()="ISSQN Cancelados"    : Moveto [ISSQN]
         Case Field()="ISSQN Descontos"     : Moveto [ISSQN Cancelados] 
         Case Field()="Acrescimos"          : Moveto [ISSQN Descontos]
         Case Field()="ISSQN Acrescimo"     : Moveto [Acrescimos]
         OtherWise:
              Left
       EndSwitch
  Case Retval="PGDN":
       CHAVEC=9
       Return
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then EXCLUSAO()
                       CHAVEC=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ENTER":
            
       Switch
       Case Field()="Reinicio Operacao":
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([],3)        
            If []="000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [Numero Cupom Inicial]
       Case Field()="Numero Cupom Inicial":
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([Numero Cupom Inicial],6)
            ;If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [Numero Cupom Final]
       Case Field() = "Numero Cupom Final":
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([Numero Cupom Final],6)
            ;If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [Numero Cupom Reducao]
       Case Field()="Numero Cupom Reducao":
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([Numero Cupom Reducao],6)
            If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [Contador Reducao]           
       Case Field()="Contador Reducao":
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([],6)
            If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [COO_Inicial]
       Case Field()="COO_Inicial"         : 
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([COO_Inicial],6)
            If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [COO_Final]
       Case Field()="COO_Final"           : 
            If IsBlank([]) Then Loop EndIf
            []=AlinhM([COO_Final],6)
            If []="000000" Then FastMSg("Valor inv lido !") Loop EndIf
            Moveto [Totalizador Inicial]
       Case Field()="Totalizador Inicial":
            If IsBlank([]) Then []=0 EndIf  
            Moveto [Totalizador Final]
       Case Field()="Totalizador Final":
            If IsBlank([]) Then []=0 EndIf 
            Moveto [Cancelados]
       Case Field()="Cancelados":
           If IsBlank([]) Then []=0 EndIf 
            Moveto [Descontos]
       Case Field()="Descontos":
            If IsBlank([]) Then []=0 EndIf 
            Moveto [ISSQN]
       Case Field()="ISSQN":
            If IsBlank([]) Then []=0 EndIf 
            Moveto [ISSQN Cancelados]
       Case Field()="ISSQN Cancelados":
            If IsBlank([]) Then []=0 EndIf 
            Moveto [ISSQN Descontos] 
       Case Field()="ISSQN Descontos":
            If IsBlank([]) Then []=0 EndIf 
            Moveto [Acrescimos]
       Case Field()="Acrescimos": 
            If IsBlank([]) Then []=0 EndIf 
            Moveto [ISSQN Acrescimos]
       Case Field()="ISSQN Acrescimos":
            If IsBlank([]) Then []=0 EndIf
            Moveto [Numero Serie Fabricacao]             
       Case Field()="Numero Serie Fabricacao":
            If IsBlank([])
              Then Loop
              Else If Busca_Lookup("Numero de Serie",[Numero Serie Fabricacao],"SM")
                    Then [Numero do ECF]=NumVal(Reg_Busca_Lookup["Numero ECF"])
                   EndIf 
            EndIf                     
            Return
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (Digita)

;*******************************************************************************
;* Exclusao de Registros                                                       *
;*******************************************************************************
Proc EXCLUSAO()
If OPCAO_FORM=0
   Then ImageRights
        PickForm "1"
EndIf

Moveto "Ecf_t"
While RecordStatus("New")=False
      Del
EndWhile

Moveto "Ecf_S"
While RecordStatus("New")=False
      Del
EndWhile

Moveto "Ecf_C"
Del

If OPCAO_FORM=0
   Then ImageRights ReadOnly
        PickForm "F"
EndIf
EndProc  ; (Exclusao)


;*******************************************************************************
;* Rotina para Digitacao Aliquotas ICMS                                        *
;*******************************************************************************
Proc CHAVEI()
DIGITAI=False
INDICE=True
Moveto [Indice Aliquota]

If CHAVEI=0 
  Then If []=""
        Then Moveto [Indice Aliquota]     
        Else Moveto [Base de Calculo ICMS]
       EndIf 
  Else End Down      
EndIf

SpeedBar "~Fun‡”es~"      :-33,
         Chr(060)+Chr(17) :-115,
         Chr(16)+Chr(062) :-116,
         "~?~"            :-94

While True
         
  SetaCorRegistro("Editar")
  MSGCAMPO=""
  Switch
    Case Field()="Indice Aliquota"    : MSGCAMPO="Informe o ¡ndice da al¡quota"
    Case Field()="Aliquota de ICMS"   : MSGCAMPO="Informe a al¡quota"
  EndSwitch

   Prompt " Esc=Retornar  F4/=N„o Tributados  F7=Paginar  "

  Wait Field
    Message MSGCAMPO
       Until "ESC","ENTER","F1","F4","F7","F9","HOME","UP","PGUP","Down",-115,-116

  Switch
     Case RetVal=-115 :  
          Tecla_Funcao=""
          TELA="TELA_ICMS"
          VOLTAR=True
          CHAVEI=9
          Return
     Case RetVal=-116 :  
          Tecla_Funcao=RetVal
          TELA="TELA_ICMS"
          CHAVEI=9
          Return     
     Case RetVal="F4" or Retval="Down":
         SetaCorRegistro("Padrao")
         Del
         DIGITAI=True
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           PAGINA("Ecf_T","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   CHAVEI()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           CHAVEI=1
           SetaPosForm()
         EndWhile
         Moveto [Indice Aliquota]
         End
         Down
    Case Retval="ESC":
         Switch
           Case Field()="Indice Aliquota":
             If CHAVEI=1
              Then Del
             EndIf
             CHAVEI=9
             Tecla_Funcao=""             
             QuitLoop 
           Case Field()="Base de Calculo ICMS":
                If QuerDesfazer("")
                  Then If CHAVEI = 1
                         Then Del
                         Else Undo     
                       EndIf
                       QuitLoop
                Endif
           OtherWise: Left  
         EndSwitch
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         Switch
           Case Field()="Indice Aliquota":
                IND = AlinhM([],2)
                ALIQ= [Aliquota de ICMS    ]
                BC  = [Base de Calculo ICMS]
                VLR = [Valor do ICMS       ]
                del
                Locate IND
                If RetVal
                  Then Mensagem("Indice j  utilizado !")
                       INDICE=False 
                EndIf
                Moveto [Lookup_ECF]
                Ativa_Lookup()
                Moveto [Indice Aliquota]
                Locate IND
                If Not RetVal
                  Then Mensagem("Öndice nÆo cadastrado para este N£mero de S‚rie !")
                       INDICE=False 
                       IND="" 
                  Else If [Tipo]<>"ICMS"
                        Then Mensagem("Indice nÆo corresponde a ICMS!")
                             INDICE=False 
                             IND=""
                        Else If CHAVEI=0
                               Then If [Aliquota]<>ALIQ
                                     Then Mensagem("Indice nÆo corresponde a Al¡quota informada !")
                                          INDICE=False  
                                          IND=""
                                          
                                    EndIf
                              Else ALIQ=[Aliquota]       
                             EndIf  
                       EndIf           
                EndIf
                KeyPress "ESC"
                If RecordStatus("New")
                  Then del
                  Else UnLockRecord
                EndIf  
                Moveto [Indice Aliquota]
                End Down
                If Not IsBlank(ALIQ)
                  Then [Indice Aliquota     ] = IND
                       [Aliquota de ICMS    ] = ALIQ
                       [Base de Calculo ICMS] = BC
                       [Valor do ICMS       ] = VLR
                       [Lookup_ECF          ] = ""
                       If INDICE
                        Then Moveto [Base de Calculo ICMS]
                        Else Moveto [Indice Aliquota     ]
                       EndIf 
                  Else del QuitLoop
                EndIf        
                If IsLockRecord()
                  Then End Down
                       Moveto [Indice Aliquota]
                       Loop
                EndIf
                UnLockRecord
                
        ;  Case Field()="Aliquota de ICMS":
        ;        ALIQU=[]
        ;        Del
        ;        Locate CODEMP,SERDOC,DATDOC,ALIQU
        ;        If Retval
        ;          Then CHAVEI=0
        ;               Mensagem("Aliquota j  utilizada !")
        ;               Return 
        ;          Else CHAVEI=1
        ;               End Down
        ;               Moveto [Indice Aliquota]
        ;               [Codigo da Empresa  ]=CODEMP
        ;               [Serie do Documento ]=SERDOC
        ;               [Data               ]=DATDOC
        ;               [Aliquota de ICMS   ]=ALIQU
        ;               [Indice Aliquota    ]=IND
        ;        EndIf        
        ;        Moveto [Base de Calculo ICMS] 
         
           Case Field()="Base de Calculo ICMS":
              If ModoCalculo="A"
                 Then [Valor do ICMS]=Round(([Aliquota de ICMS]/100)* [Base de Calculo ICMS],2)
                 Else [Valor do ICMS]=NDecimal(([Aliquota de ICMS]/100)* [Base de Calculo ICMS],2)
              EndIf
              Moveto [Valor do ICMS]
           Case Field()="Valor do ICMS":
              Return
              CHAVEI=9     
         EndSwitch       
  EndSwitch
EndWhile
EndProc  ; (ChaveI)

;*******************************************************************************
;* Rotina para Digitacao Nao Tributados ICMS                                   *
;*******************************************************************************
Proc DIGITAI()
Moveto "ECF_C" 
SetaCorRegistro("Editar")
Moveto [Substituicao Tributaria] 

While True

  TECLA=" Esc=Retornar  "
  MSGCAMPO=Field()
  
  Switch
    Case Field()="Substituicao Tributaria"   : MSGCAMPO="[ICMS F1] Substitui‡Æo tribut ria"
    Case Field()="Isento"                    : MSGCAMPO="[ICMS I1] Isento"
    Case Field()="Nao Incidencia"            : MSGCAMPO="[ICMS N1] NÆo incidˆncia"
  EndSwitch
  
  Prompt TECLA

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","FIELDVIEW","F35"

  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="ESC":
       Switch
         Case Field()="Substituicao Tributaria":
              QuitLoop
         OtherWise:
              Left
       EndSwitch
  Case Retval="ENTER":
       If IsBlank([]) 
          Then []=0
       EndIf
       Switch
       Case Field()="Nao Incidencia":
            QuitLoop
       Otherwise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaI)

;*******************************************************************************
;* Rotina para Digitacao Aliquotas ISSQN                                       *
;*******************************************************************************
Proc CHAVES()
DIGITAS=False
INDICE=True
Moveto [Indice Aliquota]

If CHAVES=0 
  Then If []=""
        Then Moveto [Indice Aliquota]     
        Else Moveto [Base de Calculo ISSQN]
       EndIf 
  Else End Down      
EndIf

While True
         
  SetaCorRegistro("Editar")
  MSGCAMPO=""
  Switch
    Case Field()="Indice Aliquota"    : MSGCAMPO="Informe o ¡ndice da al¡quota"
    Case Field()="Aliquota de ISSQN"  : MSGCAMPO="Informe a al¡quota"
  EndSwitch

  Prompt " Esc=Retornar  F4/=N„o Tributados  F7=Paginar  "

  Wait Field
    Message MSGCAMPO
       Until "ESC","ENTER","F4","F7","HOME","UP","PGUP","Down",-115

  Switch
  Case RetVal=-115 :  
       Tecla_Funcao=RetVal
       TELA="TELA_ISSQN"
       CHAVES=9
       Return
  Case RetVal="F4" or Retval="Down":
       SetaCorRegistro("Padrao")
       Del 
       DIGITAS=True
       Return
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA("Ecf_S","MR")
         If EDITAR="S"
            Then CHAVES=0
                 CHAVES()
            Else If EXCLUIR="S"
                    Then If QuerExcluir("")
                            Then Del
                            Else UnLockRecord
                         EndIf
                    Else QuitLoop
                 EndIf
         EndIf
         CHAVES=1
         SetaPosForm()
       EndWhile
       Moveto [Indice Aliquota]
       End
       Down
  Case Retval="ESC":
       Switch
          Case Field()="Indice Aliquota":
               If CHAVES=1
                Then Del
               EndIf
               CHAVES=9
               Tecla_Funcao=""
               QuitLoop 
          Case Field()="Base de Calculo ICMS":
               If QuerDesfazer("")
                Then If CHAVES = 1
                      Then Del
                      Else Undo     
                     EndIf
                     QuitLoop
               Endif
          OtherWise: Left  
       EndSwitch
  Case Retval="ENTER":
       If IsBlank([]) Then Loop EndIf
       Switch
         Case Field()="Indice Aliquota":
              IND = AlinhM([],2)
              ALIQ= [Aliquota de ISSQN    ]
              BC  = [Base de Calculo ISSQN]
              VLR = [Valor do ISSQN       ]
              del
              Locate IND
              If RetVal
                Then Mensagem("Indice j  utilizado !")
                     INDICE=False 
              EndIf
              Moveto [Lookup_ECF]
              Ativa_Lookup()
              Moveto [Indice Aliquota]
              Locate IND
              If Not RetVal
                Then Mensagem("Öndice nÆo cadastrado para este N£mero de S‚rie !")
                     INDICE=False 
                     IND="" 
                Else If [Tipo]<>"ISSQN"
                      Then Mensagem("Indice nÆo corresponde a ISSQN!")
                           INDICE=False 
                           IND=""
                      Else If CHAVES=0
                             Then If [Aliquota]<>ALIQ
                                   Then Mensagem("Indice nÆo corresponde a Al¡quota informada !")
                                        INDICE=False  
                                        IND=""
                                        
                                  EndIf
                            Else ALIQ=[Aliquota]       
                           EndIf  
                     EndIf           
              EndIf
              KeyPress "ESC"
              If RecordStatus("New")
                Then del
                Else UnLockRecord
              EndIf  
              Moveto [Indice Aliquota]
              End Down
              If Not IsBlank(ALIQ)
                Then [Indice Aliquota      ] = IND
                     [Aliquota de ISSQN    ] = ALIQ
                     [Base de Calculo ISSQN] = BC
                     [Valor do ISSQN       ] = VLR
                     [Lookup_ECF           ] = ""
                     If INDICE
                      Then Moveto [Base de Calculo ISSQN]
                      Else Moveto [Indice Aliquota      ]
                     EndIf 
                Else del QuitLoop
              EndIf        
              If IsLockRecord()
                Then End Down
                     Moveto [Indice Aliquota]
                     Loop
              EndIf
              UnLockRecord
        ;Case Field()="Aliquota de ISSQN":
        ;      ALIQU=[]
        ;      Del
        ;      Locate CODEMP,SERDOC,DATDOC,ALIQU
        ;      If Retval
        ;        Then CHAVES=0
        ;             Mensagem("Aliquota j  utilizada !")
        ;             Return 
        ;        Else CHAVES=1
        ;             End Down
        ;             Moveto [Indice Aliquota]
        ;             [Codigo da Empresa  ]=CODEMP
        ;             [Serie do Documento ]=SERDOC
        ;             [Data               ]=DATDOC
        ;             [Aliquota de ISSQN  ]=ALIQU
        ;             [Indice Aliquota    ]=IND
        ;       EndIf        
        ;      Moveto [Base de Calculo ISSQN]
         Case Field()="Base de Calculo ISSQN":
            If ModoCalculo="A"
               Then [Valor do ISSQN]=Round(([Aliquota de ISSQN]/100)* [Base de Calculo ISSQN],2)
               Else [Valor do ISSQN]=NDecimal(([Aliquota de ISSQN]/100)* [Base de Calculo ISSQN],2)
            EndIf
            Return
            CHAVES=9     
       EndSwitch       
  EndSwitch
EndWhile
EndProc  ; (ChaveS)

;*******************************************************************************
;* Rotina para Digitacao Nao Tributados ISSQN                                  *
;*******************************************************************************
Proc DIGITAS()
Moveto "ECF_C" 
Moveto [ISSQN Subs. Tributaria] 

SetaCorRegistro("Editar")

While True

  TECLA=" Esc=Retornar  "
  MSGCAMPO=""

  Switch
    Case Field()="ISSQN Subs. Tributaria"    : MSGCAMPO="[ISSQN FS1] Substitui‡Æo tribut ria"
    Case Field()="ISSQN Isento"              : MSGCAMPO="[ISSQN IS1] Isento"
    Case Field()="ISSQN Nao Incidencia"      : MSGCAMPO="[ISSQN NS1] NÆo incidˆncia"
  EndSwitch
  
  Prompt TECLA

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","FIELDVIEW","F35"

  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="ESC":
       Switch
         Case Field()="ISSQN Subs. Tributaria":
              QuitLoop
         OtherWise:
              Left
       EndSwitch
  Case Retval="ENTER":
       If IsBlank([]) 
          Then []=0
       EndIf
       Switch
       Case Field()="ISSQN Nao Incidencia":
            QuitLoop
       Otherwise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaS)

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

VOLTAR=False

Digitac=True

UnLockRecord
FormKey

Moveto "P_Cupom"
Moveto [Codigo_Empresa]
Locate CODEMP
If RetVal
   Then ModoCalculo=[P_Cupom->Forma_Calcular]
   Else Digitac=False
EndIf

Moveto "ECF_C"
FormKey
IsLockRecord()
If Not Digitac
   Then Mensagem ("Empresa sem Parametros Cadastrados !//Modo de c lculo !")
        If CHAVEC=1
           Then Del
        EndIf   
Endif   

Moveto "Ecf_t" SetaCorRegistro("Padrao")
Moveto "Ecf_s" SetaCorRegistro("Padrao")
Moveto "ECF_C"

While DigitaC
  DIGITA()
  If CHAVEC=9 Then QuitLoop EndIf
  If Not IsAssigned(Tecla_Funcao) Then Tecla_Funcao="" EndIf
  While Not IsBlank(Tecla_Funcao)   
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case TELA="TELA_TOTAL"   : TELA = "TELA_ICMS"
						 Case TELA="TELA_ICMS"    : TELA = "TELA_ISSQN"
           EndSwitch
			Case Tecla_Funcao=-115:
           Switch
             Case TELA="TELA_ICMS"   : TELA="TELA_TOTAL" 
						 Case TELA="TELA_ISSQN"  : TELA="TELA_ICMS"
           EndSwitch  
    EndSwitch
    
    Switch
      Case TELA="TELA_ICMS"          : 
           While True         
               SetaCorRegistro("Padrao")
               Moveto "ECF_T"
               CHAVEI=1
               CHAVEI()
               If DIGITAI=True Then DIGITAI() EndIf
               If CHAVEI=9 Then QuitLoop  EndIf
           EndWhile
      Case TELA="TELA_ISSQN"         : 
           While True
             SetaCorRegistro("Padrao")
             Moveto "ECF_S"
             CHAVES=1
             CHAVES()
             If DIGITAS=True Then DIGITAS() EndIf
             If CHAVES=9 Then QuitLoop  EndIf
           EndWhile
    EndSwitch 
    SetaCorRegistro("Padrao")
  EndWhile
  Moveto "Ecf_c"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="1"
   Then PickForm "1"
EndIf

Endproc

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

MSG=""
COR_MENSAGEM="PRETO"

{Ask}{ECF_C}
Moveto [Serie do Documento]       Typein "Calc Count as Qtde" 
Moveto [Data              ]       Typein "<(today-547)" 
Do_It!
if not IsEmpty("Answer")
   then
        MSG=MSG+"Existe(m) "+strval([Qtde])+" ECF(s) lan‡ada(s) !   // //"
        MSG=MSG+"Para melhor seguran‡a e desempenho do Sistema,//"
        MSG=MSG+"recomendamos que fa‡a o fechamento mensal  das//"
        MSG=MSG+"mais antigas. Recomendamos manter apenas 1 ano//"
        MSG=MSG+"em aberto!                                    // //"
        MSG=MSG+"Verificar com o supervisor fechamento mensal !"
endif   
ClearAll
if MSG<>"" then Mensagem(MSG) endif
Release Vars COR_MENSAGEM,MSG 

View "P_Cupom"
View "Opaf_ECF"
CoEdit "Ecf_c"

PickForm "1"
OPCAO_FORM="1"

Aguarde("Verificando dados !")
Scan For IsBlank([Nome Fantasia Empresa])
  a=[Codigo da Empresa]
  [Codigo da Empresa]=""
  [Codigo da Empresa]=a
  UnLockrecord
EndScan  
LimpAguarde()

;**** Em 09.04.2014 aplicado para verificar n£mero de registros ********
If Verifica_NRegistros("Ecf_c")
   Then COR_MENSAGEM="1"
        Mensagem(MSG_TABELA)
        Release Vars COR_MENSAGEM,MSG_TABELA
   Else Release Vars MSG_TABELA     
EndIf  

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