;** 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   
;Ultima Alteracao: 13/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout e Selea‡Æo de registros               
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 17/10/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes CodFonecedor
;Ultima Alteracao: 12/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes ordem de visualiza‡Æo conforme sele‡Æo
;Ultima Alteracao: 30/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Edita_Memo()  ->  Ver_Memo()  
;Ultima Alteracao: 10/08/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de localiza‡Æo de dados "FornProd" -> "Cotacao"  
;Ultima Alteracao: 14/02/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina onde os dados sÆo exibidos e add visualiza‡Æo "Codigo de Barras"
;Ultima Alteracao: 18/02/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 12/07/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes salvar .ini
;Ultima Alteracao: 03/12/2013 por Bruno Carvalho
;Motivo Alteracao: Add PARAM_TODAS_COMPRAS onde ser  possivel conferir todas as compras em aberto
;Ultima Alteracao: 09/12/2013 por Bruno Carvalho
;Motivo Alteracao: Verifica se empresa existe
;Ultima Alteracao: 30/12/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes PARAM_TODAS_COMPRAS onde ser  possivel conferir todas as compras em aberto
;Ultima Alteracao: 08/01/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao escolher o registro e exibir informa‡Æo incorreta "Sequencia do Lancamento"
;Ultima Alteracao: 15/01/2014 por Kamila Gomes
;Motivo Alteracao: Ajustes Sys_Empresa_Default
;Ultima Alteracao: 20/01/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes Detalhe()
;Ultima Alteracao: 25/02/2014 por Kamila Gomes
;Motivo Alteracao: Adicionado Sys_Codigo_Cliente p/ PARAM_TODAS_COMPRAS para 0294
;Ultima Alteracao: 17/04/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes (Codigo Item Fornecedor) para pegar (CodFornecedor) do cadastro do item 
;Ultima Alteracao: 09/07/2014 por Bruno/Andrey
;Motivo Alteracao: Ajustes [Sequencia do Lancamento] "Posi‡Æo 111, alterado para 110"
;Ultima Alteracao: 27/04/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes ver data de entrada ao inves da data de emissao.
;Ultima Alteracao: 01/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste Janela sem sombra
;Ultima Alteracao: 07/07/2016 por Bruno Carvalho 
;Motivo Alteracao: Ajustado soma de saldo para quando tiver EMPRESA_ALMOXARIFADO p/ #0294# e Unidade X:
;Ultima Alteracao: 18/07/2016 por Bruno Carvalho 
;Motivo Alteracao: Adicionado verifica‡Æo de estoque de almoxarifado -> Verifica_Almoxarifado()
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog TG_DESTINAT
;Ultima Alteracao: 24/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ buscar c¢digo de barra na "Iten_Bar" -> Codigo_Barras2()
;Ultima Alteracao: 14/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ver_Memo() substitu¡do por Ler_Memo() -> Observacao()
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 14/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste layout, logica + F8 informa‡äes adicionais

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona()
Private wc,pesq,msg

LimpaRodape(0)
Aguarde("Aguarde, Selecionando Itens")

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

wc=0
WCSW_NITENS=wc

Empty Tabela2
For i From 1 To 2
  If PARAM_TODAS_COMPRAS
     Then i=2
     Else If i=2 Then QuitLoop EndIf
  EndIf   
  Switch
      Case i = 1 :
          {Ask} {\\sistemas\\cadastro\\destinat}
          Moveto [Codigo           ] TypeIn "_cpes"
          Moveto [Contato          ] Check
          Moveto [Telefone         ] Check

          {Ask} {Itens}
          Moveto [Codigo do Item   ] Example "Item"
          Moveto [Descricao do Item] Check   
          Moveto [Codigo de Barras ] Check
          Moveto [Codigo Fornecedor] Check

          {Ask} {Cotacao} Check
          Moveto [Codigo           ] TypeIn "_cpes!"
          If Not IsBlank(VSDGDESTINAT)
             Then Moveto [Codigo           ] TypeIn ", ~VSDGDESTINAT"
                  Moveto [Codigo do Item   ] Example "Item" TypeIn "!"
             Else Moveto [Codigo do Item   ] Example "Item" TypeIn ",~VSDGITEM"
          EndIf        
          Do_It!

          Moveto "\\sistemas\\cadastro\\destinat"   ClearImage
          Moveto "Itens"   ClearImage
          Moveto "Cotacao" ClearImage
          Moveto "Answer"  ClearImage

      Case i = 2 :
          {Ask} {\\sistemas\\cadastro\\destinat}
          Moveto [Codigo           ] TypeIn "_cpes"
          Moveto [Contato          ] Check
          Moveto [Telefone         ] Check

          {Ask} {Itens}
          Moveto [Codigo do Item          ] Example "Item"
          Moveto [Descricao do Item       ] Check
          Moveto [Codigo de Barras        ] Check
          Moveto [Codigo Fornecedor       ] Check

          {Ask} {NotaEc} 
          Moveto [Numero do Lancamento    ] Check Example "NLan"
          Moveto [Codigo                  ] TypeIn "_cpes!"
          If Not IsBlank(VSDGDESTINAT) 
             Then Moveto [Codigo          ] Check TypeIn ", ~VSDGDESTINAT"
             Else Moveto [Codigo          ] Check
          EndIf   
          Moveto [Razao Social            ] Check
          Moveto [Data de Entrada         ] Check TypeIn "as Data de Compra" 
          Moveto [Numero do Documento     ] Check
          Moveto [Tipo do Documento       ] Check
          {Ask} {NotaEi} 
          Moveto [Numero do Lancamento    ] Example "NLan"
          Moveto [Sequencia do Lancamento ] Check
          If Not IsBlank(VSDGDESTINAT)
             Then Moveto [Codigo do Item   ] Check Example "Item" TypeIn "!"  
             Else Moveto [Codigo do Item   ] Check Example "Item" TypeIn ",~VSDGITEM"
          EndIf   
          Moveto [Quantidade              ] Check
          Moveto [Unidade Entrada         ] Check       
          Moveto [Preco Unitario          ] Check TypeIn "as Valor Unitario"
          Moveto [Custo Medio Unitario    ] Check
          Moveto [Unidade Interna         ] Check
          Moveto [MVA                     ] Check
          Moveto [ICMS UF_ORIGEM          ] Check
          Moveto [Tributacao de IPI       ] Check
          Moveto [Aliquota Reduzida BCIPI ] Check
          Moveto [Aliquota de IPI         ] Check
          Moveto [Tributacao de ICMS      ] Check
          Moveto [Aliquota Reduzida BCICMS] Check
          Moveto [Aliquota de ICMS        ] Check
          Moveto [Fator de Conversao      ] Check
          Moveto [CFO                     ] Check
          Moveto [Tipo Tributacao         ] Check
          Moveto [IPI_CST                 ] Check
          Moveto [Informacoes_Adicionais  ] Check
          Do_It!

          Moveto "\\sistemas\\cadastro\\destinat"   ClearImage
          Moveto "Itens"   ClearImage
          Moveto "Notaec"  ClearImage
          Moveto "Notaei"  ClearImage
          Moveto "Answer"  ClearImage   
  EndSwitch

  MudaEstruturaDaTabelaPara("Answer","\\Base\\Sistemas\\Estoque\\Rm_1005")
  Add "Answer" Tabela2
  Moveto Tabela2  ClearImage

EndFor

{Ask} TypeIn Tabela2 Enter Check 
Do_It! 
Moveto "Answer" ClearImage
Moveto Tabela2  ClearImage

If Not IsBlank(VSDGDESTINAT)
   Then Sort "Answer" On "Descricao do Item", "Codigo do Item", "Data de Compra" D
   Else Sort "Answer" On "Data de Compra" D, "Razao Social", "Descricao do Item", "Codigo do Item"
EndIf
Moveto "Answer" ClearImage

View NoWindow "Answer"
Scan
  wc=recno()
  Switch
    Case Not IsBlank(VSDGDESTINAT) : 
         Array_Registro[WC] = AlinhM(STRVAL(wc),3)+" "                 
         Array_Registro[WC] = Array_Registro[WC]+Completa(Substr([Codigo do Item],1,10),10," ")+" "+
                              Completa(Substr([Descricao do Item],1,35),35," ")+" "
         Array_Registro[WC] = Array_Registro[WC]+Format("D13",[Data de Compra])+" "
         Array_Registro[WC] = Array_Registro[WC]+Format("W12.3,EIC",[Valor Unitario])
      

    OtherWise : 
      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])
                           
   EndSwitch
   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
      
EndScan

WCSW_NITENS=wc

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

LimpAguarde()
Return True

EndProc ; (Seleciona)

;*******************************************************************************
;* Rotina para                                                                 *
;*******************************************************************************
Proc PegaDados1(nr)

NumRegistro=numval(SubStr(Array_Registro[nr],01,03))

If Not IsBlank(VSDGDESTINAT)
   Then
        Item     =SubStr(Array_Registro[nr],05,10)
        DescrItem=SubStr(Array_Registro[nr],16,30)                                       
        Forn     =VSDGDESTINAT
        NomForn  =VSDGDESCRICAO
   Else 
        Item     =VSDGITEM
        DescrItem=VSDGDESCRICAO
        Forn     =SubStr(Array_Registro[nr],05,04)
        NomForn  =SubStr(Array_Registro[nr],10,40)
endif


Moveto "Answer"
moveto record NumRegistro
VSD_I_Contato                =[Contato                   ]
VSD_I_Telefone               =[Telefone                  ]

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_MVA                    =[MVA                       ]
VSD_I_CFOP                   =[CFO                       ] 
VSD_I_TpDocto                =[Tipo do Documento         ]
VSD_I_NoDocto                =[Numero do Documento       ]
VSD_I_Data                   =[Data de Compra            ]
VSD_I_Quantidade             =format("W13.3,EIC",[Quantidade        ])       
VSD_I_UN_Item_Entrada        =[Unidade Entrada           ]
VSD_I_Fator_Conversao        =[Fator de Conversao        ]      
VSD_I_Preco_Unitario         =format("W10.3,EIC",[Valor Unitario    ])
VSD_I_Custo_Unitario         =format("W15,AR",ltrim(format("W15.5,EIC",[Custo Medio Unitario]))+"/"+[Unidade Interna])
VSD_I_UN_Item_Interna        =[Unidade Interna           ]
VSD_I_VrUnit_Ult_Cot         =format("W13.2,EIC",[Vr_Unit_Ult_Cotacao])
VSD_I_Data_Ult_Cot           =[Data_Ult_Cotacao          ]
VSD_I_Codigo_Barras          =[Codigo de Barras          ]             
VSD_I_Codigo_Fornecedor      =[Codigo Fornecedor         ]

VSD_I_NLancto                =[Numero do Lancamento]+"/"+strval([Sequencia do Lancamento])

endproc

;*******************************************************************************
;* 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"] = ASC("F5"): 
            Observacao()
  
       Case Evento["KeyCode"] = ASC("F8"): 
            InfAdicionais()
  
       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
TECLA="// Esc=Retornar  F5=ObsItem  F8=Inf.Adic.Item"

RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)

Return TEMP
EndProc  ; (Item_Dialog)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc Detalhe(nr)
private nr, reg_tbprite, reg_sdestq, MSGSALDO

PegaDados1(nr)

;Echo Normal
;Echo Off

VSD_I_Codigo           =Forn
VSD_I_Razao_Social     =NomForn

VSD_I_Codigo_Item      =Item      
VSD_I_Descricao_Item   =DescrItem

getrecord "\\Sistemas\\Vendas\\TbprIte" VSDGTABELA,Item to reg_tbprite
If RetVal
   Then VSD_I_PrVenda=format("W11.3,EIC",reg_tbprite["Preco Unitario"])
   Else VSD_I_PrVenda=""
EndIf

MSGSALDO   =""
VSD_I_SALDO=BlankNum()       
getrecord "\\Sistemas\\Estoque\\SdEstq" VSDGEMPRESA,Item,ano,mes to reg_sdestq
If RetVal
   Then VSD_I_SALDO=reg_sdestq["Saldo Atual"]
   Else MSGSALDO="[Sem Ficha "+mes+"/"+ano+"]"
EndIf
                      
Verifica_Almoxarifado(VSDGEMPRESA,Today())
If EMPRESA_ALMOXARIFADO <> "" And VSDGEMPRESA="0001"
   Then Moveto [Codigo da Empresa]
        Locate EMPRESA_ALMOXARIFADO,Item,ano,mes
        If RetVal
           Then VSD_I_SALDO=VSD_I_SALDO+[Saldo Atual]
        EndIf
EndIf
VSD_I_SALDOS=ltrim(format("W12.3,EIC",VSD_I_SALDO))

VSD_I_FLAG   =""
LimpaRodape(0)

INICIO_DIALOG=True
Showdialog "Dados - "+strval(NumRegistro) Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F4","ClearArea","HOME","END","PGDN","PGUP", "F5","F8"
    @ 03,1 height 22 width 80

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

   Accept @ 01,02 Width 07 "A04" picture "!*!" Tag "I_Codigo" to VSD_I_Codigo
   Accept @ 01,07 Width 34 "A32" picture "!*!" Tag "I_Razao_Social" to VSD_I_Razao_Social
   Accept @ 01,42 Width 13 "A11" picture "!*!" Tag "I_Contato" to VSD_I_Contato
   Accept @ 01,56 Width 16 "A14" picture "!*!" Tag "I_Telefone" to VSD_I_Telefone

   Label  @ 02,01 "C¢digo Item" For "I_Codigo_Item"
   Accept @ 03,02 Width 13 "A25" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   Label  @ 02,15 "Descri‡„o Item" For "I_Descricao_Item"
   Accept @ 03,16 Width 33 "A30" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item
   Label  @ 02,50 "UN" For "I_UN_Item_Interna"
   Accept @ 03,50 Width 05 "A2" picture "!*!" Tag "I_UN_Item_Interna" to VSD_I_UN_Item_Interna
   Label  @ 02,55 "Ft Convers„o" For "I_Fator_Conversao"
   Accept @ 03,56 Width 12 "N" picture "#*#.[#####]" Tag "I_Fator_Conversao" to VSD_I_Fator_Conversao
      
   Label  @ 04,15 "C¢digo Item Fornecedor" For "I_Codigo_Fornecedor"
   Accept @ 05,16 Width 22 "A20" picture "!*!" Tag "I_Codigo_Fornecedor" to VSD_I_Codigo_Fornecedor
   Label  @ 04,38 "C¢digo de Barras" For "I_Codigo_Barras"
   Accept @ 05,39 Width 29 "A22" picture "!*!" Tag "I_Codigo_Barras" to VSD_I_Codigo_Barras
   
   @ 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 "CFOP" For "I_CFOP"
   Accept @ 07,35 Width 07 "A4" picture "####" Tag "I_CFOP" to VSD_I_CFOP
   Label  @ 06,42 "%MVA" For "I_MVA"
   Accept @ 07,43 Width 08 "N" picture "#*#.[###]" Tag "I_MVA" to VSD_I_MVA
   
   Frame Single From 10,00 to 15,77
   @ 10,01 ?? " éltima Entrada "

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

   Label  @ 11,37 "N§Lan‡to" For "I_Nlancto"
   Accept @ 12,38 Width 18 "A15" picture "!*!" Tag "I_Nlancto" to VSD_I_NLancto

   Label  @ 13,01 "Quantidade" For "I_Quantidade"
   Accept @ 14,02 Width 15 "A13" Tag "I_Quantidade" to VSD_I_Quantidade
   Label  @ 18,17 "UN" For "I_UN_Item"
   Accept @ 14,18 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item_Entrada
   Label  @ 13,23 "Pr.Unit rio" For "I_Preco_Unitario"
   Accept @ 14,24 Width 13 "A10" Tag "I_Preco_Unitario" to VSD_I_Preco_Unitario
   Label  @ 13,37 "Custo Calculado" For "I_Custo_Unitario"
   Accept @ 14,38 Width 18 "A15" Tag "I_Custo_Unitario" to VSD_I_Custo_Unitario

   Frame Single From 16,00 to 19,34
   @ 16,01 ?? " éltima Cota‡„o "

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

   Frame Single From 16,35 to 19,77
   @ 16,36 ?? " Outros "

   Label  @ 17,36 "Pr.Venda" For "I_PrVenda"
   Accept @ 18,37 Width 14 "A11" Tag "I_PrVenda" to VSD_I_PrVenda
   Label  @ 17,51 "Saldo "+MSGSALDO For "I_Saldo"
   Accept @ 18,52 Width 21 "A18" Tag "I_Saldo" to VSD_I_SaldoS

   Accept @ 18,73 Width 04 "A1" picture "!" Tag "I_Flag" to VSD_I_Flag

EndDialog
Mouse Show

EndProc  ;  (Detalhe)

;*******************************************************************************
;* Rotina Observacao                                                           *
;*******************************************************************************
Proc Observacao()
Private AUX_MSG,REG_ITEM

AUX_MSG=""
GetRecord "\\Sistemas\\Estoque\\Itens" Item To REG_ITEM
If RetVal
   Then AUX_MSG = REG_ITEM["Observacao"]
   Else Fastmsg("Item n„o localizado !")
EndIf

If AUX_MSG<>""
   Then Ler_Memo("| "+Forn+" | "+Item+" | "+RTrim(DescrItem)+" |",06,02,15,80,AUX_MSG)
   else Fastmsg("Item sem observa‡äes !")
EndIf
EndProc  ; (Observacao)

;*******************************************************************************
;* Rotina informa‡äes adicionais                                               *
;*******************************************************************************
Proc InfAdicionais()
Private AUX_MSG

AUX_MSG=""
If PARAM_TODAS_COMPRAS
   then 
        if not isblank([Sequencia do Lancamento])and
           not isblank([Informacoes_Adicionais ])
           then AUX_MSG = [Informacoes_Adicionais]
        endif
        If AUX_MSG<>""
           Then Ler_Memo("| "+Forn+" | "+Item+" | "+RTrim(DescrItem)+" |",06,02,15,80,AUX_MSG)
           else Fastmsg("Item sem informa‡äes !")
        EndIf
   else
        fastmsg("s¢ para todas compras !")
endif
endproc

;*******************************************************************************
;* 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()
        TiraSombraShowDialog()
EndIf

If Disparo="CLOSE"
   Then Temp=False

        If Not IsBlank(VSDGEMPRESA) And
           Not IsBlank(VSDGTABELA) 
           Then
                LINHAINI =            GravaExpressao("[Variaveis sw_cons - principal]","T","")
                LINHAINI = LINHAINI + GravaExpressao("VSDGEMPRESA","S",VSDGEMPRESA)        
                LINHAINI = LINHAINI + GravaExpressao("VSDGTABELA" ,"S",VSDGTABELA)        
                
                FileWrite PrivDir()+"sw_cone2.ini" From LINHAINI
                Release Vars LINHAINI           
        EndIf

        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": 
          PegaDados1(ControlValue("TG_Registro"))
          Observacao()

     Case Evento["KeyCode"] = ASC("F8") And Campo="TG_Registro": 
          PegaDados1(ControlValue("TG_Registro"))
          InfAdicionais()

     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
                          Achou_Item=False
                          VSDGDESCRICAO=""
                          RefreshDialog
                          Moveto "\\Sistemas\\Estoque\\Itens"
                          Moveto [Codigo de Barras]
                          Locate IndexOrder by "Codigo de Barras" VSDGITEM
                          If RetVal
                             Then Achou_Item=True
                                  VSDGITEM  =[Codigo do Item]
                             Else If Codigo_Barras2(VSDGITEM,"")
                                     Then VSDGITEM = CODIGO_BARRA2
                                          Moveto [Codigo do Item]
                                          Locate VSDGITEM
                                          If RetVal Then Achou_Item = True EndIf
                                  EndIf                              
                          EnDIf
                          If Achou_Item
                             Then Moveto "\\Sistemas\\Estoque\\Itens"
                                  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 GetRecord "\\Sistemas\\Cadastro\\Destinat" VSDGEMPRESA To VREMP
                                          If RetVal
                                             Then Campo="TG_TABELA"
                                             Else Mensagem("Empresa n„o cadastrada !") 
                                          EndIf   
                                  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 Entrada   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 Entrada   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":
                                  Detalhe(ControlValue("TG_Registro"))
                          EndSwitch
        
                  EndIf

          EndIf   

   EndSwitch
EndIf

If Disparo="SELECT" And Campo="TG_Registro"
   Then Temp=False
        Detalhe(ControlValue("TG_Registro"))
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":
       MSG_CAMPO=" "+ltrim(Format("W6,EIC",WCSW_NITENS))+" ocorrˆncia(s)"
       TECLA="// Esc=Retornar  Enter=Detalhes  =Selecionar  F5=ObsItem  F8=Inf.Adic.Item"
  OtherWise:
       MSG_CAMPO=""
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp

EndProc  ; (Sd_Dialog)

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

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

TPITEM="Cod.do Item"
ROTINA=""
                                                  
Tabela2=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\Rm_1005" Tabela2

DynArray Array_Registro[]
INICIO_DIALOG=True
WCSW_NITENS=0

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

PARAM_TODAS_COMPRAS  = True       ;**** Informa todas as compras realizadas ****         
If SYS_CODIGO_CLIENTE="0294"  Or
   SYS_CODIGO_CLIENTE="0054"
   Then PARAM_TODAS_COMPRAS=False ;**** Informa a ultima compra conforme "Cotacao" ****
EndIf

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

LeiaINI(PrivDir()+"sw_cone2.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null")       

If IsBlank(VSDGEMPRESA) Then VSDGEMPRESA=SYS_EMPRESA_DEFAULT EndIf

View NoWindow "\\Sistemas\\Cadastro\\Destinat"
View NoWindow "\\Sistemas\\Estoque\\Itens"

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","F8",
      -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 "Pessoa" 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

EndDialog
ClearAll
;echo off
Mouse Show

Delete Tabela2

Release Vars Array_Registro,
             Item,Forn,Acha_Empresa,
             WinArray5,Janela,Msg_Campo,Tecla,
             LinhaCab
             
Release Procs Detalhe, Seleciona, SD_Consulta, Item_Dialog, PegaDados1, Observacao, InfAdicionais
