;** Sw_Cons3 *******************************************************************
;*  Programa p/ Consulta de Itens do Estoque                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/06/2019 por Bruno Carvalho       
;Ultima Alteracao: 14/06/2019 por Bruno Carvalho             
;Motivo Alteracao: Adicionado filtro por referˆncia
;Ultima Alteracao: 21/06/2019 por Bruno Carvalho                      
;Motivo Alteracao: Alterado [Localizacao] p/ [Codigo_Localizacao] devido … altera‡Æo do campo chave na tabela "Iten_Loc" que ficou sendo CodItem,CodLocalizacao
;Ultima Alteracao: 26/06/2019 por Bruno Carvalho                      
;Motivo Alteracao: Ajustes quando a pesquisa ‚ por localiza‡Æo

;*******************************************************************************
;* Rotina para pegar valor da string                                           *
;*******************************************************************************
Proc SWCONS1_Pega_Valor_String(PARAM,POSICAO)
Private PARAM, RESULT   
             
RESULT = ""              
Switch
  Case PARAM = "Codigo do Item"     : If (IsAssigned(VSDGOPPESQ) And VSDGOPPESQ<>"3") Or (IsAssigned(oppesq) And oppesq<>"3")
                                         Then RESULT=SubStr(Array_Registro[POSICAO],33,10)
                                         Else RESULT=SubStr(Array_Registro[POSICAO],47,10)
                                      EndIf       
  Case PARAM = "Fornecedor"         : RESULT = SubStr(Array_Registro[POSICAO],44,20)
  Case PARAM = "Descricao"          : RESULT = SubStr(Array_Registro[POSICAO],01,30)
  Case PARAM = "Preco do Item"      : RESULT = Rtrim(Ltrim(SubStr(Array_Registro[POSICAO],78,10)))
  Case PARAM = "Verifica_Array"     : RESULT = SubStr(Array_Registro[POSICAO],80,01)
  Case PARAM = "Linha Array 2"      : RESULT = SuBStr(Array_Registro[POSICAO],1,64)                                                                                                                                                                                 
EndSwitch
                  
Return RESULT      

EndProc ;SWCONS1_Pega_Valor_String(

;*******************************************************************************
;* Rotina para limpar array e variaveis com informa‡Æo dos itens               *
;*******************************************************************************
Proc SWCONS1_Limpa_Array_Registro(PARAM)

If PARAM="Cria Array"              
   Then WCSW_NITENS=0
        DynArray Array_Registro[]
EndIf
        
st1=""
st2=""
st3=""
st4=""
st5=""
st6=""
st7=""
st8=""
st9=""

EndProc ;SWCONS1_Limpa_Array_Registro()

;*******************************************************************************
;* Rotina para Montar Registros                                                *
;*******************************************************************************
Proc Monta_Dados(PARAM)

If PARAM="NOVO"
   Then wc=0
EndIf   
WCSW_NITENS=wc
If RetVal               
   Then primeira_tentativa=Recno()
        While True
          Consulta = True
          
          If PARAM=""
             Then GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM 
             Else CopyToArray REG_ITEM
          EndIf
          
          If Not Consulta 
             Then Mensagem("Item "+[Codigo do Item]+" n„o localizado no cadastro de itens!")
                  QuitLoop 
          EndIf
          itemok=true
          if REG_ITEM["Inativo"]="S" then itemok=false endif 
          if REG_ITEM["Tipo do Item"]="D" then itemok=false endif
          if REG_ITEM["Tipo do Item"]="S" then itemok=false endif 
          if itemok
             then wc=wc+1
                  If oppesq<>"3"
                     Then Array_Registro[WC] = Completa(SubStr(REG_ITEM["Descricao do Item"],1,30),30," ")+"  "+
                                               REG_ITEM["Codigo do Item"]+" "+
                                               Completa(SubStr(REG_ITEM["Codigo Fornecedor"],1,20),20," ")+" "
                     Else Array_Registro[WC] = Completa(REG_ITEM["Codigo_Localizacao"],13," ")+" "+
                                               Completa(SubStr(REG_ITEM["Descricao do Item"],1,30),30," ")+"  "+
                                               REG_ITEM["Codigo do Item"]+" "
                  EndIf
                  Array_Registro[WC]=Completa(Array_Registro[WC],79," ")+Completa(REG_ITEM["Codigo da Grade"],1," ")
          EndIf
          Skip
          If EOT()
             Then Home
          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 do item" Next Pattern VSDGTXPESQ
                              EndIf
            Case oppesq="3" : Locate Next Pattern VSDGTXPESQ
            Case oppesq="4" : Locate IndexOrder by "Referencia"   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
        VSDGOPPESQ  = oppesq
        Window Select JanelaTbprIte
        Moveto [Codigo da Tabela]
        If wc>0
           Then For wc from 1 to DynArraySize(Array_Registro)
                  citep          = SWCONS1_Pega_Valor_String("Codigo do Item",WC)
                  Verifica_Array = SWCONS1_Pega_Valor_String("Verifica_Array",WC)
        
                  If Verifica_Array<>" " Or SYS_CODIGO_CLIENTE="0239" Or 
                                            SYS_CODIGO_CLIENTE="0388" Or 
                                            SYS_CODIGO_CLIENTE="0427" Or 
                                            SYS_CODIGO_CLIENTE="0390" Or 
                                            SYS_CODIGO_CLIENTE="0345" Or
                                            SYS_CODIGO_CLIENTE="0396" Or
                                            SYS_CODIGO_CLIENTE="0419" Or
                                            SYS_CODIGO_CLIENTE="0429"
                     Then citep=PegaCodigoRaiz(citep)
                  EndIf
                  GetRecord "\\Sistemas\\Estoque\\Itens" citep To REG_ITEM
                  If Not RetVal Then citep="" EndIf
                    
                  If citep<>""
                     Then Locate VSDGTABELA,citep
                          If RetVal
                             Then Array_Registro[WC] = SWCONS1_Pega_Valor_String("Linha Array 2",WC)+Format("W10.2,EIC",[Preco Unitario])+" "+
                                                       Format("W2",REG_ITEM["Unidade Interna"])+Format("W10.2",[Preco Unitario])
                             Else Array_Registro[WC] = SWCONS1_Pega_Valor_String("Linha Array 2",WC)+Format("W10.2,EIC",0)+" "+
                                                       Format("W2",REG_ITEM["Unidade Interna"])+Format("W10.2",0) 
                          EndIf
                     Else Array_Registro[WC] = ""
                  EndIf        
                EndFor
        EndIf
EndIf
EndProc

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

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

DRIVE=substr(Upper(directory()),1,2)

DynArray Array_Registro[]

If Modo="Edicao" 
   Then SW_VSDGOPPESQ=VSDGOPPESQ
        SW_VSDGTXPESQ=VSDGTXPESQ
EndIf                       

oppesq=substr(VSDGOPPESQ,1,1)
Window Select JanelaItens
Switch
  Case oppesq="1" : Moveto [Descricao do Item]
                    OrderTable {Descricao do Item}
                    Home
                    Locate IndexOrder by "descricao" Pattern VSDGTXPESQ
                    Monta_Dados("NOVO")
  Case oppesq="2" : If Search("..",VSDGTXPESQ)=0
                       Then Moveto [Codigo do Item]
                            Locate VSDGTXPESQ
                       Else Moveto [Codigo do Item]
                            OrderTable {Codigo do Item}
                            Home
                            Locate IndexOrder by "codigo do item" Pattern VSDGTXPESQ
                    EndIf
                    Monta_Dados("NOVO")
  Case oppesq="3" : Moveto [Localizacao]
                    OrderTable {localdescr}
                    Home
                    Locate IndexOrder by "localdescr" Pattern VSDGTXPESQ
                    Monta_Dados("NOVO")
                    Window Select JanelaItenLoc
                    Moveto [Localizacao]
                    Locate Pattern VSDGTXPESQ
                    Monta_Dados("")
  Case oppesq="4" : Moveto [Referencia]
                    OrderTable {Referencia}
                    Home
                    Locate IndexOrder by "Referencia" Pattern VSDGTXPESQ
                    Monta_Dados("NOVO")              
EndSwitch


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

;*******************************************************************************
;* Rotina p/ chamar a tela de digita‡Æo da localiza‡Æo                         *
;*******************************************************************************
Proc Localizacao()  

Item = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
GetRecord "\\Sistemas\\Estoque\\Itens" Item To REG_ITEM
If RetVal 
   Then GetRecord "\\Sistemas\\Estoque\\TpItem" REG_ITEM["Tipo do Item"] To REG_TPITEM
        If SubStr(REG_TPITEM["Controla Estoque"],1,1)="N" Or REG_ITEM["Tipo do Item"]="S"
           Then FastMsg("Fun‡„o n„o habilitada para este tipo de item!")
           Else Window Select JanelaItens
                Moveto [Codigo do Item]
                Locate Item
                If Retval
                   Then PARAM_SWCONS3_VENDAS = True
                        Play "\\Sistemas\\Estoque\\ADD_LOC"
                        Temp=True
                        oppesq = substr(VSDGOPPESQ,1,1)
                        Item   = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
                        Mostra_Estoque()
                        RefreshDialog
                        Return Temp 
                EndIf    
        EndIf   
        Release Vars REG_ITEM,REG_TPITEM,PARAM_SWCONS3_VENDAS
   Else FastMsg("Item "+Item+" nÆo foi localizado!")
EndIf            

EndProc ;Localizacao()

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

Temp=True
TECLA    =""
MSG_CAMPO=""
ALTERA_TODOS=False
If INICIO_DIALOG
   Then
        Switch
          Case Modo="Principal":
            If Not IsAssigNed(VSDGEMPRESA) Or IsBlank(VSDGEMPRESA)
               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
          OtherWise:
            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
        EndSwitch
          
        INICIO_DIALOG=False
EndIf

If Disparo="OPEN"
   Then Dynarray SD_ConsultaWinArray[]
        Window Handle Dialog To SD_ConsultaJANELA
        Window GetAttributes SD_ConsultaJANELA To SD_ConsultaWinArray
        
        SD_ConsultaWinArray["HASFRAME" ] = False
        SD_ConsultaWinArray["HASSHADOW"] = False

        Window SetAttributes SD_ConsultaJANELA From SD_ConsultaWinArray
EndIf

If Disparo="CLOSE"
   Then SWCONS1_Limpa_Array_Registro("Cria Array")
        
        If Not IsBlank(VSDGEMPRESA) And
           Not IsBlank(VSDGTABELA) And
           Not IsBlank(VSDGOPPESQ)
           Then LINHAINI = GravaExpressao("[Variaveis sw_cons - principal]","T","")
                If Modo="Principal"
                   Then LINHAINI = LINHAINI + GravaExpressao("VSDGEMPRESA","S",VSDGEMPRESA)
                   Else LeiaINI(PrivDir()+"sw_cons3.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null")
                        LINHAINI = LINHAINI + "VSDGEMPRESA="+Chr(34)+VSDGEMPRESA+Chr(34)+"\n"
                EndIf   
                LINHAINI = LINHAINI + GravaExpressao("VSDGTABELA" ,"S",VSDGTABELA)     
                LINHAINI = LINHAINI + GravaExpressao("VSDGOPPESQ" ,"N",SubStr(VSDGOPPESQ,1,1))   
                FileWrite PrivDir()+"sw_cons3.ini" From LINHAINI
                Release Vars LINHAINI
        EndIf 
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then Temp=True   
        oppesq = substr(VSDGOPPESQ,1,1)
        Item   = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
        Mostra_Estoque()
        Return Temp
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   If Evento["KeyCode"] = -33 
      Then If Campo="TG_Registro"
              Then Echo Normal
                   Echo Off                                                
                   ShowPopup " Fun‡”es " CENTERED
                   "[F5] ~L~ocaliza‡Æo              "  : " Localiza‡Æo                 " : "F5",
                   Separator,
                   "~C~ancelar                      " : " Cancelar a Opera‡„o          " : "CANCELAR"
                   EndMenu
                   To MenuVar
                   Echo Off
                 
                   If MenuVar="CANCELAR" or MenuVar="Esc"
                      Then Temp=False
                      Else Switch
                             Case MenuVar = "F5" : Evento["KeyCode"] = -63
                           EndSwitch  
                   EndIf
           EndIf    
   EndIf   
   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"] =  -63 And Campo="TG_Registro":
          Temp = False  
          Localizacao()
     Case Evento["KeyCode"] =  -59:
          Temp=False
          If Campo="TG_OPPESQ"
             Then ShowPopup " Op‡”es " @ 03,18
                   "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-Localiza‡„o           " : "Localizar pela localiza‡„o                   " : "3-Localiza‡„o",
                   "4-Referˆncia            " : "Localizar pela referˆncia do item            " : "4-Referˆncia"
                  EndMenu
                   To VSDGOPPESQ
                   If Not RetVal
                      Then VSDGOPPESQ=""
                      Else Campo="TG_TXPESQ"
                  EndIf
                  RefreshDialog
             Else If Campo="TG_EMPRESA" Or Campo="TG_TABELA"  
                     Then NAO_FAZ = False 
                          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 Switch
                                           Case SubStr(Tabela,1,4)="Orca"  : Moveto "OrcaC"
                                           Case SubStr(Tabela,1,3)="Ped"   : Moveto "PedidoC"
                                           Case SubStr(Tabela,1,6)="Fatura": Moveto "FaturaC"
                                           Case SubStr(Tabela,1,5)="Notac" : Moveto "NotaC"
                                           Case SubStr(Tabela,1,5)="Notae" : Moveto "NotaEC"
                                         EndSwitch
                                         Moveto [Codigo da Empresa]
                                 EndIf
                                 If Campo="TG_TABELA"
                                    Then Switch
                                           Case SubStr(Tabela,1,4)="Orca"  : Moveto "OrcaC"
                                           Case SubStr(Tabela,1,3)="Ped"   : Moveto "PedidoC"
                                           Case SubStr(Tabela,1,6)="Fatura": Moveto "FaturaC"
                                           Case SubStr(Tabela,1,5)="Notac" : Moveto "NotaC"
                                           Case SubStr(Tabela,1,5)="Notae" : Moveto "NotaEC"
                                         EndSwitch
                                         Moveto [Codigo da Tabela]
                                         sw_tabant=[Codigo da Tabela]                     
                                 EndIf
                                 If Campo="TG_TXPESQ"
                                    Then CampoAnt="TG_TXPESQ"
                                         Switch                       
                                           Case SubStr(Tabela,1,4)="Orca"  : Moveto "OrcaC"
                                           Case SubStr(Tabela,1,3)="Ped"   : Moveto "PedidoC"
                                           Case SubStr(Tabela,1,6)="Fatura": Moveto "FaturaC"
                                           Case SubStr(Tabela,1,5)="Notac" : Moveto "NotaC"
                                           Case SubStr(Tabela,1,5)="Notae" : Moveto "NotaEC"
                                         EndSwitch
                                         Moveto [Codigo]   
                                         
                                         Campo="TG_CLIENTE"                
                                  EndIf                                  
                                ConsultaF1()
         
                                 If Not RetVal
                                    Then NAO_FAZ = True
                                 EndIf   
        
                                 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]
                                         [Codigo da Tabela]=sw_tabant
                                 EndIf
                                 If Campo="TG_CLIENTE"
                                    Then VSDGCLIENTE=[Codigo]
                                          VSDGNOMCLIE =[Nome Fantasia EmitDest]
                                 EndIf
                                 Moveto Tabela                                 
                          EndIf
                  EndIf
                  
                  If IsAssigned(CampoAnt) 
                     Then If CampoAnt="TG_TXPESQ"
                             Then Campo="TG_TXPESQ"
                          EndIf   
                  EndIf   
              
          EndIf
     Case Evento["KeyCode"] = 13 And
          Campo="TG_Registro" And Modo="Principal" And OP_PRECO_ITEM:       
          Temp=False
          Item = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
          MudaPreco()
     Case (Evento["KeyCode"] = -82 Or Evento["KeyCode"] = 13) And
          Campo="TG_Registro" And Modo<>"Principal" And OP_INSERT_ITEM:
          Temp=False
          SW_Item_Pesquisado = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
          itemmsg=""
          GetRecord "\\Sistemas\\Estoque\\Itens" SW_Item_Pesquisado To REG_ITEM 
          If Retval 
             Then if reg_item["Inativo"]="S"
                     then itemmsg="Item inativo, opera‡Æo nÆo permitida !"
                  endif
             else itemmsg="Erro, Item nÆo cadastrado !// Verificar com Suporte !"
          EndIf
          if itemmsg<>""
             then
                  fastmsg(itemmsg)
             else SWCONS1_Limpa_Array_Registro("Cria Array")
                  CancelDialog
          endif
          release vars itemmsg
           
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            ;* Ficha de Estoque
            Case Campo="I_Flag"        : 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"
                 If OP_INSERT_ITEM
                    Then If Modo<>"Principal" And IsBlank(PARAM_TABELA_PRECO)
                            Then Campo="TG_TABELA"
                            Else CancelDialog
                         EndIf   
                 EndIf
            Case Campo="TG_TXPESQ"     : Campo="TG_OPPESQ"
            Case Campo="TG_Registro"   :
                 MSG = ""
                 If OP_PRECO_ITEM
                    Then MSG = "Deseja sair sem atualizar os valores ?////Para atualizar os pre‡os utilizar a fun‡„o F8 !"
                         ConfGeral(MSG)                 
                         If OK="S"
                            Then MSG=""
                         EndIf   
                 EndIf
                 If MSG=""
                    Then SWCONS1_Limpa_Array_Registro("Cria Array")
                         Campo="TG_TXPESQ"
                 EndIf
          EndSwitch
     Case Evento["KeyCode"] =  13 : 
          Temp=False
          If Modo="Principal"
            Then Switch
                   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 RefreshDialog
                                        Campo="TG_Registro"
                                        Item = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
                                        Mostra_Estoque()
                                EndIf
                        EndIf
                   Case Campo="TG_Registro" : Localizacao()     
                   OtherWise :
                        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
                               EndSwitch
                        EndIf
                 EndSwitch
            Else Switch
                   ;*Filtro
                   Case Campo="TG_EMPRESA":
                        VSDGEMPRESA=Ltrim(Rtrim(ControlValue("TG_EMPRESA")))
                        If Not IsBlank(VSDGEMPRESA)
                           Then VSDGEMPRESA=AlinhM(VSDGEMPRESA,4)

                                Switch
                                  Case SubStr(Tabela,1,4)="Orca"  : Moveto "OrcaC"
                                  Case SubStr(Tabela,1,3)="Ped"   : Moveto "PedidoC"
                                  Case SubStr(Tabela,1,6)="Fatura": Moveto "FaturaC"
                                  Case SubStr(Tabela,1,5)="Notac" : Moveto "NotaC"
                                  Case SubStr(Tabela,1,5)="Notae" : Moveto "NotaEC"
                                EndSwitch

                                GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To REG_EMP
                                If Not RetVal
                                   Then Mensagem("Empresa Invalida !")
                                   Else Campo="TG_TABELA"
                                EndIf
                                Release Vars REG_EMP
                        EndIf
                   Case Campo="TG_TABELA":      
                        VSDGTABELA=Ltrim(Rtrim(ControlValue("TG_TABELA")))
                        If Not IsBlank(VSDGTABELA)
                           Then VSDGTABELA=AlinhM(VSDGTABELA,5)

                                Switch
                                  Case SubStr(Tabela,1,4)="Orca"  : Moveto "OrcaC"
                                  Case SubStr(Tabela,1,3)="Ped"   : Moveto "PedidoC"
                                  Case SubStr(Tabela,1,6)="Fatura": Moveto "FaturaC"
                                  Case SubStr(Tabela,1,5)="Notac" : Moveto "NotaC"
                                  Case SubStr(Tabela,1,5)="Notae" : Moveto "NotaEC"
                                EndSwitch

                                GetRecord "\\Sistemas\\Vendas\\TbPrCab" VSDGTABELA To REG_TABPR
                                If Not RetVal
                                   Then Mensagem("Tabela de Pre‡o Invalida !")
                                   Else If Not IsBlank(VSDGTABELA)
                                           Then VSDGTBATIVA=REG_TABPR["Ativa"]
                                                If VSDGTBATIVA="N"
                                                   Then Mensagem("Tabela inativa !")
                                                   Else Campo="TG_OPPESQ"
                                                EndIf
                                        EndIf
                                EndIf                                                          
                                Release Vars REG_TABPR
                        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 RefreshDialog
                                        Campo="TG_Registro"
                                        Item = SWCONS1_Pega_Valor_String("Codigo do Item",ControlValue("TG_Registro"))
                                        Mostra_Estoque()
                                EndIf
                        EndIf
                 EndSwitch
                 Moveto Tabela
          EndIf
   EndSwitch
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 (..)"
       If substr(VSDGOPPESQ,1,1)="3"
          Then tit="Localiza‡„o   Descri‡„o do Item               Item                Vr Venda Un"
          Else tit="Descri‡„o do Item               Item       Fornecedor             Vr Venda Un"                            
       EndIf
  Case Campo="TG_Registro" And AT_PRECO_TODOS:          
       TECLA="F5/Enter=Localiza‡Æo"
  Case Campo="TG_Registro":
       MSG_CAMPO=Format("W5",WCSW_NITENS)+" iten(s)                                  "
       If Not OP_INSERT_ITEM
          Then TECLA="//Esc=Retornar  =Selecionar  F5/Enter=Localiza‡Æo                   "
          Else TECLA="//Esc=Retornar  =Selecionar  F5/Enter=Localiza‡Æo  Ins/Enter=Incluir"
       EndIf
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp

EndProc  ; (Sd_Consulta)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc Mostra_Estoque()
Private Indice,mes,ano,LinhaCab1,LinhaCab2,LinhaCab3,wc,
        Forn, Desc, Local, Vend, Saldo, UltCt, UltDt, Compl, Barra, Marca, Grupo,UltSai,
        FtConv, FtEmb,Unid, Famil, NCM, iteminativo,cst,vendagem,Depart,Aliq

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

GetRecord "\\Sistemas\\Estoque\\Iten_Com" Item To REG_ITEMCOMP
If RetVal
   Then vendagem = REG_ITEMCOMP["Vendagem"]
        fci      = REG_ITEMCOMP["FCI"]
        cest     = REG_ITEMCOMP["CEST"]
   Else vendagem = "?"
        fci      = "?" 
        cest     = "?"
EndIf   

Window Select JanelaItens
Moveto [Codigo do Item]
Locate IndexOrder by "Codigo do item" Pattern Item
;;;Locate Item
If RetVal
   Then Forn  =[Codigo Fornecedor     ]
        Desc  =[Descricao do Item     ]  
        Compl =[Descricao Complementar]
        Barra =[Codigo de Barras      ]
        Marca =[Descricao da Marca    ]
        Famil =[Descricao da Familia  ]
        Grupo =[Descricao do Grupo    ]
        Unid  =[Unidade Interna       ]
        Aliq  =Rtrim(Ltrim(Format("W6.2,EIC",[Aliquota de ICMS])))
        Pesolq=RTrim(Ltrim(Format("W11.3,EIC",[Peso Liquido])))
        If (Int([Fator de Conversao])-[Fator de Conversao])<>0
           Then FtConv=RTrim([Unidade Entrada])+"/"+LTrim(Format("W11.3,EIC",[Fator de Conversao]))
           Else FtConv=RTrim([Unidade Entrada])+"/"+LTrim(Format("W11  ,EIC",[Fator de Conversao]))
        EndIf   
        If (Int([Fator Conversao Embalagem])-[Fator Conversao Embalagem])<>0
           Then FtEmb =RTrim([Unidade Embalagem])+"/"+LTrim(Format("W11.3,EIC",[Fator Conversao Embalagem]))
           Else FtEmb =RTrim([Unidade Embalagem])+"/"+LTrim(Format("W11  ,EIC",[Fator Conversao Embalagem]))
        EndIf 
        NCM        = [NCM]  
        iteminativo= [Inativo]
        Depart     = SubStr([Descricao do Departamento],1,13)
        cst        = [Tipo Tributacao]
        If Aliq<>""
           Then cst = cst + "/" + Aliq
           Else Aliq = ""
                cst = cst
        EndIf        
   Else Aliq = ""
        Forn  ="?"
        Desc  ="?"
        Compl ="?"
        Barra ="?"
        Marca ="?"
        Famil ="?"
        Grupo ="?"
        Unid  ="?"
        Pesolq="?"
        FtConv="?"
        FtEmb ="?"
        NCM   ="?"
        iteminativo="??"
        cst   ="?"
        Depart="?"
EndIf

Loc_1=""
Loc_2=""
Loc_3=""
Loc_4=""
Loc_5=""
Loc_6=""
Loc_7=""
Window Select JanelaItenLoc
Moveto [Codigo do Item]
Locate Item
If RetVal
   Then ItenLocCont = 0
        While [Codigo do Item] = Item
          ItenLocCont = ItenLocCont + 1
          Switch
            Case ItenLocCont=1 : Loc_1 = [Codigo_Localizacao]
            Case ItenLocCont=2 : Loc_2 = [Codigo_Localizacao]
            Case ItenLocCont=3 : Loc_3 = [Codigo_Localizacao]
            Case ItenLocCont=4 : Loc_4 = [Codigo_Localizacao]
            Case ItenLocCont=5 : Loc_5 = [Codigo_Localizacao]
            Case ItenLocCont=6 : Loc_6 = [Codigo_Localizacao]
          EndSwitch
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile  
        If ItenLocCont>6
           Then Loc_6 = Loc_6 + " (+)" 
        EndIf 
        Release Vars ItenLocCont
EndIf

Window Select JanelaTbprIte
Moveto [Codigo da Tabela]
Locate VSDGTABELA,Item
If RetVal
   Then Vend=[Preco Unitario]
   Else Vend=BlankNum()
EndIf

Window Select JanelaSdEstq
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,Item,ano,mes
If RetVal
   Then Saldo=[Saldo Atual           ]
        UltCt=[Preco de Custo        ]
        UltDt=[Data do Preco de Custo]
   Else Saldo=BlankNum()
        UltCt=BlankNum()
        UltDt=BlankDate()
EndIf

Window Select JanelaEstqPrm
Locate VSDGEMPRESA,Item
If RetVal
   Then UltSai=[Data da Ultima Saida]
   Else UltSai=BlankDate()
EndIf

;--- Pedidos pendentes ---------------------------------------------------------
qtdpedidos=0
Monta_Pedidos("")

;--- Compras pendentes ---------------------------------------------------------
qtdcompras=0
Monta_Compras("")
;-------------------------------------------------------------------------------
                         
st1=SubStr(Compl,01,80)
;st2=Completa("  CST% "+format("W16",cst)   ,23," ")+ Completa("FtCompr "+FtConv,31," ")+   Completa(  "Marca " +Marca,26," ")
;st3=Completa("   NCM "+format("W16",ncm)   ,23," ")+ Completa("FtEmbal "+FtEmb ,29," ")+   Completa("Familia " +Famil,26," ")
;st4=Completa("  CEST "+format("W16",cest)  ,23," ")+ Completa("PesoLiq "+Pesolq,31," ")+   Completa(  "Grupo " +Grupo,26," ")
;st5=Completa("éltSai "+format("D13",UltSai),23," ")+ Completa("CBarras "+Barra ,31," ")+   Completa(  "Local " +Local,26," ")         
;st6=Completa("éltEnt "+format("D13",UltDt) ,22," ")+Completa("Vendagem "+Vendagem ,31," ")+Completa( "Depart "+Depart,26," ")


st2=Completa("    NCM "+format("W16",ncm)   ,24," ") + Completa("FtCompr " + FtConv,26," ")+Completa("Local "+Loc_1,26," ")  
st3=Completa("   CEST "+format("W16",cest)  ,24," ") + Completa("FtEmbal " + FtEmb ,26," ")+Completa("      "+Loc_2,26," ")  
st4=Completa("CBarras "+format("W16",barra) ,24," ") + Completa("PesoLiq " + Pesolq,26," ")+Completa("      "+Loc_3,26," ")   
st5=Spaces(24)                                       + Completa("  Marca " + Marca, 26," ")+Completa("      "+Loc_4,26," ")          
st6=Completa(" éltSai "+format("D13",UltSai),24," ") + Completa("Familia " + Famil, 26," ")+Completa("      "+Loc_5,26," ") 
st7=Completa(" éltEnt "+format("D13",UltDt) ,24," ") + Completa("  Grupo " + Grupo, 26," ")+Completa("      "+Loc_6,26," ") 

st8=" (S) Saldo Atual"+Chr(179)+"   (P) Pedidos"+Chr(179)+"          =S-P"+Chr(179)+"   (C) Compras"+Chr(179)+"       =(S-P)+C"          
st9=" "      

If ((Int(Saldo)-Saldo)<>0)                         Or
   ((Int(qtdpedidos)-qtdpedidos)<>0)               Or
   ((Int(Saldo-qtdpedidos)-(saldo-qtdpedidos))<>0) Or
   ((Int(qtdcompras)-qtdcompras)<>0)               Or
   ((Int((Saldo-qtdpedidos)+qtdcompras)-((saldo-qtdpedidos)+qtdcompras))<>0)
   Then st9=st9+Format("W14.3,EIC",Saldo)
        st9=st9+" "+Chr(179) 
        st9=st9+Format("W13.3,EIC",qtdpedidos)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W13.3,EIC",saldo-qtdpedidos)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W13.3,EIC",qtdcompras)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W14.3,EIC",(saldo-qtdpedidos)+qtdcompras)
   Else st9=st9+Format("W14  ,EIC",Saldo)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W13  ,EIC",qtdpedidos)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W13  ,EIC",saldo-qtdpedidos)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W13  ,EIC",qtdcompras)
        st9=st9+" "+Chr(179)
        st9=st9+Format("W14  ,EIC",(saldo-qtdpedidos)+qtdcompras)
EndIf   
st9=st9+" "

EndProc    ; (Mostra_Estoque)

;*******************************************************************************
;* Rotina p/ Montar CondPg p/ Grade                                            *
;*******************************************************************************
Proc Monta_CondPg()
Private wc

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

Window Select JanelaTbprcpg
Moveto [Codigo da Tabela]
Locate VSDGTABELA
If RetVal
   Then wc=0
        While [Codigo da Tabela]=VSDGTABELA
          wc=wc+1
          If Search("A VISTA",[Descricao CondPagto])>0
             Then ArrayLista[wc]=Completa(" "+[Descricao CondPagto],27," ")+
                                 Format("W10.2,EIC",PrItem+NDecimal(((PrItem*[Taxa Financeira])/100),2))
             Else ArrayLista[wc]=Completa([Descricao CondPagto],27," ")+
                                 Format("W10.2,EIC",PrItem+NDecimal(((PrItem*[Taxa Financeira])/100),2))
          EndIf            
          Skip
          If Eot() Then Quitloop EndIf
        EndWhile
EndIf

EndProc    ; (Monta_CondPg)

;*******************************************************************************
;* Rotina p/ Montar Pedidos em aberto                                          *
;*******************************************************************************
Proc Monta_Pedidos(Tipo)
Private Tipo,wc,nped,pedok

Window Select JanelaPedidoI
Moveto [Codigo do Item]
OrderTable {Ind_itpd}
Locate IndexOrder by "Ind_itpd" Item  
If RetVal
   Then nped="???"
        While [Codigo do Item]=Item
          If [Numero do Pedido]<>nped
             Then nped =[Numero do Pedido]
                  pedok=False

                  Window Select JanelaPedidoC
                  Moveto [Numero do Pedido]
                  Locate nped
                  If RetVal
                     Then If [Codigo da Empresa  ]=VSDGEMPRESA and
                             [Situacao do Pedido ]="ABERTO"    and
                             ( Search("VEND",[Descricao da Destinacao])>0 Or 
                               Search("SIMPLES REMESSA ENTR",[Descricao da Destinacao])>0 )
                             Then pedok=True
                          EndIf
                  EndIf
                  Window Select JanelaPedidoI
          EndIf           
          If pedOK And [Quantidade]>[Quantidade Faturada]
             Then qtdpedidos=qtdpedidos+([Quantidade]-[Quantidade Faturada])
          EndIf
					Skip
					If EOT()
						 Then QuitLoop
          EndIf
          Locate IndexOrder by "Ind_itpd" Next Item   
				EndWhile
EndIf

EndProc    ; (Monta_Pedidos)

;*******************************************************************************
;* Rotina p/ Montar Compras em aberto                                          *
;*******************************************************************************
Proc Monta_Compras(Tipo)
Private Tipo,wc,nped,pedok,wc1,wc2,wc3,regoc

Switch
  Case Tipo="Lista":
    If IsAssigned(ArrayLista)
       Then Release Vars ArrayLista
    EndIf
    DynArray ArrayLista[]
    wc=0
EndSwitch

Window Select JanelaOcI
Moveto [Codigo do Item]
OrderTable {Ind_itcp}
Locate IndexOrder by "Ind_itcp" Item  
If RetVal
   Then nped="???"
        While [Codigo do Item]=Item
          If [Numero da OC]<>nped
             Then nped =[Numero da OC]
                  pedok=False

                  Window Select JanelaOcC
                  Moveto [Numero da OC]
                  Locate nped
                  If RetVal
                     Then If [Codigo da Empresa  ]=VSDGEMPRESA and
                             [Situacao da OC     ]="ABERTO"
                             Then pedok=True
                                  copytoarray regoc
                          EndIf
                  EndIf
                  Window Select JanelaOcI
          EndIf           
          If pedOK And [Quantidade]>[Quantidade Entregue]
             Then Switch
                    Case Tipo="Lista":
                      wc=wc+1
                      ArrayLista[wc]="   > "+
                                     AlinhM(StrVal( Year(regoc["Data de Entrega"])),4)+"/"+
                                     AlinhM(StrVal(Month(regoc["Data de Entrega"])),2)+"/"+
                                     AlinhM(StrVal(  Day(regoc["Data de Entrega"])),2)+" "+
                                     [Numero da OC]+" " 
                      If (Int([Quantidade]-[Quantidade Entregue])-([Quantidade]-[Quantidade Entregue]))<0
                         Then ArrayLista[wc]=ArrayLista[wc]+Format("W12.3,EIC",(([Quantidade]-[Quantidade Entregue])*[Fator de Conversao]))
                         Else ArrayLista[wc]=ArrayLista[wc]+Format("W08  ,EIC",(([Quantidade]-[Quantidade Entregue])*[Fator de Conversao]))
                      EndIf
                    OtherWise:
                      qtdcompras=qtdcompras+(([Quantidade]-[Quantidade Entregue])*[Fator de Conversao]) 
                  EndSwitch 
          EndIf
					Skip
					If EOT()
						 Then QuitLoop
          EndIf
          Locate IndexOrder by "Ind_itcp" Next Item   
				EndWhile
        If Tipo="Lista" And DynArraySize(ArrayLista)>0 
           Then 
                  wc3=0
                  For wc From 1  To DynArraySize(ArrayLista)
                    While SubStr(ArrayLista[wc],1,03)="   "
                      For wc2 From 1 to DynArraySize(ArrayLista)
                        If SubStr(ArrayLista[wc2],1,03)="   " And
                           (SubStr(ArrayLista[wc2],6,10)<SubStr(ArrayLista[wc],6,10) Or SubStr(ArrayLista[wc2],6,10)=SubStr(ArrayLista[wc],6,10))
                           Then wc1=wc2
                        EndIf  
                      EndFor
                      wc3=wc3+1
                      ArrayLista[wc1]=Format("W3",wc3)+SubStr(ArrayLista[wc1],4,50)
                    EndWhile
                  EndFor   
                  
                  For wc From 1  To DynArraySize(ArrayLista)
                    ArrayLista[wc]=SubStr(ArrayLista[wc],01,05)+
                                   SubStr(ArrayLista[wc],14,02)+"/"+
                                   SubStr(ArrayLista[wc],11,02)+"/"+
                                   SubStr(ArrayLista[wc],06,04)+
                                   SubStr(ArrayLista[wc],16,50)
                  EndFor   
                
        EndIf
EndIf

EndProc    ; (Monta_Compras)

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc Ver_Lista(Tipo)
Private Tipo, Titulo, Titulo2, LJ, AJ, nc, ArrayElement

Switch
  Case Tipo="CDPG":
    If DynArraySize(ArrayLista)=0
       Then Mensagem("Tabela sem Condi‡”es de Pagamento !")
            Return False
    EndIf
    
    AJ=DynArraySize(ArrayLista)
    If AJ>10
       Then AJ=10
       Else If AJ<3 Then AJ=3 EndIf
    EndIf
    
    LJ=39 nc=1
    Titulo ="Condi‡”es de pagamento"
    Titulo2="Condi‡Æo                         Valor"
;           12345678901234567890123456781234567890
  Case Tipo="COMPRAS":
    If DynArraySize(ArrayLista)=0
       Then Mensagem("Sem compras !")
            Return False
    EndIf
    
    AJ=DynArraySize(ArrayLista)
    If AJ>10
       Then AJ=10
       Else If AJ<3 Then AJ=3 EndIf
    EndIf
    
    LJ=39 nc=1
    Titulo ="Compras"
    Titulo2="       Entrega    N§ OC   Quantidade"
;             123> 12/12/1234 123456 123456789012
EndSwitch

ArrayElement=0
Showdialog Titulo Proc "Lista_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ESC"
     @ 04,35 height AJ+3 width LJ+5

   @ 00,01 ?? Titulo2
   PaintCanvas Attribute 143 00, 01, 00, LJ

   PickDynArray @1,01 Height AJ width LJ
   Columns nc
   ArrayLista
   Tag "TG_LISTA"
   To ArrayElement
EndDialog
Return True
EndProc   ; (Ver_Lista)

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc Lista_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo, Campo, Evento, Elemento

Temp=True
TECLA="=Mover  "
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: CancelDialog
   EndSwitch
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Return Temp
EndProc      ; (Lista_Dialog)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Muda(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TAXA":
                 Release Vars ALTERA_TODOS
                 CancelDialog
            Case Campo="Codigo1": Campo="TG_TAXA"
                 COD1 = BlankNum()
          EndSwitch
     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"] = 13:    
          Temp=False
          If Checa_TAG()
             Then Switch
                     Case Campo="TG_TAXA" :
                          VSDGTAXA=ControlValue("TG_TAXA")
                          If IsBlank(VSDGTAXA)
                             Then Campo="Codigo1"
                             Else If ALTERA_TODOS
                                     Then MSG="Deseja alterar o valor de todos os itens desta lista ?"
                                          ConfGeral(MSG)
                                          If OK="S"
                                             Then COD_ALTERA_ITEM  = "***"
                                                  CONT_ALTERA_ITEM = 0 
                                                  
                                                  DynArray Altera_Item[]
                                                  For wrt From 1 To DynArraySize(Array_Registro)
                                                    CONT_ALTERA_ITEM = CONT_ALTERA_ITEM +1
                                                    Altera_Item[CONT_ALTERA_ITEM] = SWCONS1_Pega_Valor_String("Codigo do Item",wrt)
                                                    VALORITEM                     = NumVal(SWCONS1_Pega_Valor_String("Preco do Item",wrt)) 
                                                    COD1                          = VALORITEM+((NumVal(VSDGTAXA)*VALORITEM)/100)
                                                    Array_Registro[wrt]           = SWCONS1_Pega_Valor_String("Linha Array 2",wrt)+
                                                                                    Format("W10.2,EIC",COD1)+
                                                                                    Format("W10.2",COD1)     
                                                    If COD_ALTERA_ITEM<>PegaCodigoRaiz((Altera_Item[CONT_ALTERA_ITEM]))
                                                       Then COD_ALTERA_ITEM  = PegaCodigoRaiz((Altera_Item[CONT_ALTERA_ITEM]))
                                                            CONT_ALTERA_ITEM = CONT_ALTERA_ITEM +1
                                                            Altera_Item[CONT_ALTERA_ITEM] = COD_ALTERA_ITEM
                                                    EndIf   
                                                  Endfor
                                                  COD1=""
                                                  AcceptDialog                                   
                                          EndIf
                                     Else COD1 = NumVal(SWCONS1_Pega_Valor_String("Preco do Item",Indice))+ 
                                                (NumVal(VSDGTAXA)*NumVal(SWCONS1_Pega_Valor_String("Preco do Item",Indice))/100)
                                          Array_Registro[Indice]=SWCONS1_Pega_Valor_String("Linha Array 2",Indice)+
                                                                 Format("W10.2,EIC",COD1)+
                                                                 Format("W10.2",COD1)
                                          COD1=""
                                          AcceptDialog   
                                  EndIf                                                          
                          EndIf   
                     Case Campo="Codigo1" :
                          COD1 = ControlValue("Codigo1")
                          If IsBlank(COD1)
                             Then COD1=""
                                  AcceptDialog
                             Else If ALTERA_TODOS
                                     Then MSG="Deseja alterar o valor de todos os itens desta lista ?"
                                          ConfGeral(MSG)
                                          If OK="S"
                                             Then COD1 = ControlValue("Codigo1")
                                                  COD_ALTERA_ITEM  = "***"
                                                  CONT_ALTERA_ITEM = 0 
                                                  
                                                  DynArray Altera_Item[]
                                                  For wrt From 1 To DynArraySize(Array_Registro)
                                                    CONT_ALTERA_ITEM = CONT_ALTERA_ITEM +1
                                                    Altera_Item[CONT_ALTERA_ITEM] = SWCONS1_Pega_Valor_String("Codigo do Item",wrt) 
                                                    Array_Registro[wrt]           = SWCONS1_Pega_Valor_String("Linha Array 2",wrt)+
                                                                                    Format("W10.2,EIC",COD1)+
                                                                                    Format("W10.2",COD1)
                                                    If COD_ALTERA_ITEM<>PegaCodigoRaiz((Altera_Item[CONT_ALTERA_ITEM]))
                                                       Then COD_ALTERA_ITEM  = PegaCodigoRaiz((Altera_Item[CONT_ALTERA_ITEM]))
                                                            CONT_ALTERA_ITEM = CONT_ALTERA_ITEM +1
                                                            Altera_Item[CONT_ALTERA_ITEM] = COD_ALTERA_ITEM
                                                    EndIf   
                                                  Endfor
                                                  COD1=""
                                                  AcceptDialog                                   
                                          EndIf
                                     Else Array_Registro[Indice] = SWCONS1_Pega_Valor_String("Linha Array 2",Indice)+
                                                                   Format("W10.2,EIC",COD1)+
                                                                   Format("W10.2",COD1)
                                          COD1=""
                                          AcceptDialog   
                                  EndIf
                          EndIf                
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;Muda()

;*******************************************************************************
;* Rotina Principal De Reajuste de Preco                                       *
;*******************************************************************************
Proc MudaPreco()                
Private indice, Titulo

VSDGTAXA = BlankNum()
COD1     = BlankNum()
If ALTERA_TODOS 
   Then Titulo = "Alterar Todos"
   Else Titulo = "Alterar Valor"
EndIf   

Indice=ControlValue("TG_Registro")
ShowDialog Titulo Proc "Muda"
  Trigger "OPEN","ARRIVE"                                                   
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 10,20   Height 05 Width 28

   Label  @ 00,00 "% Reajuste"  For "TG_TAXA"
   Accept @ 01,01 Width 10 "N" Tag "TG_TAXA" To VSDGTAXA

   Label  @ 00,12 "Novo Valor" for "Codigo1"
   Accept @ 01,13 Width 12 "$" Tag "Codigo1" to COD1

Enddialog
EndProc

;*******************************************************************************
;* Rotina Principal De Reajuste de Preco                                       *
;*******************************************************************************
Proc AlteraPreco()
Private wrt, VALORITEM, CODIGOITEM

TabelaAnt=Table()
Window Select JanelaTbprIte
CoEditKey

For wrt From 1 To DynArraySize(Array_Registro)
  While True
    VALORITEM = SWCONS1_Pega_Valor_String("Preco do Item",wrt)
    If Rtrim(VALORITEM)=""
       Then VALORITEM = 0
       Else VALORITEM = NumVal(VALORITEM)
    EndIf   
    CODIGOITEM = SWCONS1_Pega_Valor_String("Codigo do Item",wrt)

    Moveto [Codigo da Tabela]
    Locate VSDGTABELA,CODIGOITEM
    If RetVal
       Then If Not IsLockRecord()
               Then If Format("W10.2,IEC",[Preco Unitario])<>Format("W10.2,IEC",VALORITEM)
                       Then [Data Ultimo Reajuste]=Today()
                            If [Preco Unitario]>0
                               Then [Taxa Ultimo Reajuste]=NDecimal(((NumVal(VALORITEM)*100)/[Preco Unitario]),2)-100
                            EndIf
                            [Preco Unitario      ] = NumVal(Format("W10.2,IEC",VALORITEM))
                            UnLockRecord
                    EndIf
                    QuitLoop        
            EndIf
       Else End 
            Down
            [Codigo da Tabela ]=VSDGTABELA
            [Lookup_Item      ]=CODIGOITEM
            If Not IsLockRecord()
               Then [Codigo do Item      ]=CODIGOITEM
                    [Data Ultimo Reajuste]=Today()
                    [Preco Unitario      ]=NumVal(Format("W10.2,IEC",VALORITEM))
                    UnLockRecord
                    QuitLoop
            EndIf         
    EndIf
    
  EndWhile
EndFor  

Do_It!
Moveto TabelaAnt

Mensagem("Itens reajustados com Sucesso !")

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(Param_ExibeCusto)    Then Param_ExibeCusto="S"     EndIf
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""   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
If Not IsAssigned(OP_INSERT_ITEM)      Then OP_INSERT_ITEM=False     EndIf
If Not IsAssigned(OP_PRECO_ITEM)       Then OP_PRECO_ITEM=False      EndIf
If Not IsAssigned(AT_PRECO_TODOS)      Then AT_PRECO_TODOS=False     EndIf

SetDir "\\Sistemas\\Estoque"

PARAM_IMAGEM = False
If SYS_CODIGO_CLIENTE="0294"
   Then PARAM_IMAGEM = True
EndIf  

DynArray Array_Registro[]
INICIO_DIALOG=True
WCSW_NITENS=0

Acha_Empresa=False
If SysMode()="Main"
   Then Modo="Principal"
        AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
        
        LeiaINI(PrivDir()+"sw_cons3.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null,VSDGOPPESQ.S.1")       

        If IsBlank(VSDGEMPRESA) Then VSDGEMPRESA=SYS_EMPRESA_DEFAULT EndIf

   Else Modo="Edicao"
        
        If Not IsAssigned(VSDG_PESQ_SWCONS) Then VSDG_PESQ_SWCONS=False EndIf
        
        If VSDG_PESQ_SWCONS 
           Then LeiaINI(PrivDir()+"sw_cons3.ini","VSDGOPPESQ.S.1")
        EndIf
           
        Tabela=Table()

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

        If Not VSDG_PESQ_SWCONS
           Then VSDGOPPESQ=SW_VSDGOPPESQ
        EndIf
        VSDGTXPESQ=SW_VSDGTXPESQ
EndIf

If Modo="Principal"
   Then
        JanelaItens   =AbrirTabela("\\Sistemas\\Estoque\\Itens","V",1,0,1,15)
        JanelaItenCom =AbrirTabela("\\Sistemas\\Estoque\\Iten_Com","V",1,0,1,15)
        JanelaItenLoc =AbrirTabela("\\Sistemas\\Estoque\\Iten_Loc","V",1,0,1,15)
        
        JanelaSdEstq  =AbrirTabela("\\Sistemas\\Estoque\\SdEstq","V",1,0,1,15)
        JanelaEstqPrm =AbrirTabela("\\Sistemas\\Estoque\\EstqPrm","V",1,0,1,15)
        JanelaFornProd=AbrirTabela("\\Sistemas\\Estoque\\FornProd","V",1,0,1,15) 
        
        JanelaPedidoC =AbrirTabela("\\Sistemas\\Vendas\\PedidoC","V",1,0,1,15)
        JanelaPedidoI =AbrirTabela("\\Sistemas\\Vendas\\PedidoI","V",1,0,1,15)

        JanelaTbprIte =AbrirTabela("\\Sistemas\\Vendas\\TbprIte","V",1,0,1,15)
        JanelaTbprCpg =AbrirTabela("\\Sistemas\\Vendas\\TbprCpg","V",1,0,1,15)
        JanelaTbprCli =AbrirTabela("\\Sistemas\\Vendas\\TbprCli","V",1,0,1,15)
        JanelaTbprCit =AbrirTabela("\\Sistemas\\Vendas\\TbprCit","V",1,0,1,15)
        
        JanelaOcC     =AbrirTabela("\\Sistemas\\Compras\\OcC","V",1,0,1,15)
        JanelaOcI     =AbrirTabela("\\Sistemas\\Compras\\OcI","V",1,0,1,15)
        
        JanelaDestinat=AbrirTabela("\\Sistemas\\Cadastro\\Destinat","V",1,0,1,15)
        
   Else 
        JanelaItens   =AbrirTabela("\\Sistemas\\Estoque\\Itens","AddRO",1,0,1,15)
        JanelaItenCom =AbrirTabela("\\Sistemas\\Estoque\\Iten_Com","AddRO",1,0,1,15)
        JanelaItenLoc =AbrirTabela("\\Sistemas\\Estoque\\Iten_Loc","AddRO",1,0,1,15)
        
        JanelaSdEstq  =AbrirTabela("\\Sistemas\\Estoque\\SdEstq","AddRO",1,0,1,15)
        JanelaEstqPrm =AbrirTabela("\\Sistemas\\Estoque\\EstqPrm","AddRO",1,0,1,15)
        JanelaFornProd=AbrirTabela("\\Sistemas\\Estoque\\FornProd","AddRO",1,0,1,15)

        JanelaPedidoC =AbrirTabela("\\Sistemas\\Vendas\\PedidoC","AddRO",1,0,1,15)
        JanelaPedidoI =AbrirTabela("\\Sistemas\\Vendas\\PedidoI","AddRO",1,0,1,15)

        JanelaTbprIte =AbrirTabela("\\Sistemas\\Vendas\\TbprIte","AddRO",1,0,1,15)
        JanelaTbprCpg =AbrirTabela("\\Sistemas\\Vendas\\TbprCpg","AddRO",1,0,1,15)
        JanelaTbprCli =AbrirTabela("\\Sistemas\\Vendas\\TbprCli","AddRO",1,0,1,15)
        JanelaTbprCit =AbrirTabela("\\Sistemas\\Vendas\\TbprCit","AddRO",1,0,1,15) 
        
        JanelaOcC     =AbrirTabela("\\Sistemas\\Compras\\OcC","AddRO",1,0,1,15)
        JanelaOcI     =AbrirTabela("\\Sistemas\\Compras\\OcI","AddRO",1,0,1,15)
        
        JanelaDestinat=AbrirTabela("\\Sistemas\\Cadastro\\Destinat","AddRO",1,0,1,15) 

EndIf

If OP_INSERT_ITEM
   Then Acha_Empresa=True
EndIf

SWCONS1_Limpa_Array_Registro("")

tit=""
AUX="1-Descric„o,2-C¢digo,3-Localiza‡Æo,4-Referˆncia"

SW_CORBASEF=111
SW_CORBASET=096

Sw_Dialog="Inicial"
Sw_Item_Pesquisado=""
ShowDialog "Consulta de Itens" Proc "SD_Consulta"
 Trigger "OPEN","ARRIVE","UPDATE","CLOSE"
 Mouse "DOWN"
  Key "F1","ENTER","ESC","ClearArea","INS","F5","TAB","ReverseTab","F3","F4","F6","F7","F8","F9",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,
      -71,-80,-79,-72,-132,-118,-33,-67

 @ 01,00   Height 24 Width 82

  @ 00,00 ?? Format("W80,AC","[ Consulta de Itens ]")

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

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

  Label  @ 01,17 "Op‡„o pesquisa"  For "TG_OPPESQ"
  Accept @ 02,17 Width 21 "A17"  Picture AUX Tag "TG_OPPESQ" To VSDGOPPESQ

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

  @ 03,00 ?? tit
  PaintCanvas Attribute SW_CORBASET 03, 00, 03, 79

  PickDynArray @4,-1 Height 9 width 80
   Columns 1
    Array_Registro
     Tag "TG_Registro"
      To ArrayElement


   @ 13,00 ?? st1
   @ 14,00 ?? st2
   @ 15,00 ?? st3 
   @ 16,00 ?? st4
   @ 17,00 ?? st5
   @ 18,00 ?? st6
   @ 19,00 ?? st7
   @ 20,00 ?? st8
   @ 21,00 ?? st9

   PaintCanvas Attribute SW_CORBASEF 13, 00, 19, 79

   PaintCanvas Attribute SW_CORBASET 14, 00, 19, 06
   PaintCanvas Attribute SW_CORBASET 14, 24, 19, 30
   PaintCanvas Attribute SW_CORBASET 14, 50, 19, 55

   PaintCanvas Attribute 128 20, 00, 21, 79
   PaintCanvas Attribute 143 20, 02, 20, 02
   PaintCanvas Attribute 143 20, 21, 20, 21
   PaintCanvas Attribute 143 20, 43, 20, 43
   PaintCanvas Attribute 143 20, 45, 20, 45
   PaintCanvas Attribute 143 20, 51, 20, 51
   PaintCanvas Attribute 143 20, 71, 20, 71
   PaintCanvas Attribute 143 20, 73, 20, 73
   PaintCanvas Attribute 143 20, 76, 20, 76

   PaintCanvas Attribute 143 21, 01, 21, 15
   PaintCanvas Attribute 143 21, 17, 21, 30
   PaintCanvas Attribute 143 21, 32, 21, 45
   PaintCanvas Attribute 143 21, 47, 21, 60
   PaintCanvas Attribute 143 21, 62, 21, 76

;Ý(S) Saldo AtualÝ   (P) PedidosÝ          =S-PÝ   (C) ComprasÝ       =(S-P)+CÝ
;012345678901234567890123456789012345678901234567890123456789012345678901234567
   
   
EndDialog
If Modo="Principal"
   Then ClearAll
   Else Do_It!

        Window Select JanelaItens    ClearImage
        Window Select JanelaItenCom  ClearImage
        Window Select JanelaItenLoc  ClearImage
        Window Select JanelaSdEstq   ClearImage
        Window Select JanelaEstqPrm  ClearImage
        Window Select JanelaFornProd ClearImage

        Window Select JanelaPedidoC  ClearImage
        Window Select JanelaPedidoI  ClearImage
        Window Select JanelaTbprIte  ClearImage
        Window Select JanelaTbprCpg  ClearImage
        Window Select JanelaTbprCli  ClearImage
        Window Select JanelaTbprCit  ClearImage
        
        Window Select JanelaOcC      ClearImage
        Window Select JanelaOcI      ClearImage
        
        Window Select JanelaDestinat ClearImage

        Echo Normal
        Echo Off

        Moveto Tabela
        CoEditKey
EndIf
Message("")

SetDir "\\Sistemas\\Vendas"

If Modo="Principal"
   Then Release Vars All
        Release Procs All
   Else Release Vars Array_Registro,Modo,
                     Item,Desc,Forn,Acha_Empresa,
                     WinArray5,Janela,Msg_Campo,Tecla, 
                     PrItem, sw_tabant,st1,st2,st3,st4,st5,st6,st7,st8,st9,ArrayLista, qtdpedidos, qtdcompras,
                     JanelaPedidoC,JanelaPedidoI,JanelaOcC,JanelaOcI,
                     JanelaItens,JanelaSdEstq,JanelaEstqPrm, JanelaItenCom,JanelaItenLoc,
                     JanelaTbprIte,JanelaTbprCpg,JanelaTbprCli,JanelaTbprCit,JanelaDestinat,JanelaFornProd,
                     SW_CORBASEF, SW_CORBASET
             
        Release Procs Seleciona,SD_Consulta,Mostra_Estoque,Monta_Prompt,
                      Monta_CondPg, Monta_Compras, Monta_Pedidos, Ver_Lista, Lista_Dialog,
                      Muda, MudaPreco, AlteraPreco
EndIf



;123456789012345678901234567890 12345678901234567890 1234567890 999.999,99 XX
;12345678901234567890123456789012345678901234567890  1234567890 999.999,99 XX
;1234567890123 123456789012345678901234567890        1234567890 999.999,99 XX
