;** Sw_Cons2 *******************************************************************
;*  Programa p/ Consulta de Itens do Estoque                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)       
;Desenvolvido    : 05/07/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes pesonalizado divina panela 
;Ultima Alteracao: 05/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes disparado pelo sw_Cons
;Ultima Alteracao: 13/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Novos ajustes implementados -> Nome de Usuario na impressÆo "RM"
;Ultima Alteracao: 20/07/2016 por Bruno Carvalho
;Motivo Alteracao: Alterado Usu rio para Representante (Vendedor) ao realizar uma solicita‡Æo de requisi‡Æo de mercadoria 
;Ultima Alteracao: 26/07/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Codigo do Representante" e "Nome Fantasia Represen" na tabela RQTRF  
;Ultima Alteracao: 28/07/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes na impressÆo da Requisi‡Æo de Mercadoria -> Add codigo de barras e reorganiza‡Æo de layout
;Ultima Alteracao: 04/08/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo para remover um item lan‡ado na lista de itens do RM  
;Ultima Alteracao: 10/08/2016 por Bruno Carvalho
;Motivo Alteracao: Comentado o processo de impressÆo -> ImpriArq(ARQIMP)
;Ultima Alteracao: 15/08/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo para solicitar CAIXA
;Ultima Alteracao: 19/08/2016 por Bruno Carvalho
;Motivo Alteracao: Liberado o processo de impressao
;Ultima Alteracao: 22/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes AVARIA 0003, qtde fracionada, empresa do usuario           
;Ultima Alteracao: 29/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo imprimir AVARIA           
;Ultima Alteracao: 30/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout e novos valores de saldos           
;Ultima Alteracao: 02/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes impressora padrao                          
;Ultima Alteracao: 21/09/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes carregamentos das tabelas de consulta
;Ultima Alteracao: 29/09/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0388# -> PegaCodigoRaiz()
;Ultima Alteracao: 03/12/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0390# -> PegaCodigoRaiz()
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 07/04/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processos de #0388# para #0396#
;Ultima Alteracao: 24/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ buscar c¢digo de barra na "Iten_Bar" -> Codigo_Barras2()
;Ultima Alteracao: 14/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ver_Memo() substitu¡do por Ler_Memo() -> Observacao2()
;Ultima Alteracao: 01/02/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes com MENSAGENS no Aguarde -> Gera_Requisicao()
;Ultima Alteracao: 12/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado
;Ultima Alteracao: 12/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado 2 novos tipos de movimento "Etiqueta" e "Procura"
;Ultima Alteracao: 16/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo F9 p/ carregamento da imagem do produto
;Ultima Alteracao: 02/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Departamento                               

;*******************************************************************************      
;* Rotina para criar pasta de trabalho                                         *
;*******************************************************************************
Proc Cria_Pasta_Arquivo()

VSDGDRIVE = SubStr(Directory(),1,2)
VSDGDIR   = VSDGDRIVE+"\\Sistemas\\Vendas\\RM"
VSDGPASTA = VSDGDIR+"\\Monitora"

If DirExists(VSDGDIR)>0 And DirExists(VSDGPASTA)>0
   Then Return
EndIf   

If DirExists(VSDGDIR)=0
   Then Cria_Pasta(VSDGDIR)
        Sleep 2000
EndIf                              
  
If DirExists(VSDGPASTA)=0
   Then Cria_Pasta(VSDGPASTA)
        Sleep 1000
EndIf

EndProc ;Cria_Pasta_Arquivo()

;*******************************************************************************
;* Rotina para cerar arquivo para controle de alarme                           *
;*******************************************************************************
Proc Gera_Arquivo()
Private ARQIMP,NONE_ARQUIVO,TIPO_RM

ARQIMP = VSDGPASTA+"\\"+"RM"+AlinhM(TR_LANC,6)+".TXT"

;RM 123456 0000 12345123451234512345 00/00/0000-00:00
FileWrite ARQIMP from "RM "+AlinhM(TR_LANC,6)+" "+Format("W4,AL",VSDGREPRESEN)+" "+
                      Format("W20,AL",VSDGNOMREPR)+" "+Format("D13",INCLUSAO_DATA)+"-"+
                      Format("W5,AL",INCLUSAO_HORA)+"\n"


EndProc ;Gera_Arquivo()

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

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

DynArray Array_Registro[]

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

If Substr(VSDGOPPESQ,1,1)="A" 
   Then Window Select JanelaDestinat 
        Moveto [Codigo]
        Locate Pattern SubStr(VSDGTXPESQ,1,4)
        If Not RetVal
           Then Mensagem("Cliente n„o encontrado !")
                Return False
           Else VSDGTXPESQ=[Codigo]+" "+[Nome Fantasia EmitDest]
        EndIf   
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

  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
  Case oppesq="3" : Moveto [Codigo Fornecedor]
                    OrderTable {cdforndescr}
                    Home
                    Locate IndexOrder by "cdforndescr" Pattern VSDGTXPESQ
  Case oppesq="4" : COD_BARRA2=False
                    Moveto [Codigo de Barras]
                    OrderTable {codigo de barras}
                    Home
                    Locate IndexOrder by "codigo de barras" Pattern VSDGTXPESQ
                    If Not RetVal
                       Then COD_BARRA2=True
                            If Codigo_Barras2(VSDGTXPESQ,"")
                               Then Moveto [Codigo do Item]
                                    Locate CODIGO_BARRA2
                            EndIf         
                    EndIf   
  Case oppesq="5" : Moveto [Localizacao]
                    OrderTable {localdescr}
                    Home
                    Locate IndexOrder by "localdescr" Pattern VSDGTXPESQ
  Case oppesq="6" : Moveto [Descricao da Marca]
                    OrderTable {marcadescr}
                    Home
                    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
  Case oppesq="A" : Window Select JanelaTbprCli
                    Moveto [Codigo da Tabela]
                    Locate VSDGTABELA,SubStr(VSDGTXPESQ,1,4)
  Case oppesq="B" : Moveto [Descricao da Familia]
                    OrderTable {familiadescr}
                    Home
                    Locate IndexOrder by "familiadescr" Pattern VSDGTXPESQ
  Case oppesq="C" : Moveto [Referencia]
                    OrderTable {Referencia}
                    Home
                    Locate IndexOrder by "Referencia" Pattern VSDGTXPESQ
  Case oppesq="D" : Moveto [NCM]
                    OrderTable {NCM}
                    Home
                    Locate IndexOrder by "NCM" Pattern VSDGTXPESQ
  Case oppesq="E" : Window Select JanelaItenCom
                    Moveto [CEST]
                    OrderTable {CEST}
                    Home
                    Locate IndexOrder by "CEST" Pattern VSDGTXPESQ
  Case oppesq="F" : Window Select JanelaItenCom
                    Moveto [FCI]
                    OrderTable {FCI}
                    Home
                    Locate IndexOrder by "FCI" Pattern VSDGTXPESQ 
EndSwitch

wc=0
WCSW_NITENS=wc
If RetVal
   Then If oppesq="A"
           Then CLIENTE=False
                Window Select JanelaTbprCit
                Moveto [Codigo da Tabela]
                Locate VSDGTABELA,SubStr(VSDGTXPESQ,1,4)
                If RetVal
                   Then Window Select JanelaItens
                        Moveto [Codigo do Item]
                        Locate IndexOrder by "Codigo do item" Pattern [TbprCit->Codigo do Item]
                        If RetVal
                           Then CLIENTE=True
                        EndIf
                EndIf        
   
        EndIf
        primeira_tentativa=Recno()
        While True
          If oppesq="A"
             Then If Not CLIENTE
                     Then QuitLoop
                  EndIf
          EndIf 
          
          Consulta = True
          If oppesq="E" Or oppesq="F"
             Then GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM 
                  If Not Retval Then Consulta=False EndIf
             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 ; inativo
          if REG_ITEM["Tipo do Item"]="D" then itemok=false endif ; aplicacao direta
          if REG_ITEM["Tipo do Item"]="S"                         ; semiacabado 
             then itemok=false
                  if sys_Codigo_cliente="0377"
                     then itemok=true 
                  endif    
          endif 
          if itemok
             then
                  wc=wc+1
                  If oppesq<>"5"
                     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["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 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 do item" Next Pattern VSDGTXPESQ
                              EndIf
            Case oppesq="3" : Locate IndexOrder by "cdforndescr" Next Pattern VSDGTXPESQ
            Case oppesq="4" : If IsAssigned(COD_BARRA2) And COD_BARRA2=True
                                 Then QuitLoop
                                 Else Locate IndexOrder by "codigo de barras" Next Pattern VSDGTXPESQ
                              EndIf
            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
            Case oppesq="A" : 
                              Window Select JanelaTbprCit
                              Skip
                              If ([Codigo da Tabela]<>VSDGTABELA              Or
                                  [Codigo]          <>SubStr(VSDGTXPESQ,1,4)) Or
                                  Eot()
                                  Then QuitLoop
                                  Else Window Select JanelaItens
                                       Moveto [Codigo do Item]
                                       Locate IndexOrder by "Codigo do item" Pattern [TbprCit->Codigo do Item]
                              EndIf   
            Case oppesq="B" : Locate IndexOrder by "familiadescr" Next Pattern VSDGTXPESQ
            Case oppesq="C" : Locate IndexOrder by "Referencia"   Next Pattern VSDGTXPESQ
            Case oppesq="D" : Locate IndexOrder by "NCM"          Next Pattern VSDGTXPESQ
            Case oppesq="E" : Locate IndexOrder by "FCI"          Next Pattern VSDGTXPESQ
            Case oppesq="F" : Locate IndexOrder by "familiadescr" 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
        
        If oppesq<>"A"
           Then Window Select JanelaTbprIte
                Moveto [Codigo da Tabela]
                For wc from 1 to DynArraySize(Array_Registro)
                  If oppesq<>"5"
                     Then citep=SubStr(Array_Registro[WC],33,10)
                     Else citep=SubStr(Array_Registro[WC],47,10)
                  EndIf
        
                  If SubStr(Array_Registro[WC],80,01)<>" " Or SYS_CODIGO_CLIENTE="0239" Or SYS_CODIGO_CLIENTE="0388" Or 
                                                              SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0345" Or
                                                              SYS_CODIGO_CLIENTE="0396"
                     Then citep=PegaCodigoRaiz(citep)
                  EndIf
        
                  Locate VSDGTABELA,citep
                  If RetVal
                     Then Array_Registro[WC] = SuBStr(Array_Registro[WC],1,64)+Format("W10.2,EIC",[Preco Unitario])+Format("W10.2",[Preco Unitario])
                     Else Array_Registro[WC] = SuBStr(Array_Registro[WC],1,64)+Format("W10.2,EIC",0)               +Format("W10.2",0)
                  EndIf
                EndFor
           Else Window Select JanelaTbprcit
                Moveto [Codigo da Tabela]
                For wc from 1 to DynArraySize(Array_Registro)
                  citep=SubStr(Array_Registro[WC],33,10)
       
                  If SubStr(Array_Registro[WC],80,01)<>" " Or SYS_CODIGO_CLIENTE="0239" Or SYS_CODIGO_CLIENTE="0388" Or 
                                                              SYS_CODIGO_CLIENTE="0390" Or SYS_CODIGO_CLIENTE="0345" Or
                                                              SYS_CODIGO_CLIENTE="0396"
                     Then citep=PegaCodigoRaiz(citep)
                  EndIf
                  Locate VSDGTABELA,SubStr(VSDGTXPESQ,1,4),citep
                  If RetVal
                     Then Array_Registro[WC] = SuBStr(Array_Registro[WC],1,64)+Format("W10.2,EIC",[Preco Unitario])+Format("W10.2",[Preco Unitario])
                     Else Array_Registro[WC] = SuBStr(Array_Registro[WC],1,64)+Format("W10.2,EIC",0)               +Format("W10.2",0)
                  EndIf
                EndFor
        EndIf        
EndIf
If DynArraySize(Array_Registro)=0
   Then Mensagem("Pesquisa sem Registro !")
        Return False
EndIf
Message("")
LimpAguarde()
Return True
EndProc ; (Seleciona)


;*******************************************************************************
;* Rotina para verificar se existe mes ou ano em aberto                        *
;*******************************************************************************
Proc TiraSombraShowDialog2()
private Win_showdialog1, winarray_showdialog1 

Dynarray winarray_showdialog1[]
Window handle Dialog To Win_showdialog1
Window GetAttributes Win_showdialog1 To winarray_showdialog1
winarray_showdialog1["HASSHADOW"] = False
winarray_showdialog1["HASFRAME" ] = False

Window SetAttributes Win_showdialog1 From winarray_showdialog1

Release vars Win_showdialog1, winarray_showdialog1 
EndProc



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

If Disparo="CLOSE"
   Then WCSW_NITENS=0

        DynArray Array_Registro[]

        LimpaLinhast()
        
        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 If SYS_CODIGO_CLIENTE<>"0344"
                           Then LeiaINI(PrivDir()+"sw_cons.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null")
                                LINHAINI = LINHAINI + "VSDGEMPRESA="+Chr(34)+VSDGEMPRESA+Chr(34)+"\n"
                        EndIf
                EndIf   
                
                LINHAINI = LINHAINI + GravaExpressao("VSDGTABELA" ,"S",VSDGTABELA)     
                If Substr(VSDGOPPESQ,1,1)="A" Or
                   Substr(VSDGOPPESQ,1,1)="B" Or
                   Substr(VSDGOPPESQ,1,1)="C" Or
                   Substr(VSDGOPPESQ,1,1)="D" Or
                   Substr(VSDGOPPESQ,1,1)="E" Or
                   Substr(VSDGOPPESQ,1,1)="F"     
                   Then LINHAINI = LINHAINI + GravaExpressao("VSDGOPPESQ" ,"S",SubStr(VSDGOPPESQ,1,1))
                   Else LINHAINI = LINHAINI + GravaExpressao("VSDGOPPESQ" ,"N",SubStr(VSDGOPPESQ,1,1))
                EndIf   
                FileWrite PrivDir()+"sw_cons.ini" From LINHAINI
                Release Vars LINHAINI           
        EndIf
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then Temp=True
        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
   If Evento["KeyCode"] = -33 
      Then If Campo="TG_Registro"
              Then Echo Normal
                   Echo Off                                                
                   ShowPopup " Fun‡”es " CENTERED
                   "[F3] ~R~equisi‡„o de Mercadoria "  : " Requisi‡„o de Mercadoria    " : "F3",
                   "[F4] Rea~j~ustar                "  : " Reajustar Todos             " : "F4",
                   "[F5] ~O~bserva‡Æo               "  : " Observa‡Æo                  " : "F5",
                   "[F6] Condi‡Æo de ~P~agamento    "  : " Condi‡Æo de Pagamento       " : "F6",
                   "[F7] ~C~ompras                  "  : " Compras                     " : "F7",
                   "[F8] ~A~tualizar                "  : " Atualizar                   " : "F8",
                   "[F9] ~C~arregar Imagem          "  : " Carregar a Imagem do Produto" : "F9",
                   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 = "F3" : Evento["KeyCode"] = -61
                             Case MenuVar = "F4" : Evento["KeyCode"] = -62
                             Case MenuVar = "F5" : Evento["KeyCode"] = -63
                             Case MenuVar = "F6" : Evento["KeyCode"] = -64
                             Case MenuVar = "F7" : Evento["KeyCode"] = -65
                             Case MenuVar = "F8" : Evento["KeyCode"] = -66
                             Case MenuVar = "F9" : Evento["KeyCode"] = -67
                           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
          Forn=SubStr(Array_Registro[ControlValue("TG_Registro")],44,20)
          Item=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
          Desc=SubStr(Array_Registro[ControlValue("TG_Registro")],01,30)
          Observacao2()
     Case Evento["KeyCode"] =  -64 And Campo="TG_Registro":
          Temp=False
          PrItem=Rtrim(Ltrim(SubStr(Array_Registro[ControlValue("TG_Registro")],75,10)))
          if isblank(Pritem)
             then pritem=0
             else pritem=numval(Pritem)
          endif
          Monta_CondPg()
          Ver_Lista("CDPG")

     Case Evento["KeyCode"] =  -61 And Campo="TG_Registro": 
          Temp=False
          If PARAM_RM 
             Then 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
                  Solicitacao()        
             Else Mensagem("Op‡„o n„o liberada !//Verificar com o Suporte Vise !")
          EndIf
     Case Evento["KeyCode"] =  -65 And Campo="TG_Registro":
          Temp=False
          Monta_Compras("Lista")
          Ver_Lista("COMPRAS")

     Case Evento["KeyCode"] =  -62 And Campo="TG_Registro" And Modo="Principal"
          And OP_PRECO_ITEM :
          Temp=False
          ALTERA_TODOS=True
          MudaPreco()
     Case Evento["KeyCode"] =  -66 And Campo="TG_Registro" And Modo="Principal"
          And OP_PRECO_ITEM :
          MSG="Deseja realmente atualizar os valores ?"
          ConfGeral(MSG)
          If OK="S"
             Then Temp=False
                  AlteraPreco()
                  WCSW_NITENS=0
                
                  DynArray Array_Registro[]
        
                  LimpaLinhast()
                   
                  Campo="TG_TXPESQ"
          EndIf        
     Case Evento["KeyCode"] =  -67 And Campo="TG_Registro":
          Temp=False
          If PARAM_IMAGEM
            Then GetRecord "\\Sistemas\\Estoque\\Iten_eco" REG_ITEM["Codigo do Item"] To REG_ITENECO
                 If RetVal
                    Then If REG_ITENECO["Link_Imagem"] = ""
                            Then Mensagem("Caminho da imagem ‚ inv lido!")
                            Else IMAGEPATH = REG_ITENECO["Link_Imagem"] 
                                 ExecVise("EXE c:\\vise\\ImageGlass\\ImageGlass.exe "+IMAGEPATH) 
                         EndIf   
                    Else Mensagem("N„o foi localizado cadastro de e-commerce para o item "+REG_ITEM["Codigo do Item"]+"!")
                 EndIf 
            Else Mensagem("Op‡„o n„o liberada !//Verificar com o Suporte Vise !")     
          EndIf         
     Case Evento["KeyCode"] =  -59:
          Temp=False
          If Campo="TG_OPPESQ"
             Then ShowPopup " Op‡”es " @ 03,24
                   "1-Descric„o             " : "Localizar pela descric„o do item             " : "1-Descric„o",
                   "9-Descri‡Æo complementar" : "Localizar pela descri‡„o complementar do Item" : "9-Descr.Complementar",
                   Separator, 
                   "6-Marca                 " : "Localizar pela descri‡Æo da marca            " : "6-Marca",
                   "B-Fam¡lia               " : "Localizar pela descri‡Æo da fam¡lia          " : "B-Fam¡lia",
                   "8-Grupo                 " : "Localizar pela descri‡Æo do grupo            " : "8-Grupo",
                   Separator, 
                   "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¢digo de barras      " : "Localizar pelo c¢digo de barras              " : "4-C¢d.Barras",
                   "C-Referˆncia            " : "Localizar pela referˆncia do item            " : "C-Referˆncia",                   
                   "7-Observa‡äes           " : "Localizar pela observa‡äes do item           " : "7-Observa‡äes",
                   Separator, 
                   "5-Localiza‡„o           " : "Localizar pela localiza‡„o                   " : "5-Localiza‡„o",
                   "A-Cliente               " : "Localizar pelo c¢digo do cliente             " : "A-Cliente",
                   Separator,
                   "D-NCM                   " : "Localizar pelo NCM                           " : "D-NCM",
                   "E-CEST                  " : "Localizar pelo CEST                          " : "E-CEST",
                   "F-FCI                   " : "Localizar pelo FCI                           " : "F-FCI"
                  EndMenu
                   To VSDGOPPESQ
                   If Not RetVal
                      Then VSDGOPPESQ=""
                      Else Campo="TG_TXPESQ"
                  EndIf
                  RefreshDialog
             Else If Campo="TG_EMPRESA" Or
                     Campo="TG_TABELA"  Or
                     (Campo="TG_TXPESQ" And
                      Substr(VSDGOPPESQ,1,1)="A")
                      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   
                  
                  If Campo="TG_TXPESQ" And Substr(VSDGOPPESQ,1,1)="A"
                     Then If IsAssigned(VSDGCLIENTE)
                             Then If Not NAO_FAZ
                                     Then VSDGTXPESQ=VSDGCLIENTE+" "+VSDGNOMCLIE
                                     Else VSDGTXPESQ=""
                                  EndIf   
                          EndIf    
                  EndIf
          EndIf
     Case Evento["KeyCode"] = 13 And
          Campo="TG_Registro" And Modo="Principal" And OP_PRECO_ITEM:       
          Temp=False  
          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
          MudaPreco()
     Case (Evento["KeyCode"] = -82 Or Evento["KeyCode"] = 13) And
          Campo="TG_Registro" And Modo<>"Principal" And OP_INSERT_ITEM:
          Temp=False
          If substr(VSDGOPPESQ,1,1)<>"5"
             Then SW_Item_Pesquisado=SubStr(Array_Registro[ControlValue("TG_Registro")],33,10)
             Else SW_Item_Pesquisado=SubStr(Array_Registro[ControlValue("TG_Registro")],47,10)
           EndIf
           WCSW_NITENS=0

           DynArray Array_Registro[]

           LimpaLinhast()
           
          CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            ;* Ficha de Estoque
            Case Campo="I_Flag"        : CancelDialog
            ;* Filtro
            Case Campo="TG_EMPRESA"    : If DynArraySize(Array_Lista_Itens)>0
                                            Then COR_MENSAGEM="ALERTA"
                                                 ConfGeral(Completa("H   itens  na lista de requisi‡„o de mercadoria. Se sair do processo",68," ")+"//"+
                                                           Completa("de consulta de itens sem confirmar esta requisi‡„o para estes itens,",68," ")+"//"+
                                                           Completa("a mesma ser  perdida!",68," ")+"////"+
                                                           Completa("Deseja realmente sair do processo de consulta de itens?",68," "))
                                                 COR_MENSAGEM=""
                                                 If OK="S"
                                                    Then CancelDialog
                                                 EndIf
                                            Else CancelDialog        
                                         EndIf
            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 WCSW_NITENS=0
                         DynArray Array_Registro[]
                         LimpaLinhast()
                         
                         Campo="TG_TXPESQ"
                 EndIf
          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"

                                         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()
                                 EndIf
                         EndIf
                    Else
                      If Checa_TAG()
                         Then Switch
                                ;*Filtro
                                Case Campo="TG_EMPRESA":
                                     If Not IsBlank(VSDGEMPRESA)
                                        Then 
                                             if not isblank(SYS_EMPRESA_USUARIO) and VSDGEMPRESA<>SYS_EMPRESA_USUARIO
                                                then VSDGEMPRESA=SYS_EMPRESA_USUARIO
                                                     fastmsg("Empresa especifica do usuario!")
                                             endif   
                                            
                                            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
                 EndIf
            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

                                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)

                                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]
                                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 RefreshDialog
                                        Campo="TG_Registro"

                                        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()
                                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":
       If Substr(VSDGOPPESQ,1,1)="A"
          Then MSG_CAMPO="Informe o c¢digo do cliente, [F1]Consultar tabela"
          Else MSG_CAMPO="Informe o valor a pesquisar (..)"
       EnDIf    
       If substr(VSDGOPPESQ,1,1)="5"
          Then tit="Localiza‡„o   Descri‡„o do Item               Item               Vr Venda"
          Else tit="Descri‡„o do Item               Item       Fornecedor            Vr Venda"                            
       EndIf
  Case Campo="TG_Registro" And AT_PRECO_TODOS:
               TECLA="// Esc=Retornar  Alt+F=Fun‡”es"
               MSG_CAMPO=""
  Case Campo="TG_Registro":
       If Not OP_INSERT_ITEM
          Then TECLA="// Esc=Retornar  =Selecionar  Alt+F=Fun‡”es" 
          Else TECLA="// Esc=Retornar  =Selecionar  Alt+F=Fun‡”es  Ins/Enter=Incluir"
       EndIf
       MSG_CAMPO=""
EndSwitch
SelectControl Campo
RefreshDialog

Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp
EndProc  ; (Sd_Consulta)

;*******************************************************************************
;* Rotina Observacao                                                           *
;*******************************************************************************
Proc Observacao2()
Private JANELA, WinArray6

Echo Off

Dynarray WinArray6[]
Window Handle Dialog to JANELA
Window GetAttributes JANELA To WinArray6
WinArray6["FLOATING"]=False
Window SetAttributes JANELA From WinArray6

Prompt " Esc=Cancelar"
Window Select JanelaItens
Moveto [Codigo do Item]
Locate IndexOrder by "Codigo do item" Pattern Item
If RetVal
   Then AUX_MSG = [Observacao]
   Else AUX_MSG="E"
EndIf

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

Echo Normal
Echo Off

Switch
  Case AUX_MSG<>"" And AUX_MSG<>"E" : 
       Ler_Memo("| "+Forn+" | "+Item+" | "+RTrim(Desc)+" |",06,02,15,80,AUX_MSG)
  Case AUX_MSG="E" :
       Mensagem("Item n„o localizado !")
EndSwitch
Release Vars AUX_MSG,JANELA, WinArray6

EndProc  ; (Observacao)

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

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 fci           = REG_ITEMCOMP["FCI"]
        cest          = REG_ITEMCOMP["CEST"]
        ItemFracionado= REG_ITEMCOMP["Fracionado"]
   Else fci           = "?" 
        cest          = "?"
        ItemFracionado=""
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     ]
        Local =[Localizacao           ]
        Compl =[Descricao Complementar]
        Barra =[Codigo de Barras      ]
        Marca =SubStr([Descricao da Marca  ],1,13)
        Famil =SubStr([Descricao da Familia],1,13)
        Grupo =SubStr([Descricao do Grupo  ],1,13)
        Unid  =[Unidade Interna       ]
        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]  
        Depart=SubStr([Descricao do Departamento],1,13)
   Else Forn  ="?"
        Desc  ="?"
        Local ="?"
        Compl ="?"
        Barra ="?"
        Marca ="?"
        Famil ="?"
        Grupo ="?"
        Unid  ="?"
        FtConv="?"
        FtEmb ="?"
        NCM   ="?"
        Depart="?"
EndIf

;-- variavel para imprimir solicitacao ---
localitem=local
;-----------------------------------------


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 "0001",Item,ano,mes
If RetVal
   Then Saldol=[Saldo Atual           ]
        UltCt =[Preco de Custo        ]
        UltDt =[Data do Preco de Custo]
   Else Saldol=BlankNum()
        UltCt =BlankNum()
        UltDt =BlankDate()
EndIf
Locate "0002",Item,ano,mes
If RetVal
   Then Saldoa      = [Saldo Atual]
   Else Saldoa      = BlankNum()
EndIf
Locate "0003",Item,ano,mes
If RetVal
   Then Saldod      = [Saldo Atual]
   Else Saldod      = BlankNum()
EndIf

Saldo=Saldol+SaldoD

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=Completa(SubStr(Desc,1,30),30," ")+"  "+
    Item+" "+Completa(SubStr(Forn,1,20),20," ")+" "+
    Format("W10.2,EIC",Vend)
                          
st2=SubStr(Compl,01,76)
st3=Completa("NCM "+NCM,13," ")+Completa("CEST "+cest,13," ")+Completa("FCI "+fci,32," ")+
    Completa("Depar "+Depart,26," ")

st4=Completa("Unidade "+Unid,11," ")+Completa("Ft.Compra "+FtConv,22," ")+Completa("Ft.Embalagem "+FtEmb,25," ")+
    Completa("Marca "+Marca,26," ")
    
st5=Completa("CBarras "+SubStr(Barra,1,20),25," ")+
    Completa("Local "+Local,31," ")+
    Completa("Familia "+Famil,26," ")
    
st6=Completa("éltima saida "+Format("D10",UltSai),21," ")+
    Completa(", entrada "+Format("D10",UltDt),18," ")
If Param_ExibeCusto<>"N" And UltCt>0
   Then st6=st6+Completa(" ao ct "+LTrim(Format("W12.5,EIC",UltCt)),19," ")      
   Else st6=st6+spaces(19)
EndIf
st6=st6+Completa("Grupo "+Grupo,26," ")

st7="    Loja"+Chr(179)+"Dep¢sito"+Chr(179)+"   S=L+D"+Chr(179)+"Pedidos"+Chr(179)+"    =S-P"+Chr(179)+" Compras"+Chr(179)+" =(S-P)+C"+Chr(179)+" Avaria"+Chr(179)+"  A-SAC"    

;          1         2         3         4         5         6         7
;01234567890123456789012345678901234567890123456789012345678901234567890123456789
;    Loja|Deposito|   S=L+D|Pedidos|    =S-P| Compras| =(S-P)+C| Avaria|  A-SAC    
; 999.999| 999.999| 999.999|999.999| 999.999| 999.999|  999.999|999.999|999.999        

st8=""
If Int(Saldol)-Saldol<>0
   Then st8=st8+Format("W08.3,EIC",Saldol)
   Else st8=st8+Format("W08  ,EIC",Saldol)
EndIf
st8=st8+Chr(179)

If Int(Saldod)-Saldod<>0
   Then st8=st8+Format("W08.3,EIC",Saldod)
   Else st8=st8+Format("W08  ,EIC",Saldod)
EndIf
st8=st8+Chr(179)

If Int(Saldo)-(Saldo)<>0
   Then st8=st8+Format("W08.3,EIC",Saldo)
   Else st8=st8+Format("W08  ,EIC",Saldo)
EndIf
st8=st8+Chr(179)

If Int(qtdpedidos)-qtdpedidos<>0
   Then st8=st8+Format("W07.3,EIC",qtdpedidos)
   Else st8=st8+Format("W07  ,EIC",qtdpedidos)
EndIf
st8=st8+Chr(179)

If Int(Saldo-qtdpedidos)-(saldo-qtdpedidos)<>0
   Then st8=st8+Format("W08.3,EIC",saldo-qtdpedidos)
   Else st8=st8+Format("W08  ,EIC",saldo-qtdpedidos)
EndIf
st8=st8+Chr(179)

If Int(qtdcompras)-qtdcompras<>0
   Then st8=st8+Format("W08.3,EIC",qtdcompras)
   Else st8=st8+Format("W08  ,EIC",qtdcompras)
EndIf
st8=st8+Chr(179)

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

If Int(Saldoa)-Saldoa<>0
   Then st8=st8+Format("W07.3,EIC",Saldoa)
   Else st8=st8+Format("W07  ,EIC",Saldoa)
EndIf
st8=st8+Chr(179)

If Int(1)-(1)<>0
   Then st8=st8+Format("W07.3,EIC",0)
   Else st8=st8+Format("W07  ,EIC",0)
EndIf

RM_SALDO_LJ = Saldol
RM_SALDO_DP = Saldod 
RM_SALDO_AV = Saldoa 

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 [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 [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=" Esc=Retornar  =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
                                                    If SubStr(VSDGOPPESQ,1,1)<>"5"
                                                       Then Altera_Item[CONT_ALTERA_ITEM] = SubStr(Array_Registro[wrt],33,10)
                                                       Else Altera_Item[CONT_ALTERA_ITEM] = SubStr(Array_Registro[wrt],47,10)
                                                    EndIf 
                                                    COD1 = NumVal(SubStr(Array_Registro[wrt],75,10))+((NumVal(VSDGTAXA)*NumVal(SubStr(Array_Registro[wrt],75,10)))/100)
                                                    Array_Registro[wrt] = SuBStr(Array_Registro[wrt],1,64)+
                                                                          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(SubStr(Array_Registro[Indice],75,10))+((NumVal(VSDGTAXA)*NumVal(SubStr(Array_Registro[Indice],75,10)))/100)
                                          Array_Registro[Indice]=SuBStr(Array_Registro[Indice],1,64)+
                                                                 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
                                                    If SubStr(VSDGOPPESQ,1,1)<>"5"
                                                       Then Altera_Item[CONT_ALTERA_ITEM] = SubStr(Array_Registro[wrt],33,10)
                                                       Else Altera_Item[CONT_ALTERA_ITEM] = SubStr(Array_Registro[wrt],47,10)
                                                    EndIf 
                                                    
                                                    Array_Registro[wrt] = SuBStr(Array_Registro[wrt],1,64)+
                                                                          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]=SuBStr(Array_Registro[Indice],1,64)+
                                                                 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()

if substr(VSDGOPPESQ,1,1)="A" 
   then Window Select JanelaTbprCit
   else Window Select JanelaTbprIte
endif   

CoEditKey

For wrt From 1 To DynArraySize(Array_Registro)
  While True
    If Rtrim(SuBStr(Array_Registro[wrt],75,10))=""
       Then VALORITEM = 0
       Else VALORITEM = NumVal(SuBStr(Array_Registro[wrt],75,10))
    EndIf   
    If SubStr(VSDGOPPESQ,1,1)<>"5"
       Then CODIGOITEM = SubStr(Array_Registro[wrt],33,10)
       Else CODIGOITEM = SubStr(Array_Registro[wrt],47,10)
    EndIf

    Moveto [Codigo da Tabela]
   if substr(VSDGOPPESQ,1,1)="A"
      then Locate VSDGTABELA,SubStr(VSDGTXPESQ,1,4),CODIGOITEM
      else Locate VSDGTABELA,CODIGOITEM
    endif  
    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
            if substr(VSDGOPPESQ,1,1)="A"
               then [Codigo   ]=SubStr(VSDGTXPESQ,1,4)
            endif
            [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                                                                      *
;*******************************************************************************
Proc SolicitacaoDialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento, MSG_CAMPO, TECLA, Temp

Temp=True
MSG_CAMPO=""
TECLA="F4=Configurar Impressora  "

If VSDGINVENT[1] 
   Then TECLA = TECLA + "F5=Confirmar Requisi‡„o  "
        If INICIO_DIALOG2 And Campo<>"TG_INVENT"
           Then Campo="TG_QTDE"
                INICIO_DIALOG2=False
        EndIf        
EndIf

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

If Disparo="CLOSE"
   Then Switch
          Case Campo="YES": AcceptDialog
          Case Campo="NO" : CancelDialog
        EndSwitch
        Return Temp   
EndIf 

Switch
  Case (Campo="TG_Qtde" Or Campo="TG_OBS") And VSDGINVENT[1] : TECLA = TECLA + "F5=Confirmar Requisi‡„o  "
  Case Campo="TG_Tipo"                                       : TECLA = TECLA + "F1=Consulta"
EndSwitch

;If VSDGINVENT[1]
;   Then If RetVal=-33
;           Then Echo Normal
;                Echo Off
;                ShowPopup " Fun‡”es " CENTERED
;                  "F9 ~E~ditar Especial": "Edi‡„o Especial                   " : "F9",
;                  "~C~ancelar         " : " Cancelar a Opera‡„o              " : "CANCELAR"
;                EndMenu
;                To MenuVar
;                Echo Off
;       
;                If MenuVar="CANCELAR" or MenuVar="Esc"
;                    Then Loop
;                EndIf
;        EndIf
;EndIf   
  
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -83 And Campo="TG_Registro" : 
          If DynArraySize(Array_Lista_Itens) > 0
             Then AUX_ITEM = SubStr(Array_Lista_Itens[ControlValue("TG_Registro")],4,10)
                  SEQ      = NumVal(Rtrim(SubStr(Array_Lista_Itens[ControlValue("TG_Registro")],1,2)))
                  ConfGeral("Deseja excluir o item "+AUX_ITEM+" desta rela‡„o?")
                  If Ok="S"
                     Then If DynArraySize(Array_Lista_Itens)=1
                             Then Cont_Array_Lista_Itens = 0
                                  Release Vars Array_Lista_Itens
                                  DynArray Array_Lista_Itens[]
                             Else Release Vars Array_Lista_Itens2
                                  DynArray Array_Lista_Itens2[]
                                  Cont=0
                                  For ii From 1 To DynArraySize(Array_Lista_Itens)
                                    If NumVal(Rtrim(SubStr(Array_Lista_Itens[ii],1,2))) <> SEQ
                                       Then Cont = Cont + 1
                                            Array_Lista_Itens2[Cont] = Array_Lista_Itens[ii]
                                       Else Cont_Array_Lista_Itens = Cont_Array_Lista_Itens-1      
                                    EndIf 
                                  EndFor
                                  Release Vars Array_Lista_Itens
                                  DynArray Array_Lista_Itens[]
                                  Cont = 0
                                  For ii From 1 To DynArraySize(Array_Lista_Itens2)
                                    Cont = Cont + 1
                                    Array_Lista_Itens[Cont] = Array_Lista_Itens2[ii] 
                                  EndFor
                                  Release Vars Array_Lista_Itens2,Cont
                          EndIf 
                  EndIf
          EndIf
     Case Evento["KeyCode"] = 9   : Temp=False
     Case Evento["KeyCode"] = "F4" Or Evento["KeyCode"] = -62 : 
          oldcamporm=Campo
          
          Carrega_Impressora("CONFIGURAR")
          
          Campo=oldcamporm
          release vars oldcamporm
          
     Case (Evento["KeyCode"] = "F5" Or Evento["KeyCode"] = -63) And (Campo="TG_Pausa" Or Campo="TG_Qtde" And VSDGQTDE=BlankNum()) : 
          If DynArraySize(Array_Lista_Itens)>0
             Then COR_MENSAGEM="ALERTA"
                  ConfGeral("Confirma a gera‡„o da requisi‡„o dos itens desta lista?")
                  If Ok="S"
                     Then AcceptDialog
                          CONFIRMA_REQ = True
                  EndIf                                         
          EndIf
     Case Evento["KeyCode"] = -59 :
          Switch
            Case Campo="TG_Tipo":
              ShowPopup " Op‡äes de consistˆncia " CENTERED
               "~R~EQUISICAO   " : " Requisi‡„o de Mercadoria                                  " : "R",
               "~A~VARIA       " : " Requisi‡„o de Avaria                                      " : "A",
               "~D~EVOLUCAO    " : " Devolu‡„o de Requisi‡„o de Mercadoria                     " : "D",
               "~N~OTIFICACAO  " : " Notifica‡„o de Mercadoria em Falta no Estoque             " : "N",
               "~C~AIXA        " : " Solicitar Caixa                                           " : "C",
               "~P~ROCURA      " : " Registrar item sem estoque e que ouve procura pelo cliente" : "P",
               "~E~TIQUETA     " : " Solicitar confec‡Æo de etiqueta para loja                 " : "E",
                 Separator,
               "~C~ancelar    " : " Cancelar a Opera‡„o                           " : "CANCELAR"
              EndMenu
              To VSDGTIPO
              If Not RetVal Then VSDGTIPO="" EndIf
              RefreshDialog
            OtherWise               : ;Dialog_F1()
          EndSwitch
          
     Case Evento["KeyCode"] =  27 :
          Temp=False
          Switch
            Case Campo="TG_REPRESEN2"    : CancelDialog
            Case Campo="TG_Tipo"         : Campo="TG_REPRESEN2"
            Case Campo="TG_INVENT"       : Campo="TG_OBS"
            Case Campo="TG_OBS"          : Campo="TG_Qtde"
            Case Campo="TG_Qtde"         : If VSDGINVENT[1]
                                              Then CancelDialog
                                              Else Campo="TG_Tipo"
                                           EndIf
            Case Campo="TG_Registro"     : Campo="TG_OBS"                                
          EndSwitch
     Case Evento["KeyCode"] = 13:    
          Temp=False
          If Checa_TAG()
             Then Switch               
                    Case Campo="TG_REPRESEN2" :     
                         VSDGREPRESEN=ControlValue("TG_REPRESEN2")
                         If Not IsBlank(VSDGREPRESEN)
                            Then VSDGREPRESEN = AlinhM(VSDGREPRESEN,4)
                                 GetRecord "\\Sistemas\\Cadastro\\Represen" VSDGREPRESEN To REG_REP
                                 If RetVal
                                    Then VSDGNOMREPR=REG_REP["Nome Fantasia Represent"]
                                         If VSDGINVENT[1]
                                            Then Campo="TG_Qtde"
                                            Else Campo="TG_Tipo"
                                         EndIf   
                                    Else VSDGREPRESEN=""
                                         VSDGNOMREPR=""
                                         Mensagem("Vendedor Inv lido!")
                                 EndIf
                            Else VSDGREPRESEN=""
                                 VSDGNOMREPR=""
                                 Mensagem("Informe o Vendedor!")
                         EndIf     
                    Case Campo="TG_NOMREPR" : Campo="TG_REPRESEN2"    
                    Case Campo="TG_Tipo"    :
                         VSDGTIPO=ControlValue("TG_Tipo")
                         If Not IsBlank(VSDGTIPO)
                            Then Campo="TG_Qtde"
                         EndIf   
                    Case Campo="TG_Qtde" :
                         VSDGQTDE = ControlValue("TG_Qtde")
                         If VSDGQTDE>0
                            Then Campo="TG_OBS"
                         EndIf   
                         
                         if VSDGEMPRESA="0001" And Substr(VSDGTIPO,1,1)="R" 
                            then If VSDGQTDE>RM_SALDO_DP  
                                     Then Campo="TG_Qtde" 
                                          Mensagem("Estoque insuficiente no Dep¢sito!")
                                 EndIf
                         endif
                         
                         If VSDGEMPRESA="0001" And Substr(VSDGTIPO,1,1)="D"
                            Then If VSDGQTDE>RM_SALDO_LJ  
                                     Then Campo="TG_Qtde" 
                                          Mensagem("Estoque insuficiente no Dep¢sito!")
                                 EndIf
                         EndIf   
                                
                         if VSDGEMPRESA="0002" And Substr(VSDGTIPO,1,1)="R"
                            then If VSDGQTDE>RM_SALDO_AV  
                                     Then Campo="TG_Qtde" 
                                          Mensagem("Estoque insuficiente na Avaria!")
                                 EndIf
                         endif          
                               
                    Case Campo="TG_OBS" :   
                         VSDGOBS = ControlValue("TG_OBS")
                         If VSDGINVENT[1]
                            Then AcceptDialog
                            Else Campo="TG_INVENT"
                         EndIf  
                       
                    Case Campo="TG_INVENT"   : AcceptDialog                                             
                 EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch                  
  Case Campo="TG_REPRESEN2": MSG_CAMPO="Informe o vendedor !"
  Case Campo="TG_Tipo" and VSDGEMPRESA="0001"    : MSG_CAMPO="F1=Consulta"
  Case Campo="TG_Tipo" and VSDGEMPRESA="0003"    : MSG_CAMPO="Tipo: (A)varia, (N)otifica‡Æo !"
  Case Campo="TG_Tipo" and VSDGEMPRESA="0002"    : MSG_CAMPO="Tipo: (R)equisi‡Æo/Transferˆncia !"
  Case Campo="TG_Qtde"     : MSG_CAMPO="Informe a quantidade desejada !"
  Case Campo="TG_INVENT"   : MensagemCheckBoxes()
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;Muda()             

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Solicitacao()               
Private indice, ntabela,TR_LANC, arqimp, local

VSDGTIPO     = AUX_TIPO
VSDGQTDE     = BlankNum()
VSDGPAUSA    = ""
VSDGREPRESEN = AUX_REP
VSDGNOMREPR  = AUX_NOMREP

AUX_VSDGINVENT = VSDGINVENT[1]
      
Indice=ControlValue("TG_Registro")
INICIO_DIALOG2=True
                 
While True
  VSDGOBS = ""
  If DynArraySize(Array_Lista_Itens) > 0
     Then For iu From 1 To DynArraySize(Array_Lista_Itens)
            If Item = SubStr(Array_Lista_Itens[iu],4,10)
               Then VSDGOBS  = Rtrim(SubStr(Array_Lista_Itens[iu],71,40))
                   QuitLoop
            EndIf        
          EndFor
  EndIf
  
  ShowDialog "RM - Requisi‡„o de Mercadoria" Proc "SolicitacaoDialog"                     
    Trigger "OPEN"                            
    Key "F1","DEL","ENTER","ESC","TAB","F4","F5",-62,-63,-83  
      @ 10,01 Height POSH Width 76
  
     Label  @ 00,00 "Vendedor"  For "TG_REPRESEN2"
     Accept @ 01,01 Width 08 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN2" To VSDGREPRESEN
     Accept @ 01,06 Width 23 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR
  
     Label  @ 00,29 "Tipo"  For "TG_Tipo"
     Accept @ 01,30 Width 16 "A13" Picture "REQUISICAO,AVARIA,CAIXA,DEVOLUCAO,NOTIFICACAO,PROCURA,ETIQUETA" Tag "TG_Tipo" To VSDGTIPO
           
     Label  @ 00,46 "Quantidade" for "TG_Qtde"
     Accept @ 01,47 Width 14 "$" Tag "TG_Qtde" to VSDGQTDE
     
     Label  @ 02,00 "Observa‡„o" for "TG_OBS"
     Accept @ 03,01 Width 45 "A40" Picture "!*!" Tag "TG_OBS"  To VSDGOBS
                    
     CheckBoxes @05,POSM Height 1 Width 40 Tag "TG_INVENT"
     "Incluir mais itens na requisi‡„o" to VSDGINVENT[1]
                                                                    
     Label  @ POSA,01 "Sq Item                                      C¢d.Barra      Quantidade" for "TG_Qtde"
     PickDynArray @POSA+1,01 Height 09 width 72
      Columns 1
       Array_Lista_Itens
        Tag "TG_Registro"
         To ArrayElement2     
     
     Accept @ 01,75 Width 01 "A1" Tag "TG_Pausa" to VSDGPAUSA
  Enddialog
  If RetVal
     Then 
          If VSDGEMPRESA<>"0001" and VSDGEMPRESA<>"0002" and VSDGEMPRESA<>"0003"
             then Mensagem("RM nÆo permitida para esta Empresa !")
                  Loop
          EndIf
          
          If VSDGTIPO="" Or (VSDGQTDE=BlankNum() And Not CONFIRMA_REQ) Or VSDGNOMREPR=""
             Then Switch
                    Case VSDGTIPO=""                              : Mensagem("Informe o Tipo de Requisi‡„o de Mercadoria!")
                    Case VSDGQTDE=BlankNum() And Not CONFIRMA_REQ : Mensagem("Informe a Quantidade do Item!")
                    Case VSDGNOMREPR=""                           : Mensagem("Informe o Vendedor!")
                  EndSwitch
                  Loop
          EndIf

          If VSDGEMPRESA="0003"      and 
             VSDGTIPO<>"AVARIA"      and
             VSDGTIPO<>"NOTIFICACAO"     
             then Mensagem("Tipo de RM nÆo permitida para esta Empresa !")
                  Loop
          EndIf
          If VSDGEMPRESA="0002"      and 
             VSDGTIPO<>"REQUISICAO"
             then Mensagem("Tipo de RM nÆo permitida para esta Empresa !")
                  Loop
          EndIf
          
          If VSDGINVENT[1] And AUX_TIPO<>""
             Then If VSDGTIPO <> AUX_TIPO
                     Then Mensagem(Completa("Ap¢s  a  inclus„o de itens na rela‡„o, o tipo n„o pode ser alterado!",68," ")+"//"+
                                   Completa("Para alterar o tipo de requisi‡„o de mercadoria, ser  preciso entrar",68," ")+"//"+
                                   Completa("novamente no processo de consulta!",68," "))
                          VSDGTIPO = AUX_TIPO
                          Loop 
                  EndIf
                  
                  If VSDGREPRESEN <> AUX_REP
                     Then Mensagem(Completa("Ap¢s  a  inclus„o  de  itens na rela‡„o, o vendedor n„o pode ser",64," ")+"//"+
                                   Completa("alterado. Para alterar o vendedor, ser  preciso entrar novamente",64," ")+"//"+
                                   Completa("no processo de consulta!",64," "))
                          VSDGREPRESEN = AUX_REP
                          VSDGNOMREPR  = AUX_NOMREP
                          Loop 
                  EndIf
                  
                  If VSDGQTDE=BlankNum() And Not CONFIRMA_REQ
                     Then Mensagem("Informe a Quantidade!") 
                          Loop
                  EndIf        
          EndIf                  

          if ItemFracionado<>"S" And (VSDGQTDE-Int(VSDGQTDE))<>0
             then Mensagem("A Quantidade deste Item nÆo pode ser Fracionado !")
                  loop
          endif   

          If VSDGINVENT[1]  
             Then If AUX_TIPO = ""   Then AUX_TIPO = VSDGTIPO      EndIf
                  If AUX_REP = ""    Then AUX_REP = VSDGREPRESEN   EndIf
                  If AUX_NOMREP = "" Then AUX_NOMREP = VSDGNOMREPR EndIf

                  POSA = 05
                  POSH = 18
                  POSM = 80
                  If VSDGQTDE<>BlankNum()
                     Then ;---- Soma quantidade de itens iguais na consulta ----------------------------------------------------------
                          ACHOU_ITEM = False
                          For ii From 1 To DynArraySize(Array_Lista_Itens)
                            If SubStr(Array_Lista_Itens[ii],4,10)=Item
                               Then AUX_QTD = NumVal(SubStr(Array_Lista_Itens[ii],61,10))
                                    Array_Lista_Itens[ii] = SubStr(Array_Lista_Itens[ii],1,60) + Format("W10,EIC",VSDGQTDE + AUX_QTD) + Format("W40",VSDGOBS)
                                    ACHOU_ITEM = True
                                    QuitLoop 
                            EndIf 
                          EndFor
                          ;-----------------------------------------------------------------------------------------------------------
                          If Not ACHOU_ITEM 
                             Then GetRecord "\\Sistemas\\Estoque\\Itens" Item To AUX_ITEM
                                  CDBAR          = Rtrim(AUX_ITEM["Codigo de Barras"]) 
                                  ITEM_DESCRICAO = AUX_ITEM["Descricao do Item"]
                                  Cont_Array_Lista_Itens = Cont_Array_Lista_Itens + 1  ;Contador de Numero de Arrays
                                  Seq_Array_Lista_Itens = Seq_Array_Lista_Itens + 1    ;Contador da Sequˆncia que pode ser diferente do contador acimo devido a exclusÆo
                                  Array_Lista_Itens[Cont_Array_Lista_Itens] = AlinhM(Strval(Seq_Array_Lista_Itens),2)+" "+
                                                                              Format("W10",Item)+" "+Format("W30",ITEM_DESCRICAO)+" "+
                                                                              Format("W14",CDBAR)+" "+Format("W10,EIC",VSDGQTDE) + 
                                                                              Format("W40",VSDGOBS)
                          EndIf
                  EndIf           
                  If Not CONFIRMA_REQ
                     Then CONFIRMA_REQ=False 
                          QuitLoop
                  EndIf   
            Else AUX_TIPO   = ""
                 AUX_REP    = ""
                 AUX_NOMREP = ""
                 POSA = 80
                 POSH = 08
                 POSM = 00                                                  
          EndIf
          
          Aguarde("Aguarde, carregando impressora!")
          If Carrega_Impressora("")
             Then Aguarde("Aguarde gerando "+VSDGTIPO)
                  If CARREGA_IMPRESSORA
                     Then If CONFIRMA_REQ
                             Then Gera_Requisicao(DynArraySize(Array_Lista_Itens))
                             Else Gera_Requisicao(1)
                          EndIf
                     Else If IsAssigned(MSG) And MSG<>"" Then Mensagem(MSG) EndIf
                          Loop  
                  EndIf     
             Else Aguarde("Aguarde finalizando processo!")
                  If IsAssigned(MSG) And MSG<>"" Then Mensagem(MSG) EndIf
                  Loop  
          EndIf
          LimpAguarde()
  EndIf
  QuitLoop
EndWhile

EndProc

;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
Proc Carrega_Impressora(PARAM)
Private PARAM,ACHOU, LINHA

If Not CARREGA_IMPRESSORA or PARAM="CONFIGURAR"
   Then 
        MSGDISPOSITIVO="Selecionar Destino da RM"
        DispositivoI("RM")
        If OK="" 
           Then Return False
        EndIf    
        If not Isfile(PrivDir()+"RM_IMP.SC")
           Then MSG = "Configura‡Æo da impressora n„o localizado !"
                Return False
        EndIf
        
        LINHA =         GravaExpressao("NUMCOPIA","N",Strval(NUMCOPIA))
        LINHA = LINHA + GravaExpressao("DISPOSITIVO_OPCAO","S",DISPOSITIVO_OPCAO)
        LINHA = LINHA + GravaExpressao("VSDGIMPOPCAO","S",VSDGIMPOPCAO)        
        FileWrite Append PrivDir()+"RM_IMP.SC" From LINHA
        
        release vars linha
endif        

PDFZEBRA = False

Play PrivDir()+"RM_IMP"
Seta_Printer=Sys_Set_Porta

CARREGA_IMPRESSORA = True     

Return True
EndProc ;Carrega_Impressora()


;*******************************************************************************
;* Rotina para Gerar Requisi‡Æo                                                *
;*******************************************************************************
Proc Gera_Requisicao(NUMERO_ITEM)
Private out,NUMERO_ITEM

Aguarde("Aguarde gerando requisicao - 1/5")
CoeditKey
Window Select JanelaRqTrf
While True
  Moveto [Numero do Lancamento]
  End
  If Numero_Lancamento("Interno","")
     Then TR_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
  EndIf
  Locate TR_LANC
  If Not Retval
     Then End Down
          [Numero do Lancamento ]=TR_LANC
          If Not IsLockRecord()
             Then QuitLoop
             Else Del
          EndIf
  EndIf
EndWhile                      

Aguarde("Aguarde gerando requisicao - 2/5")
If VSDGEMPRESA="0001"
   then
        Switch
          Case Substr(VSDGTIPO,1,1)="A" : COD_EMP            = "0001"
                                          TIPO_MOVTO         = "AVA"
                                          DESCRICAO_TIPO_MOV = "AVARIA"
                                          EMPRESA_TRF        = "0002"
                                          
          Case Substr(VSDGTIPO,1,1)="R" : COD_EMP            = "0003"
                                          TIPO_MOVTO         = "TRA"
                                          DESCRICAO_TIPO_MOV = "TRANSFERENCIA"
                                          EMPRESA_TRF        = "0001"
                                          
          Case Substr(VSDGTIPO,1,1)="D" : COD_EMP            = "0001"
                                          TIPO_MOVTO         = "DEV"
                                          DESCRICAO_TIPO_MOV = "DEVOLUCAO"
                                          EMPRESA_TRF        = "0003"
                                          
          Case Substr(VSDGTIPO,1,1)="C" : COD_EMP            = "0001"
                                          TIPO_MOVTO         = "CX"
                                          DESCRICAO_TIPO_MOV = "CAIXA" 
                                          EMPRESA_TRF        = ""
                                          
          Case Substr(VSDGTIPO,1,1)="P" : COD_EMP            = "0001"
                                          TIPO_MOVTO         = "PROC"
                                          DESCRICAO_TIPO_MOV = "PROCURA"
                                          EMPRESA_TRF        = ""
                                          
          Case Substr(VSDGTIPO,1,1)="E" : COD_EMP            = "0001"
                                          TIPO_MOVTO         = "ETQ"
                                          DESCRICAO_TIPO_MOV = "ETIQUETA"
                                          EMPRESA_TRF        = ""                                                                
          
          OtherWise                     : COD_EMP            = "0003"
                                          TIPO_MOVTO         = "NOT"
                                          DESCRICAO_TIPO_MOV = "NOTIFICACAO"
        EndSwitch
endif
If VSDGEMPRESA="0002"
   then
        Switch
          Case Substr(VSDGTIPO,1,1)="R" : COD_EMP            = "0002"
                                          TIPO_MOVTO         = "TRA"
                                          DESCRICAO_TIPO_MOV = "TRANSFERENCIA"
                                          EMPRESA_TRF        = "0003"
                                          
          OtherWise                     : COD_EMP            = "0002"
                                          TIPO_MOVTO         = "NOT"
                                          DESCRICAO_TIPO_MOV = "NOTIFICACAO"
        EndSwitch
endif
If VSDGEMPRESA="0003"
   then
        Switch
          Case Substr(VSDGTIPO,1,1)="A" : COD_EMP            = "0003"
                                          TIPO_MOVTO         = "AVA"
                                          DESCRICAO_TIPO_MOV = "AVARIA"
                                          EMPRESA_TRF        = "0002"
                                          
          OtherWise                     : COD_EMP            = "0003"
                                          TIPO_MOVTO         = "NOT"
                                          DESCRICAO_TIPO_MOV = "NOTIFICACAO"
        EndSwitch
endif

;---- ImpressÆo do Cabe‡alho ---------------------------------------------------
Aguarde("Aguarde gerando requisicao - 3/5")
If Substr(VSDGTIPO,1,1)="R" Or Substr(VSDGTIPO,1,1)="D" Or Substr(VSDGTIPO,1,1)="C" Or Substr(VSDGTIPO,1,1)="E" 
   Then ARQIMP = PrivDir()+"TR_0000.TXT"
        Deleta_Arquivo(ARQIMP)

        Switch
          Case VSDGEMPRESA="0002" and Substr(VSDGTIPO,1,1)="R" : TIT_REQ = "AVARIA->DEPOSITO" 
          Case Substr(VSDGTIPO,1,1)="R" : TIT_REQ = "TRANSFERENCIA" 
          Case Substr(VSDGTIPO,1,1)="D" : TIT_REQ = "DEVOLUCAO"
          Case Substr(VSDGTIPO,1,1)="C" : TIT_REQ = "CAIXA"
          Case Substr(VSDGTIPO,1,1)="P" : TIT_REQ = "PROCURA"
          Case Substr(VSDGTIPO,1,1)="E" : TIT_REQ = "ETIQUETA"
          OtherWise                     : TIT_REQ = ""
        EndSwitch
        
        Print File ARQIMP ""+"\n"                  
        Print File ARQIMP ""+TIT_REQ+" "+TR_LANC+"\n"
        If TIT_REQ <> "ETIQUETA" And TIT_REQ <> "CAIXA" 
           Then Print File ARQIMP ""+COD_EMP+" -> "+EMPRESA_TRF+"\n\n"
           Else Print File ARQIMP "\n\n"
        EndIf
EndIf

Aguarde("Aguarde gerando requisicao - 4/5")
For out From 1 To NUMERO_ITEM
  If DynArraySize(Array_Lista_Itens) >= 1
     Then Item = SubStr(Array_Lista_Itens[out],4,10)
          VSDGQTDE = NumVal(SubStr(Array_Lista_Itens[out],61,10))
          VSDGOBS  = Rtrim(SubStr(Array_Lista_Itens[out],71,40))           
  EndIf
  Aguarde("Aguarde, inserindo item "+Item+" na requisicao")   
  
  GetRecord "\\Sistemas\\Estoque\\Itens" Item To AUX_ITEM
  CDBAR          = Rtrim(AUX_ITEM["Codigo de Barras"])
  MARCA          = Rtrim(AUX_ITEM["Descricao da Marca"])
  ITEM_DESCRICAO = AUX_ITEM["Descricao do Item"]
  localitem      = AUX_ITEM["Localizacao"]
  UN_INTERNA     = AUX_ITEM["Unidade Interna"]
  
  If out>1
     Then End Down
          [Numero do Lancamento ]=TR_LANC
  EndIf
  
  If VSDGEMPRESA="0001"
     then
          Switch
            Case Substr(VSDGTIPO,1,1)="A" : [Codigo da Empresa       ]="0001"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]=EMPRESA_TRF

            Case Substr(VSDGTIPO,1,1)="R" : [Codigo da Empresa       ]="0003"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]=EMPRESA_TRF

            Case Substr(VSDGTIPO,1,1)="D" : [Codigo da Empresa       ]="0001"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Codigo da EmpresaTrf    ]=EMPRESA_TRF
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [QuantidadeTrf           ]=VSDGQTDE

            Case Substr(VSDGTIPO,1,1)="C" : [Codigo da Empresa       ]="0003"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]="0001"
                                            [QuantidadeTrf           ]=VSDGQTDE
                                            
            Case Substr(VSDGTIPO,1,1)="P" : [Codigo da Empresa       ]="0001"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]="0001"
                                            [QuantidadeTrf           ]=VSDGQTDE                                
                                            [Status                  ]="PROCURA"
                                            
            Case Substr(VSDGTIPO,1,1)="E" : [Codigo da Empresa       ]="0001"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]="0001"
                                            [QuantidadeTrf           ]=VSDGQTDE
            
            Case Substr(VSDGTIPO,1,1)="N" : [Codigo da Empresa       ]="0001"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Status                  ]="NOTIFICACAO"   
                                            
            OtherWise                     : [Codigo da Empresa       ]="0003"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV

          EndSwitch
  endif
  If VSDGEMPRESA="0002"
     then
          Switch
            Case Substr(VSDGTIPO,1,1)="R" : [Codigo da Empresa       ]="0002"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]=EMPRESA_TRF

            OtherWise                     : [Codigo da Empresa       ]="0002"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV

          EndSwitch
  endif
  If VSDGEMPRESA="0003"
     then
          Switch
            Case Substr(VSDGTIPO,1,1)="A" : [Codigo da Empresa       ]="0003"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV
                                            [Codigo da EmpresaTrf    ]=EMPRESA_TRF

            OtherWise                     : [Codigo da Empresa       ]="0002"
                                            [Tipo de Movimento       ]=TIPO_MOVTO
                                            [Descricao Tipo Movimento]=DESCRICAO_TIPO_MOV

          EndSwitch
  endif
  If NUMERO_ITEM>1
     Then [Sequencia do Lancamento     ]=out
  EndIf
  [Codigo do Item              ]=Item
  [Ultimos_Digitos_CodBar      ]=SubStr(CDBAR,Len(CDBAR)-5,6)
  [Codigo da Marca             ]=AUX_ITEM["Codigo da Marca"]
  [Descricao da Marca          ]=AUX_ITEM["Descricao da Marca"]
  [Quantidade                  ]=VSDGQTDE
  [Codigo do Representante     ]=VSDGREPRESEN
  [Nome Fantasia Represent     ]=VSDGNOMREPR
  [Observacao                  ]=VSDGOBS
  Controle_Dia()
  UnLockRecord
  SaveTables
  
  If out=NUMERO_ITEM
     Then INCLUSAO_DATA = [Data_Inclusao]
          INCLUSAO_HORA = [Hora_Inclusao]
  EndIf

  If Substr(VSDGTIPO,1,1)="R" Or Substr(VSDGTIPO,1,1)="C" Or Substr(VSDGTIPO,1,1)="D" Or Substr(VSDGTIPO,1,1)="E"
     Then ;---- Local e Marca na mesma linha, por‚m a marca alinhada a direita ----------------------------------------------
          AUX_LOCAL_MARCA = "Local: "+Rtrim(localitem)+" "
          TM = 40-Len(AUX_LOCAL_MARCA)
          AUX_LOCAL_MARCA = Format("W"+StrVal(Len(AUX_LOCAL_MARCA))+",AL",AUX_LOCAL_MARCA)+Format("W"+StrVal(TM)+",AR",MARCA)
          ;------------------------------------------------------------------------------------------------------------------
          Print File ARQIMP ""+         ITEM_DESCRICAO+"\n"
          Print File ARQIMP ""+         Format("W10,AL",Item)+" "+Format("W29,AR",CDBAR)+"\n"
          Print File ARQIMP ""+AUX_LOCAL_MARCA+"\n\n"
          Print File ARQIMP ""+Format("W20"," Qtde: "+LTrim(Format("W10,EIC",VSDGQTDE))+"/"+Format("W2",UN_INTERNA))
          If NUMERO_ITEM>1
             Then Print File ARQIMP ""+Format("W20,AR","S"+StrVal(out))+"\n" ;Controle de Sequˆncia
             Else Print File ARQIMP ""+"\n" ;Controle de Sequˆncia
          EndIf
          If VSDGOBS=""
             Then Print File ARQIMP ""+"\n"
             Else Print File ARQIMP "  Obs: "+Format("W33",VSDGOBS)+"\n"
                  If Rtrim(SubStr(VSDGOBS,34,6))<>""
                     Then Print File ARQIMP "      "+Format("W33",Rtrim(SubStr(VSDGOBS,34,7)))+"\n"
                  EndIf
                  Print File ARQIMP ""+"\n"   
          EndIf
  EndIf
EndFor
Do_IT!

Aguarde("Aguarde gerando requisicao - 5/5")
If Substr(VSDGTIPO,1,1)="R" Or Substr(VSDGTIPO,1,1)="C" Or Substr(VSDGTIPO,1,1)="D" Or Substr(VSDGTIPO,1,1)="E"
  Then Print File ARQIMP Format("W4,AL",VSDGREPRESEN)+" "+Format("W18,AL",VSDGNOMREPR)+" "+
                         Format("D13",INCLUSAO_DATA)+"-"+Format("W5,AL",INCLUSAO_HORA)+"\n\n"
       Print File ARQIMP ""+Fill("-",40)+"\n"
       Gera_Arquivo()

       ImpriArq(ARQIMP)
       Deleta_Arquivo(ARQIMP)
EndIf
Release Vars AUX_ITEM,CDBAR,INCLUSAO_DATA,INCLUSAO_HORA,MARCA,TIT_REQ
Switch
  Case Substr(VSDGTIPO,1,1)="R" : FastMsg("Requisi‡„o de Mercadoria Realizada!")
  Case Substr(VSDGTIPO,1,1)="A" : FastMsg("Requisi‡„o de Avaria Realizada!")
  Case Substr(VSDGTIPO,1,1)="C" : FastMsg("Caixa(s) Solicitada!")
  Case Substr(VSDGTIPO,1,1)="D" : FastMsg("Devolu‡„o de Requisi‡„o de Mercadoria Realizada!")
  Case Substr(VSDGTIPO,1,1)="P" : FastMsg("Registro do item sem estoque informado!") 
  Case Substr(VSDGTIPO,1,1)="E" : FastMsg("Confec‡Æo de Etiqueta para a Loja solicitada!")  
  OtherWise                     : FastMsg("Notifica‡„o de Mercadoria em Falta no Estoque Realizada!")
EndSwitch

Carrega_RM()

EndProc ;Gera_Requisicao()

;*******************************************************************************
;* Rotina p/ carregar processos de trabalho - Requisi‡Æo de Mercadoria         *
;*******************************************************************************
Proc Carrega_RM()

AUX_REP    = ""
AUX_NOMREP = ""
AUX_TIPO   = ""

CONFIRMA_REQ = False                           
Seq_Array_Lista_Itens  = 0
Cont_Array_Lista_Itens = 0

Release Vars Array_Lista_Itens                           
DynArray Array_Lista_Itens[]
Array VSDGINVENT[1]
VSDGINVENT[1]=False
POSH = 08
POSA = 80
POSM = 00    

EndProc ;Carrega_RM()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc LimpaLinhast()
st1=""
st2=""
st3=""
st4=""
st5=""
st6=""
st7=""
st8=""
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
If Not IsAssigned(SYS_EMPRESA_USUARIO) Then SYS_EMPRESA_USUARIO=""   EndIf

Cria_Pasta_Arquivo()
Carrega_RM()
                          
PARAM_IMAGEM = False
PARAM_RM     = False
If SYS_CODIGO_CLIENTE="0294"
   Then PARAM_IMAGEM = True
        PARAM_RM     = 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_cons.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null,VSDGOPPESQ.S.1")
        
        getrecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO to regusuarios
        if retval
          then VSDGEMPRESA        =regusuarios["Cod_Empresa"]
               SYS_EMPRESA_USUARIO=regusuarios["Cod_Empresa"]
        endif  

        If IsBlank(VSDGEMPRESA) Then VSDGEMPRESA=SYS_EMPRESA_DEFAULT EndIf
        
        If Isfile(PrivDir()+"RM_IMP.SC")
           then 
                CARREGA_IMPRESSORA = True
           else 
                CARREGA_IMPRESSORA = False
        endif

   Else Modo="Edicao"
        
        If Not IsAssigned(VSDG_PESQ_SWCONS) Then VSDG_PESQ_SWCONS=False EndIf
        
        If VSDG_PESQ_SWCONS 
           ;ajuste em 11.05.2015 para pegar a empresa do lan‡amento  
           ;Then LeiaINI(PrivDir()+"sw_cons.ini","VSDGEMPRESA.S.null,VSDGTABELA.S.null,VSDGOPPESQ.S.1")
           Then LeiaINI(PrivDir()+"sw_cons.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)
        JanelaSdEstq  =AbrirTabela("\\Sistemas\\Estoque\\SdEstq","V",1,0,1,15)
        JanelaEstqPrm =AbrirTabela("\\Sistemas\\Estoque\\EstqPrm","V",1,0,1,15)
        JanelaRqTrf   =AbrirTabela("\\Sistemas\\Estoque\\RqTrf","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)
        JanelaSdEstq  =AbrirTabela("\\Sistemas\\Estoque\\SdEstq","AddRO",1,0,1,15)
        JanelaEstqPrm =AbrirTabela("\\Sistemas\\Estoque\\EstqPrm","AddRO",1,0,1,15)
        JanelaRqTrf   =AbrirTabela("\\Sistemas\\Estoque\\RqTrf","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

;---- Nome do Arquivo que ‚ utilizado para armazenar o nome da impressora ------
;;IMP_FILE=PrivDir()+"SW_X.SC"
;;If IsFile(IMP_FILE)
;;   Then Deleta_Arquivo(IMP_FILE)
;;EndIf

If OP_INSERT_ITEM
   Then Acha_Empresa=True
EndIf

tit=""
LimpaLinhast()

AUX="1-Descric„o,2-C¢digo,3-C¢d.Fornecedor,4-C¢d.Barras,5-Localiza‡„o,6-Marca,7-Observa‡äes,"+
    "8-Grupo,9-Descr.Complemen,A-Cliente,B-Fam¡lia,C-Referˆncia,D-NCM,E-CEST,F-FCI"

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",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,
      -71,-80,-79,-72,-132,-118,-61,-33, -67

 @ 01,00   Height 24 Width 82
 
   @ 00,00 ?? Format("W80,AC","Consulta de Itens")

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

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

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

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

  @ 03,01 ?? tit
  PickDynArray @4,00 Height 10 width 79
   Columns 1
    Array_Registro
     Tag "TG_Registro"
      To ArrayElement

   @ 14,00 ?? Format("W5",WCSW_NITENS)+" iten(s)"

   @ 15,01 ?? st2
   @ 16,01 ?? st3
   @ 17,01 ?? st4 
   @ 18,01 ?? st5
   @ 19,01 ?? st6
   @ 20,00 ?? st7
   @ 21,00 ?? st8

   PaintCanvas Attribute 111 15, 00, 19, 79

   PaintCanvas Attribute 096 16, 01, 16, 03
   PaintCanvas Attribute 096 16, 14, 16, 18
   PaintCanvas Attribute 096 16, 27, 16, 30   
   PaintCanvas Attribute 096 16, 59, 16, 63
   
   PaintCanvas Attribute 096 17, 01, 17, 07
   PaintCanvas Attribute 096 17, 12, 17, 20
   PaintCanvas Attribute 096 17, 34, 17, 46
   PaintCanvas Attribute 096 17, 59, 17, 63

   PaintCanvas Attribute 096 18, 01, 18, 07
   PaintCanvas Attribute 096 18, 26, 18, 30
   PaintCanvas Attribute 096 18, 57, 18, 63

   PaintCanvas Attribute 096 19, 01, 19, 12
   PaintCanvas Attribute 096 19, 22, 19, 30
   PaintCanvas Attribute 096 19, 59, 19, 63

   PaintCanvas Attribute 128 20, 00, 21, 79

   PaintCanvas Attribute 139 20, 04, 20, 04
   PaintCanvas Attribute 139 20, 09, 20, 09
   PaintCanvas Attribute 139 20, 21, 20, 21
   PaintCanvas Attribute 139 20, 23, 20, 23
   PaintCanvas Attribute 139 20, 25, 20, 25
   PaintCanvas Attribute 139 20, 27, 20, 27
   PaintCanvas Attribute 139 20, 40, 20, 40
   PaintCanvas Attribute 139 20, 42, 20, 42
   PaintCanvas Attribute 139 20, 45, 20, 45
   PaintCanvas Attribute 139 20, 56, 20, 56
   PaintCanvas Attribute 139 20, 58, 20, 58
   PaintCanvas Attribute 139 20, 61, 20, 61
   PaintCanvas Attribute 139 20, 64, 20, 64
   PaintCanvas Attribute 139 20, 73, 20, 73
   PaintCanvas Attribute 139 20, 75, 20, 77

   PaintCanvas Attribute 143 21, 00, 21, 07
   PaintCanvas Attribute 143 21, 09, 21, 16
   PaintCanvas Attribute 143 21, 18, 21, 25
   PaintCanvas Attribute 143 21, 27, 21, 33
   PaintCanvas Attribute 143 21, 35, 21, 42
   PaintCanvas Attribute 143 21, 44, 21, 51
   PaintCanvas Attribute 143 21, 53, 21, 61
   PaintCanvas Attribute 143 21, 63, 21, 69
   PaintCanvas Attribute 143 21, 71, 21, 77

;          1         2         3         4         5         6         7
;01234567890123456789012345678901234567890123456789012345678901234567890123456789
;    Loja|Deposito|   S=L+D|Pedidos|    =S-P| Compras| =(S-P)+C| Avaria|  A-SAC    
; 999.999| 999.999| 999.999|999.999| 999.999| 999.999|  999.999|999.999|999.999        
   
EndDialog
If Modo="Principal"
   Then ClearAll
   Else Do_It!

        Window Select JanelaItens    ClearImage
        Window Select JanelaItenCom  ClearImage
        Window Select JanelaSdEstq   ClearImage
        Window Select JanelaEstqPrm  ClearImage
        Window Select JanelaRqtrf    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("")
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,
                     JanelaTbprIte,JanelaTbprCpg,JanelaTbprCli,JanelaTbprCit,JanelaDestinat, JanelaRqtrf,
                     VSDGTIPO, VSDGQTDE, VSDGPAUSA, localitem,
                     SYS_EMPRESA_USUARIO, ItemFracionado
             
        Release Procs Seleciona,SD_Consulta,Mostra_Estoque,Monta_Prompt,
                      Monta_CondPg, Monta_Compras, Monta_Pedidos, Ver_Lista, Lista_Dialog,
                      Muda, MudaPreco, AlteraPreco, LimpaLinhast,
                      SolicitacaoDialog, Solicitacao
EndIf



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