;** Rm_0157 ********************************************************************
;*  Resumo das Requisicoes                                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 24/08/2006 por Anivel Augusto Rodrigues
;Ultima Alteracao: 10/05/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes RQMATPRI
;Ultima Alteracao: 26/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Exlusao Agrupamento referencia 
;Ultima Alteracao: 09/09/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado filtro por Requisitante
;Ultima Alteracao: 02/10/2015 por Bruno Carvalho  
;Motivo Alteracao: Incluido "I" no [Tipo de Operacao] para fornecer registros quando for requisi‡äes de Industrializa‡Æo
;Ultima Alteracao: 12/04/2016 por Bruno Carvalho  
;Motivo Alteracao: Adicionado op‡Æo para agrupamento dos itens pela referencia 
;Ultima Alteracao: 13/04/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Agrupa_Dados() p/ pegar a descricao correta do item
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 28/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog  
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()  
;Ultima Alteracao: 18/03/2017 por Rafael Matos
;Motivo Alteracao: InclusÆo Checkbox Despreza Balan‡os/Zeramentos               
;Ultima Alteracao: 27/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Titulo
;Ultima Alteracao: 08/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 27/04/2020 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Criado a proc Adiciona_Dados() para inserir dados da ASK na tabela ao inv‚s de aplicar o ADD
;Ultima Alteracao: 04/08/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo
;Ultima Alteracao: 11/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Tipo do Item] na ASK ao inserir registro na tabela -> Adiciona_Dados()  

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
ClearAll

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")
   Then 
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Codigo da Familia     ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo       ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca       ] TypeIn "~VSDGMARCA.."
        Moveto [Referencia            ] TypeIn "~VSDGREFERENCIA.."
        Moveto [Codigo da Familia     ] Check 
        Moveto [Descricao da Familia  ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento  ] Example "NUMERO"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa ] Check
        Moveto [Data de Ocorrencia    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Movimento     ] Check TypeIn "~VSDGTPMOV.."
        Moveto [Tipo de Operacao      ] Check TypeIn "~VSDGTPOPE.."
        Moveto [Requisitante          ] Check TypeIn "~VSDGREQUISIT.."
        Moveto [Descricao Requisitante] Check
        If VSDGOPCAO[2]
           Then Moveto [Numero do Documento   ] TypeIn "Not BALANCO, Not ZERAMENTO"
        EndIf   
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
        Moveto [Numero do Lancamento  ] Example "NUMERO"
        Ask_EstoqueTpItem("")
        Moveto [Codigo do Item        ] Check TypeIn "_cite, ~VSDGITEM.."
        Moveto [Descricao do Item     ] Check
        Moveto [Unidade Interna       ] Check
        Moveto [Tipo do Item          ] Check        
        Moveto [Quantidade            ] TypeIn "Calc Sum as Quantidade"
        Moveto [Custo Total           ] TypeIn "Calc Sum as Custo Total"
        Moveto [Aplicacao             ] Check
        Moveto [Descricao Aplicacao   ] Check
        Do_It!
        ClearAll
                
        Adiciona_Dados()
EndIf

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri") And
   ((VSDGTPMOV="S" And (VSDGTPOPE="C" or VSDGTPOPE="")) Or (VSDGTPMOV=""))
   Then 
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Codigo da Familia     ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo       ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca       ] TypeIn "~VSDGMARCA.."
        Moveto [Referencia            ] TypeIn "~VSDGREFERENCIA.."
        Moveto [Codigo da Familia     ] Check 
        Moveto [Descricao da Familia  ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento  ] Example "NUMERO"
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa ] Check
        Moveto [Data de Ocorrencia    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Movimento     ] Check TypeIn "E"
        Moveto [Tipo de Operacao      ] Check TypeIn "P Or I"
        Moveto [Requisitante          ] Check TypeIn "~VSDGREQUISIT.."
        Moveto [Descricao Requisitante] Check
        If VSDGOPCAO[2]
           Then Moveto [Numero do Documento   ] TypeIn "Not BALANCO, Not ZERAMENTO"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri" Enter
        Moveto [Numero do Lancamento  ] Example "NUMERO"
        Ask_EstoqueTpItem("")
        Moveto [Codigo do Item        ] Check TypeIn "_cite"
        Moveto [Descricao do Item     ] Check
        Moveto [Unidade Interna       ] Check
        Moveto [Tipo do Item          ] Check        
        Moveto [Quantidade            ] TypeIn "Calc Sum as Quantidade"
        Moveto [Custo Total           ] TypeIn "Calc Sum as Custo Total"
        Moveto [Aplicacao             ] Check
        Moveto [Descricao Aplicacao   ] Check
        Do_It!
        ClearAll

        {Ask} {Answer} TypeIn "Fast"
        Moveto [Tipo de Movimento     ] TypeIn "Changeto S"
        Moveto [Tipo de Operacao      ] TypeIn "Changeto C"
        Do_It!
        ClearAll

        Adiciona_Dados()
EndIf

EndProc    ;  (Seleciona)

;*******************************************************************************
;* Rotina para adicionar dados                                                 *
;*******************************************************************************
Proc Adiciona_Dados()
             
{Ask} {Answer}
Moveto [Codigo da Familia     ] TypeIn "_CodF"
Moveto [Descricao da Familia  ] TypeIn "_DesF"
Moveto [Codigo da Empresa     ] TypeIn "_CodE"
Moveto [Nome Fantasia Empresa ] TypeIn "_NomE"
Moveto [Tipo de Movimento     ] TypeIn "_TpMov"           
Moveto [Tipo de Operacao      ] TypeIn "_TpOp"
Moveto [Requisitante          ] TypeIn "_Req"
Moveto [Descricao Requisitante] TypeIn "_ReqD"
Moveto [Codigo do Item        ] TypeIn "_CodI"
Moveto [Descricao do Item     ] TypeIn "_DesI"
Moveto [Unidade Interna       ] TypeIn "_Un"
Moveto [Quantidade            ] TypeIn "_Qtd"
Moveto [Custo Total           ] TypeIn "_Cust"
Moveto [Aplicacao             ] TypeIn "_Apl"
Moveto [Descricao Aplicacao   ] TypeIn "_AplD"
Moveto [Tipo do Item          ] TypeIn "_TpIt" 
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Familia     ] TypeIn "_CodF"
Moveto [Descricao da Familia  ] TypeIn "_DesF"
Moveto [Codigo da Empresa     ] TypeIn "_CodE"
Moveto [Nome Fantasia Empresa ] TypeIn "_NomE"
Moveto [Tipo de Movimento     ] TypeIn "_TpMov"           
Moveto [Tipo de Operacao      ] TypeIn "_TpOp"
Moveto [Requisitante          ] TypeIn "_Req"
Moveto [Descricao Requisitante] TypeIn "_ReqD"
Moveto [Codigo do Item        ] TypeIn "_CodI"
Moveto [Descricao do Item     ] TypeIn "_DesI"
Moveto [Unidade Interna       ] TypeIn "_Un"
Moveto [Quantidade            ] TypeIn "_Qtd"
Moveto [Custo Total           ] TypeIn "_Cust"
Moveto [Aplicacao             ] TypeIn "_Apl"
Moveto [Descricao Aplicacao   ] TypeIn "_AplD"
Moveto [Tipo do Item          ] TypeIn "_TpIt"
Do_It!
ClearAll

EndProc ;Adiciona_Dados()       

;*******************************************************************************
;* Rotina de Agrupamento                                                        *
;*******************************************************************************
Proc Agrupa_Dados()

NR = NRecords(Tabela)

View "\\Sistemas\\Estoque\\Itens"
Coedit Tabela
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, agrupando referencia "+BARRA_STRING)
  
  COD_ITE = PegaCodigoRaiz([Codigo do Item])
  GetRecord "\\Sistemas\\Estoque\\Itens" COD_ITE To REG_ITEM
  If RetVal
     Then DES_ITEM = REG_ITEM["Descricao do Item"]
          REF      = REG_ITEM["Referencia"]
     Else DES_ITEM = ""
          REF      = ""
  EndIf
  [Codigo do Item   ] = REF
  [Descricao do Item] = DES_ITEM
EndScan
Do_it!
ClearAll

; Processo substituido pois, como h  itens de materia prima, semi-acabado e produto acabado ou terceiros
; foi ncess rio executar o datam para assim buscar a descri‡Æo correta do item no codigo PAI

;{Ask} {\\Sistemas\\Estoque\\Itens}
;Moveto [Codigo do Item       ] TypeIn "_CodI"
;Moveto [Referencia           ] TypeIn "_Ref"
;{Ask} TypeIn Tabela Enter
;Moveto [Codigo do Item       ] TypeIn "_CodI, Changeto _Ref"
;Do_It!
;ClearAll

;{Ask} {\\Sistemas\\Estoque\\Itens}
;Moveto [Referencia           ] TypeIn "_Ref"
;Moveto [Descricao do Item    ] TypeIn "_Desc"
;Moveto [Tipo do Item         ] TypeIn "D"
;{Ask} TypeIn Tabela Enter
;Moveto [Codigo do Item       ] TypeIn "_Ref"
;Moveto [Descricao do Item    ] TypeIn "Changeto _Desc"
;Do_It!
;ClearAll

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa    ] Check
Moveto [Nome Fantasia Empresa] Check
Moveto [Tipo de Movimento    ] Check
Moveto [Tipo do Item         ] Check
Moveto [Tipo de Operacao     ] Check
Moveto [Codigo do Item       ] Check
Moveto [Descricao do Item    ] Check
Moveto [Unidade Interna      ] Check
Moveto [Quantidade           ] TypeIn "Calc Sum as Quantidade"
Moveto [Custo Total          ] TypeIn "Calc Sum as Custo Total"
Do_It!
ClearAll

Empty Tabela
 
{Ask} {Answer}
Moveto [Codigo da Empresa    ] Example "Cod"
Moveto [Nome Fantasia Empresa] Example "NomF"
Moveto [Tipo de Movimento    ] Example "TipM"
Moveto [Tipo do Item         ] Example "TipI"
Moveto [Tipo de Operacao     ] Example "TipO"
Moveto [Codigo do Item       ] Example "CodI"
Moveto [Descricao do Item    ] Example "DesI"
Moveto [Unidade Interna      ] Example "Un"
Moveto [Quantidade           ] Example "Qtd"
Moveto [Custo Total          ] Example "Cust"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert" Enter
Moveto [Codigo da Empresa    ] Example "Cod"
Moveto [Nome Fantasia Empresa] Example "NomF"
Moveto [Tipo de Movimento    ] Example "TipM"
Moveto [Tipo do Item         ] Example "TipI"
Moveto [Tipo de Operacao     ] Example "TipO"
Moveto [Codigo do Item       ] Example "CodI"
Moveto [Descricao do Item    ] Example "DesI"
Moveto [Unidade Interna      ] Example "Un"
Moveto [Quantidade           ] Example "Qtd"
Moveto [Custo Total          ] Example "Cust"
Do_It!
ClearAll

EndProc ;Agrupa_Dados()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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_EMPRESA"        : Campo="NO"
            Case Campo="TG_TPMOV"          : Campo="TG_EMPRESA"
            Case Campo="TG_TPOPE"          : Campo="TG_TPMOV"
            Case Campo="TG_REQUISIT"       : Campo="TG_TPOPE"
            Case Campo="TG_DTINI"          : Campo="TG_REQUISIT"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_TIPOEST"        : Campo="TG_DTFIM"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_ITEM"           : Campo="TG_MARCA"
            Case Campo="TG_REFERENCIA"     : Campo="TG_ITEM"
            Case Campo="TG_OPCOES"         : Campo="TG_REFERENCIA"
            Case Campo="TG_CODMODELO"      : Campo="TG_OPCOES"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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_EMPRESA"  : Campo = "TG_TPMOV"
                    
                    
                    Case Campo="TG_TPMOV"    : Campo="TG_TPOPE"
                         VSDGTPMOV=ControlVAlue("TG_TPMOV")
                         switch
                           case VSDGTPMOV="E" : VSDGNOMTPMOV = "ENTRADA"
                           case VSDGTPMOV="S" : VSDGNOMTPMOV = "SAIDA"
                           otherwise          : 
                                                VSDGNOMTPMOV = "TODAS"
                                                VSDGTPOPE    =""
                                                VSDGNOMTPOPE ="TODAS"
                                                Campo = "TG_REQUISIT"
                         endswitch
                    Case Campo="TG_TPOPE"    : Campo="TG_REQUISIT"
                         VSDGTPOPE = ControlValue("TG_TPOPE")
                         Switch
                            Case VSDGTPOPE = "C": VSDGNOMTPOPE = "CONSUMO"
                            Case VSDGTPOPE = "T": VSDGNOMTPOPE = "TRANSFERENCIA"
                            Case VSDGTPOPE = "P": VSDGNOMTPOPE = "PRODUCAO"
                            Case VSDGTPOPE = "I": VSDGNOMTPOPE = "INDUSTRIALIZACAO"     
                            Case VSDGTPOPE = "O": VSDGNOMTPOPE = "OUTROS"
                            Case VSDGTPOPE = "D": VSDGNOMTPOPE = "DEVOLUCAO"
                            Otherwise           : VSDGNOMTPOPE = "TODAS"
                         EndSwitch
                         Campo = "TG_REQUISIT"
                    Case Campo = "TG_REQUISIT" : Campo="TG_DTINI"
                    Case Campo = "TG_DTINI"    : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_TIPOEST"
                    Case Campo="TG_TIPOEST"    : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"       : Campo="TG_GRP"
                    Case Campo="TG_GRP"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"      : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"       : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA" : Campo="TG_OPCOES"   
                    Case Campo="TG_OPCOES"     : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"  : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo = "TG_TPMOV" : MSG_CAMPO = "Em Branco=Todos, E=Entrada S=Sa¡da"
  Case Campo = "TG_TPOPE" : MSG_CAMPO = "Em Branco=Todas, C=Consumo P=Producao I=Indust. T=Transf. D=Devol. O=Outros"
  Case Campo="TG_OPCOES"    :
     MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("1   Anal¡tico")
ModeloRelatoriosAdd("2   Sint‚tico")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Proc"
LimpAguarde()
SYS_VALOR()

Array VSDGOPCAO[2]

If SYS_CODIGO_CLIENTE="0227"
   Then VSDGOPCAO[1]= True
   Else VSDGOPCAO[1]= False
EndIf   
VSDGOPCAO[2] = True

Array tit_VSDGOPCAO[2]
tit_VSDGOPCAO[1]="Agrupar por Referˆncia"
tit_VSDGOPCAO[2]="Despreza Balan‡os/Zeramentos"

VSDGEMPRESA  = ""
VSDGNLANCINI = ""
VSDGNLANCFIM = ""
VSDGTPMOV    = ""
VSDGTPOPE    = ""
VSDGREQUISIT = ""
VSDGTIPOEST  = ""
VSDGFAMI     = ""
VSDGMARCA    = ""
VSDGGRP      = ""
VSDGITEM     = ""
VSDGREFERENCIA=""
VSDGDTINI    = BlankDate()
VSDGDTFIM    = BlankDate()

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Resumo de Opera‡äes por Item/Referˆncia" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 03,05   Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Tipo de Movimento" For "TG_TPMOV"
    Accept @ 03,04 Width 04 "A1"   Picture "E,S" Tag "TG_TPMOV" To VSDGTPMOV
    Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_NOMTPMOV" To VSDGNOMTPMOV
    
    Label  @ 04,00 "Tipo de Opera‡„o" For "TG_TPOPE"
    Accept @ 05,04 Width 04 "A1"   Picture "C,P,T,O,D,I" Tag "TG_TPOPE" To VSDGTPOPE
    Accept @ 05,09 Width 25 "A30"  Picture "!*!" Tag "TG_NOMTPOPE" To VSDGNOMTPOPE

    Label  @ 06,00 "Requisitante"  For "TG_REQUISIT"
    Accept @ 07,01 Width 09 "A6"  Picture "#*#" Tag "TG_REQUISIT"  To VSDGREQUISIT
    Accept @ 07,09 Width 25 "A35" Picture "!*!" Tag "TG_NOMREQUI" To VSDGNOMREQUI

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
                                                          
    Label  @ 00,38 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 01,39 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 01,44 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

    Label  @ 02,35 "Familia"  For "TG_FAMI"
    Accept @ 03,37 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 04,35 "Grupo"  For "TG_GRP"
    Accept @ 05,37 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 05,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 06,35 "Marca"  For "TG_MARCA"
    Accept @ 07,37 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 08,35 "Item"  For "TG_ITEM"
    Accept @ 09,36 Width 13 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 10,36 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    CheckBoxes @12,35 Height 2 Width 33 Tag "TG_OPCOES"
    tit_VSDGOPCAO[1] to VSDGOPCAO[1],
    tit_VSDGOPCAO[2] to VSDGOPCAO[2]

    Label  @ 08,48 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 09,48 Width 21 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA

    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  If Not ValidarModelosRelatorios() Then Loop EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  If VSDGCODMODELO="2" And VSDGOPCAO[1] 
     Then Mensagem("Itens agrupados por referˆncia somente no modelo anal¡tico!")
          VSDGOPCAO[1]=False
  EndIf    

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Estoque\\Rm_0157" Tabela

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  
  If VSDGOPCAO[1] 
     Then Agrupa_Dados()
  EndIf   

  If VSDGCODMODELO="1"
     Then IMPRIREL(Tabela,"R")
     Else IMPRIREL(Tabela,"1")
  EndIf

  If IsTable("Answer")
     Then Delete "Answer"
  EndIf
  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All
