;** Sw_Cons2 *******************************************************************
;*  Programa p/ Consulta de Cotacao/Estoque/Preco                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/05/2005 por Jose Luis Ameno da Silva
;Ultima Alteracao: 10/01/2006 Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Release DynArray
;Ultima Alteracao: 09/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Round() Calculo Fator de Conversao
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 19/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MVA/CFOP 
;Ultima Alteracao: 16/06/2010 por Cleber Alves
;Motivo Alteracao: Ajustes erro ao abrir e fechar tabelas   

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc Detalhe(Item,DescrItem,Forn,NomForn)
Private Item, DescrItem,Forn,NomForn

Echo Normal
Echo Off

VSD_I_Codigo           =Forn
VSD_I_Razao_Social     =NomForn
Moveto "\\Sistemas\\Cadastro\\Destinat"
Moveto [Codigo]
Locate Forn
If Retval
  Then VSD_I_Contato =[Contato  ]
       VSD_I_Telefone=[Telefone ]
  Else VSD_I_Contato =""
       VSD_I_Telefone=""
Endif

VSD_I_Codigo_Item      =Item      
VSD_I_Descricao_Item   =DescrItem
Moveto "\\Sistemas\\Estoque\\Fornprod"
Moveto [Codigo]
Locate IndexOrder by "ind_fit01" BESTMATCH Forn, Item
If RetVal then       
       VSD_I_Codigo_Fornecedor      =[Codigo_Fornecedor         ]                               
       VSD_I_TICMS                  =[Tributacao de ICMS        ]       
       VSD_I_RBC_ICMS               =[Aliquota Reduzida BCICMS  ]       
       VSD_I_AICMS                  =[Aliquota de ICMS          ]       
       VSD_I_TIPI                   =[Tributacao de IPI         ]       
       VSD_I_AIPI                   =[Aliquota de IPI           ]       
       VSD_I_UN_Item_Entrada        =[Unidade Entrada           ]
       VSD_I_Fator_Conversao        =[Fator de Conversao        ]      
       VSD_I_MVA                    =[MVA                       ]
       VSD_I_CFOP                   =[CFO                       ]    
Else   VSD_I_Codigo_Fornecedor      =""                               
       VSD_I_TICMS                  =""      
       VSD_I_RBC_ICMS               =BlankNum()   
       VSD_I_AICMS                  =BlankNum()    
       VSD_I_TIPI                   =""
       VSD_I_AIPI                   =BlankNum()   
       VSD_I_UN_Item_Entrada        =""
       VSD_I_Fator_Conversao        =BlankNum()   
       VSD_I_MVA                    =BlankNum()
       VSD_I_CFOP                   =""   
EndIf

moveto "\\Sistemas\\Estoque\\cotacao"
Moveto [Codigo do Item]
Locate Item,Forn
If RetVal then     
     VSD_I_TpDocto                =[Tipo do Documento         ]
     VSD_I_NoDocto                =[Numero do Documento       ]
     VSD_I_Data                   =[Data de Compra            ]
     VSD_I_Quantidade             =[Quantidade                ]       
     VSD_I_Preco_Unitario         =[Valor Unitario            ]
     VSD_I_Custo_Unitario         =[Custo Medio Unitario      ]
     VSD_I_UN_Item                =[Unidade Interna           ]
     VSD_I_VrUnit_Ult_Cot         =[Vr_Unit_Ult_Cotacao       ]
     VSD_I_Data_Ult_Cot           =[Data_Ult_Cotacao          ]      
Else
     VSD_I_TpDocto                =""
     VSD_I_NoDocto                =""
     VSD_I_Data                   =BlankDate()
     VSD_I_Quantidade             =BlankNum()
     VSD_I_Preco_Unitario         =BlankNum()
     VSD_I_Custo_Unitario         =BlankNum()
     VSD_I_UN_Item                =""
     VSD_I_VrUnit_Ult_Cot         =BlankNum()
     VSD_I_Data_Ult_Cot           =BlankDate()
EndIf 

moveto "\\Sistemas\\Vendas\\TbprIte"
Moveto [Codigo da Tabela]
Locate VSDGTABELA,Item
If RetVal
   Then VSD_I_PrVenda=[Preco Unitario]
   Else VSD_I_PrVenda=BlankNum()
EndIf


Moveto "\\Sistemas\\Estoque\\SdEstq"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item,ano,mes
If RetVal
   Then VSD_I_SALDO=[Saldo Atual           ]
   Else Mensagem("Item Selecionado sem Ficha de Estoque p/ "+mes+"/"+ano+"!")
        VSD_I_SALDO=BlankNum()
EndIf

VSD_I_FLAG   =""

INICIO_DIALOG=True
Showdialog "Dados" Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP"
     @ 03,1 height 20 width 76

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

   Accept @ 01,02 Width 07 "A04" picture "!*!" Tag "I_Codigo" to VSD_I_Codigo
   Accept @ 01,07 Width 54 "A40" picture "!*!" Tag "I_Razao_Social" to VSD_I_Razao_Social

   Label  @ 02,01 "Contato" For "I_Contato"
   Accept @ 03,02 Width 13 "A15" picture "!*!" Tag "I_Contato" to VSDG_I_Contato
   Label  @ 02,15 "Telefone" For "I_Telefone"
   Accept @ 03,16 Width 20 "A20" picture "!*!" Tag "I_Telefone" to VSDG_I_Telefone

   Label  @ 04,01 "C¢digo Item" For "I_Codigo_Item"
   Accept @ 05,02 Width 13 "A25" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   Label  @ 04,15 "Descri‡„o Item" For "I_Descricao_Item"
   Accept @ 05,16 Width 33 "A30" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item
   Label  @ 04,49 "C¢digo Item Fornecedor" For "I_Codigo_Fornecedor"
   Accept @ 05,50 Width 22 "A15" picture "!*!" Tag "I_Codigo_Fornecedor" to VSD_I_Codigo_Fornecedor

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

   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
   Accept @ 08,26 Width 08 "N" picture "#*#.[##]" Tag "I_AIPI" to VSD_I_AIPI

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

   Label  @ 06,53 "CFOP" For "I_CFOP"
   Accept @ 07,54 Width 07 "A4" picture "####" Tag "I_CFOP" to VSD_I_CFOP
   Label  @ 06,61 "%MVA" For "I_MVA"
   Accept @ 07,62 Width 08 "N" picture "#*#.[###]" Tag "I_MVA" to VSD_I_MVA
   
   Frame Single From 09,00 to 14,73
   @ 09,01 ?? " éltima 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  @ 12,01 "Quantidade" For "I_Quantidade"
   Accept @ 13,02 Width 15 "N" picture "#*#.[###]" Tag "I_Quantidade" to VSD_I_Quantidade
   Label  @ 12,18 "UN" For "I_UN_Item"
   Accept @ 13,18 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item
   Label  @ 12,23 "Pr.Unit rio" For "I_Preco_Unitario"
   Accept @ 13,24 Width 13 "N" picture "#*#.[#####]" Tag "I_Preco_Unitario" to VSD_I_Preco_Unitario
   Label  @ 12,38 "Custo Calculado" For "I_Custo_Unitario"
   Accept @ 13,39 Width 12 "N" picture "#*#.[#####]" Tag "I_Custo_Unitario" to VSD_I_Custo_Unitario
   @ 13,51 ?? "/"
   Accept @ 13,52 Width 05 "A2" picture "!*!" Tag "I_UN_Item_Interna" to VSD_I_UN_Item_Interna

   Frame Single From 14,00 to 17,73
   @ 14,01 ?? " éltima Cota‡„o "

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

   Frame Single From 14,37 to 17,73
   @ 14,38 ?? " Outros "

   Label  @ 15,38 "Pr.Venda" For "I_PrVenda"
   Accept @ 16,39 Width 12 "N" picture "#*#.[#####]" Tag "I_PrVenda" to VSD_I_PrVenda
   Label  @ 15,51 "Saldo" For "I_Saldo"
   Accept @ 16,52 Width 12 "N" picture "#*#.[#####]" Tag "I_Saldo" to VSD_I_Saldo

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

EndDialog
Mouse Show

EndProc  ;  (Detalhe)

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

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

If INICIO_DIALOG
   Then Campo="I_Flag"
        INICIO_DIALOG=False
EndIf

If Disparo="OPEN"
   Then AoCriarShowDialog()
        Window handle Dialog To Janela_SD_Consulta
        If IsAssigned(CoresSD_Consulta)
           Then Release Vars CoresSD_Consulta
        EndIf
        Dynarray CoresSD_Consulta[]
        CoresSD_Consulta[01]=96
        CoresSD_Consulta[05]=96
        CoresSD_Consulta[06]=96
        Window SetColors Janela_SD_Consulta From CoresSD_Consulta
EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
       Case Evento["KeyCode"] = 9 Or
            Evento["KeyCode"] = -15:
            Temp=False
       Case Evento["KeyCode"] = 27:
            Switch
             Case Campo="I_Flag"           :
                  CancelDialog
           EndSwitch
           Temp=False
      Case Evento["KeyCode"] = 13:
           Temp=False
   EndSwitch
EndIf

SelectControl Campo
Switch
  OtherWise:
       MSGCAMPO=""
EndSwitch

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

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona()
Private wc,pesq,msg,descri
Aguarde("Aguarde, Selecionando Itens")
Message("Procurando...")

If IsAssigned(Array_Registro)  Then Release Vars Array_Registro EndIf
DynArray Array_Registro[]


wc=0
WCSW_NITENS=wc
Moveto "\\Sistemas\\Estoque\\cotacao" 
If Not IsBlank(VSDGDESTINAT)
   then   
         Moveto [Codigo]
         Locate VSDGDESTINAT
         If RetVal
            Then While [Codigo ]=VSDGDESTINAT                
                       wc=wc+1
                       moveto "\\Sistemas\\Estoque\\Itens"
                       moveto [Codigo do Item]
                       Locate [Cotacao->Codigo do Item]
                       If RetVal 
                          Then descri=[Descricao do Item]
                          Else descri=""
                       EndIf

                       Moveto "\\Sistemas\\Estoque\\cotacao" 
                       Array_Registro[WC] = AlinhM(STRVAL(wc),3)+" "                 
                       Array_Registro[WC] = Array_Registro[WC]+Completa(Substr([Codigo do Item],1,10),10," ")+" "+
                                            Completa(Substr(descri,1,37),35," ")+" "
                       Array_Registro[WC] = Array_Registro[WC]+Format("D13",[Data de Compra])+" "
                       Array_Registro[WC] = Array_Registro[WC]+Format("W12.3,EIC",[Valor Unitario])
                       Array_Registro[WC] = Array_Registro[WC]+Format("W12.3,EIC",[Quantidade])+" "
                       Array_Registro[WC] = Array_Registro[WC]+Completa([Unidade Entrada],3," ")
                       If wc=999 
                          Then MSG = "Sr. USUARIO. // //"
                               MSG = MSG +"MEMORIA INSUFICIENTE. (DOS/EMS)//"
                               MSG = MSG +"Somente parte da Pesquisa ser  mostrado.//"
                               MSG = MSG +"Caso queira continuar com a pesquisa,   //"
                               MSG = MSG +"preencha com mais informa‡”es o campo   //"
                               MSG = MSG +"para diminuir o numero de itens.          "
                               Mensagem(MSG)
                               QuitLoop
                       EndIf

                       Skip
                       If EOT() Then QuitLoop EndIf
                       Moveto [Codigo]
                       Locate Next VSDGDESTINAT
                 EndWhile                         
         Endif
   Else
        Moveto [Codigo do Item]
        Locate VSDGITEM
        If RetVal
           Then While [Codigo do Item]=VSDGITEM
                      wc=wc+1
                      Array_Registro[WC] = AlinhM(STRVAL(wc),3)+" "  
                      Array_Registro[WC] = Array_Registro[WC]+Completa(SubStr([Codigo],1,4),04," ")+" "+
                                           Completa(SubStr([Razao Social],1,40),41," ")+" "
                      Array_Registro[WC] = Array_Registro[WC]+Format("D13",[Data de Compra])+" "
                      Array_Registro[WC] = Array_Registro[WC]+Format("W12.3,EIC",[Valor Unitario])
                      Array_Registro[WC] = Array_Registro[WC]+Format("W12.3,EIC",[Quantidade])+" "
                      Array_Registro[WC] = Array_Registro[WC]+Completa([Unidade Entrada],3," ")
                      If wc=999
                         Then MSG = "Sr. USUARIO. // //"
                              MSG = MSG +"MEMORIA INSUFICIENTE. (DOS/EMS)//"
                              MSG = MSG +"Somente parte da Pesquisa ser  mostrado.//"
                              MSG = MSG +"Caso queira continuar com a pesquisa,   //"
                              MSG = MSG +"preencha com mais informa‡”es o campo   //"
                              MSG = MSG +"para diminuir o numero de itens.          "
                              Mensagem(MSG)
                              QuitLoop
                      EndIf

                      Skip
                      If EOT() Then QuitLoop EndIf                
                      Locate Next VSDGITEM
                EndWhile
        EndIf
EndIf
Do_It!
WCSW_NITENS=wc


If DynArraySize(Array_Registro)=0
   Then Mensagem("Pesquisa sem Registro !")
        Return False
EndIf
Message("")
LimpAguarde()
Return True

EndProc ; (Seleciona)


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Consulta(Disparo,Campo,Evento,Elemento)
Private Elemento_SDCF,Temp,CoresSD_Consulta

Temp=True
TECLA    =""
MSG_CAMPO=""

If INICIO_DIALOG
   Then Switch
          Case Sw_Dialog="Inicial":
               If Not IsAssigNed(VSDGEMPRESA) Or IsBlank(VSDGEMPRESA) Or (Not OP_INSERT_ITEM)
                  Then Campo="TG_EMPRESA"
                       Acha_Empresa=False
                  Else If Not IsAssigNed(VSDGTABELA) Or IsBlank(VSDGTABELA)
                          Then Campo="TG_TABELA"
                          Else Campo="TG_DESTINAT"
                       EndIf
               EndIf
          OtherWise               : Campo="TG_REGISTRO"
        EndSwitch
        INICIO_DIALOG=False
EndIf

If Disparo="OPEN"
   Then AoCriarShowDialog()
EndIf

If Disparo="CLOSE"
   Then Temp=False
        CancelDialog
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9 Or
          Evento["KeyCode"] = -15:
          Temp=False

     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog

     Case Evento["KeyCode"] = ASC("F5") And Campo="TG_Registro":
          If Not IsBlank(VSDGDESTINAT)
             Then Item     =SubStr(Array_Registro[ControlValue("TG_Registro")],05,10)
                  DescrItem=SubStr(Array_Registro[ControlValue("TG_Registro")],16,37)                                       
                  Forn     =VSDGDESTINAT
                  NomForn  =VSDGDESCRICAO
                  Observacao()
          Endif
     Case Evento["KeyCode"] =  -59:
          Temp=False
          If Campo="TG_EMPRESA" Or
             Campo="TG_TABELA"  Or
             Campo="TG_DESTINAT" Or
             Campo="TG_ITEM"
             Then If Dialog_F1() And Campo="TG_ITEM"
                     Then TPITEM="Cod.do Item"
                          RefreshDialog
                  EndIf
          EndIf

     Case Evento["KeyCode"] = -61 and Campo="TG_ITEM":
          Temp=True
          If TPITEM="Cod.do Item"
             Then TPITEM="Cod.de Barras"
             Else TPITEM="Cod.do Item"
          EndIf
          RefreshDialog

     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            ;* Filtro
            Case Campo="TG_EMPRESA"    : CancelDialog
            Case Campo="TG_TABELA"     :
                 If OP_INSERT_ITEM
                    Then CancelDialog
                    Else Campo="TG_EMPRESA"
                 EndIf
            Case Campo="TG_DESTINAT" :
                 Campo="TG_TABELA"
                 VSDGDESTINAT=""
            Case Campo="TG_ITEM"       :
                 Campo="TG_DESTINAT"
                 VSDGITEM=""
            Case Campo="TG_DESCRICAO"  :
                 Campo="TG_ITEM"
                 VSDGDESCRICAO=""
                 WCSW_NITENS=0
                 COT_NITENS=0
            Case Campo="TG_Registro"   :
                 Switch
                    Case Not IsBlank(VSDGDESTINAT): Campo="TG_DESTINAT"
                    Case Not IsBlank(VSDGITEM)    : Campo="TG_ITEM"
                 EndSwitch

                 If IsAssigned(Array_Registro)  Then Release Vars Array_Registro EndIf
                 DynArray Array_Registro[]

          EndSwitch

     Case Evento["KeyCode"] =  13:
          Temp=False
          If Campo="TG_ITEM" And TPITEM="Cod.de Barras"
             Then VSDGITEM=ControlValue("TG_ITEM")
                  If Not IsBlank(VSDGITEM)
                     Then RefreshDialog
                          VSDGDESCRICAO=""
                          RefreshDialog
                          Moveto "\\Sistemas\\Estoque\\Itens"
                          Moveto [Codigo de Barras]
                          Locate IndexOrder by "Codigo de Barras" VSDGITEM
                          If RetVal
                             Then VSDGITEM     =[Codigo do Item   ]
                                  VSDGDESCRICAO=[Descricao do Item]
                                  RefreshDialog
                                  
                                  If Seleciona()
                                     Then Campo="TG_Registro"
                                     Else Campo="TG_ITEM"
                                  EndIf
                             Else Mensagem("Item nÆo localizado !")     
                          Endif
                  EndIf
             Else If Checa_TAG()
                     Then Switch
                             Case Campo="TG_EMPRESA":
                                  If Not IsBlank(VSDGEMPRESA)
                                     Then Campo="TG_TABELA"
                                  EndIf
                             Case Campo="TG_TABELA":
                                  If Not IsBlank(VSDGTABELA)
                                     Then Campo="TG_DESTINAT"
                                  EndIf
                             Case Campo="TG_DESTINAT" :
                                  If Not IsBlank(VSDGDESTINAT)
                                     Then LinhaCab="      Cd Item    Descri‡„o do Item                    Dt Compra    Vr Compra"
                                          tit_tg_Descricao="RazÆo Social"
                                          RefreshDialog
                                          VSDGITEM =""
                                          VSDGDESCRICAO=VSDGNOMDEST
                                          If Seleciona()
                                             Then Campo="TG_Registro"
                                             Else Campo="TG_DESTINAT"
                                          EndIf
                                     Else LinhaCab="      Fornecedor                                      Dt Compra    Vr Compra"
                                          tit_tg_Descricao="Descri‡Æo do Item"
                                          Campo="TG_ITEM"
                                  EndIf
                             Case Campo="TG_ITEM":
                                  If Not IsBlank(VSDGITEM)
                                     Then RefreshDialog
                                          VSDGDESCRICAO=VSDGNOMITEM
                                          RefreshDialog
                                          
                                          If Seleciona()
                                             Then Campo="TG_Registro"
                                             Else Campo="TG_ITEM"
                                          EndIf
                                  Endif
                             Case Campo="TG_Registro":
                                  If Not IsBlank(VSDGDESTINAT)
                                     Then Item     =SubStr(Array_Registro[ControlValue("TG_Registro")],05,10)
                                          DescrItem=SubStr(Array_Registro[ControlValue("TG_Registro")],16,37)                                       
                                          Forn     =VSDGDESTINAT
                                          NomForn  =VSDGDESCRICAO
                                     Else Forn     =SubStr(Array_Registro[ControlValue("TG_Registro")],05,04)
                                          NomForn  =SubStr(Array_Registro[ControlValue("TG_Registro")],10,40)
                                          Item     =VSDGITEM
                                          DescrItem=VSDGDESCRICAO
                                  EndIf
                                  Pos = NumVal(ControlValue("TG_Registro"))
                                  Detalhe(Item,DescrItem,Forn,NomForn)
                          EndSwitch
        
                  EndIf

          EndIf   

   EndSwitch
EndIf

If Disparo="SELECT" And Campo="TG_Registro"
   Then Temp=False
        If Not IsBlank(VSDGDESTINAT)
           Then Item     =SubStr(Array_Registro[ControlValue("TG_Registro")],05,10)
                DescrItem=SubStr(Array_Registro[ControlValue("TG_Registro")],16,37)                                       
                Forn     =VSDGDESTINAT
                NomForn  =VSDGDESCRICAO
           Else Forn     =SubStr(Array_Registro[ControlValue("TG_Registro")],05,04)
                NomForn  =SubStr(Array_Registro[ControlValue("TG_Registro")],10,40)
                Item     =VSDGITEM
                DescrItem=VSDGDESCRICAO
        EndIf
        Pos = NumVal(ControlValue("TG_Registro"))
        Detalhe(Item,DescrItem,Forn,NomForn)
EndIf

Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe o Codigo da Empresa"
  Case Campo="TG_TABELA":
       MSG_CAMPO="Informe a Tabela de Pre‡o"
  Case Campo="TG_DESTINAT":
       MSG_CAMPO="Informe o Codigo do Fornecedor"
  Case Campo="TG_ITEM":
       TECLA= TECLA+" F3=Mudar Pesquisa"
       If TPITEM="Cod.do Item"
          Then MSG_CAMPO="Informe o Codigo do Item"
          Else MSG_CAMPO="informe o Codigo de Barras do Item"
       EndIf
  Case Campo="TG_Registro":
       If Not IsBlank(VSDGDESTINAT)
          Then TECLA="// Esc=Retornar  Enter=Detalhes  =Selecionar  F5=Obs"
          Else TECLA="// Esc=Retornar  Enter=Detalhes  =Selecionar"
       Endif
  OtherWise:
       MSG_CAMPO=""
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp

EndProc  ; (Sd_Dialog)

;*******************************************************************************
;* Rotina Observacao                                                           *
;*******************************************************************************
Proc Closed Observacao()
UseVars AutoLib, ErrorProc, ITEM, DESC, FORN, PARAM_EXIBE_FORNECEDOR
Private JANELA, WinArray6

Dynarray WinArray6[]
Window Handle Dialog to JANELA
Window GetAttributes JANELA To WinArray6
WinArray6["FLOATING"]=False
Window SetAttributes JANELA From WinArray6
Prompt " Esc=Cancelar"
Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then Desc=[Descricao do Item]
        Moveto [Observacao]
        FieldView
        CENTRALIZAMEMOIP2(06,00,15,80,"| "+Forn+" | "+Item+" | "+RTrim(Desc)+" |")
        While True
          Wait Field
               Until "ESC","F2"
          Switch
          Case RetVal="ESC":
               CancelEdit
               QuitLoop
          EndSwitch
        EndWhile
        
   Else Mensagem("Item n„o localizado !")
EndIf

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

echo Normal
echo off

EndProc  ; (Observacao)

;*******************************************************************************
;* Rotina Para Centralizar um Campo MEMO                                       *
;*******************************************************************************
Proc Closed CentralizaMemoIP2(LINHAI,COLUNAI,ALTURA,LARGURA,TITULO)

UseVars AutoLib, ErrorProc
Private COLUNAI, LINHAI, ALTURA, LARGURA, TITULO,
        WinArray7, ImageColorSettings7
Window Move GetWindow() To -100, -100
Dynarray WinArray7[]

Window GetAttributes GetWindow() To WinArray7
WinArray7["CANMAXIMIZE"]=False
WinArray7["CANCLOSE"]   =True
WinArray7["Title"]      =TITULO
WinArray7["HEIGHT"]     =ALTURA
WinArray7["WIDTH"]      =LARGURA
WinArray7["ORIGINROW"]  =LINHAI
WinArray7["ORIGINCOL"]  =COLUNAI
WinArray7["HASFRAME" ] = True
WinArray7["HASSHADOW"]  =True
WinArray7["CANRESIZE"]  =False
WinArray7["CANMOVE"]    =False
Window SetAttributes GetWindow() From WinArray7

Dynarray ImageColorSettings7[]
ImageColorSettings7[1]=31
ImageColorSettings7[3]=31
ImageColorSettings7[4]=31
Window SetColors GetWindow() From ImageColorSettings7
EndProc        ;  (CentralizaMemoIP)

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

If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

TPITEM="Cod.do Item"
ROTINA=""

DynArray Array_Registro[]
INICIO_DIALOG=True
WCSW_NITENS=0

Acha_Empresa=False
If not IsAssigned(OP_INSERT_ITEM)
   Then OP_INSERT_ITEM=False
EndIf

VSDGITEM     =""
LinhaCab     =""
VSDGTABELA   =""
VSDGDESTINAT =""
VSDGEMPRESA  =""
VSDGDESCRICAO=""
ano=AlinhM(StrVal(Year(Today())),04)
mes=AlinhM(StrVal(Month(Today())),02)

View NoWindow "\\Sistemas\\Cadastro\\Destinat"
View NoWindow "\\Sistemas\\Vendas\\Tbprite" 
View NoWindow "\\Sistemas\\Estoque\\cotacao" 
View NoWindow "\\Sistemas\\Estoque\\Fornprod" 
View NoWindow "\\Sistemas\\Estoque\\SdEstq" 
View NoWindow "\\Sistemas\\Estoque\\Itens"

Moveto "\\Sistemas\\Estoque\\cotacao" 
Moveto [Data de Compra]
OrderTable {Ind_cot01}

If OP_INSERT_ITEM
   Then Acha_Empresa=True
EndIf

tit_tg_descricao=""

Sw_Dialog="Inicial"
ShowDialog "Consulta Cota‡„o/Estoque/Pr.Venda" Proc "SD_Consulta"
Trigger "OPEN","ARRIVE","CLOSE","SELECT"
Mouse "DOWN"
Key "F1","ENTER","ESC","ClearArea","F5","TAB","ReverseTab","F3",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  

 @ 01,00   Height 22 Width 80

  Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
  Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA

  Label  @ 00,08 "Tabela"  For "TG_TABELA"
  Accept @ 01,09 Width 08 "A5"  Picture "!*!" Tag "TG_TABELA" To VSDGTABELA

  Label  @ 00,17 "Fornecedor" For "TG_DESTINAT"
  Accept @ 01,18 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT

  Label  @ 00,28 "Item" For "TG_ITEM"
  Accept @ 01,29 Width 16 "A25"  Picture "#*#" Tag "TG_ITEM" To VSDGITEM

  @ 00,46 ?? Tit_tg_descricao
  Accept @ 01,46 Width 31 "A30" Picture "!*!" Tag "TG_DESCRICAO" To VSDGDESCRICAO

  @ 02,00 ?? LinhaCab
  PickDynArray @ 03,01 Height 17 width 76
   Columns 1
    Array_Registro
     Tag "TG_Registro"
      To ArrayElement

  Accept @ 20,01 Width 9 "S" Tag "TG_NITENS" To WCSW_NITENS
EndDialog
Mouse Show

ClearAll
Message("")
Release Vars Array_Registro,
             Item,Desc,Forn,Acha_Empresa,
             WinArray5,Janela,Msg_Campo,Tecla,
             LinhaCab
Release Procs Seleciona,SD_Consulta,Monta_Prompt
