;** FornProd *******************************************************************
;*  Relacao de Itens por Fornecedor                                            *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 16/10/2002 por Anivel Augusto Rodrigues
;Alterado em     : 28/02/2005 por Jose Luis Ameno da Silva
;Motivo Alteracao: Inclusao de campos para Ultima Cotacao
;Ultima Alteracao: 09/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Round() Calculo Fator de Conversao
;Ultima Alteracao: 19/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MVA/CFOP       
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas (Fun‡oes Pr¢prias)
;Ultima Alteracao: 17/06/2011 por Karina Andrade
;Motivo Alteracao: Ajustes TECLAS
;Ultima Alteracao: 17/10/2011 por Karina Andrade
;Motivo Alteracao: Ajustes CodFonecedor 
;Ultima Alteracao: 15/10/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado CSOSN 
;Ultima Alteracao: 01/03/2016 por Kamila Gomes
;Motivo Alteracao: Adicionado Data de EmissÆo
;Ultima Alteracao: 07/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cor editar

;*******************************************************************************
;* Rotina para Selecionar Fornecedor                                          *
;*******************************************************************************
Proc Selecionar_Fornecedor()
Resynckey
While True
  SetaCorRegistro("Editando")
  
  Moveto [Codigo]
 
  TECLA="Consulta  =Fornecedorñ"
  
  MSGTELA="Informe o fornecedor !"
  
  AguardaTeclasPadrao() 

  If Retval="F1"
     Then Moveto [Lookup_Fornecedor]
          If ConsultaF1()
             Then [Codigo]=[Lookup_Fornecedor]
                  RetVal="ENTER"
          EndIf
          Moveto [Codigo]
  EndIf

  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case Retval="ESC":
       Return False
  Case Retval="UP"   Or
       Retval="HOME" Or
       Retval=-72     :
       Moveto [Lookup_Fornecedor]
       Ativa_Lookup()
       If IsBlank([FoMaster->Codigo]) Or Retval="HOME"
          Then Home
               While Not EOT()
                 If [Tipo]="F"
                    Then QuitLoop
                    Else Skip
                 EndIf
               EndWhile
          Else Moveto [Codigo]
               Locate [FoMaster->Codigo]
               While True
                 Skip -1
                 If BOT() Or [Tipo]="F"
                    Then QuitLoop
                 EndIf
               EndWhile
       EndIf
       If [Tipo]="F"
          Then KeyPress "F2"
               [Codigo]=[Lookup_Fornecedor]
               Resynckey
          Else KeyPress "ESC"
               Beep
       EndIf
  Case Retval="DOWN" Or
       Retval="END"  Or
       Retval=-80     :
       Moveto [Lookup_Fornecedor]
       Ativa_Lookup()
       If IsBlank([FoMaster->Codigo]) Or Retval="END"
          Then End
               While Not BOT()
                 If [Tipo]="F"
                    Then QuitLoop
                 EndIf
                 Skip -1
               EndWhile
          Else Moveto [Codigo]
               Locate [FoMaster->Codigo]
               While Not EOT()
                 Skip
                 If [Tipo]="F"
                    Then QuitLoop
                 EndIf
               EndWhile
       EndIf
       If [Tipo]="F"
          Then KeyPress "F2"
               [Codigo]=[Lookup_Fornecedor]
               Resynckey
          Else KeyPress "ESC"
               Beep
       EndIf
  Case Retval="ENTER":
       If IsBlank([]) Then Loop EndIf
       []=ALINH()
       FORN  =[Codigo]

       Moveto [Lookup_Fornecedor]
       Ativa_Lookup()
       Moveto [Codigo]
       Locate FORN
       If RetVal
          Then CopyToArray Registro_FORN
               KeyPress "F2"
               Return True
          Else KeyPress "ESC"

               Mensagem("Fornecedor ["+FORN+"] n„o cadastrado !")
               [Codigo              ]=""
               [Razao Social        ]=""
               [CGC                 ]=""
               [Lookup_Fornecedor   ]=""
               Resynckey
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Selecionar_Item)

;*******************************************************************************
;* Rotina para Localizar Registro Item                                         *
;*******************************************************************************
Proc CHAVEI()
Opcao_Ver=False
While True
  SetaCorRegistro("Editar")

  Moveto [Codigo_Fornecedor]
  End Down
  While True

      Prompt" Esc=Retornar  F3=Ver Ficha  F7=Paginar  PgDn=Finalizar  "

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN","F3"

      Switch
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           PAGINA("FornProd","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   PRODUTO=[Codigo_Fornecedor]
                   Return
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then Del
                           EndIf
                   EndIf
           EndIf
           QuitLoop
      Case RetVal="F3":
           Del
           Moveto [Codigo_Fornecedor]
           If RecordStatus("New")
              Then MENSAGEM("Sem Iten(s) p/ ver !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVEI=0
           Home
           PRODUTO=[Codigo_Fornecedor]
           Inicia_Registro()
           DigitaI()
           QuitLoop
      Case Retval="ESC":
           If Field()="Codigo_Fornecedor"
              Then CHAVEI=9
                   Del
                   Return
              Else Left
           EndIf
      Case Retval="PGDN":
           Executa=False
           CHAVEI=9
           Del
           Return
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           PRODUTO=[]
           Del
           Locate PRODUTO
           If Retval
              Then CHAVEI=0
              Else CHAVEI=1
                   End Down
                   [Codigo           ]=FORN
                   [Codigo_Fornecedor]=PRODUTO
                   Locate FORN,PRODUTO
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5

TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True

If INICIO_DIALOG
   Then Campo="I_Codigo_Item"
        INICIO_DIALOG=False
EndIf
If Opcao_Ver=True Then Campo="I_Flag" 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
               EndSwitch
               If Mover_Reg=True
                  Then PRODUTO=[Codigo_Fornecedor]
                       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"] = -59:
            If Campo="I_UN_Item" Or
               Campo="I_UN_Item_Entrada" Or
               Campo="I_Codigo_Item"     Or
               Campo="I_CFOP"
               Then
                    Dynarray WinArray5[]
                    Window Handle Dialog to JANELA
                    Window GetAttributes JANELA To WinArray5
                    WinArray5["FLOATING"]=False
                    Window SetAttributes JANELA From WinArray5

                    If Campo="I_UN_Item"           Then Moveto "Cotacao"
                                                        Moveto [Unidade Entrada]      EndIf
                    If Campo="I_UN_Item_Entrada"   Then Moveto [Unidade Entrada]      EndIf
                    If Campo="I_Codigo_Item"       Then Moveto [Codigo do Item]       EndIf
                    If Campo="I_CFOP"              Then Moveto [CFO                 ] EndIf
                    ConsultaF1()

                    Window Select JANELA
                    WinArray5["FLOATING"]=True
                    Window SetAttributes JANELA From WinArray5

                    echo Normal
                    echo off

                    If Campo="I_Codigo_Item"
                       Then VSD_I_Codigo_Item    =[Codigo do Item       ]
                            VSD_I_Descricao_Item =[Descricao do Item    ]
                            Campo="I_Codigo_Item"
                    EndIf
                    If Campo="I_UN_Item"
                       Then VSD_I_UN_Item     =[Unidade Entrada]
                            Campo="I_UN_Item"
                    EndIf
                    If Campo="I_UN_Item_Entrada"
                       Then VSD_I_UN_Item_Entrada =[Unidade Entrada]
                            Campo="I_UN_Item_Entrada"
                    EndIf
                    If Campo="I_CFOP"
                       Then VSD_I_CFOP            =[CFO             ]
                            Campo="I_CFOP"
                    EndIf

                    Moveto "FornProd"
                    RefreshDialog
           EndIf
           Temp=False
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="I_Codigo_Item"    :
                  If CHAVEI=1
                     Then CHAVEI=8
                  EndIf
                  CancelDialog
             Case Campo="I_TICMS"          : Campo="I_Codigo_Item"
             Case Campo="I_RBC_ICMS"   Or
                  Campo="I_AICMS"      Or
                  Campo="I_Valor_ICMS" Or
                  Campo="I_CSOSN"          : Campo="I_TICMS"
             Case Campo="I_TIPI"           : Campo="I_CSOSN"
             Case Campo="I_AIPI" Or
                  Campo="I_Valor_IPI"      : Campo="I_TIPI"
             Case Campo="I_Fator_Conversao": Campo="I_TIPI"
             Case Campo="I_UN_Item_Entrada": Campo="I_Fator_Conversao"
             Case Campo="I_CFOP"           : Campo="I_UN_Item_Entrada"
             Case Campo="I_MVA"            : Campo="I_CFOP"
             Case Campo="I_TpDocto"        : Campo="I_MVA"
             Case Campo="I_NoDocto"        : Campo="I_TpDocto"
             Case Campo="I_Data"           : Campo="I_NoDocto"
             Case Campo="I_DataEMI"        : Campo="I_Data"
             Case Campo="I_Quantidade"     : Campo="I_DataEMI"
             Case Campo="I_UN_Item"        : Campo="I_Quantidade"
             Case Campo="I_Preco_Unitario" : Campo="I_UN_Item"
             Case Campo="I_VrUnit_Ult_Cot" : Campo="I_Preco_Unitario"
             Case Campo="I_Data_Ult_Cot"   : Campo="I_VrUnit_Ult_Cot"
             Case Campo="I_Flag"           : Campo="I_Data_Ult_Cot"

           EndSwitch
           Temp=False
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="I_Codigo_Item":
                  VSD_I_Codigo_Item=ControlValue("I_Codigo_Item")
                  If Not IsBlank(VSD_I_Codigo_Item)
                     Then Moveto [Codigo do Item]
                          Ativa_Lookup()
                          Moveto [Codigo do Item]
                          Locate ALINHM(ControlValue("I_Codigo_Item"),10)
                          If RetVal
                             Then VSD_I_Codigo_Item    =[Codigo do Item       ]
                                  VSD_I_Descricao_Item =[Descricao do Item    ]
                                  KeyPress "ESC"
                                  Ler_Cotacao()
                                  Campo="I_TICMS"
                             Else Mensagem("Item n„o Cadastrado !")
                                  VSD_I_Codigo_Item   =""
                                  VSD_I_Descricao_Item=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                  EndIf
             Case Campo="I_TICMS":
                  VSD_I_TICMS=ControlValue("I_TICMS")
                  If VSD_I_TICMS<>"D"
                     Then If Not IsBlank(VSD_I_TICMS)
                             Then VSD_I_RBC_ICMS=BlankNum()
                                  VSD_I_AICMS=BlankNum()
                                  Campo="I_CSOSN"
                          EndIf
                     Else Campo="I_RBC_ICMS"
                 EndIf
             Case Campo="I_RBC_ICMS":
                  VSD_I_RBC_ICMS=ControlValue("I_RBC_ICMS")
                  Campo="I_AICMS"
             Case Campo="I_AICMS":
                  VSD_I_AICMS=ControlValue("I_AICMS")
                  Campo="I_CSOSN"
             Case Campo="I_CSOSN":
                  VSD_I_CSOSN=ControlValue("I_CSOSN")
                  If IsBlank(VSD_I_CSOSN)
                     Then VSD_I_CSOSN=BlankNum()
                  EndIf
                  Campo="I_TIPI"     
             Case Campo="I_TIPI":
                  VSD_I_TIPI=ControlValue("I_TIPI")
                  If VSD_I_TIPI<>"D"
                     Then If Not IsBlank(VSD_I_TIPI)
                             Then VSD_I_RBC_IPI=BlankNum()
                                  VSD_I_AIPI=BlankNum()
                                  Campo="I_Fator_Conversao"
                          EndIf
                     Else Campo="I_AIPI"
                 EndIf
             Case Campo="I_AIPI":
                  VSD_I_AIPI=ControlValue("I_AIPI")
                  Campo="I_Fator_Conversao"
             Case Campo="I_Fator_Conversao":
                  VSD_I_Fator_Conversao=ControlValue("I_Fator_Conversao")
                  If IsBlank(VSD_I_Fator_Conversao) Or
                     VSD_I_Fator_Conversao=0
                     Then VSD_I_Fator_Conversao=1
                  EndIf
                  Campo="I_UN_Item_Entrada"
             Case Campo="I_UN_Item_Entrada":
                  VSD_I_UN_Item_Entrada=ControlValue("I_UN_Item_Entrada")
                  If Not IsBlank(VSD_I_UN_Item_Entrada)
                     Then Moveto [Unidade Entrada]
                          Ativa_Lookup()
                          Moveto [Sigla da Unidade]
                          Locate VSD_I_UN_Item_Entrada
                          If RetVal
                             Then VSD_I_UN_Item_Entrada=[Sigla da Unidade]
                                  KeyPress "ESC"
                                  [Unidade Entrada]=VSD_I_UN_Item_Entrada
                                  Campo="I_CFOP"
                             Else Mensagem("Unidade n„o Cadastrada !")
                                  VSD_I_UN_Item_Entrada=""
                                  KeyPress "ESC"
                          EndIf
                          Echo Off
                     Else Campo="I_CFOP"
                  EndIf
             Case Campo="I_CFOP":
                  VSD_I_CFOP=ControlValue("I_CFOP")
                  Moveto [CFO]
                  Ativa_Lookup()
                  Moveto [Codigo Fiscal de Operacao]
                  Locate VSD_I_CFOP
                  If RetVal
                     Then KeyPress "ESC"
                          Campo="I_MVA"
                     Else Mensagem("CFOP "+VSD_I_CFOP+" n„o Cadastrado !")
                          VSD_I_CFOP=""
                          KeyPress "ESC"
                  EndIf
                  Echo Off
             Case Campo="I_MVA":
                  VSD_I_MVA=ControlValue("I_MVA")
                  Campo="I_TpDocto"
                  
             Case Campo="I_TpDocto":
                  VSD_I_TpDocto=ControlValue("I_TpDocto")
                  Campo="I_NoDocto"
             Case Campo="I_NoDocto":
                  VSD_I_NoDocto=ControlValue("I_NoDocto")
                  Campo="I_Data"
						 Case Campo="I_Data":
									VSD_I_Data=ControlValue("I_Data")
									Campo="I_DataEMI"
             Case Campo="I_DataEMI":
									VSD_I_DataEMI=ControlValue("I_DataEMI")
									Campo="I_Quantidade"
             Case Campo="I_Quantidade":
                  VSD_I_Quantidade=ControlValue("I_Quantidade")
                  Campo="I_UN_Item"
             Case Campo="I_UN_Item":
                  VSD_I_UN_Item=ControlValue("I_UN_Item")
                  If Not IsBlank(VSD_I_UN_Item)
                     Then Moveto "Cotacao"
                          Moveto [Unidade Entrada]
                          Ativa_Lookup()
                          Moveto [Sigla da Unidade]
                          Locate VSD_I_UN_Item
                          If RetVal
                             Then VSD_I_UN_Item=[Sigla da Unidade]
                                  KeyPress "ESC"
                                  [Unidade Entrada]=VSD_I_UN_Item
                                  Campo="I_Preco_Unitario"
                             Else Mensagem("Unidade n„o Cadastrada !")
                                  VSD_I_UN_Item=""
                                  KeyPress "ESC"
                          EndIf
                          Moveto "FornProd"
                          Echo Off
                     Else Campo="I_Preco_Unitario"
                  EndIf
             Case Campo="I_Preco_Unitario":
                  VSD_I_Preco_Unitario=ControlValue("I_Preco_Unitario")
                  Campo="I_VrUnit_Ult_Cot"
             Case Campo="I_VrUnit_Ult_Cot":
                  VSD_I_VrUnit_Ult_Cot=ControlValue("I_VrUnit_Ult_Cot")
                  Campo="I_Data_Ult_Cot"
             Case Campo="I_Data_Ult_Cot":
                  VSD_I_Data_Ult_Cot=ControlValue("I_Data_Ult_Cot")
                  Campo="I_Flag"
             Case Campo="I_Flag":
                  AcceptDialog
           EndSwitch
           Temp=False
   EndSwitch
EndIf

SelectControl Campo
Switch
  Case Campo="I_Codigo_Item":
       MSGCAMPO="C¢digo do nosso Item"
  Case Campo="I_UN_Item" Or
       Campo="I_UN_Item_Entrada":
       MSGCAMPO="Unidade Entrada"
  Case Campo="I_TICMS":
       MSGCAMPO="Tributacao ICMS: N„o tributado,Debitado,Isento,Outros,Substitui‡„o"
  Case Campo="I_RBC_ICMS":
       MSGCAMPO="Aliquota Reduzida da Base de Calculo de ICMS"
  Case Campo="I_AICMS":
       MSGCAMPO="Aliquota de ICMS"
  Case Campo="I_TIPI":
       MSGCAMPO="Tributa‡„o IPI: N„o tributado,Debitado,Isento,Outros"
  Case Campo="I_RBC_IPI":
       MSGCAMPO="Aliquota Reduzida da Base de Calculo de IPI"
  Case Campo="I_AIPI":
       MSGCAMPO="Aliquota de IPI"
  Case Campo="I_Fator_Conversao":
       MSGCAMPO="Fator de Convers„o"
  Case Campo="I_CFOP":
       MSGCAMPO="CFOP p/ este Item"
  Case Campo="I_MVA":
       MSGCAMPO="% Margem de Valor Agregado para Base Calc. Substitui‡Æo"
  OtherWise:
       MSGCAMPO=""
EndSwitch

If CHAVEI=0
    Then TECLA=TECLA+"Ctrl+Del=Excluir  "
EndIf
If Campo="I_UN_Item"
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  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 Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Moveto [Codigo_Fornecedor]
Locate FORN, PRODUTO
CopyToArray RegItem

VSD_I_Flag=""
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaI()
Echo Normal
Echo Off

Showdialog "Dados" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP"
     @ 03,4 height 20 width 73

   Frame Single From 00,00 to 09,70
   @ 00,01 ?? " Fornecedor "

   Label  @ 01,01 "C¢digo Item Fornecedor" For "I_Codigo_Fornecedor"
   Accept @ 02,02 Width 23 "A20" picture "!*!" Tag "I_Codigo_Fornecedor" to VSD_I_Codigo_Fornecedor

   Label  @ 03,01 "C¢digo Item" For "I_Codigo_Item"
   Accept @ 04,02 Width 13 "A25" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   Label  @ 03,15 "Descri‡„o Item" For "I_Descricao_Item"
   Accept @ 04,16 Width 33 "A30" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item

   @ 05,02 ?? "Impostos T   %Red.BC   %"
   Label  @ 06,01 "ICMS..." For "I_TICMS"
   Accept @ 06,10 Width 4 "A1" picture "N,D,I,O,S" Tag "I_TICMS" to VSD_I_TICMS
   Accept @ 06,14 Width 10 "N" picture "#*#.[####]" Tag "I_RBC_ICMS" to VSD_I_RBC_ICMS
   Accept @ 06,24 Width 08 "N" picture "#*#.[##]" Tag "I_AICMS" to VSD_I_AICMS

   Label  @ 07,01 "CSOSN.." For "I_CSOSN"
   PaintCanvas Attribute 112 07, 10, 07, 14
   Accept @ 07,14 Width 07 "A4" picture "####" Tag "I_CSOSN" to VSD_I_CSOSN
   PaintCanvas Attribute 112 07, 21, 07, 31
   
   Label  @ 08,01 "IPI...." For "I_TIPI"
   Accept @ 08,10 Width 4 "A1" picture "N,D,I,O" Tag "I_TIPI" to VSD_I_TIPI
   PaintCanvas Attribute 112 08, 14, 08, 24
   Accept @ 08,24 Width 08 "N" picture "#*#.[##]" Tag "I_AIPI" to VSD_I_AIPI

   Label  @ 05,34 "Ft Convers„o" For "I_Fator_Conversao"
   Accept @ 06,35 Width 12 "N" picture "#*#.[#####]" Tag "I_Fator_Conversao" to VSD_I_Fator_Conversao
   Label  @ 05,47 "UN" For "I_UN_Item_Entrada"
   Accept @ 06,48 Width 05 "A2" picture "!*!" Tag "I_UN_Item_Entrada" to VSD_I_UN_Item_Entrada

   Label  @ 05,53 "CFOP" For "I_CFOP"
   Accept @ 06,54 Width 07 "A4" picture "####" Tag "I_CFOP" to VSD_I_CFOP
   Label  @ 05,61 "%MVA" For "I_MVA"
   Accept @ 06,62 Width 08 "N" picture "#*#.[###]" Tag "I_MVA" to VSD_I_MVA
   
   Frame Single From 09,00 to 14,70
   @ 10,01 ?? " Ultima entrada "

   Label  @ 10,01 "TpDocto" For "I_TpDocto"
   Accept @ 11,02 Width 07 "A4" picture "!*!" Tag "I_TpDocto" to VSD_I_TpDocto
   Label  @ 10,09 "N§ Documento" For "I_NoDocto"
   Accept @ 11,10 Width 13 "A10" picture "!*!" Tag "I_NoDocto" to VSD_I_NoDocto
   Label  @ 10,23 "Data" For "I_Data"
   Accept @ 11,24 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_Data" to VSD_I_Data
   Label  @ 10,37 "Data EmissÆo" For "I_DataEMI"
   Accept @ 11,38 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_DataEMI" to VSD_I_DataEMI

   Label  @ 12,01 "Quantidade" For "I_Quantidade"
   Accept @ 13,02 Width 13 "N" picture "#*#.[###]" Tag "I_Quantidade" to VSD_I_Quantidade
   Label  @ 12,16 "UN" For "I_UN_Item"
   Accept @ 13,16 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item
   Label  @ 12,22 "Pr.Unit rio" For "I_Preco_Unitario"
   Accept @ 13,22 Width 12 "N" picture "#*#.[#####]" Tag "I_Preco_Unitario" to VSD_I_Preco_Unitario
   Label  @ 12,35 "Custo Calculado" For "I_Custo_Unitario"
   Accept @ 13,36 Width 12 "N" picture "#*#.[#####]" Tag "I_Custo_Unitario" to VSD_I_Custo_Unitario
   Accept @ 13,49 Width 05 "A2" picture "!*!" Tag "I_UN_Item_Interna" to VSD_I_UN_Item_Interna

   Frame Single From 14,00 to 17,70
   @ 14,01 ?? " Ultima Cota‡„o "

   Label  @ 15,01 "Pr.Unit rio" For "I_VrUnit_Ult_Cot"
   Accept @ 16,02 Width 12 "N" picture "#*#.[#####]" Tag "I_VrUnit_Ult_Cot" to VSD_I_VrUnit_Ult_Cot
   Label  @ 15,16 "Data" For "I_Data_Ult_Cot"
   Accept @ 16,16 Width 13 "D" picture "#[#];.##;.##[##]" Tag "I_Data_Ult_Cot" to VSD_I_Data_Ult_Cot

   Accept @ 16,56 Width 1 "A1" picture "!" Tag "I_Flag" to VSD_I_Flag

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

;*******************************************************************************
;* Rotina para Finalizar o Registro                                            *
;*******************************************************************************
Proc Finaliza_Registro(ok)
Private ok
If Ok
   Then Registro_Item("Gravar")
   Else If CHAVEI=8
           Then Del
           Else CopyFromArray RegItem
        EndIf

        Moveto "Cotacao"
        If RecordStatus("New")
           Then Del
           Else CopyFromArray RegItemCot
        EndIf

        Moveto "FornProd"
EndIf
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro
Switch
  Case Funcao_Registro="Gravar":
       Moveto "Cotacao"
       If RecordStatus("New")
          Then Del
       EndIf
       Moveto [Codigo do Item]
       Locate VSD_I_Codigo_Item, FORN
       If Not RetVal
          Then End Down
               [Codigo do Item    ]=VSD_I_Codigo_Item
               [Codigo            ]=FORN
       EndIf
       [Data de Compra            ]=VSD_I_Data
       [Numero do Documento       ]=VSD_I_NoDocto
       [Tipo do Documento         ]=VSD_I_TpDocto
       [Quantidade                ]=VSD_I_Quantidade
       [Unidade Entrada           ]=VSD_I_UN_Item
       [Valor Unitario            ]=VSD_I_Preco_Unitario
       [Vr_Unit_Ult_Cotacao       ]=VSD_I_VrUnit_Ult_Cot
       [Data_Ult_Cotacao          ]=VSD_I_Data_Ult_Cot
       [Data de Emissao           ]=VSD_I_DATAEMI
       UnLockRecord

       Moveto "FornProd"
       [Codigo do Item            ]=VSD_I_Codigo_Item
       [Descricao do Item         ]=VSD_I_Descricao_Item
       [Tributacao de IPI         ]=VSD_I_TIPI
       [Aliquota de IPI           ]=VSD_I_AIPI
       [Tributacao de ICMS        ]=VSD_I_TICMS
       [Aliquota Reduzida BCICMS  ]=VSD_I_RBC_ICMS
       [Aliquota de ICMS          ]=VSD_I_AICMS
       [CSOSN                     ]=VSD_I_CSOSN
       [Fator de Conversao        ]=VSD_I_Fator_Conversao
       [Unidade Entrada           ]=VSD_I_UN_Item_Entrada
       [MVA                       ]=VSD_I_MVA                
       [CFO                       ]=VSD_I_CFOP                
       UnLockRecord

  Case Funcao_Registro="Ler":
       Moveto "FornProd"
       VSD_I_Codigo_Fornecedor      =[Codigo_Fornecedor         ]
       VSD_I_Codigo_Item            =[Codigo do Item            ]
       VSD_I_Descricao_Item         =[Descricao do Item         ]
       VSD_I_TIPI                   =[Tributacao de IPI         ]
       VSD_I_AIPI                   =[Aliquota de IPI           ]
       VSD_I_TICMS                  =[Tributacao de ICMS        ]
       VSD_I_RBC_ICMS               =[Aliquota Reduzida BCICMS  ]
       VSD_I_AICMS                  =[Aliquota de ICMS          ]
       VSD_I_CSOSN                  =[CSOSN                     ]
       VSD_I_Fator_Conversao        =[Fator de Conversao        ]
       VSD_I_UN_Item_Entrada        =[Unidade Entrada           ]
       VSD_I_MVA                    =[MVA                       ]
       VSD_I_CFOP                   =[CFO                       ]

       Ler_Cotacao()
EndSwitch
EndProc  ; (Registro_Item)

;*******************************************************************************
;* Rotina para Leitura Cotacao                                                 *
;*******************************************************************************
Proc Ler_Cotacao()
Moveto "Cotacao"
If RecordStatus("New")
   Then Del
EndIf
If RecordStatus("Modified")
   Then CopyFromArray RegItemCot
EndIf
Moveto [Codigo do Item]
Locate VSD_I_Codigo_Item, [FoMaster->Codigo]
If Not RetVal
   Then End Down
EndIf
VSD_I_Data                   =[Data de Compra            ]
VSD_I_NoDocto                =[Numero do Documento       ]
VSD_I_TpDocto                =[Tipo do Documento         ]
VSD_I_Quantidade             =[Quantidade                ]
VSD_I_UN_Item                =[Unidade Entrada           ]
VSD_I_Preco_Unitario         =[Valor Unitario            ]
VSD_I_Custo_Unitario         =[Custo Medio Unitario      ]
VSD_I_UN_Item_Interna        =[Unidade Interna           ]
VSD_I_VrUnit_Ult_Cot         =[Vr_Unit_Ult_Cotacao       ]
VSD_I_Data_Ult_Cot           =[Data_Ult_Cotacao          ]
VSD_I_DATAEMI                =[Data de Emissao           ]
CopyToArray RegItemCot

Moveto "FornProd"
EndProc

;*******************************************************************************
;Foi necessario personalizar um novo Menu, e deixando-o parecido com o padrÆo.
;*******************************************************************************
;* 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",
         "~?~"            :-94
Endproc

;*******************************************************************************
;* Rotina Mensagem Teclas Padrao                                               *
;*******************************************************************************
Proc MsgTeclasPadrao()
MSG=    "    Esc= Voltar Menu                 "
MsgHelp("Teclas/Fun‡”es",MSG)
Endproc

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

CoEdit "FoMaster"
OPCAO_FORM_MASTER="F"
PickForm OPCAO_FORM_MASTER
Executa = True
WV=0

While True
  End
  SeqMaster=[Sequencia]+1
  PgDn
  [Sequencia]=SeqMaster
  LockRecord
  If RetVal Then QuitLoop EndIf
EndWhile

While Executa
  If Not Selecionar_Fornecedor() Then QuitLoop EndIf
  SetaCorRegistro("Padrao")
  While Executa
    Moveto "FornProd"
    CHAVEI()
    If CHAVEI=9
       Then QuitLoop
    EndIf
    Inicia_Registro()
    DIGITAI()
  EndWhile
  SetaCorRegistro("Padrao")

  Moveto "FoMaster"
  PickForm OPCAO_FORM_MASTER
EndWhile

;** Deletando Registro Master **
Moveto "FoMaster"
[Codigo ]=""
Del
Do_It!
ClearAll
Release Vars All
Release Procs All
