;* SdImpost *******************************************************************
;*  Saldos de Impostos                                                         *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 15/08/2001 por Anivel Augusto Rodrigues
;Alterado em     : 31/07/2003 por Karen Lauar Nery
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 05/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 02/02/2011 por Karina Andrade
;Motivo Alteracao: Ajustes "Ano Referencia"
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS

;*******************************************************************************
;* Rotina para Selecionar Empresa                                              *
;*******************************************************************************
Proc Selecionar_Empresa()
Monta_Opcoes("Empresas","")
While True
  Moveto [Codigo da Empresa]
  MSGTELA="Informe a empresa !"

  TECLA="F1=Consulta  =Empresań"
  AguardaTeclasPadrao()
  
  If RetVal=-33  
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
          "F5 ~S~aldos/Outros       ":" Saldos/Outros                      " : "F5",
          "~C~ancelar               ":" Cancelar a Opera‡„o                " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
                   
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
  EndIf                                                    

  If Retval="F1"
     Then If Seleciona_Opcoes("Empresas","")
             Then [Nome Fantasia Empresa]=Registro_F1["Nome Fantasia Empresa"]
                  RetVal="ENTER"
          EndIf
  EndIf
     
  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case Retval="F5":
       MudaForm()
  Case Retval="ESC":
       Return False
  Case Retval="UP" Or
       Retval="HOME":
       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       If IsBlank([SdMaster->Codigo da Empresa]) Or Retval="HOME"
          Then HOME
          Else Moveto [Codigo da Empresa]
               Locate [SdMaster->Codigo da Empresa]
               Skip -1
               If BOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo da Empresa]=[Lookup_Empresa]
       Resynckey
  Case Retval="DOWN" Or
       Retval="END":
       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       If IsBlank([SdMaster->Codigo da Empresa]) Or Retval="END"
          Then End
          Else Moveto [Codigo da Empresa]
               Locate [SdMaster->Codigo da Empresa]
               Skip
               If EOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo da Empresa]=[Lookup_Empresa]
       Resynckey
  Case Retval="ENTER":
       If IsBlank([]) Then Loop EndIf
       []=ALINH()
       EMPRESA=[Codigo da Empresa]

       Moveto [Lookup_Empresa]
       Ativa_Lookup()
       Moveto [Codigo da Empresa]
       Locate EMPRESA
       If RetVal
          Then CopyToArray Registro_Empresas
               KeyPress "F2"
               [Nome Fantasia Empresa]=Registro_Empresas["Nome Fantasia Empresa"]
               Return True
          Else KeyPress "ESC"
               Mensagem("Empresa ["+EMPRESA+"] n„o cadastrada !")
               [Codigo da Empresa    ]=""
               [Nome Fantasia Empresa]=""
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Selecionar_Empresa)

;*******************************************************************************
;* Rotina para Selecionar Imposto                                             *
;*******************************************************************************
Proc Selecionar_Imposto()
Resynckey
While True
  Moveto [Codigo do Imposto]
  MSGTELA="Informe o imposto !"
  
  TECLA="F1=Consulta  =Impostoń"
  AguardaTeclasPadrao()
  
  If RetVal=-33  
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
          "F5 ~S~aldos/Outros       ":" Saldos/Outros                      " : "F5",
          "~C~ancelar               ":" Cancelar a Opera‡„o                " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
                   
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
  EndIf                                                    

  If Retval="F1"
     Then Moveto [Lookup_Imposto]
          If ConsultaF1()
             Then [Codigo do Imposto]=[Lookup_Imposto]
                  RetVal="ENTER"
          EndIf
          Moveto [Codigo do Imposto]
  EndIf
     
  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case Retval="F5":

       MudaForm()
  Case Retval="ESC":
       Return False
  Case Retval="UP" Or
       Retval="HOME":
       Moveto [Lookup_Imposto]
       Ativa_Lookup()
       If IsBlank([SdMaster->Codigo do Imposto]) Or Retval="HOME"
          Then HOME
          Else Moveto [Codigo do Imposto]
               Locate [SdMaster->Codigo do Imposto]
               Skip -1
               If BOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo do Imposto]=[Lookup_Imposto]
       Resynckey
  Case Retval="DOWN" Or
       Retval="END":
       Moveto [Lookup_Imposto]
       Ativa_Lookup()
       If IsBlank([SdMaster->Codigo do Imposto]) Or Retval="END"
          Then End
          Else Moveto [Codigo do Imposto]
               Locate [SdMaster->Codigo do Imposto]
               Skip
               If EOT() Then Beep EndIf
       EndIf
       KeyPress "F2"
       [Codigo do Imposto]=[Lookup_Imposto]
       Resynckey
  Case Retval="ENTER":
       If IsBlank([]) Then Loop EndIf
       ITEM  =[Codigo do Imposto  ]

       Moveto [Lookup_Imposto  ]
       Ativa_Lookup()
       Moveto [Codigo do Imposto     ]
       Locate ITEM
       If RetVal
          Then CopyToArray Registro_ITEM
               KeyPress "F2"
               Return True
          Else KeyPress "ESC"
               Mensagem("Item ["+ITEM+"] n„o cadastrado !")
               [Codigo do Imposto      ]=""
               [Descricao do Imposto   ]=""
               [Lookup_Imposto         ]=""
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Selecionar_Imposto)

;*******************************************************************************
;* Rotina para Selecionar Mes/Ano                                              *
;*******************************************************************************
Proc Selecionar_Ano()
Resynckey
While True
  Moveto [Ano Referencia]
  MSGTELA="Informe o ano !"
  
  TECLA="=Anoń"
  AguardaTeclasPadrao()
  
  If RetVal=-33  
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
          "F5 ~S~aldos/Outros       ":" Saldos/Outros                      " : "F5",
          "~C~ancelar               ":" Cancelar a Opera‡„o                " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
                   
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf                                         
          RetVal=MenuVar
  EndIf                                                    
    
  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case Retval="F5":
       MudaForm()
  Case Retval="ESC":
       Return False
  Case Retval="ENTER":
       If NumVal([Ano Referencia])<=1980 Or NumVal([Ano Referencia])>=2012
          Then [Ano Referencia]=SubStr(Format("D13",Today()),7,4)
       EndIf
       If IsBlank([Ano Referencia])
          Then [Ano Referencia]=SubStr(Format("D13",Today()),7,4)
       EndIf
       []=ALINH()
       ANOREF=[Ano Referencia]
       Return True
  Case Retval="UP":
       [Ano Referencia]=StrVal(NumVal([Ano Referencia])+1)
  Case Retval="DOWN":
       [Ano Referencia]=StrVal(NumVal([Ano Referencia])-1)
  EndSwitch
  Resynckey
EndWhile
EndProc

;*******************************************************************************
;*  Ver meses do ano                                                           *
;*******************************************************************************
Proc Meses_Item()
EDITAR="N"
EXCLUIR="N"
If RecordStatus("New")
   Then MENSAGEM("Ano sem Registros !")
EndIf

ImageRights ReadOnly
While True

   Prompt " Esc/PgDn=Retornar  Ins=Novo  F3=Ficha  =Mover  F5=Saldos/Outros"

   Wait Table
     Until "ESC","ENTER","F1","F3","INS","PGDN","F5"

   Switch
      Case Retval="F5":
           MudaForm()
      Case Retval="INS":
           Opcao_Ver=False
           CHAVEI=1
           QuitLoop
      Case Retval="ENTER":
           If Not ISBlank([Mes Referencia])
              Then Opcao_Ver=False
                   CHAVEI=0
                   QuitLoop
           EndIf
      Case Retval="F3":
           Opcao_Ver=True
           CHAVEI=0
           Inicia_Registro()
           If OPCAO_FORM_MASTER="F"
              Then DigitaI()
              Else DigitaO()
           EndIf
      Case Retval="ESC" Or RetVal="PGDN":
           CHAVEI=9
           QuitLoop
   EndSwitch
EndWhile
ImageRights
EndProc    ; (Meses_Item)

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True

If INICIO_DIALOG
   Then If CHAVEI=1
           Then Campo="I_Mes_Referencia"
           Else
                If OPCAO_FORM_MASTER="F"
                   Then Campo="I_Saldo_Inicial"
                   Else Campo="I_Descricao"
                EndIf
        EndIf
        INICIO_DIALOG=False
EndIf

If Opcao_Ver=True Then Campo="I_Mes_Referencia" EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
       Case Opcao_Ver=True:
            Temp=False
            Switch
              Case Evento["KeyCode"] =  27:
                   CancelDialog
              OtherWise:
                Mover_Reg=True
                Switch
                  Case Evento["KeyCode"] = -71:
                       If AtFirst()
                          Then Mover_Reg=False Beep
                          Else Home
                       EndIf
                  Case Evento["KeyCode"] = -79:
                       If AtLast()
                          Then Mover_Reg=False Beep
                          Else End
                       EndIf
                  Case Evento["KeyCode"] = -73:
                       If AtFirst()
                          Then Mover_Reg=False Beep
                          Else Up
                       EndIf
                  Case Evento["KeyCode"] = -81:
                       If AtLast()
                          Then Mover_Reg=False Beep
                          Else Down
                       EndIf
                  Case Evento["KeyCode"] = -67:
                       Mover_Reg=False
                       Opcao_Ver=False
                       INICIO_DIALOG=True

                       If OPCAO_FORM_MASTER="F"
                          Then Campo="I_Saldo_Inicial"
                          Else Campo="I_Descricao"
                       EndIf
                EndSwitch
                If Mover_Reg=True
                   Then MESREF=[Mes Referencia]
                        Inicia_Registro()
                EndIf
            EndSwitch
       Case Evento["KeyCode"] = 9 Or
            Evento["KeyCode"] = -15:
            Temp=False
       Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
            If CHAVEI=0
               Then Confirma()
                    If OK="S"
                       Then CHAVEI=8
                            CancelDialog
                    EndIf
            EndIf
       Case Evento["KeyCode"] = 27:
            Switch
             Case Campo="I_Mes_Referencia":
                  CancelDialog
             Case Campo="I_Saldo_Inicial":
                  If CHAVEI=1
                     Then Campo="I_Mes_Referencia"
                     Else CancelDialog
                  EndIf
             Case Campo="I_Entradas": Campo="I_Saldo_Inicial"
             Case Campo="I_Saidas"  : Campo="I_Entradas"

             Case Campo="I_Tipo"     : Campo="I_Mes_Referencia"
             Case Campo="I_Descricao":
                  If CHAVEI=1
                     Then Campo="I_Mes_Referencia"
                     Else CancelDialog
                  EndIf
             Case Campo="I_Valor"    : Campo="I_Descricao"

           EndSwitch
           Temp=False
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="I_Mes_Referencia":
                  VSD_I_Mes_Referencia=AlinhM(ControlValue("I_Mes_Referencia"),2)
                  If VSD_I_Mes_Referencia<"01" Or
                     VSD_I_Mes_Referencia>"12"
                     Then Mensagem("Mes invalido !")
                     Else 
                          If OPCAO_FORM_MASTER="F"
                             Then Del
                                  Moveto [Mes Referencia]

                                  Locate [SdMaster->Codigo da Empresa],
                                         [SdMaster->Codigo do Imposto],
                                         [SdMaster->Ano Referencia   ],
                                         VSD_I_Mes_Referencia,1
                                  If Not RetVal
                                     Then End Down
                                          [Codigo da Empresa]=[SdMaster->Codigo da Empresa]
                                          [Codigo do Imposto]=[SdMaster->Codigo do Imposto]
                                          [Ano Referencia   ]=[SdMaster->Ano Referencia   ]
                                          [Mes Referencia   ]=VSD_I_Mes_Referencia
                                          [Dia Referencia   ]=1
                                     Else CHAVEI=0
                                          Inicia_Registro()
                                  EndIf
                                  Campo="I_Saldo_Inicial"
                             Else Echo Normal
                                  Echo Off
                                    ShowPopup " Op‡”es" CENTERED
                                      "Voltar" : "":"Voltar",
                                      "~A~. 2OD1  Outros Debitos 1¦ Linha"      : "" : "~A~. 2OD1  Outros Debitos 1¦ Linha     ",
                                      "~B~. 2OD2  Outros Debitos 2¦ Linha"      : "" : "~B~. 2OD2  Outros Debitos 2¦ Linha     ",
                                      "~C~. 3EC1  Estorno de Creditos 1¦ Linha" : "" : "~C~. 3EC1  Estorno de Creditos 1¦ Linha",
                                      "~D~. 3EC2  Estorno de Creditos 2¦ Linha" : "" : "~D~. 3EC2  Estorno de Creditos 2¦ Linha",
                                      "~E~. 6OC1  Outros Creditos 1¦ Linha"     : "" : "~E~. 6OC1  Outros Creditos 1¦ Linha    ",
                                      "~F~. 6OC2  Outros Creditos 2¦ Linha"     : "" : "~F~. 6OC2  Outros Creditos 2¦ Linha    ",
                                      "~G~. 7ED1  Estorno de Debitos 1¦ Linha"  : "" : "~G~. 7ED1  Estorno de Debitos 1¦ Linha ",
                                      "~H~. 12D1   Dedu‡oes 1¦ Linha"           : "" : "~H~. 12D1   Dedu‡oes 1¦ Linha          ",
                                      "~I~. 12D2   Dedu‡oes 2¦ Linha"           : "" : "~I~. 12D2   Dedu‡oes 2¦ Linha          ",
                                      "~C~ancelar                             " : " Cancelar a Opera‡„o": "CANCELAR            "
                                   EndMenu
                                  To MenuVar
                                  Echo Off

                                  If MenuVar="CANCELAR" or MenuVar="Esc"
                                     Then Return
                                  EndIf

                                  RetVal=MenuVar

                                  If MenuVar="Voltar"
                                     Then Campo="I_Mes_Referencia"
                                     Else MenuVar=RTrim(SUBSTR(MenuVar,6,5))
                                          VSD_I_Tipo=MenuVar
                                          Del
                                          Moveto [Tipo]

                                          Locate [SdMaster->Codigo da Empresa],
                                                 [SdMaster->Codigo do Imposto],
                                                 [SdMaster->Ano Referencia   ],
                                                 VSD_I_Mes_Referencia,1,VSD_I_Tipo
                                          If Not RetVal
                                             Then End Down
                                                  [Codigo da Empresa]=[SdMaster->Codigo da Empresa]
                                                  [Codigo do Imposto]=[SdMaster->Codigo do Imposto]
                                                  [Ano Referencia   ]=[SdMaster->Ano Referencia   ]
                                                  [Mes Referencia   ]=VSD_I_Mes_Referencia
                                                  [Dia Referencia   ]=1
                                                  [Tipo             ]=VSD_I_Tipo
                                             Else CHAVEI=0
                                                  Inicia_Registro()
                                          EndIf
                                          Campo="I_Descricao"
                                  EndIf
                          EndIf

                  EndIf
             Case Campo="I_Saldo_Inicial":
                  VSD_I_Saldo_Inicial=ControlValue("I_Saldo_Inicial")
                  VSD_I_Saldo_Atual=NDecimal((VSD_I_Saldo_Inicial+VSD_I_Entradas)-VSD_I_Saidas,5)
                  Campo="I_Entradas"
             Case Campo="I_Entradas":
                  VSD_I_Entradas=ControlValue("I_Entradas")
                  VSD_I_Saldo_Atual=NDecimal((VSD_I_Saldo_Inicial+VSD_I_Entradas)-VSD_I_Saidas,5)
                  Campo="I_Saidas"
             Case Campo="I_Saidas":
                  VSD_I_Saidas=ControlValue("I_Saidas")
                  VSD_I_Saldo_Atual=NDecimal((VSD_I_Saldo_Inicial+VSD_I_Entradas)-VSD_I_Saidas,5)
                  AcceptDialog

             Case Campo="I_Descricao":
                  VSD_I_Descricao=ControlValue("I_Descricao")
                  If Not IsBlank(VSD_I_Descricao)
                     Then Campo="I_Valor"
                  EndIf
             Case Campo="I_Valor":
                  VSD_I_Valor=ControlValue("I_Valor")
                  If Not IsBlank(VSD_I_Valor)
                     Then AcceptDialog
                  EndIf

           EndSwitch
           Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="******"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf

Switch
  Case Campo="I_Mes_Referencia":
       MSGCAMPO="Mes Referente"
  Case Campo="I_Saldo_Inicial":
       MSGCAMPO="Saldo no inicio do mes"
  Case Campo="I_Entradas":
       MSGCAMPO="Entradas do mes"
  Case Campo="I_Saidas":
       MSGCAMPO="Saidas do mes"

  Case Campo="I_Descricao":
       MSGCAMPO="Descreva a Operacao"
  Case Campo="I_Valor":
       MSGCAMPO="Informe o Valor daOperacao"
  OtherWise:
       MSGCAMPO=""
EndSwitch

If CHAVEI=0
   Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  F9=Editar  Home/End/PgDn/PgUp=Paginar  "
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
RefreshDialog
Return TEMP
EndProc   ; (Item_Dialog)

;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro
Switch
  Case Funcao_Registro="Gravar":
       If OPCAO_FORM_MASTER="F"
          Then [Mes Referencia        ]=VSD_I_Mes_Referencia
               [Saldo Inicial         ]=VSD_I_Saldo_Inicial
               [Entradas              ]=VSD_I_Entradas
               [Saidas                ]=VSD_I_Saidas
          Else [Mes Referencia        ]=VSD_I_Mes_Referencia
               [Tipo                  ]=VSD_I_Tipo
               [Descricao             ]=VSD_I_Descricao
               [Valor                 ]=VSD_I_Valor
       EndIf
  Case Funcao_Registro="Ler":
       If OPCAO_FORM_MASTER="F"
          Then VSD_I_Mes_Referencia      =[Mes Referencia        ]
               VSD_I_Saldo_Inicial       =[Saldo Inicial         ]
               VSD_I_Entradas            =[Entradas              ]
               VSD_I_Saidas              =[Saidas                ]
               VSD_I_Saldo_Atual=NDecimal((VSD_I_Saldo_Inicial+VSD_I_Entradas)-VSD_I_Saidas,5)
          Else VSD_I_Mes_Referencia      =[Mes Referencia        ]
               VSD_I_Tipo                =[Tipo                  ]
               VSD_I_Descricao           =[Descricao             ]
               VSD_I_Valor               =[Valor                 ]
       EndIf
EndSwitch
EndProc    ;(Registro_Item)

;*******************************************************************************
;* Rotina para Inicializar DigitaI                                             *
;*******************************************************************************
Proc Inicia_Registro()
ImageRights

;Switch
;  Case [Situacao]="T":
;       VSD_I_SITUACAO="TRANSFERIDO"
;  Case [Situacao]="F":
;       VSD_I_SITUACAO="FECHADO"
;  OtherWise:
;       VSD_I_SITUACAO=""
;EndSwitch

If CHAVEI=1
   Then KeyPress "INS"
EndIf
CopyToArray RegItem
INICIO_DIALOG=True
Registro_Item("Ler")
EndProc   ;(Inicia_Registro)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaI()
Showdialog "Dados do Mes" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea",
    "HOME","END","PGDN","PGUP","F9",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  

     @ 11,26 height 08 width 30

   Label  @ 00,00 "Mes " For "I_Mes_Referencia"
   Accept @ 00,05 Width 05 "A2" picture "#*#" Tag "I_Mes_Referencia" to VSD_I_Mes_Referencia

   Label  @ 02,00 "Inicial" For "I_Saldo_Inicial"
   Accept @ 02,10 Width 14 "$" picture "[-]#*#.[##]" Tag "I_Saldo_Inicial" to VSD_I_Saldo_Inicial
   Label  @ 03,00 "Entradas" For "I_Entradas"
   Accept @ 03,10 Width 14 "$" picture "#*#.[##]" Tag "I_Entradas"      to VSD_I_Entradas
   Label  @ 04,00 "Saidas" For "I_Saidas"
   Accept @ 04,10 Width 14 "$" picture "#*#.[##]" Tag "I_Saidas"        to VSD_I_Saidas
   Label  @ 05,00 "Final" For "I_Saldo_Atual"
   Accept @ 05,10 Width 14 "$" picture "[-]#*#.[##]" Tag "I_Saldo_Atual"   to VSD_I_Saldo_Atual

EndDialog
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
EndProc    ; (DigitaI)

;*******************************************************************************
;* Rotina para Digitacao Outros                                                *
;*******************************************************************************
Proc DigitaO()
Showdialog "Dados do Mes" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea",
    "HOME","END","PGDN","PGUP","F9",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  

     @ 11,05 height 06 width 70

   Label  @ 00,00 "Mes " For "I_Mes_Referencia"
   Accept @ 00,05 Width 05 "A2" picture "#*#" Tag "I_Mes_Referencia" to VSD_I_Mes_Referencia
   Label  @ 00,10 "Tipo" For "I_Tipo"
   Accept @ 00,16 Width 08 "A5" picture "!*!" Tag "I_Tipo" to VSD_I_Tipo

   Label  @ 02,00 "Descri‡„o" For "I_Descricao"
   Accept @ 02,11 Width 56 "A60" picture "!*!" Tag "I_Descricao" to VSD_I_Descricao
   Label  @ 03,00 "Valor" For "I_Valor"
   Accept @ 03,11 Width 14 "$" picture "#*#.[##]" Tag "I_Valor"      to VSD_I_Valor

EndDialog
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
EndProc    ; (DigitaI)

;*******************************************************************************
;* Rotina para Finalizar Digitacao DigitaI                                     *
;*******************************************************************************
Proc Finaliza_Registro(ok)
Private ok
If Ok
   Then Registro_Item("Gravar")
        UnLockRecord
   Else
        If OPCAO_FORM_MASTER="F"
           Then Moveto "ImpostoI"
           Else Moveto "ImpostoO"
        EndIf
        If CHAVEI=0 Or CHAVEI=8
           Then CopyFromArray RegItem
        EndIf
        If CHAVEI=1 Or CHAVEI=8
           Then Del
        EndIf
EndIf
ImageRights ReadOnly
EndProc     ; (Finaliza_Registro)

;*******************************************************************************
;* Rotina para Mudanca de Form                                                 *
;*******************************************************************************
Proc MudaForm()
Private Tabela,Campo
Tabela=Table()
Campo="Mes Referencia"
UnLockRecord

Moveto "SdMaster"
If OPCAO_FORM_MASTER="F"
   Then OPCAO_FORM_MASTER="1"
   Else OPCAO_FORM_MASTER="F"
EndIf
PickForm OPCAO_FORM_MASTER

If Tabela<>"Sdmaster"
   Then If OPCAO_FORM_MASTER="F"
           Then Moveto "ImpostoI"
           Else Moveto "ImpostoO"
        EndIf
EndIf
Moveto Field Campo
EndProc ;(MudaForm)

;*******************************************************************************
;* Rotina aguarda teclas padrao                                                *
;*******************************************************************************
Proc AguardaTeclasPadrao()

BarraPadrao()

Wait Field
  Until "ESC","ENTER","DOWN","DEL","FIELDVIEW","LEFT","RIGHT",
        "HOME","END","UP","PGDN","PGUP","INS","F35","ZOOM","ZOOMNEXT",
        -94,-33,-22,
        "F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

ClearSpeedBar      

IsTeclaAtalho()
Endproc

;*******************************************************************************
;* Rotina Barra Funcoes                                                        *
;*******************************************************************************
Proc BarraPadrao()
If Not IsAssigned(TECLA) Then TECLA="" EndIf

Prompt TECLA 
SpeedBar "["+Chr(254)+"]"  :"ESC",
         "~Fun‡”es~"       :-33,
         "~?~"             :-94
Endproc

;*******************************************************************************
;* Rotina Mensagem Teclas Padrao                                               *
;*******************************************************************************
Proc MsgTeclasPadrao()
MSG=    "    Esc= Voltar Menu                 //"
MSG=MSG+"     F5= Saldos/Outros               //"
MSG=MSG+"  Alt+F= Fun‡”es                     "
MsgHelp("Teclas/Fun‡”es",MSG)
Endproc
   
;*******************************************************************************
;* Rotina Principal Nota Fiscal                                                *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf

CoEdit "SdMaster"
OPCAO_FORM_MASTER="F"
PickForm OPCAO_FORM_MASTER
Executa = True
WV=0
Moveto "SdMaster"
While True
  End
  SeqMaster=[Sequencia]+1
  PgDn
  [Sequencia]=SeqMaster
  LockRecord
  If RetVal Then QuitLoop EndIf
EndWhile

[Codigo da Empresa   ]=SYS_EMPRESA_DEFAULT
If Executa
   Then [Ano Referencia]=StrVal(Year(Today()))
        [Mes Referencia]=AlinhM(StrVal(Month(Today())),2)
        [Mes]=MesExt(Month(Today()))
EndIf

While Executa
  If Not Selecionar_Empresa() Then QuitLoop EndIf
  If Not Selecionar_Ano()     Then Loop EndIf
  While Executa
    If Not Selecionar_Imposto() Then QuitLoop     EndIf
    While Executa

      If OPCAO_FORM_MASTER="F"
         Then Moveto "ImpostoI"
         Else Moveto "ImpostoO"
      EndIf
      Meses_Item()
      If CHAVEI=9
         Then QuitLoop
      EndIf
      Inicia_Registro()
      If OPCAO_FORM_MASTER="F"
         Then DigitaI()
         Else DigitaO()
      EndIf
    EndWhile

    Moveto "SdMaster"
    PickForm OPCAO_FORM_MASTER
  EndWhile
EndWhile

;** Deletando Registro Master **
Moveto "SdMaster"
[Codigo da Empresa     ]=""
[Codigo do Imposto     ]=""
Del
Do_It!
ClearAll
Release Vars All
Release Procs All

