;** Sw_Cons ********************************************************************
;*  Programa p/ Consulta de Itens do Estoque                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/11/2001 por Douglas Rodrigues
;Ultima Alteracao: 15/05/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes EOF()
;Ultima Alteracao: 23/05/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Controle Mouse
;Ultima Alteracao: 29/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Pesquisa Codigo do Item
;Ultima Alteracao: 28/08/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Formatacao Preco
;Ultima Alteracao: 09/06/2010 por Cleber Alves            
;Motivo Alteracao: Ajustes erro Mostra_Estoque_Cotacao()
;Ultima Alteracao: 12/07/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡„o para Descri‡„o Complementar do Item
;Ultima Alteracao: 18/08/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Abertura de tabenas no inicio
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 20/01/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Ćo para Ordem de Data de Compra "Decrescente"
;Ultima Alteracao: 12/04/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado Funcao no Modo Principal (Imp. Relacao de Notas por Fornecedor)
;Ultima Alteracao: 30/05/2011 por Bruno Carvalho
;Motivo Alteracao: Alterado layout para exibir informa‡äes do item
;Ultima Alteracao: 17/10/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes CodFonecedor 
;Ultima Alteracao: 30/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Ćo Edita_Memo()  ->  Ver_Memo()  
;Ultima Alteracao: 20/12/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Monstra_Estoque() ao Carregar

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

Aguarde("Aguarde, Selecionando Registros")
Message("Procurando...")

DynArray Array_Registro[]  

If Modo<>"Principal"
   Then SW_VSDGOPPESQ=VSDGOPPESQ
        SW_VSDGTXPESQ=VSDGTXPESQ
EndIf

oppesq=substr(VSDGOPPESQ,1,1)
Moveto "Itens"
Switch
  Case oppesq="1" : Moveto [Descricao do Item]
                    Locate IndexOrder by "descricao do item" Pattern VSDGTXPESQ
  Case oppesq="2" : If Search("..",VSDGTXPESQ)=0
                       Then Moveto [Codigo do Item]
                            Locate VSDGTXPESQ
                       Else Moveto [Codigo do Item]
                            Locate IndexOrder by "codigo" Pattern VSDGTXPESQ
                    EndIf
  Case oppesq="3" : Moveto [Codigo Fornecedor]
                    Locate IndexOrder by "cdforndescr" Pattern VSDGTXPESQ
  Case oppesq="4" : Moveto [Codigo de Barras]
                    Locate IndexOrder by "codigo de barras" Pattern VSDGTXPESQ
  Case oppesq="5" : Moveto [Localizacao]
                    Locate IndexOrder by "localdescr" Pattern VSDGTXPESQ
  Case oppesq="6" : Moveto [Descricao da Marca]
                    Locate IndexOrder by "marcadescr" Pattern VSDGTXPESQ
  Case oppesq="7" : Moveto [Descricao do Item]
                    {Image} {OrderTable} Enter {Descricao}
                    Moveto [Observacao]
                    Locate Pattern VSDGTXPESQ
  Case oppesq="8" : Moveto [Descricao do Grupo]
                    OrderTable {grupodescr}
                    Home
                    Locate IndexOrder by "grupodescr" Pattern VSDGTXPESQ
  Case oppesq="9" : Moveto [Descricao Complementar]
                    Locate IndexOrder by "descrcompl" Pattern VSDGTXPESQ                                       
EndSwitch

wc=0
WCSW_NITENS=wc
If RetVal
   Then primeira_tentativa=Recno()
        While True
          If [Inativo]<>"S"
             Then wc=wc+1
                  Array_Registro[WC] = Completa(SubStr([Descricao do Item],1,30),30," ")+"  "+
                                       [Codigo do Item]+" "+
                                       Completa(SubStr([Codigo Fornecedor],1,20),20," ")+" "
          EndIf
          Skip
          If EOT()
             Then If oppesq="7"
                     Then QuitLoop
                     Else Home
                  EndIf
          EndIf
          Switch
            Case oppesq="1" : Locate IndexOrder by "descricao" Next Pattern VSDGTXPESQ
            Case oppesq="2" : If Search("..",VSDGTXPESQ)=0
                                 Then Locate Next VSDGTXPESQ
                                 Else Locate IndexOrder by "codigo" Next Pattern VSDGTXPESQ
                              EndIf
            Case oppesq="3" : Locate IndexOrder by "cdforndescr" Next Pattern VSDGTXPESQ
            Case oppesq="4" : Locate IndexOrder by "codigo de barras" Next Pattern VSDGTXPESQ
            Case oppesq="5" : Locate IndexOrder by "localdescr" Next Pattern VSDGTXPESQ
            Case oppesq="6" : Locate IndexOrder by "marcadescr" Next Pattern VSDGTXPESQ
            Case oppesq="7" : Locate Next Pattern VSDGTXPESQ
            Case oppesq="8" : Locate IndexOrder by "grupodescr" Next Pattern VSDGTXPESQ
            Case oppesq="9" : Locate IndexOrder by "descrcompl" Next Pattern VSDGTXPESQ
          EndSwitch
          If Not RetVal Then QuitLoop EndIf
          If Recno()=primeira_tentativa Then QuitLoop Endif
          If wc=1000
             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
        EndWhile
        WCSW_NITENS=wc

        Moveto "\\Sistemas\\Vendas\\TbprIte"
        Moveto [Codigo da Tabela]
        For wc from 1 to DynArraySize(Array_Registro)
          Locate VSDGTABELA,SubStr(Array_Registro[WC],33,10)
          If RetVal
             Then Array_Registro[WC] = Array_Registro[WC]+Format("W10.2,EIC",[Preco Unitario])
             Else Array_Registro[WC] = Array_Registro[WC]+Format("W10.2,EIC",0)
          EndIf
        EndFor
EndIf                         
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)

Temp=True
TECLA    =""
MSG_CAMPO=""
If INICIO_DIALOG
   Then If Sw_Dialog="Inicial"
           Then 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 If Not IsAssigNed(VSDGOPPESQ) Or IsBlank(VSDGOPPESQ)
                                   Then Campo="TG_OPPESQ"
                                   Else Campo="TG_TXPESQ"
                                EndIf
                        EndIf
                EndIf
           Else Campo="TG_REGCOT"
        EndIf
        INICIO_DIALOG=False
EndIf

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

If Disparo="CLOSE"
   Then ;Temp=False
        ;CancelDialog
        WCSW_NITENS=0

        ;;Release Vars Array_Registro
        DynArray Array_Registro[]

        st1=""
        st2=""
        st3=""
        st4=""
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then Temp=True
        Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
        ;If substr(VSDGOPPESQ,1,1)<>"5"
        ;   Then Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
        ;   Else Item=SubStr(Array_Registro[ControlValue("TG_Registro")],47,10)
        ;EndIf
        Mostra_Estoque()
        Return Temp
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -33 And Modo="Principal":
          Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
          "F6  ~I~mprimir                        " : " Imprime Rela‡„o de Notas por Fornecedor   " : "F6",
          "~C~ancelar                            " : " Cancelar a Opera‡„o                       " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Return
          EndIf
 
          If Checa_TAG()
             Then If Campo="TG_REGCOT"
                     Then CODIGO_DEST=SubStr(Array_RegCot[ControlValue("TG_REGCOT")],15,4)  
                  EndIf
          EndIf
          
          If MenuVar="F6" Then
              Echo Normal
              Echo Off
              ShowPopup " Impress„o " CENTERED
                "~T~odos os Fornecedores       " : " Imprime Rela‡„o de Notas dos Fornecedor            " : "TODOSF",
                "~S~elecionado Apenas          " : " Imprime Rela‡„o de Notas do Fornecedor Selecionado " : "APENASF",
                "~C~ancelar                    " : " Cancelar a Opera‡„o                                " : "Cancelar" 
              EndMenu
              To MenuVar
              Echo off
           
              If MenuVar="Cancelar" or MenuVar="Esc"
                 Then Return
              EndIF
              Do_It!

              If MenuVar="TODOSF"  Then VSDGDESTINAT=""          EndIf
              If MenuVar="APENASF" Then VSDGDESTINAT=CODIGO_DEST EndIf 
              
              Play "RM_0281a" 
                 
          EndIF 

     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"] =  -63 And Campo="TG_Registro":
          Forn=SubStr(Array_Registro[ControlValue("TG_Registro")],44,13)
          Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
          Desc=SubStr(Array_Registro[ControlValue("TG_Registro")],01,30)
          Observacao()
     Case Evento["KeyCode"] =  -59:
          Temp=False
          If Campo="TG_OPPESQ"
             Then ShowPopup " Op‡”es " @ 09,27
                   "1-Descric„o         " : "Localizar pela Descric„o do Item             " : "1-Descric„o",
                   "2-C˘digo            " : "Localizar pelo C˘digo do Item                " : "2-C˘digo",
                   "3-C˘d.Fornecedor    " : "Localizar pelo C˘digo do Item do Fornecedor  " : "3-C˘d.Fornecedor",
                   "4-C˘d.Barras        " : "Localizar pelo C˘digo de Barras              " : "4-C˘d.Barras",
                   "5-Localiza‡„o       " : "Localizar pela Localiza‡„o                   " : "5-Localiza‡„o",
                   "6-Marca             " : "Localizar pela Marca                         " : "6-Marca",
                   "7-C˘d.Origem (Obs)  " : "Localizar pelo C˘digo Origem (Observa‡„o)    " : "7-C˘d.Origem",
                   "8-Grupo             " : "Localizar pelo Crupo                         " : "8-Grupo",
                   "9-Descr.Complementar" : "Localizar pela Descri‡„o Complementar do Item" : "9-Descr.Complementar"
                  EndMenu
                   To VSDGOPPESQ
                  If Not RetVal
                     Then VSDGOPPESQ=""
                     Else Campo="TG_TXPESQ"
                  EndIf
                  RefreshDialog                                                
          EndIf
          If Campo="TG_EMPRESA" Or
             Campo="TG_TABELA"
             Then If Modo="Principal"
                     Then Dialog_F1()
                     Else Dynarray WinArray5[]
                          Window Handle Dialog to JANELA
                          Window GetAttributes JANELA To WinArray5
                          WinArray5["FLOATING"]=False
                          Window SetAttributes JANELA From WinArray5
                          If Campo="TG_EMPRESA"
                             Then Moveto "FaturaC"
                                  Moveto [Codigo da Empresa]
                          EndIf
                          If Campo="TG_TABELA"
                             Then Moveto "FaturaC"
                                  Moveto [Codigo da Tabela]
                          EndIf
                          ConsultaF1()

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

                          echo Normal
                          echo off

                          If Campo="TG_EMPRESA"
                             Then VSDGEMPRESA  = [Codigo da Empresa ]
                          EndIf
                          If Campo="TG_TABELA"
                             Then VSDGTABELA  = [Codigo da Tabela ]
                          EndIf
                          Moveto Tabela
                  EndIf
          EndIf
     Case Evento["KeyCode"] = -82 And Campo="TG_Registro" And Modo<>"Principal" And OP_INSERT_ITEM:
          SW_Item_Pesquisado=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
          CancelDialog                                                            

     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            ;* Ficha de Estoque
            Case Campo="TG_REGCOT"     : CancelDialog

            ;* Filtro
            Case Campo="TG_EMPRESA"    : CancelDialog
            Case Campo="TG_TABELA"     :
                 If OP_INSERT_ITEM
                    Then CancelDialog
                    Else Campo="TG_EMPRESA"
                 EndIf
            Case Campo="TG_OPPESQ"     : Campo="TG_TABELA"
            Case Campo="TG_TXPESQ"     : Campo="TG_OPPESQ"
            Case Campo="TG_Registro"   : Campo="TG_TXPESQ"
                 WCSW_NITENS=0

                 ;;Release Vars Array_Registro
                 DynArray Array_Registro[]

                 st1=""
                 st2=""
                 st3=""
                 st4=""
          EndSwitch
     Case Evento["KeyCode"] =  13: 
          Temp=False
          If Modo="Principal"
            Then If Campo="TG_TXPESQ"
                    Then VSDGTXPESQ=Ltrim(Rtrim(ControlValue("TG_TXPESQ")))
                         If Not IsBlank(VSDGTXPESQ)
                            Then If SubStr(VSDGOPPESQ,1,1)="2" And Len(VSDGTXPESQ)<10
                                    Then If Search("..",VSDGTXPESQ)=0
                                            Then VSDGTXPESQ=AlinhM(VSDGTXPESQ,10)
                                         EndIf
                                 EndIf
                                 RefreshDialog
                                 If Seleciona()
                                    Then RefreshDialog
                                         Campo="TG_Registro"
                                         Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
                                         Mostra_Estoque()
                                 EndIf
                         EndIf
                    Else
                      If Checa_TAG()
                         Then Switch
                                ;*Filtro
                                Case Campo="TG_EMPRESA":
                                     If Not IsBlank(VSDGEMPRESA)
                                        Then Campo="TG_TABELA"
                                     EndIf
                                Case Campo="TG_TABELA":
                                     If Not IsBlank(VSDGTABELA)
                                        Then If VSDGTBATIVA="N"
                                                Then Mensagem("Tabela inativa !")
                                                Else Campo="TG_OPPESQ"
                                             EndIf
                                     EndIf
                                Case Campo="TG_OPPESQ" :
                                     VSDGOPPESQ=LTrim(RTrim(ControlValue("TG_OPPESQ")))
                                     If Not IsBlank(VSDGOPPESQ)
                                        Then Campo="TG_TXPESQ"
                                     EndIf
                                Case Campo="TG_Registro":
                                     Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
                                     Mostra_Estoque_Cotacao()
                             EndSwitch
                      EndIf
                 EndIf
            Else Switch
                   ;*Filtro
                   Case Campo="TG_EMPRESA":
                        VSDGEMPRESA=Ltrim(Rtrim(ControlValue("TG_EMPRESA")))
                        If Not IsBlank(VSDGEMPRESA)
                           Then VSDGEMPRESA=AlinhM(VSDGEMPRESA,4)
                                Moveto "FaturaC"
                                Moveto [Codigo da Empresa]
                                Ativa_Lookup()
                                Moveto [Codigo da Empresa]
                                Locate VSDGEMPRESA
                                If Not RetVal
                                   Then Mensagem("Empresa Invalida !")
                                   Else Campo="TG_TABELA"
                                EndIf
                                KeyPress "ESC"
                        EndIf
                   Case Campo="TG_TABELA":
                        VSDGTABELA=Ltrim(Rtrim(ControlValue("TG_TABELA")))
                        If Not IsBlank(VSDGTABELA)
                           Then VSDGTABELA=AlinhM(VSDGTABELA,5)
                                Moveto "FaturaC"
                                Moveto [Codigo da Tabela]
                                Ativa_Lookup()
                                Moveto [Codigo da Tabela]
                                Locate VSDGTABELA
                                If Not RetVal
                                   Then Mensagem("Tabela de Pre‡o Invalida !")
                                   Else If Not IsBlank(VSDGTABELA)
                                           Then VSDGTBATIVA=[Ativa]
                                                If VSDGTBATIVA="N"
                                                   Then Mensagem("Tabela inativa !")
                                                   Else Campo="TG_OPPESQ"
                                                EndIf
                                        EndIf
                                EndIf
                                KeyPress "ESC"
                        EndIf
                   Case Campo="TG_OPPESQ" :
                        VSDGOPPESQ=ControlValue("TG_OPPESQ")
                        If Not IsBlank(VSDGOPPESQ)
                           Then Campo="TG_TXPESQ"
                        EndIf
                   Case Campo="TG_TXPESQ":
                        VSDGTXPESQ=Ltrim(Rtrim(ControlValue("TG_TXPESQ")))
                        If Not IsBlank(VSDGTXPESQ)
                           Then If SubStr(VSDGOPPESQ,1,1)="2" And Len(VSDGTXPESQ)<10
                                   Then If Search("..",VSDGTXPESQ)=0
                                            Then VSDGTXPESQ=AlinhM(VSDGTXPESQ,10)
                                        EndIf
                                EndIf
                                RefreshDialog
                                If Seleciona()
                                   Then Campo="TG_Registro"
                                EndIf
                        EndIf
                   Case Campo="TG_Registro":
                        Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
                        Mostra_Estoque_Cotacao()
                 EndSwitch

                 If Modo="Edicao"
                    Then Moveto Tabela
                 EndIf
          EndIf
   EndSwitch
EndIf

If Disparo="SELECT" And Campo="TG_Registro"
   Then Temp=False
        Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
        Mostra_Estoque_Cotacao()
        If Modo="Edicao"
           Then Moveto Tabela
        EndIf
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_OPPESQ":
       MSG_CAMPO="Informe a op‡„o de pesquisa"
       TECLA="F1=Consulta  "
  Case Campo="TG_TXPESQ":
       MSG_CAMPO="Informe o valor a pesquisar (..)"
  Case Campo="TG_Registro":
       If Not OP_INSERT_ITEM
          Then TECLA="// Esc=Retornar  Enter=Detalhes  =Selecionar  F5=Obs"
          Else TECLA="// Esc=Retornar  Enter=Detalhes  =Selecionar  Ins=Incluir  F5=Obs"
       EndIf
  Case Campo="TG_REGCOT":
       If Modo="Principal"
          Then TECLA="// Esc=Retornar  Alt+F=Fun‡”es"  
          Else TECLA="// Esc=Retornar"   
       EndIf
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp
EndProc  ; (Sd_Dialog)

;*******************************************************************************
;* Rotina Observacao                                                           *
;*******************************************************************************
Proc Observacao()

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then Ver_Memo("Observacao",06,00,15,80,"| "+Forn+" | "+Item+" | "+RTrim(Desc)+" |")
   Else Mensagem("Item n„o localizado !")
EndIf

EndProc  ; (Observacao)

;*******************************************************************************
;* Rotina para Mostrar Estoque                                                 *
;*******************************************************************************
Proc Mostra_Estoque()
Private Indice,Forn, Desc, Local, Vend, Saldo, UltCt, UltDt, estmin, ptrepos, estmax,
        Compl, Barra, Marca, Grupo, UltSai
      
Indice=ControlValue("TG_Registro")
ano=AlinhM(StrVal(Year(Today())),04)
mes=AlinhM(StrVal(Month(Today())),02)

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then Forn =[Codigo Fornecedor]
        Desc =[Descricao do Item]
        Local=[Localizacao]
        Compl=[Descricao Complementar]
        Barra=[Codigo de Barras]
        Marca=[Descricao da Marca]
        Grupo=[Descricao do Grupo]
        Familia=[Descricao da Familia]
   Else Forn ="?"
        Desc ="?"
        Local="?"      
        Compl="?"
        Barra="?"
        Marca="?"
        Grupo="?"
        Familia="?"
EndIf

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

Moveto "\\Sistemas\\Estoque\\SdEstq"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item,anosw,messw
If RetVal
   Then Saldo=[Saldo Atual           ]
        UltCt=[Preco de Custo        ]
        UltDt=[Data do Preco de Custo]
   Else Saldo=BlankNum()
        UltCt=BlankNum()
        UltDt=BlankDate()
EndIf

Moveto "\\Sistemas\\Estoque\\Estqprm"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item
If RetVal
   Then estmin =[Estoque Minimo        ]
        estmax =[Estoque Maximo        ]
        ptrepos=[Ponto de Reposicao    ]
        UltSai =[Data da Ultima Saida  ] 
   Else estmin =BlankNum()
        estmax =BlankNum()
        ptrepos=BlankNum()
        UltSai =BlankDate()
EndIf

st1=Completa(SubStr(Desc,1,30),30," ")+"  "+
    Item+" "+Completa(SubStr(Forn,1,20),20," ")+" "+
    Format("W10.2,EIC",Vend)
    
st2=SubStr(Compl,01,73)

st3=Completa("Local "+Local,22," ")+
    Completa("Marca "+Marca,26," ")
    
st4=Completa("Grupo "+Grupo,20," ")+
    Completa("Famˇlia "+Familia,26," ")

EndProc ;Mostra_Estoque() 

;*******************************************************************************
;* Rotina para Mostrar Estoque . Cota‡Ćo                                       *
;*******************************************************************************
Proc Mostra_Estoque_Cotacao()
Private Indice,LinhaCab1,LinhaCab2,LinhaCab3,LinhaCab4,wc,
        Forn, Desc, Local, Vend, Saldo, UltCt, UltDt, estmin, ptrepos, estmax,
        Compl, Barra, Marca, Grupo, UltSai

ROTINA="MOSTRA_ESTOQUE"
Indice=ControlValue("TG_Registro")
ano=AlinhM(StrVal(Year(Today())),04)
mes=AlinhM(StrVal(Month(Today())),02)

Moveto "\\Sistemas\\Estoque\\Itens"
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then Forn =[Codigo Fornecedor]
        Desc =[Descricao do Item]
        Local=[Localizacao]
        Compl=[Descricao Complementar]
        Barra=[Codigo de Barras]
        Marca=[Descricao da Marca]
        Grupo=[Descricao do Grupo]
        Familia=[Descricao da Familia]
   Else Forn ="?"
        Desc ="?"
        Local="?"      
        Compl="?"
        Barra="?"
        Marca="?"
        Grupo="?"
        Familia="?"
EndIf

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

Moveto "\\Sistemas\\Estoque\\SdEstq"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item,anosw,messw
If RetVal
   Then Saldo=[Saldo Atual           ]
        UltCt=[Preco de Custo        ]
        UltDt=[Data do Preco de Custo]
   Else Saldo=BlankNum()
        UltCt=BlankNum()
        UltDt=BlankDate()
EndIf

Moveto "\\Sistemas\\Estoque\\Estqprm"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item
If RetVal
   Then estmin =[Estoque Minimo        ]
        estmax =[Estoque Maximo        ]
        ptrepos=[Ponto de Reposicao    ]
        UltSai =[Data da Ultima Saida  ] 
   Else estmin =BlankNum()
        estmax =BlankNum()
        ptrepos=BlankNum()
        UltSai =BlankDate()
EndIf

LinhaCab1="        Item:                                Localiza‡„o:                   "
LinhaCab2="   Descricao:                                Estq.Mˇnimo:                   "
LinhaCab3=" Item Fornec:                                Estq.M ximo:                   "
LinhaCab5=" Pre‡o Venda:                                Ponto Repos:                   "
LinhaCab4=" Sq Dt.Compra  Fornecedor                               Qtde Un   Pr.Compra "

If IsAssigned(Array_RegCot)  Then Release Vars Array_RegCot  EndIf
If IsAssigned(Array_RegCot2) Then Release Vars Array_RegCot  EndIf

DynArray Array_RegCot[]
DynArray Array_RegCot2[]

Wi=0
Moveto "\\Sistemas\\Estoque\\Cotacao"
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then While [Codigo do Item]=Item
              Wi=Wi+1
              Array_RegCot2[Wi] = Format("D13",[Data de Compra])+" "+Completa([Codigo],5," ")+
                                  Completa(Substr([Razao Social],1,27),28," ")+Format("W12.3,EIC",[Quantidade])+" "+
                                  Completa([Unidade Entrada],3," ")+Format("W11.2,EIC",[Valor Unitario])       
              Skip
              If EOT() Then QuitLoop EndIf
              Locate Next Item
        EndWhile
EndIf

Seq = 0
For i From 1 To Wi
  If IsBlank(Array_RegCot2[i]) Then Loop EndIf
  If Substr(Array_RegCot2[i],1,1)=" "
     Then DIA = "0"+Substr(Array_RegCot2[i],2,1)
     Else DIA = Substr(Array_RegCot2[i],1,2)
  EndIf
  Data1 = DateVal(Substr(Array_RegCot2[i],4,2)+"/"+DIA+"/"+Substr(Array_RegCot2[i],7,4))
  While True
    For v From 1 To Wi
      If Not IsBlank(Array_RegCot2[v]) 
         Then If Substr(Array_RegCot2[i],1,1)=" "
                 Then DIA = "0"+Substr(Array_RegCot2[i],2,1)
                 Else DIA = Substr(Array_RegCot2[i],1,2) 
              EndIf
              Data2 = DateVal(Substr(Array_RegCot2[v],4,2)+"/"+DIA+"/"+Substr(Array_RegCot2[v],7,4))
              If Data2 >= Data1     
                 Then ii=v
              EndIf   
      EndIf
    EndFor
    Seq = Seq + 1
    Array_RegCot[Seq] = AlinhM(STRVAL(Seq),2)+" "+Array_RegCot2[ii]
    Array_RegCot2[ii]="" 
    If IsBlank(Array_RegCot2[i]) Then QuitLoop EndIf
  EndWhile
EndFor

COT_NITENS=wi
Message("")
LimpAguarde()

Sw_Dialog = "Estoque"
INICIO_DIALOG=True
Showdialog "Dados da Ficha "+messw+"/"+anosw Proc "SD_Consulta"
  Trigger "OPEN","ARRIVE"
  Mouse "Down"
  Key "ENTER","ESC","TAB","ReverseTab","F6",-33
     @ 05,0 height 18 width 80

   @ 00,01 ?? LinhaCab1
   @ 01,01 ?? LinhaCab2
   @ 02,01 ?? LinhaCab3
   @ 03,01 ?? LinhaCab5
   @ 07,01 ?? LinhaCab4

   @ 00,15 ?? Item
   @ 02,15 ?? Forn
   @ 01,15 ?? Desc
   @ 03,15 ?? LTrim(Format("W12.2,EIC",Vend))
   @ 00,59 ?? Local
   @ 01,59 ?? LTrim(Format("W12.2,EIC",estmin))
   @ 03,59 ?? LTrim(Format("W12.2,EIC",ptrepos))
   @ 02,59 ?? LTrim(Format("W12.2,EIC",estmax))

   PaintCanvas Attribute 111 00, 15, 00, 44
   PaintCanvas Attribute 111 00, 59, 00, 73
   PaintCanvas Attribute 111 01, 15, 01, 44
   PaintCanvas Attribute 111 01, 59, 01, 73
   PaintCanvas Attribute 111 02, 15, 02, 44
   PaintCanvas Attribute 111 02, 59, 02, 73
   PaintCanvas Attribute 111 03, 15, 03, 44
   PaintCanvas Attribute 111 03, 59, 03, 73

   Frame Single From 04,01 to 06,23
   @ 04,09 ?? " Atual "
   @ 05,02 ?? "Saldo"
   @ 05,08 ?? LTrim(Format("W12.3,EIC",Saldo))
   PaintCanvas Attribute 111 05, 08, 05, 22

   Frame Single From 04,24 to 06,76
   @ 04,36 ?? " Ultima Altera‡„o de Custo " ;16
   @ 05,25 ?? "Cto Unitario"
   @ 05,54 ?? "Data"
   @ 05,38 ?? LTrim(Format("W12.5,EIC",UltCt))
   @ 05,59 ?? LTrim(Format("D13",UltDt))
   PaintCanvas Attribute 111 05, 38, 05, 52
   PaintCanvas Attribute 111 05, 59, 05, 70

   PickDynArray @8,01 Height 08 width 76
    Columns 1
     Array_RegCot
      Tag "TG_REGCOT"
       To ArrayElement2

EndDialog
Mouse Show              

EndProc    ; Mostra_Estoque_Cotacao()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Vendas\\Bib_Bal"
If Not IsAssigned(Param_ExibeCusto)    Then Param_ExibeCusto="S"     EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"    EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""    EndIf

DynArray Array_Registro[]
INICIO_DIALOG=True
WCSW_NITENS=0

Acha_Empresa=False
If SysMode()="Main"
   Then Modo="Principal"
        View NOWINDOW "\\Sistemas\\Vendas\\TbprIte"
        View NOWINDOW "\\Sistemas\\Estoque\\Itens"
        View NOWINDOW "\\Sistemas\\Estoque\\Estqprm"
        View NOWINDOW "\\Sistemas\\Estoque\\SdEstq"

        View NOWINDOW "\\Sistemas\\Estoque\\Cotacao"
        Moveto [Data de Compra]
        OrderTable {Ind_cot01}
        
   Else Modo="Edicao"
        Tabela=Table()

        If Not IsAssigned(SW_VSDGOPPESQ) Then SW_VSDGOPPESQ="" EndIf
        If Not IsAssigned(SW_VSDGTXPESQ) Then SW_VSDGTXPESQ="" EndIf

        VSDGOPPESQ=SW_VSDGOPPESQ
        VSDGTXPESQ=SW_VSDGTXPESQ

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

If OP_INSERT_ITEM
   Then Acha_Empresa=True
EndIf

st1=""
st2=""
st3=""
st4=""

AUX="1-Descric„o,2-C˘digo,3-C˘d.Fornecedor,4-C˘d.Barras,5-Localiza‡„o,6-Marca,7-C˘d.Origem,8-Grupo,9-Descr.Complemen"

anosw=AlinhM(StrVal(Year(Today())),04)
messw=AlinhM(StrVal(Month(Today())),02)

Sw_Dialog="Inicial"
Sw_Item_Pesquisado=""
ShowDialog "Consulta de Itens" Proc "SD_Consulta"
Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
Mouse "DOWN"
Key "F1","ENTER","ESC","ClearArea","INS","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 "Op‡„o pesquisa"  For "TG_OPPESQ"
  Accept @ 01,18 Width 20 "A17"  Picture AUX Tag "TG_OPPESQ" To VSDGOPPESQ

  Label  @ 00,38 "Valor a pesquisar" For "TG_TXPESQ"
  Accept @ 01,39 Width 37 "A35"  Picture "!*!" Tag "TG_TXPESQ" To VSDGTXPESQ

  Label @ 02,01 "Descri‡„o do Item               Item       Fornecedor             Vr Venda" For "TG_Registro"
  PickDynArray @3,01 Height 12 width 76
   Columns 1
    Array_Registro
     Tag "TG_Registro"
      To ArrayElement

   Frame Single From 15,00 to 15,77

   @ 16,02 ?? st1
   @ 17,02 ?? st2
   @ 18,02 ?? st3
   @ 19,02 ?? st4
   
   PaintCanvas Attribute 111 16, 01, 19, 76

   PaintCanvas Attribute  96 17, 02, 17, 76

   PaintCanvas Attribute  96 18, 02, 18, 06
   PaintCanvas Attribute  96 18, 23, 18, 28

   PaintCanvas Attribute  96 19, 02, 19, 06
   PaintCanvas Attribute  96 19, 22, 19, 28

   Accept @ 20,71 Width 7 "S" Tag "TG_NITENS" To WCSW_NITENS
EndDialog
Mouse Show

Message("")
Release Vars Array_Registro,Modo,
             Item,Desc,Forn,Acha_Empresa,
             WinArray5,Janela,Msg_Campo,Tecla,
             Anosw,Messw
Release Procs Seleciona,SD_Consulta,Mostra_Estoque_Cotacao,Monta_Prompt
