;** Reg_88 *********************************************************************
;*  Registro 88 . Restitui‡Æo ST                                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 05/04/2012 por Bruno Carvalho
;Ultima Alteracao: 11/04/2012 por Bruno Carvalho 
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* Rotina para Controlar Chave da Nota Fiscal                                  *
;*******************************************************************************
Proc CHAVE()                     
INICIO=True

While True
  
  Moveto "ReG_88"
  End
  Moveto [Codigo da Empresa]
  
  If OPCAO_FORM="F"
     Then Down
     Else PgDn PgDn PgDn
  EndIf
  Moveto [Codigo da Empresa]

  While True

        MSGCAMPO=Field()
        TECLA=""
        If Field()="Codigo da Empresa"
           Then TECLA=TECLA+"F1=Tabelas  "
        EndIf
                       
        Prompt TECLA
        AguardaTeclasPadrao()

        If SubStr(RetVal,1,2)="-1"
              Then SYS_TECLA_ACIONADA=RetVal
                   Seta_Tecla_Acionada()
                   RetVal="ESC"
        EndIf

        Switch
        Case RetVal=-33 : SemFuncoes()
        Case RetVal="F3": SemFicha()
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F1":
             If Field()="Codigo da Empresa"
                Then CONSULTAF1()
             EndIf             
                   
        ;Case RetVal="F3":
        ;     If OPCAO_FORM="F"
        ;        Then OPCAO_FORM="1"
        ;        Else OPCAO_FORM="F"
        ;     EndIf
        ;     Del
        ;     CHAVE=5
        ;     Return

        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME": 
             While True
               If OPCAO_FORM="F"
                  Then PAGINA("Reg_88","MR")
                  Else PAGINA("Reg_88","MT")
               EndIf
               CHAVE=0
               CDEMP  =[Codigo da Empresa]
               ANO    =[Ano Referente]
               MES    =[Mes Referente]
               If EDITAR="S"
                  Then If OPCAO_FORM="F"
                          Then PickForm "1"
                       EndIf
                       Controla_EdicaoC()
                       SetaPosForm()
                  Else If EXCLUIR="S"
                          Then If Not Checa_Supervisor()
                                  Then QuitLoop
                               EndIf
                               CONFIRMA()
                               If OK="S"
                                  Then If OPCAO_FORM="F"
                                          Then PickForm "1"
                                       EndIf
                                       Exclusao_C()
                                       If OPCAO_FORM="F"
                                          Then PickForm "F"
                                       EndIf
                                       SetaPosForm()
                               EndIf
                               Ins
                          Else QuitLoop
                       EndIf
               EndIf
            EndWhile
            QuitLoop
        Case Retval="ESC":
             If Field()="Codigo da Empresa"
                Then CHAVE=9
                     Del
                     Return
                Else Left
             EndIf
        Case Retval="ENTER":  
             If IsBlank([])
                Then Loop
             EndIf
             If Field()="Codigo da Empresa"
                Then CDEMP=[Codigo da Empresa]
                     If Not IsBlank([])
                        Then Moveto [Mes Referente]
                             Loop
                     EndIf   
             EndIf
             If Field()="Mes Referente"
                Then MES =[Mes Referente]
                     If Not IsBlank([])
                        Then Moveto [Ano Referente]
                             Loop
                     EndIf   
             EndIf

             ;;**Field()="Ano Referente"
             ANO =[Ano Referente]
             Del
             If OPCAO_FORM="F"
                Then PickForm "1"
             EndIf
             Moveto [Codigo da Empresa]
             Locate CDEMP,MES,ANO
             If Retval
                Then CHAVE=0
                Else CHAVE=1
                     End
                     PgDn PgDn
                     Moveto [Mes Referente]
                     [Codigo da Empresa]=CDEMP
                     [Mes Referente    ]=MES
                     [Ano Referente    ]=ANO
                     UnLockRecord
             EndIf
             
             If Not IsLockRecord()
                Then Echo Normal
                     Echo Off
                     If (CHAVE=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                        (CHAVE=0 And Checa_Controle([Numero_Controle_Dia]))
                        Then Return
                     EndIf
             EndIf

             If IsLockRecord()
                Then If OPCAO_FORM="F"
                        Then PickForm "F"
                     EndIf
                     If CHAVE=1
                        Then Del
                     EndIf
                     QuitLoop
             EndIf
             Return
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Digitacao Dados Gerais                                          *
;*******************************************************************************
Proc DIGITA()
DIGITA=True

While True
      TECLA=""
      Moveto [Data do Inventario]
      
      MSGCAMPO=Field()

      Switch
        Case Field()="Data do Inventario"  : MSGCAMPO="Data do Invent rio"
        OtherWise                          : MSGCAMPO=Field()
      EndSwitch

      Tecla_Funcao =""
      Prompt TECLA

      AguardaTeclasPadraoIt()

      Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal="F3": SemFicha()
      Case RetVal=-94 : MsgTeclasPadrao()    
      Case RetVal=-115 Or 
           RetVal=-116  :     
      Case RetVal="F1":
           If Field()=""
              Then CONSULTAF1()
           EndIf
      Case Retval="ESC":  
           Switch
           Case Field()="Data do Inventario":
                If CHAVE=1
                   Then Exclusao()
                   Else Undo
                EndIf
                CHAVE=9
                QuitLoop
           OtherWise:
                Left
           EndSwitch
      Case Retval="PGDN": 
           FINALIZADO=True
           CHAVE=9
           OPCAO=""
           QuitLoop
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then CONFIRMA_SUPERVISOR()
                   If OK="S"
                      Then CHAVE=9
                           EXCLUSAO()
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ENTER":
        Switch
          Case Field()="Data do Inventario" : If Not IsBlank([])
                                                 Then Tecla_Funcao="DIGITAR1"
                                                      QuitLoop
                                              EndIf        
          OtherWise: Right
        EndSwitch
      EndSwitch
EndWhile

DIGITA=False

EndProc ;DIGITA()

;*******************************************************************************
;* Rotina para Digitacao dos Itens . Tabela 1                                  *
;*******************************************************************************
Proc CHAVER1()
CHAVER1=True
CHAVER2=False
CHAVER3=False          

Moveto "REG_88R1"

While True
  Moveto [Sequencia]
  End
  NITEM = [Sequencia]
  Down
  Moveto [Sequencia]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver     = False
  SetaCorRegistro("Editar")
  While True                                      
                              
    TECLA=""
    Prompt TECLA

    AguardaTeclasPadraoIt3()  
                 
    Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal="F3": SemFicha()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal=-115 Or 
         RetVal=-116  :
         Tecla_Funcao=RetVal
         Return
    Case Retval="PGDN": 
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("O Registro 88 deve ter pelo menos 1(um) Item !")
                 QuitLoop
         EndIf    
         Finalizado=True
         Tecla_Funcao=""
         CHAVEI=9
         Return
    Case RetVal="ESC":
         Del
         CHAVEI=9
         FACA_CHAVEI =False
         Tecla_Funcao=""
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Reg_88R1","MR")
           SEQIT=[Sequencia]
           If EDITAR="S"
              Then CHAVEI=0
                   Controla_EdicaoI()
                   Return
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   Del  
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[]
         Del
         Locate CDEMP,MES,ANO,SEQIT
         If Retval
            Then CHAVEI=0
                 SEQIT=[]
            Else CHAVEI=1
                 End
                 Down
                 [Codigo da Empresa]=CDEMP
                 [Mes Referente    ]=MES
                 [Ano Referente    ]=ANO
                 [Sequencia        ]=NumVal(SEQIT)
                 UnLockRecord
                 Locate CDEMP,MES,ANO,SEQIT
                 Controla_EdicaoI()
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVER1()

;*******************************************************************************
;* Rotina para Digitacao dos Itens . Tabela 2                                  *
;*******************************************************************************
Proc CHAVER2()
CHAVER1=False
CHAVER2=True
CHAVER3=False
     
Moveto "REG_88R2"

While True

  Moveto "Reg_88"
  [Sequencia da Nota]=BlankNum()  
  ResyncKey
  Moveto "REG_88R2"

  Moveto [Sequencia]
  End
  NITEM = [Sequencia]
  Down
  Moveto [Sequencia]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver     = False
  SetaCorRegistro("Editar")
  While True                                      

    TECLA=""
    Prompt TECLA

    AguardaTeclasPadraoIt3()  
    
    Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal="F3": SemFicha()
    Case RetVal=-94 : MsgTeclasPadrao()    
    Case RetVal=-115 Or 
         RetVal=-116  :
         Tecla_Funcao=RetVal
         Return
    Case Retval="PGDN": 
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("O Registro 88 deve ter pelo menos 1(um) Item !")
                 QuitLoop
         EndIf    
         Finalizado=True
         Tecla_Funcao=""
         CHAVEI=9
         Return
    Case RetVal="ESC": 
         Del
         Tecla_Funcao="DIGITAR1"
         Return        
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":  
         Del
         While True
           PAGINA("Reg_88R2","MR")
           SEQIT=[Sequencia]
          
           Moveto "Reg_88"
           [Sequencia da Nota]=SEQIT          
           Moveto "Reg_88r2"
           
           If EDITAR="S"
              Then CHAVEI=0
                   Controla_EdicaoI()
                   MODULO=SEQIT
                   Return
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   EXCLUSAO()  
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop               
 
    Case Retval="ENTER": 
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf        
         Switch
           Case Field()="Sequencia" : 
                SEQIT=[]
                Del
                Locate CDEMP,MES,ANO,SEQIT
                If Retval
                   Then CHAVEI=0
                        SEQIT=[]
                   Else CHAVEI=1
                        End
                        Down
                        [Codigo da Empresa]=CDEMP
                        [Mes Referente    ]=MES
                        [Ano Referente    ]=ANO
                        [Sequencia        ]=NumVal(SEQIT)
                        UnLockRecord
                        Locate CDEMP,MES,ANO,SEQIT
                EndIf
                Controla_EdicaoI()
                MODULO=SEQIT
                Return            
         EndSwitch                     
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVER2()

;*******************************************************************************
;* Rotina para Digitacao dos Itens . Tabela 2                                  *
;*******************************************************************************
Proc CHAVER3()
CHAVER1=False
CHAVER2=False
CHAVER3=True

Moveto "REG_88"
[Sequencia da Nota]=MODULO
UnLockRecord

Moveto "REG_88R3"
While True
  Moveto  [Sequencia do Item]
  End
  NITEM = [Sequencia do Item]
  Down Down
  Moveto  [Sequencia do Item]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver = False
  SetaCorRegistro("Editar")
  While True                                      

    TECLA=""
    Prompt TECLA

    Switch
      Case Field()="Sequencia do Item" : MSGCAMPO="N£mero de Ordem do Item na Nota Fiscal"
    EndSwitch

    AguardaTeclasPadraoIt()

    Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal="F3": SemFicha()
    Case RetVal=-94 : MsgTeclasPadrao()    
    Case RetVal=-115 Or 
         RetVal=-116  :
    Case Retval="PGDN":  
         Del
         Moveto [Sequencia do Item]
         If RecordStatus("New")=True
            Then MENSAGEM("O Registro 88 deve ter pelo menos 1(um) Item !")
                 QuitLoop
         EndIf    
         Finalizado=True
         Tecla_Funcao=""
         CHAVEI=9
         Return
    Case RetVal="ESC": 
         Del
         CHAVEI=9
         Tecla_Funcao="DIGITAR2"

         Moveto "Reg_88"
         [Sequencia da Nota]=BlankNum()          
         Moveto "Reg_88r3"         
         
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Reg_88R3","MR")
           SEQIT=[Sequencia do Item]
           If EDITAR="S"
              Then CHAVEI=0
                   Controla_EdicaoI()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   Del  
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER": 
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         Switch
           Case Field()="Sequencia do Item" : 
                SEQIT=[]
                Del
                Locate CDEMP,MES,ANO,MODULO,SEQIT
                If Retval
                   Then CHAVEI=0
                        SEQIT=[]
                   Else CHAVEI=1
                        End
                        Down Down
                        [Codigo da Empresa]=CDEMP
                        [Mes Referente    ]=MES
                        [Ano Referente    ]=ANO
                        [Sequencia do Item]=NumVal(SEQIT)
                        UnLockRecord
                        Locate CDEMP,MES,ANO,MODULO,SEQIT
                EndIf
                DIGITAR3()
                QuitLoop
         EndSwitch       
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVER3()

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaR1()
private Desfazer

Moveto "Reg_88r1"
While True
  Moveto [Codigo do Item]
  SetaCorRegistro("Editar")
  While True                                      
    
    If Field()="Codigo do Item"
       Then TECLA=" Esc=Retornar  F1=Tabelas  PgDn=Finalizar"
       Else TECLA=" Esc=Retornar  PgDn=Finalizar "     
    EndIf     

    Prompt TECLA

    Switch
      Case Field()="Codigo do Item"            : MSGCAMPO="Codigo do Item"
      Case Field()="Quantidade"                : MSGCAMPO="Quantidade do Produto"
      Case Field()="VR_ICMS ST"                : MSGCAMPO="Valor do ICMS ST"
      Case Field()="Vr_ICMS Operacao Propria"  : MSGCAMPO="Valor do ICMS da Opera‡„o Pr¢pria"
      OtherWise                                : MSGCAMPO=Field()
    EndSwitch

    Wait Field
         Message MSGCAMPO
         Until "ESC","ENTER","HOME","UP","PGUP","PGDN","PGUP","F1"

    Switch
      Case RetVal="F1":
           If Field()="Codigo do Item" 
              Then CONSULTAF1()    
           EndIf
                       
     Case Retval="ENTER": 

          Switch
            Case Field()="Codigo do Item"           : If IsBlank([]) 
                                                         Then Loop 
                                                         Else Moveto [Quantidade] 
                                                      EndIf
            Case Field()="Quantidade"               : If IsBlank([]) 
                                                         Then Loop 
                                                         Else []=NDecimal(0+[],3)
                                                              Moveto [VR_ICMS ST] 
                                                      EndIf
            Case Field()="VR_ICMS ST"               : If IsBlank([]) 
                                                         Then Loop 
                                                         Else []=NDecimal([],2)
                                                              Moveto [Vr_ICMS Operacao Propria] 
                                                      EndIf
            Case Field()="Vr_ICMS Operacao Propria" : If IsBlank([]) 
                                                         Then Loop 
                                                         Else []=NDecimal([],2)
                                                              Tecla_Funcao="DIGITAR1"
                                                              UnLockRecord
                                                              Return
                                                      EndIf
          EndSwitch

     Case Retval="ESC":        
          Switch
            Case Field()="Codigo do Item"           : If CHAVEI=1
                                                         Then If QuerDesfazer("")
                                                                 Then Desfazer=True
                                                                      Del
                                                                 Else Desfazer=False
                                                                      Loop
                                                              EndIf
                                                         Else Desfazer=True        
                                                      EndIf
                                                    
                                                      If Desfazer
                                                         Then Tecla_Funcao="DIGITAR1"
                                                              Return  
                                                      EndIf        
            Case Field()="Quantidade"               : Moveto [Codigo do Item]
            Case Field()="VR_ICMS ST"               : Moveto [Quantidade]
            Case Field()="Vr_ICMS Operacao Propria" : Moveto [Vr_ICMS ST] 

          EndSwitch       
    EndSwitch
  EndWhile
EndWhile

EndProc    ;  (DigitaR1)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaR2()
private Desfazer

Moveto "Reg_88r2"
While True

  Moveto [CNPJ do Remetente]
  SetaCorRegistro("Editar")
  While True                                      
    
    If Field()="CST" Or Field()="CFOP"
       Then TECLA=" Esc=Retornar  F1=Tabelas"
       Else TECLA=" Esc=Retornar "     
    EndIf   

    Prompt TECLA

    Switch
      Case Field()="CNPJ do Remetente"       : MSGCAMPO="CNPJ do remetente nas entradas"
      Case Field()="Modelo do Docto Fiscal"  : MSGCAMPO="Codigo do modelo do documento fiscal =>  NF=01  NF-E=55"
      Case Field()="Serie da Nota Fiscal"    : MSGCAMPO="S‚rie da nota fiscal"
      Case Field()="Numero da Nota Fiscal"   : MSGCAMPO="N£mero da nota fiscal"
      Case Field()="Data Entrada"            : MSGCAMPO="Data da efetiva Entrada"
      Case Field()="CFOP"                    : MSGCAMPO="Codigo Fiscal de Opera‡„o e Presta‡„o"
      Case Field()="CST"                     : MSGCAMPO="C¢digo da Situa‡„o Tribut ria"
      OtherWise                              : MSGCAMPO=Field()
    EndSwitch

    Wait Field
         Message MSGCAMPO
         Until "ESC","ENTER","HOME","UP","PGUP","PGDN","PGUP", "F1"

    Switch
      Case RetVal="F1":
           If Field()="CST"
              Then TribCST=Checa_CST("ICMS","","")
                   If Not IsBlank(TribCST)
                      Then [CST]=TribCST
                   EndIf
           EndIf 
           If Field()="CFOP"
              Then CONSULTAF1()
           EndIf      
     Case Retval="ENTER":
                                                                  
          Switch                                                  
            Case Field()="Sequencia"              : Moveto [CNPJ do Remetente]
            Case Field()="CNPJ do Remetente"      : If IsBlank([]) Or Not Checa_CNPJ_Formatado([]) 
                                                       Then Loop 
                                                       Else Moveto [Modelo do Docto Fiscal] 
                                                    EndIf
            Case Field()="Modelo do Docto Fiscal" : If IsBlank([]) 
                                                       Then Loop 
                                                       Else Moveto [Serie da Nota Fiscal] 
                                                    EndIf
            Case Field()="Serie da Nota Fiscal"   : If IsBlank([]) 
                                                       Then Loop 
                                                       Else Moveto [Numero da Nota Fiscal] 
                                                    EndIf
            Case Field()="Numero da Nota Fiscal"  : If IsBlank([]) 
                                                       Then Loop 
                                                       Else Moveto [CFOP] 
                                                    EndIf
            Case Field()="CFOP"                   : If IsBlank([]) 
                                                       Then Loop 
                                                       Else Moveto [CST] 
                                                    EndIf                                                    
            Case Field()="CST"                    : If IsBlank([]) 
                                                       Then Loop 
                                                       Else TribCST=Checa_CST("ICMS","",[CST])
                                                            If TribCST=""
                                                               Then Mensagem("CST ICMS inv lido, use F1 para consultar !")
                                                                    Loop 
                                                               Else Moveto [Data Entrada]       
                                                            EndIf 
                                                    EndIf                 
            Case Field()="Data Entrada"           : If IsBlank([]) 
                                                       Then Loop 
                                                       Else Tecla_Funcao="DIGITAR3"
                                                            UnLockRecord
                                                            Return
                                                    EndIf
          EndSwitch

     Case Retval="ESC":        
          Switch
            Case Field()="CNPJ do Remetente"      : If CHAVEI=1
                                                       Then If QuerDesfazer("")
                                                               Then Desfazer=True
                                                                    Del
                                                               Else Desfazer=False
                                                                    Loop
                                                            EndIf
                                                       Else Desfazer=True        
                                                    EndIf
                                                    
                                                    If Desfazer
                                                       Then Moveto "Reg_88"
                                                            [Sequencia da Nota]=BlankNum()          
                                                            ResyncKey
                                                            Moveto "Reg_88r2"
                                          
                                                            Tecla_Funcao="DIGITAR2"
                                                            Return  
                                                    EndIf        
            Case Field()="Modelo do Docto Fiscal" : Moveto [CNPJ do Remetente]
            Case Field()="Serie da Nota Fiscal"   : Moveto [Modelo do Docto Fiscal] 
            Case Field()="Numero da Nota Fiscal"  : Moveto [Serie da Nota Fiscal] 
            Case Field()="CFOP"                   : Moveto [Numero da Nota Fiscal] 
            Case Field()="CST"                    : Moveto [CFOP] 
            Case Field()="Data Entrada"           : Moveto [CST]
          EndSwitch       
    EndSwitch
  EndWhile
EndWhile

EndProc    ;  (DigitaR2)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaR3()

Moveto "Reg_88r3"
While True

  Moveto [Codigo do Item]
  SetaCorRegistro("Editar")
  While True                                      

    If Field()="Codigo do Item"
       Then TECLA=" Esc=Retornar  F1=Tabelas"
       Else TECLA=" Esc=Retornar"     
    EndIf  

    Prompt TECLA

    Switch
      Case Field()="Sequencia do Item"     : MSGCAMPO="N£mero de Ordem do Item na Nota Fiscal"
      Case Field()="Codigo do Item"        : MSGCAMPO="Codigo do produto do informante"
      Case Field()="Quantidade"            : MSGCAMPO="Quantidade do produto"
      Case Field()="Valor do Produto"      : MSGCAMPO="Valor Bruto do Produto"
      Case Field()="Valor do Desconto"     : MSGCAMPO="Valor do Desconto concedido no item"
      Case Field()="Base Calculo ICMS ST"  : MSGCAMPO="Base de C lculo do ICMS da Substitui‡„o Tribut ria"
      Case Field()="Aliquota ICMS_ST"      : MSGCAMPO="Al¡quota Interna utilizada no c lculo relativo … apura‡„o do ICM/ST"
      Case Field()="Base Calculo ICMS OP"  : MSGCAMPO="Base de C lculo do ICMS da Opera‡„o Pr¢pria"
      Case Field()="Aliquota ICMS_OP"      : MSGCAMPO="Al¡quota utilizada no c lculo do ICMS relativo … Opera‡„o Pr¢pria"
      Case Field()="Valor do IPI"          : MSGCAMPO="Valor do IPI"
      OtherWise                            : MSGCAMPO=Field()
    EndSwitch

    Wait Field
         Message MSGCAMPO
         Until "ESC","ENTER","HOME","UP","PGUP","PGDN","PGUP","F1"

    Switch
      Case RetVal="F1":
           If Field()="Codigo do Item" 
              Then CONSULTAF1()    
           EndIf    
    
     Case Retval="ENTER": 
          Switch
            Case Field()="Codigo do Item"       : If IsBlank([]) 
                                                     Then Loop 
                                                     Else []=AlinhM([],10)
                                                          Moveto [Quantidade] 
                                                  EndIf
            Case Field()="Quantidade"           : If IsBlank([]) 
                                                     Then Loop 
                                                     Else []=NDecimal([],3)
                                                          Moveto [Valor do Produto] 
                                                  EndIf
            Case Field()="Valor do Produto"     : If IsBlank([]) 
                                                     Then Loop 
                                                     Else []=NDecimal([],2)
                                                          Moveto [Valor do Desconto] 
                                                  EndIf
            Case Field()="Valor do Desconto"    : If IsBlank([]) 
                                                     Then Loop 
                                                     Else []=NDecimal([],2)
                                                          Moveto [Base Calculo ICMS ST] 
                                                  EndIf
            Case Field()="Base Calculo ICMS ST" : If IsBlank([]) 
                                                     Then Loop 
                                                     Else Moveto [Aliquota ICMS_ST] 
                                                  EndIf
            Case Field()="Aliquota ICMS_ST"     : If IsBlank([]) 
                                                     Then Loop 
                                                     Else Moveto [Base Calculo ICMS OP] 
                                                  EndIf
            Case Field()="Base Calculo ICMS OP" : If IsBlank([]) 
                                                     Then Loop 
                                                     Else Moveto [Aliquota ICMS_OP] 
                                                  EndIf
            Case Field()="Aliquota ICMS_OP"     : If IsBlank([]) 
                                                     Then Loop 
                                                     Else Moveto [Valor do IPI] 
                                                  EndIf
            Case Field()="Valor do IPI"         : If IsBlank([]) 
                                                     Then Loop 
                                                     Else []=NDecimal([],2)
                                                          UnLockRecord
                                                          Return
                                                  EndIf
          EndSwitch


     Case Retval="ESC":        
          Switch
            Case Field()="Codigo do Item"       : If CHAVEI=1
                                                     Then If QuerDesfazer("")
                                                             Then Desfazer=True
                                                                  Del
                                                             Else Desfazer=False    
                                                                  Loop
                                                          EndIf  
                                                     Else Desfazer=True             
                                                  EndIf
                                                  
                                                  If Desfazer=True
                                                     Then CHAVEI=9
                                                          FACA_CHAVEI =False
                                                          Tecla_Funcao=""
                                                          Return      
                                                  EndIf
            Case Field()="Quantidade"           : Moveto [Codigo do Item]
            Case Field()="Valor do Produto"     : Moveto [Quantidade]
            Case Field()="Valor do Desconto"    : Moveto [Valor do Produto]
            Case Field()="Base Calculo ICMS ST" : Moveto [Valor do Desconto]
            Case Field()="Aliquota ICMS_ST"     : Moveto [Base Calculo ICMS ST]
            Case Field()="Base Calculo ICMS OP" : Moveto [Aliquota ICMS_ST]
            Case Field()="Aliquota ICMS_OP"     : Moveto [Base Calculo ICMS OP]
            Case Field()="Valor do IPI"         : Moveto [Aliquota ICMS_OP]
          EndSwitch
    EndSwitch
  EndWhile
EndWhile

EndProc    ;  (DigitaR3)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
        
If CHAVER3  
   Then Moveto [Sequencia do Item] 
   Else Moveto [Sequencia]
EndIf   
Locate [Reg_88->Codigo da Empresa],[Reg_88->Mes Referente],
       [Reg_88->Ano Referente],SEQIT
CopyToArray RegItem

If CHAVER1
   Then QUANT   = [Quantidade]
EndIf

EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc Exclusao_C()
CHAVEI=8

Moveto "Reg_88r1"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  Del
EndWhile

Moveto "Reg_88r2"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  Del
EndWhile

Moveto "Reg_88r3"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  Del
EndWhile

Moveto "Reg_88"
Del
EndProc ;(EXCLUSAO_C)

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

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

Moveto "Reg_88R2" 
Del    

EndProc ;EXCLUSAO()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
COD_EMPRESA=[Codigo da Empresa]

UnLockRecord
[Sequencia da Nota]=BlankNum()

FINALIZADO=False
While Not FINALIZADO

  Tecla_Funcao=BlankNum()
  DIGITA()
  If CHAVE=9 Then QuitLoop EndIf

  While Not IsBlank(Tecla_Funcao)
    Switch
      Case Tecla_Funcao="DIGITAR1" : CHAVER1()           
      Case Tecla_Funcao="DIGITAR2" : CHAVER2()
      Case Tecla_Funcao="DIGITAR3" : CHAVER3()
      Case Tecla_Funcao=-115      Or
           Tecla_Funcao=-116       :
            Switch
              Case Table()="Reg_88r1" : Del
                                        CHAVER2() 
              Case Table()="Reg_88r2" : Del
                                        CHAVER1()  
            EndSwitch  
    EndSwitch
  EndWhile
  Moveto "Reg_88"
EndWhile

If RecordStatus("Locked") Then UnLockRecord EndIf 

Moveto "Reg_88"  
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

EndProc ; Controla_EdicaoC()

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

INICIA_REGISTRO()

Switch
  Case CHAVER1 : DIGITAR1()
                 Moveto "Reg_88R1"
  Case CHAVER2 : DigitaR2()
                 Moveto "Reg_88R2"  
  Case CHAVER3 : DIGITAR3()
                 Moveto "Reg_88R3"
EndSwitch   

If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para checar CNPJ                                                     *
;*******************************************************************************
Proc Checa_CNPJ_Formatado(Campo_CNPJ)
Private Campo_CNPJ, Validar

;validar cgc
;123456789012345678
;##.###.###/####-##  CGC

Validar=False
If SubStr(Campo_CNPJ,03,1)="." and
   SubStr(Campo_CNPJ,07,1)="." and
   SubStr(Campo_CNPJ,11,1)="/" and
   SubStr(Campo_CNPJ,16,1)="-"
   Then WVR=""               ;CGC
        WVR=SubStr(Campo_CNPJ,01,2)+
            SubStr(Campo_CNPJ,04,3)+
            SubStr(Campo_CNPJ,08,3)+
            SubStr(Campo_CNPJ,12,4)+
            SubStr(Campo_CNPJ,17,2)
        If E_Numerico(WVR)
           Then CHECACGC(WVR)
                If WB=0
                   Then Validar=True
                EndIf
        EndIf
EndIf
If Not Validar
   Then Mensagem("CNPJ inv lido !// ou (Formato CNPJ=##.###.###/####-##) Incorreto !")
EndIf
Return Validar
EndProc
                             
;*******************************************************************************
;* Rotina Principal Nota Fiscal                                                *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Proc,\\Sistemas\\Cadastro\\Bib_Show"

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S" EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S" EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""  EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""  EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""  EndIf

CHAVER1=False
CHAVER2=False
CHAVER3=False

CoEdit "Reg_88"
PickForm "F"
OPCAO_FORM="F"

While True   
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=1 Then Controle_Dia() EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()

  Moveto "REG_88"
  If OPCAO_FORM="F"
     Then PickForm "F"
  EndIf 
  
EndWhile            
Do_It!
ClearAll

Release Vars All
Release Procs All
