;** RM_0500 ********************************************************************
;*  Liberacao de Pedidos com Estoque                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 15/04/2009 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 09/12/2010 por Karina Andrade
;Motivo Alteracao: Add campo Observacao do Pedido
;Ultima Alteracao: 08/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao selecionar pedido
;Ultima Alteracao: 30/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Entradas Faturamento para custo medio DEVOL/MANIF/CONSIG/REQUIS
;Ultima Alteracao: 01/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes OF em aberto situa‡Æo TROCA
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 19/11/2012 por Kamila Gomes
;Motivo Alteracao: Adicionado Op‡Æo de Modelo I ou II p/ itens com referencia e cor
;Ultima Alteracao: 07/05/2013 por Karina Andrade
;Motivo Alteracao: Ajustes VSDGOPRELANALSINT                         
;Ultima Alteracao: 19/09/2013 por Bruno Carvalho
;Motivo Alteracao: Novo modelo de agrupamento e ajustes nas colunas de expedi‡Æo 
;Ultima Alteracao: 07/06/2014 por Bruno Carvalho
;Motivo Alteracao: Add op‡Æo para pedido/itens somente da expedi‡Æo "VSDGOPCAO[4]"
;Ultima Alteracao: 25/07/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado VSDGOPANALISE="3" para pegar itens apenas que tem todas as grades em estoque
;Ultima Alteracao: 12/08/2014 por Bruno Carvalho
;Motivo Alteracao: Add filtro p/ pedidos conforme rela‡Æo de pedidos e valor minimo do pedido
;Ultima Alteracao: 21/08/2014 por Bruno Carvalho
;Motivo Alteracao: Otimizado processo p/ quando selecionar "Rela‡Æo de Pedidos"
;Ultima Alteracao: 09/07/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes para a impressao sair na ordem que ta a relacao de Pedidos "34"
;                  Corrigido para pegar so os pedidos da relacao "34", quando VSDGOPCAO[5], nao estava pegando 
;Ultima Alteracao: 16/07/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina para armazenar o SALDO_EXPED 
;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: 22/10/2015 por Andrey Fillipe  
;Motivo Alteracao: Adicionado filtro para ordenar por NORMAL ou REFERENCIA
;Ultima Alteracao: 28/10/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Identifica_MesAno_Periodo() e adicionado parte do processo Seleciona_Estoque() na proc Seleciona_NotaC()
;Ultima Alteracao: 06/11/2015 por Andrey Fillipe  
;Motivo Alteracao: Retirado filtro para ordenar por NORMAL ou REFERENCIA e
;                  Colocado direto no report quando escolher a opcao Modelo por referencia ja ordenar por referencia
;                  Adicionado coluna Concluido %
;                  Adicionado Modelo SINTETICO
;Ultima Alteracao: 18/01/2016 por Bruno Carvalho  
;Motivo Alteracao: Ao excluir a TABELA, foi verificado se a mesma existe p/ entÆo realizar a exclusÆo 
;Ultima Alteracao: 18/01/2016 por Bruno Carvalho  
;Motivo Alteracao: Ajustado SELECIONA_PEDIDOS(), quantidade faturada em outro processo de ASK, pois estava ocorrendo problema na ASK em que estava
;Ultima Alteracao: 20/01/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado SELECIONA_PEDIDOS(), corrigido ASK, itens estavam sendo excluidos se ocorresse faturamento parcial
;Ultima Alteracao: 01/02/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado Monta_Dir_Trab() quando ‚ feito o Verifica_Mov(), p/ resgatar o primeiro dia do mˆs anterior e o ultimo dia do mˆs posterior
;Ultima Alteracao: 12/04/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando op‡ao RELACAO DE PEDIDOS (RPedidos) for marcada, ordernar pedidos conforme esta rela‡Æo #Sol. 22080#
;Ultima Alteracao: 29/04/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando VSDGOPCAO[4] (Expedi‡Æo) ordenar pela [Numero da OE]
;Ultima Alteracao: 02/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado VSDGOPCAO[4] para VSDGRELEXP="2" e VSDGOPCAO[5] para VSDGRELEXP="3"
;Ultima Alteracao: 03/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes no layout do ShowDialog e add VSDGOPANALISE="4" #0227#
;Ultima Alteracao: 03/08/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes no SELECIONA_PEDIDOS() -> Otimiza‡Æo de Processo #Sol. 24670# *Tabela Itens com 85000 registros (Erro GP)
;Ultima Alteracao: 21/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 26/09/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo de otimiza‡Æo na ASK na proc SELECIONA_PEDIDOS() -> Add Adiciona_Indice() e Adiciona_Campo()
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog      
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()             
;Ultima Alteracao: 03/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Nota Entrada Opera‡Æo para Impostos 
;Ultima Alteracao: 25/04/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes SELECIONA_PEDIDOS() estava com erro, alterei a posi‡Æo das ask e adicionei Do_It! que faltava 
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Ordem_Report()                
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_CODMODELO, TG_CODMODELO_COMCASASDECIMAIS
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado SetaVisualizarCasasDecimais(),ConfigOpcoes()
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes variavel casas decimais
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()

;*******************************************************************************
;* Rotina p/ Verificar se existe movimentacao no mes em aberto/fechado         *
;*******************************************************************************
Proc Verifica_Mov()
ClearAll

;*** Notas de Saida/Faturamento ***
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Numero do Documento      ] Check
        Moveto [Serie do Documento       ] Check
        Moveto [Data de Saida            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then MSG_MODULO=MSG_MODULO+"Faturamento - "+Dir_Trab+"//"
                PROCESSAR_DADOS=False
        EndIf
EndIf                  

;*** Notas de Entrada/Estoque ***
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento     ] Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then MSG_MODULO=MSG_MODULO+"Estoque - "+Dir_Trab+"//"
                PROCESSAR_DADOS=False
        EndIf
EndIf

;*** Requisicoes/Estoque ***
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then MSG_MODULO=MSG_MODULO+"Estoque - "+Dir_Trab+"//"
                PROCESSAR_DADOS=False
        EndIf
EndIf

EndProc    ; (Verifica_Mov)

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Seleciona_NotaC()

AGUARDE("Aguarde, selecionando saidas")

;*** Faturamento ***
For ii From 1 To CONT_REGRA 
  For I From 1 To 2
    If Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") Or
       Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
       Then Loop
    EndIf
    
    {Ask} {\\Sistemas\\Estoque\\Itens}
    Moveto [Codigo do Item         ] Example "cite"
    Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
    Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
    Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
  
    {Ask} {\\Sistemas\\Vendas\\Destin}
    Moveto [Codigo da Destinacao     ] Example "destin"
    Moveto [Atualiza Estoque         ] TypeIn "S"
    {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
    Moveto [Codigo da Empresa        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
    Moveto [Numero do Documento      ] Example "doc"
    Moveto [Serie do Documento       ] Example "ser"
    Moveto [Codigo da Destinacao     ] Example "destin"
    Switch
      Case REGRA_DATA_ESTOQUE = "Antiga"    : Moveto [Data de Saida  ] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
      Case REGRA_DATA_ESTOQUE = "Transicao" : If ii=1
                                                Then Moveto [Data de Emissao] TypeIn "<~AUX_DTINI" 
                                                     Moveto [Data de Saida  ] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                Else Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                              EndIf
      Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
    EndSwitch
    Switch
      Case i=1: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
      Case i=2: Moveto [Tipo Movimento Estoque   ] TypeIn "E"
    EndSwitch
    Moveto [Situacao                 ] TypeIn "Not C"
    {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
    Moveto [Codigo da Empresa        ] Example "emp"
    Moveto [Numero do Documento      ] Example "doc"
    Moveto [Serie do Documento       ] Example "ser"
    Moveto [Codigo do Item           ] Check Example "cite"
    Moveto [Tipo do Item             ] TypeIn "T or P"
    Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
    Moveto [Situacao_Item            ] TypeIn "Not C"
    Do_It!
    ClearAll
    
    Switch
      Case i=1: Adiciona_Dados("SAIDAS")
      Case i=2: Adiciona_Dados("ENTRADAS")
    EndSwitch
  EndFor
EndFor

EndProc ;Seleciona_NotaC()

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Seleciona_Estoque()
ClearAll
AGUARDE("Aguarde, selecionando entradas/saidas")

If VSDGOPOF="S"  And Dir_Trab="" And IsTable("\\Sistemas\\Vendas\\FaturaC")
   Then
        For I From 1 To 2

          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item         ] Example "cite"
          Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
          Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
          Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."

          ;*** Ordem de Faturamento ***
          {Ask} {\\Sistemas\\Vendas\\Destin}
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Atualiza Estoque         ] TypeIn "S"
          {Ask} {\\Sistemas\\Vendas\\FaturaC}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          If i=1
             Then Moveto [Tipo Movimento Estoque   ] TypeIn "S"
             Else Moveto [Tipo Movimento Estoque   ] TypeIn "E"
          EndIf
          Moveto [Numero Nota Gerada       ] TypeIn "Blank"
          {Ask} {\\Sistemas\\Vendas\\FaturaI}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo do Item           ] Check Example "cite"

          Moveto [Tipo do Item             ] TypeIn "T or P"
          Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
          Do_It!
          ClearAll

          If i=1
             Then Adiciona_Dados("SAIDAS")
             Else Adiciona_Dados("ENTRADAS")
          EndIf
        EndFor
        
        If Not IsEmpty("\\Sistemas\\Vendas\\FaturaID")
           Then ;*** Ordem de Faturamento de Entrada/Troca ***
                {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Atualiza Estoque         ] TypeIn "S"
                {Ask} {\\Sistemas\\Vendas\\FaturaC}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Descricao da Destinacao  ] TypeIn "..TROCA.."
                Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} {\\Sistemas\\Vendas\\FaturaID}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo do Item           ] Check Example "cite"
                Moveto [Tipo do Item             ] TypeIn "T or P"
                Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
                Do_It!
                ClearAll
        
                Adiciona_Dados("ENTRADAS")
        EndIf
EndIf

;*** Notas de Entrada/Estoque ***
  If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
     IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
     Then
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item         ] Example "cite"
          Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
          Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
          Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."

          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
          Moveto [Numero do Lancamento     ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
          Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Moveto [Tipo de Operacao         ] TypeIn "Not A, Not I"
          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
          Moveto [Numero do Lancamento     ] Check Example "doc"
          Moveto [Sequencia do Lancamento  ] Check
          Moveto [Codigo do Item           ] Check Example "cite"

          Moveto [Tipo do Item             ] TypeIn "T or P"
          Moveto [Quantidade Convertida    ] Check TypeIn "As Quantidade"
          Do_It!
          ClearAll

          {Ask} {Answer}
          Moveto [Codigo da Empresa        ] Check
          Moveto [Codigo do Item           ] Check
          Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
          Do_It!
          ClearAll

          Adiciona_Dados("ENTRADAS")
EndIf

;*** Requisicoes/Estoque ***
For I From 1 To 2
  If Not IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") Or
     Not IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")
     Then Loop
  EndIf

  {Ask} {\\Sistemas\\Estoque\\Itens}
  Moveto [Codigo do Item         ] Example "cite"
  Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
  Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
  Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."

  {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
  Moveto [Numero do Lancamento     ] Example "doc"
  Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
  Moveto [Data de Ocorrencia       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
  If i=1
     Then Moveto [Tipo de Movimento] TypeIn "S"
     Else Moveto [Tipo de Movimento] TypeIn "E"
  EndIf
  {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
  Moveto [Numero do Lancamento     ] Example "doc"
  Moveto [Codigo do Item           ] Check Example "cite"

  Moveto [Tipo do Item             ] TypeIn "T or P"
  Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
  Do_It!
  ClearAll

  If i=1
     Then Adiciona_Dados("SAIDAS")
     Else Adiciona_Dados("ENTRADAS")
  EndIf
EndFor

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri")
   Then
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] Example "cite"
        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
        Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo de Movimento        ] TypeIn "E"
        Moveto [Tipo de Operacao         ] TypeIn "P Or I"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Codigo do Item           ] Check Example "cite"

        Moveto [Tipo do Item             ] TypeIn "T or P"
        Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
        Do_It!
        ClearAll

        Adiciona_Dados("SAIDAS")
EndIf

EndProc


;*******************************************************************************
;* Ajusta Dados                                                                *
;*******************************************************************************
Proc Saldo_Inicial()

ClearAll
AGUARDE("Aguarde, Saldo Inicial")

;******** Saldo Inicial/Checagem Ficha de Estoque nao criada *******
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Check
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Tipo do Item           ] TypeIn "T or P"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo do Item           ] Example "ite"
{Ask} TypeIn TabelaI Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA"
Moveto [Codigo do Item           ] Example "ite"
Do_It!
ClearAll

;******** Saldo Inicial *******
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Tipo do Item           ] TypeIn "T or P"
{Ask} {\\Sistemas\\Estoque\\SdEstq}
Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item        ] Check Example "cite"
Moveto [Mes Referencia        ] TypeIn "~VSDGMES"
Moveto [Ano Referencia        ] TypeIn "~VSDGANO"
Moveto [Saldo Inicial         ] Check TypeIn "as Quantidade"
Do_It!
ClearAll

Adiciona_Dados("SALDOINICIAL")

;******** Agrupa Dados *******
{Ask} TypeIn TabelaI Enter
Moveto [Codigo da Empresa     ] Check
Moveto [Codigo do Item        ] Check
Moveto [Saldo                 ] TypeIn "Calc Sum As Saldo"
Do_It!
ClearAll

Empty(TabelaI)

{Modify} {Restructure} TypeIn TabelaI Enter
Right Right  " "
Down  " "
Do_It! ClearAll

Add "Answer" TabelaI
ClearAll

EndProc

;*******************************************************************************
;* Adiciona Dados                                                              *
;*******************************************************************************
Proc Adiciona_Dados(Tipo)
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"

{Ask} TypeIn TabelaI Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Codigo do Item           ] Example "ite"
Switch
  Case Tipo="SAIDAS"           : Moveto [Saldo] TypeIn "_qtd*-1"
  OtherWise                    : Moveto [Saldo] TypeIn "_qtd"
EndSwitch
Do_It!
ClearAll

EndProc


;*******************************************************************************
;* Rotina p/ Inventario Final                                                  *
;*******************************************************************************
Proc Inventario()
AGUARDE("Aguarde, Invent rio Final")

TabelaIF=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\Rm_1003" TabelaIF
Empty TabelaIF

{Ask} TypeIn TabelaI Enter
Moveto [Codigo da Empresa] Example "ce"
Moveto [Codigo do Item   ] Example "ci"
Moveto [Saldo            ] Example "sd"
{Ask} TypeIn TabelaIF Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa] Example "ce"
Moveto [Codigo do Item   ] Example "ci"
Moveto [Saldo Atual      ] Example "sd"
Do_It!
ClearAll

;***** Ajusta Dados ************************************
{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
{Ask} TypeIn TabelaIF Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] TypeIn "changeto _nemp"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] example "tp"
Moveto [Descricao do Item     ] example "desc"
Moveto [Unidade Interna       ] example "un"
Moveto [Referencia            ] example "rf"
{Ask} TypeIn TabelaIF Enter TypeIn "Fast"
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] TypeIn "Changeto _tp"
Moveto [Descricao do Item     ] TypeIn "Changeto _desc"
Moveto [Unidade Interna       ] TypeIn "Changeto _un"
Moveto [Localizacao           ] TypeIn "Changeto _rf"
Do_It!
ClearAll

If VSDGZERADO="N"
   Then {Ask} TypeIn TabelaIF Enter TypeIn "Fast Delete"
        Moveto [Saldo Atual      ] TypeIn "=0"
        Do_It!
        ClearAll
EndIf

SetaVisualizarCasasDecimais("15")

IMPRIREL(TabelaIF,"5")
Delete TabelaIF

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SELECIONA_PEDIDOS()
          
{Ask} {\\Sistemas\\Vendas\\PedidoC}
If VSDGRELEXP="3"
   Then Moveto [Numero do Pedido       ] Example "Pedido"
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Entrega        ] Check
   Else Moveto [Numero do Pedido       ] Example "Pedido" TypeIn ", ~VSDGPEDIDO.."
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Situacao do Pedido     ] TypeIn "ABERTO"
        Moveto [Data de Entrega        ] Check
        If IsBlank(VSDGPEDIDO)
           Then Moveto [Data de Entrega] TypeIn ">=~VSDGDTINI2, <=~VSDGDTFIM2"
        EndIf    
EndIf        
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Data de Emissao        ] Check  
Moveto [Codigo                 ] Check
Moveto [Razao Social           ] Check
Moveto [UF                     ] Check
Moveto [Cidade                 ] Check
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Numero_Carregamento    ] Check
Moveto [Observacao do Pedido   ] Check
{Ask} {\\Sistemas\\Vendas\\PedidoI}
Moveto [Numero do Pedido       ] Check Example "Pedido"
Moveto [Item do Pedido         ] Check
Moveto [Codigo do Item         ] Check 
Moveto [Descricao do Item      ] Check
Moveto [Tipo do Item           ] Check
Moveto [Codigo da Cor_Tecido   ] Check
Moveto [Descricao da Cor_Tecido] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Quantidade             ] Check TypeIn ">" Example "qf"
Moveto [Quantidade Faturada    ] Check Example "qf"
Do_It!
ClearAll

If VSDGRELEXP="3"
   Then AGUARDE("Aguarde, verificando pedidos da relacao")
   Else AGUARDE("Aguarde, selecionando pedidos de venda")
EndIf  

Adiciona_Campo("Answer","Referencia(A20)")
Adiciona_Indice("Answer","Numero do Pedido,Item do Pedido,Codigo do Item")
Tabela_Aux=Cria_Temp(PrivDir())
Copy "Answer" Tabela_Aux

;---- A partir da answer, vou pegar dados da referˆncia ------------------------
{Ask} {Answer}
Moveto [Codigo do Item] Check
If VSDGRELEXP="2"
   Then Moveto [Numero do Pedido] Check
        Adiciona_Indice("Answer","Numero do Pedido,Codigo do Item")
   Else Adiciona_Indice("Answer","Codigo do Item")
EndIf
Do_It!  ;Adicionei Do_It! a pessoa que fez esqueceu de colocar
  
{Ask} {Answer} 
Moveto [Codigo do Item         ] Check Example "cite"
If VSDGRELEXP="3"
   Then If VSDGRELEXP="2"
           Then Moveto [Numero do Pedido] Example "Pedido"
                {Ask} {\\Sistemas\\Vendas\\Expedc}
                Moveto [Numero do Pedido] Example "Pedido"
                Moveto [Situacao da OE  ] TypeIn "EM ABERTO Or LIBERADO"
        EndIf  
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] Example "cite"
        Moveto [Referencia             ] Check                
   Else If VSDGRELEXP="2"
           Then Moveto [Numero do Pedido] Example "Pedido"
                {Ask} {\\Sistemas\\Vendas\\Expedc}
                Moveto [Numero do Pedido] Example "Pedido"
                Moveto [Situacao da OE  ] TypeIn "EM ABERTO Or LIBERADO"
        EndIf 
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] Example "cite"
        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
        Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
        Moveto [Referencia             ] Check
EndIf
Do_It!
ClearAll 

If IsEmpty(Tabela_Aux)
   Then ;---- Retornarndo o valor real da ASK ----------------------------------
        Copy Tabela_Aux "Answer"
        Delete Tabela_Aux
        Return
EndIf

{Ask} {Answer}
Moveto [Codigo do Item] Example "cite"
Moveto [Referencia    ] Example "Ref"
{Ask} TypeIn Tabela_Aux Enter
Moveto [Codigo do Item] Example "cite"
Moveto [Referencia    ] TypeIn "Changeto _Ref"
Do_it!
ClearAll
Copy Tabela_Aux "Answer"
Delete Tabela_Aux

{Ask} {Answer} Check
Moveto [Quantidade             ] Example "q"
Moveto [Quantidade Faturada    ] Example "qf" TypeIn ", Calc _q-_qf as Saldo"
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Processa Dados                                                              *
;*******************************************************************************
Proc Processa()

If IsEmpty("Answer")
	 Then Return
EndIf

If VSDGRELEXP="3"
   Then AGUARDE("Aguarde, processando pedidos da relacao") 
        If IsEmpty("\\Sistemas\\Estoque\\RPedidos")
           Then Return
        EndIf   
        
        {Ask} {\\Sistemas\\Estoque\\RPedidos}
        Moveto [Numero do Pedido] Example "Ped"
        Moveto [Sequencia       ] Check
        {Ask} {Answer} Check
        Moveto [Numero do Pedido] Example "Ped"
        Do_It!
        ClearAll

        If VSDGVRMINIMO > 0
           Then {Ask} {Answer} Check
                Moveto [Numero do Pedido  ] Example "Ped"
                {Ask} {\\Sistemas\\Vendas\\PedidoC}
                Moveto [Numero do Pedido  ] Example "Ped"
                Moveto [Valor Nota Fiscal ] TypeIn ">=~VSDGVRMINIMO"
                Do_It!
                ClearAll 
        EndIf
        Sort "Answer" On "Sequencia","Numero do Pedido","Item do Pedido"
        ClearAll  
   Else ClearAll
        AGUARDE("Aguarde, processando Pedidos")
        Sort "Answer" On "Data de Entrega","Numero do Pedido","Item do Pedido"
        ClearAll         
EndIf

PEDOK=True
NPED="***"

View "\\Sistemas\\Vendas\\ExpedC"
View "\\Sistemas\\Vendas\\ExpedI"
View TabelaP
View TabelaTP
View TabelaI
Coedit "Answer"
NR = NRecords("Answer")
Scan
  Barra(NR, RecNo())
  
  If VSDGRELEXP="3"
      Then Aguarde("Aguarde, processando pedidos da relacao "+BARRA_STRING)  
      Else Aguarde("Aguarde, Processando pedidos "+BARRA_STRING)
  EndIf    

  If [Numero do Pedido]<>NPED
     Then Estorno()
          NPED=[Answer->Numero do Pedido]
          PEDOK=True
  EndIf

  SALDO_EXPED = 0
  Moveto "\\Sistemas\\Vendas\\ExpedC"
  Moveto [Numero do Pedido]
  Locate NPED
  If RetVal
     Then While NPED =  [Numero do Pedido]
            EXPED = [Numero da OE]
            If [Situacao da OE]="EM ABERTO" Or 
               [Situacao da OE]="LIBERADO"
               Then Moveto "\\Sistemas\\Vendas\\ExpedI"
                    Moveto [Numero da OE]
                    Locate EXPED
                    If RetVal
                       Then While [Numero da OE] = EXPED
                              If [Codigo do Item]= [Answer->Codigo do Item]
                                 Then SALDO_EXPED = SALDO_EXPED + [Quantidade_Expedida]
                              EndIf   
                              Skip
                              If Eot() Then QuitLoop EndIf
                            EndWhile  
                    EndIf  
            EndIf
            Moveto "\\Sistemas\\Vendas\\ExpedC"
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next NPED
            If Not RetVal
               Then QuitLoop
            EndIf
          EndWhile  
  EndIf           

  Moveto TabelaP
  End
  Down
  [Numero do Pedido       ]=[Answer->Numero do Pedido       ]
  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
  [Data de Emissao        ]=[Answer->Data de Emissao        ]
  [Data de Entrega        ]=[Answer->Data de Entrega        ]
  [Codigo                 ]=[Answer->Codigo                 ]
  [Razao Social           ]=[Answer->Razao Social           ]
  [UF                     ]=[Answer->UF                     ]
  [Cidade                 ]=[Answer->Cidade                 ]
  [Codigo do Representante]=[Answer->Codigo do Representante]
  [Nome Fantasia Represent]=[Answer->Nome Fantasia Represent]
  [Numero_Carregamento    ]=[Answer->Numero_Carregamento    ]
  [Item do Pedido         ]=[Answer->Item do Pedido         ]
  [Codigo do Item         ]=[Answer->Codigo do Item         ]
  [Descricao do Item      ]=[Answer->Descricao do Item      ]
  [Descricao da Cor_Tecido]=[Answer->Descricao da Cor_Tecido]
  [Tipo do Item           ]=[Answer->Tipo do Item           ]
  [Qtde_Pedida            ]=[Answer->Quantidade             ]
  [Qtde_Faturada          ]=[Answer->Quantidade Faturada    ]
  [Observacao do Pedido   ]=[Answer->Observacao do Pedido   ]
  [Referencia             ]=[Answer->Referencia             ]
  If VSDGRELEXP="3"
     Then [Sequencia]=[Answer->Sequencia]
  EndIf   
  If [Answer->Saldo]>0
     Then [Qtde_AFaturar  ]=[Answer->Saldo                  ]
  EndIf
  QTDE =[Qtde_AFaturar]
  FALTA=[Qtde_AFaturar]

  Moveto TabelaTP
  End
  Down
  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Codigo do Item         ]=[Answer->Codigo do Item         ]
  [Saldo                  ]=QTDE
  UnLockRecord

  Moveto TabelaI
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],
         [Answer->Codigo do Item   ]
  If RetVal                           
     Then If [Saldo]>0
             Then SALDOATUAL=[Saldo]
             Else SALDOATUAL=0
          EndIf
          
          If SALDO_EXPED > 0
             Then SALDOATUAL = SALDOATUAL + SALDO_EXPED
          EndIf
          
          NOVOSALDO=SALDOATUAL-QTDE
          If NOVOSALDO<0
             Then FALTA=QTDE-SALDOATUAL
                  PEDOK=False
             Else FALTA=0
          EndIf
          [Saldo]=[Saldo]-QTDE + SALDO_EXPED
  EndIf

  Moveto TabelaP
  If SALDO_EXPED > 0
     Then [Qtde_Expedida] = SALDO_EXPED
          If (QTDE - SALDO_EXPED)<0
             Then [Qtde_AExpedir] = 0
             Else [Qtde_AExpedir] = QTDE - SALDO_EXPED
          EndIf
     Else [Qtde_AExpedir] = QTDE
  EndIf     

  If FALTA>0
     Then [Qtde_Falta     ]=FALTA
  EndIf

  Moveto "Answer"
EndScan
Estorno()
Do_It!
ClearAll

Switch
  Case VSDGOPANALISE="1" Or VSDGOPANALISE="3" Or VSDGOPANALISE="4":
       If VSDGOPANALISE="3"  Or VSDGOPANALISE="4"
          Then {Ask} TypeIn TabelaP Enter TypeIn "Delete"
               Moveto [Qtde_Falta ] TypeIn "> 0"
               Do_It!
               ClearAll
               
               If IsTable("Deleted")
                  Then {Ask} {Deleted}
                       Moveto [Numero do Pedido] Example "Ped"
                       Moveto [Referencia      ] Example "Ref"
                       If VSDGOPANALISE="4"
                          Then Moveto [Descricao da Cor_Tecido] Example "Cor"
                       EndIf
                       {Ask} TypeIn TabelaP Enter TypeIn "Delete"
                       Moveto [Numero do Pedido] Example "Ped"
                       Moveto [Referencia      ] Example "Ref"
                       If VSDGOPANALISE="4"
                          Then Moveto [Descricao da Cor_Tecido] Example "Cor"
                       EndIf
                       Do_It!
                       ClearAll
               EndIf
       EndIf   
       
       If VSDGOPCAO[2]=False
          Then Return
       EndIf

       {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
       Moveto [Qtde_Falta      ] TypeIn "Blank or 0"
       Do_It!
       ClearAll
       Return
EndSwitch
                
{Ask} TypeIn TabelaP Enter
Moveto [Numero do Pedido] Check
Moveto [Qtde_Falta      ] TypeIn ">0"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Numero do Pedido] Example "np"
{Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
Moveto [Numero do Pedido] Example "np"
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Estorna Estoque e Limpa Pedido Temporario                                   *
;*******************************************************************************
Proc Estorno()

If Not PEDOK And VSDGOPANALISE="2"
   Then Moveto TabelaTP
        Scan
          CopyToArray REGTEMP

          Moveto TabelaI
          Moveto [Codigo da Empresa]
          Locate REGTEMP["Codigo da Empresa"],
                 REGTEMP["Codigo do Item"]
          If RetVal
             Then [Saldo]=[Saldo]+REGTEMP["SALDO"]
          EndIf
          Moveto TabelaTP
        EndScan
EndIf

Moveto TabelaTP
Home
While True
  If Not RecordStatus("New")
     Then Del
     Else QuitLoop
  EndIf
EndWhile

EndProc

;*******************************************************************************
;* Seleciona Epedicao para impressao                                            *
;*******************************************************************************
Proc Seleciona_Expedicao()

{Ask} TypeIn TabelaP Enter
Moveto [Numero do Pedido   ] Check Example "NPed"
{Ask} {\\Sistemas\\Vendas\\Expedc}
Moveto [Numero do Pedido   ] Example "NPed"
Moveto [Numero da OE       ] Example "NOe"
{Ask} {\\Sistemas\\Vendas\\Expedi}
Moveto [Numero da OE       ] Example "NOe"
Moveto [Codigo do Item     ] Check
Moveto [Quantidade_Expedida] Check TypeIn ">0"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf   

{Ask} {Answer}
Moveto [Numero do Pedido   ] TypeIn "_NPed"
Moveto [Codigo do Item     ] TypeIn "_CodI"
Moveto [Quantidade_Expedida] TypeIn "_QtdE"
{Ask} TypeIn TabelaP Enter
Moveto [Numero do Pedido   ] TypeIn "_NPed"   
Moveto [Codigo do Item     ] TypeIn "_CodI"   
Moveto [Qtde_Expedida      ] TypeIn "Changeto _QtdE" 
Do_It!
ClearAll

; Rotina para conferir todos os itens que ja tiveram sido expedidos, pois, sendo 
; estes expedidos, j  sairam do estoque e por esse motivo, nÆo precisam ser controlados
; o que resuta no saldo final do estoque (Qtd_Falta), onde nÆo ser  calculado.

{Ask} TypeIn TabelaP Enter
Moveto [Qtde_AFaturar    ] TypeIn "Blank, Changeto 0" Down 
Moveto [Qtde_Expedida    ] TypeIn "Blank, Changeto 0" Down
Moveto [Qtde_AExpedir    ] TypeIn "Blank, Changeto 0" Down
Moveto [Qtde_Falta       ] TypeIn "Blank, Changeto 0"
Do_It!
ClearAll

Copy TabelaP "Answer" 

{Ask} {Answer}
Moveto [Numero do Pedido   ] TypeIn "_NPed"
Moveto [Codigo do Item     ] TypeIn "_CodI"
Moveto [Qtde_AFaturar      ] TypeIn "_QtdAf" 
Moveto [Qtde_Expedida      ] TypeIn "_QtdEx"
Moveto [Qtde_AExpedir      ] TypeIn "_QtdA"
Moveto [Qtde_Falta         ] TypeIn "_QtdF"
{Ask} TypeIn TabelaP Enter 
Moveto [Numero do Pedido   ] TypeIn "_NPed"
Moveto [Codigo do Item     ] TypeIn "_CodI"                       
Moveto [Qtde_AExpedir      ] TypeIn "Changeto _QtdAf - _QtdEx"
Moveto [Qtde_Falta         ] TypeIn "Changeto _QtdF  - _QtdEx"
Do_It!
ClearAll

{Ask} TypeIn TabelaP Enter 
Moveto [Qtde_Pedida      ] TypeIn "0, Changeto blank" Down          
Moveto [Qtde_Faturada    ] TypeIn "0, Changeto blank" Down 
Moveto [Qtde_AFaturar    ] TypeIn "0, Changeto blank" Down              
Moveto [Qtde_Expedida    ] TypeIn "0, Changeto blank" Down             
Moveto [Qtde_AExpedir    ] TypeIn "0, Changeto blank" Down            
Moveto [Qtde_Falta       ] TypeIn "0, Changeto blank" Down
Do_It!
ClearAll

;*** Se quantidade que falta for < 0 , ‚ porque tem em estoque devido aos calculos acima... 
{Ask} TypeIn TabelaP Enter         
Moveto [Qtde_Falta       ] TypeIn "< 0, Changeto blank"
Do_It!
ClearAll

EndProc ;Seleciona_Expedicao()

;*******************************************************************************
;* Rotina para Agrupar Itens                                                   *
;*******************************************************************************
Proc Agrupa_Itens()

{Ask} TypeIn TabelaP Enter   
Moveto [Codigo da Empresa     ] Check
Moveto [Nome Fantasia Empresa ] Check
If VSDGOPRELANALSINT="1"
   Then Moveto [Codigo do Item] Check
        Moveto [Descricao do Item] Check
   Else Moveto [Referencia    ] Check Example "Ref" TypeIn ", as Codigo do Item"        
EndIf
Moveto [Qtde_Pedida      ] TypeIn "Calc Sum as Qtd Pedida"             
Moveto [Qtde_Faturada    ] TypeIn "Calc Sum as Qtd Faturada"               
Moveto [Qtde_AFaturar    ] TypeIn "Calc Sum as Qtd AFaturar"               
Moveto [Qtde_Expedida    ] TypeIn "Calc Sum as Qtd Expedida"               
Moveto [Qtde_AExpedir    ] TypeIn "Calc Sum as Qtd AExpedir"               
Moveto [Qtde_Falta       ] TypeIn "Calc Sum as Qtd Falta" 
Do_It!
ClearAll

Copy "Answer" "a1"

If VSDGOPRELANALSINT="2"
   Then {Ask} {a1} Check
        Moveto [Codigo do Item   ] Example "CodI"
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item   ] TypeIn "..0000"
        Moveto [Referencia       ] Example "CodI"
        Moveto [Descricao do Item] Check
        Do_It!
        ClearAll   
EndIf
 
Empty TabelaP 
 
{Ask} {Answer}
Moveto [Codigo da Empresa    ] Example "Emp"
Moveto [Nome Fantasia Empresa] Example "NFEmp"
Moveto [Codigo do Item       ] Example "CodI"
Moveto [Descricao do Item    ] Example "DescI"
Moveto [Qtd Pedida           ] Example "QtdP"
Moveto [Qtd Faturada         ] Example "QtdF"
Moveto [Qtd AFaturar         ] Example "QtdAF"
Moveto [Qtd Expedida         ] Example "QtdE"
Moveto [Qtd AExpedir         ] Example "QtdAE"              
Moveto [Qtd Falta            ] Example "QtdFT"
{Ask} TypeIn TabelaP Enter TypeIn "Insert" Enter
Moveto [Codigo da Empresa    ] Example "Emp"
Moveto [Nome Fantasia Empresa] Example "NFEmp"
Moveto [Codigo do Item       ] Example "CodI"
Moveto [Descricao do Item    ] Example "DescI"
Moveto [Qtde_Pedida          ] Example "QtdP"  
Moveto [Qtde_Faturada        ] Example "QtdF"        
Moveto [Qtde_AFaturar        ] Example "QtdAF"     
Moveto [Qtde_Expedida        ] Example "QtdE"              
Moveto [Qtde_AExpedir        ] Example "QtdAE"              
Moveto [Qtde_Falta           ] Example "QtdFT"
Do_It!
ClearAll     

View TabelaP     
ClearAll     

EndProc ;Agrupa_Itens()

;*******************************************************************************
;* Somente Expedi‡Æo                                                                      *
;*******************************************************************************
Proc Somente_Expedicao()   

{Ask} {\\Sistemas\\Vendas\\Expedc}
Moveto [Numero do Pedido] Example "Ped"
Moveto [Situacao da OE  ] TypeIn "EM ABERTO Or LIBERADO"
{Ask} TypeIn TabelaP Enter Check
Moveto [Numero do Pedido] Example "Ped"
Do_It!
ClearAll

Empty TabelaP
Add "Answer" TabelaP
   
EndProc ;Somente_Expedicao()

;*******************************************************************************
;* 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: 
          If Campo="TG_OPANALISE"
             Then Echo Normal
                  Echo Off
                  ShowPopup " Fun‡”es " @ 09,04
                  "~1~ TODOS OS PEDIDOS          " : " Todos os Pedidos                                       " :"1",
                  "~2~ SO COM ESTOQUE            " : " Todos os Pedidos com Estoque                           " :"2",
                  "~3~ GRADE COMPLETA - REF      " : " Somente os Pedidos com Grade Completa - Referencia     " :"3",
                  "~4~ GRADE COMPLETA - REF/COR  " : " Somente os Pedidos com Grade Completa - Referencia+Cor " :"4",
                  Separator,
                   "~C~ancelar                  ": " Cancelar a Opera‡„o                " : "CANCELAR"
                  EndMenu
                  To MenuVar
                  Echo Off
                  If MenuVar="CANCELAR" Or MenuVar="Esc"
                     Then
                     Else VSDGOPANALISE = MenuVar
                           Switch
                             Case VSDGOPANALISE="1": VSDGNOMOPANALISE="TODOS PEDIDOS"
                             Case VSDGOPANALISE="2": VSDGNOMOPANALISE="SO COM ESTOQUE"
                             Case VSDGOPANALISE="3": VSDGNOMOPANALISE="GRADE COMPLETA - R"
                             Case VSDGOPANALISE="4": VSDGNOMOPANALISE="GRADE COMPLETA - RC"
                           EndSwitch
                  EndIf
             Else Dialog_F1()
          EndIf
     Case Evento["KeyCode"] = -68  :
            Temp=False
            Relatorios()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_PEDIDO"         : Campo="TG_EMPRESA"
            Case Campo="TG_MARCA"          : Campo="TG_PEDIDO"
            Case Campo="TG_GRP"            : Campo="TG_MARCA"
            Case Campo="TG_FAMI"           : Campo="TG_GRP"
            Case Campo="TG_OPANALISE"      : Campo="TG_FAMI"
            Case Campo="TG_VRMINIMO"       : Campo="TG_OPANALISE"
            Case Campo="TG_OPRELANALSINT"  : Campo="TG_VRMINIMO"
            Case Campo="TG_ORDEM"          : Campo="TG_OPRELANALSINT"
            Case Campo="TG_DTINI2"         : Campo="TG_ORDEM"
            Case Campo="TG_DTFIM2"         : Campo="TG_DTINI2"
            Case Campo= "TG_RELEXP"        : Campo="TG_DTFIM2"
            Case Campo="TG_OPCOES"         : Campo="TG_RELEXP"
            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_PEDIDO"
                    Case Campo="TG_PEDIDO"      : 
                         If IsBlank(VSDGPEDIDO)
                            Then Campo="TG_MARCA"
                            Else Campo="TG_OPANALISE"
                                 VSDGMARCA      = ""
                                 VSDGNOMMARCA   = ""
                                 VSDGGRP        = ""
                                 VSDGNOMGRP     = ""
                                 VSDGFAMI       = ""
                                 VSDGNOMFAMI    = ""                                 
                                 VSDGDTINI2     = BlankDate()
                                 VSDGDTFIM2     = BlankDate()
                         EndIf
                    Case Campo="TG_MARCA"            : Campo="TG_GRP" 
                    Case Campo="TG_GRP"              : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"             : Campo="TG_OPANALISE"
                    Case Campo="TG_OPANALISE"        : Campo="TG_VRMINIMO"
                         VSDGOPANALISE=ControlValue("TG_OPANALISE")
                         Switch
                           Case VSDGOPANALISE="2": VSDGNOMOPANALISE="SO COM ESTOQUE"
                           Case VSDGOPANALISE="3": VSDGNOMOPANALISE="GRADE COMPLETA - R"
                           Case VSDGOPANALISE="4": VSDGNOMOPANALISE="GRADE COMPLETA - RC"
                           OtherWise             : VSDGNOMOPANALISE="TODOS PEDIDOS"
                                                   VSDGOPANALISE="1"
                         EndSwitch
                    Case Campo="TG_VRMINIMO"        : Campo="TG_OPRELANALSINT"     
                         VSDGVRMINIMO = ControlValue("TG_VRMINIMO")                    
                    Case Campo="TG_OPRELANALSINT"   : Campo="TG_ORDEM"
                         VSDGOPRELANALSINT=ControlValue("TG_OPRELANALSINT") 
                         If VSDGOPRELANALSINT="2"
                            Then VSDGNOMOPRELANALSINT="COM REFERENCIA ITEM"
                            Else VSDGOPRELANALSINT="1"
                                 VSDGNOMOPRELANALSINT="COM CODIGO ITEM"
                         EndIf
                    Case Campo="TG_ORDEM"           : Campo="TG_DTINI2"
                         VSDGORDEM=ControlValue("TG_ORDEM") 
                         If VSDGORDEM="2"
                            Then VSDGNOMORDEM="SINTETICO"
                            Else VSDGORDEM="1"
                                 VSDGNOMORDEM="ANALITICO"
                         EndIf
                    Case Campo="TG_DTINI2"          : Campo="TG_DTFIM2"
                    Case Campo="TG_DTFIM2"          : Campo="TG_RELEXP"
                    Case Campo="TG_RELEXP"          : Campo="TG_OPCOES"
                         VSDGRELEXP = ControlValue("TG_RELEXP")
                         Switch
                           Case VSDGRELEXP="2" : VSDGNOMRELEXP = "PEDIDOS EM EXPEDICAO"
                           Case VSDGRELEXP="3" : VSDGNOMRELEXP = "RELACAO DE PEDIDOS"
                           OtherWise           : VSDGRELEXP    = "1"
                                                 VSDGNOMRELEXP = "TODOS PEDIDOS"
                         EndSwitch
                    Case Campo="TG_OPCOES"     : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"  : Campo="YES"
                  EndSwitch
          EndIf
   EndSwitch
EndIf

Switch
  Case Campo="TG_VRMINIMO" :
       MSG_CAMPO="Valor m¡nimo de pedidos a serem informados"
  Case Campo="TG_RELEXP":
       MSG_CAMPO="Op‡”es de Pedidos: 1=Todos  2=Em Expedi‡„o  3=Rela‡„o de Pedidos"
  Case Campo="TG_OPANALISE":
       MSG_CAMPO="F1=Consulta"
  Case Campo="TG_OPCOES":
       MensagemCheckBoxes()
  Case Campo="TG_OPRELANALSINT":    
       MSG_CAMPO="1=COM CODIGO ITEM   2=COM REFERENCIA ITEM"
  Case Campo="TG_ORDEM":    
       MSG_CAMPO="1=ANALITICO   2=SINTETICO"     
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

TG_CODMODELO_COMCASASDECIMAIS=true

VSDGCODMODELO     = ""
VSDGMODELO        = ""

ConfigOpcoes("ModeloRelatorio/CasasDecimais","Ler","OP_0500")  

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01 - Relat¢rio de Libera‡„o de Pedidos")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista
                            
;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

SYS_VALOR()

ClearAll

VSDGEMPRESA          = ""
VSDGMESANO           = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
VSDGMES              = SubStr(VSDGMESANO,1,2)
VSDGANO              = SubStr(VSDGMESANO,4,4)
VSDGDTREF            = Today()
VSDGOPOF             = "S"
VSDGOPANALISE        = ""
VSDGNOMOPANALISE     = ""
VSDGNOMOPRELANALSINT = ""
VSDGZERADO           = "N"
VSDGDTINI2           = BlankDate()
VSDGDTFIM2           = BlankDate()
VSDGVRMINIMO         = BlankNum()
VSDGPEDIDO           = ""
VSDGMARCA            = ""
VSDGGRP              = ""
VSDGFAMI             = ""
VSDGNOMGRP           = ""
VSDGNOMFAMI          = ""
VSDGNOMMARCA         = ""
VSDGRELEXP           = ""
VSDGNOMRELEXP        = ""

;---- Op‡Æo de An lise 3 - SO COM GRADE COMPLETA -------------------------------
;Parƒmetro para controle de grade completa apenas por referˆncia ou referˆncia/cor
If SYS_CODIGO_CLIENTE="0227"
   Then PARAM_REFERENCIA_COR = True
   Else PARAM_REFERENCIA_COR = False
EndIf

Array VSDGOPCAO[3]

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Liberacao de Pedidos com Estoque" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 01,07 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 "Mˆs/Ano Estoque"  For "TG_MESANO"
    Accept @ 03,01  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO

    Label  @ 02,20 "Data Final" For "TG_DTREF"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Label  @ 04,00 "Pedido" For "TG_PEDIDO"
    Accept @ 05,01 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO" To VSDGPEDIDO
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_PEDIDO" To VSDGNOMPEDIDO

    Label  @ 06,00 "Marca"  For "TG_MARCA"                                                             
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 08,00 "Grupo"  For "TG_GRP"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 10,00 "Fam¡lia"  For "TG_FAMI"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI
    
    Label  @ 00,35 "Op‡„o de An lise" For "TG_OPANALISE"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2,3,4" Tag "TG_OPANALISE" To VSDGOPANALISE
    Accept @ 01,44 Width 25 "A26"  Picture "!*!" Tag "TG_NOMOPANALISE" To VSDGNOMOPANALISE

    Label  @ 02,35 "Valor M¡nimo" For "TG_VRMINIMO"
    Accept @ 03,36 Width 13 "$"  Picture "#*#.[##]" Tag "TG_VRMINIMO" To VSDGVRMINIMO

    Label  @ 04,35 "Op‡„o de Modelo" For "TG_OPRELANALSINT"
    Accept @ 05,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 05,44 Width 25 "A26"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT

    Label  @ 06,35 "Op‡„o de Relat¢rio" For "TG_ORDEM"
    Accept @ 07,39 Width 04 "A1"  Picture "1,2" Tag "TG_ORDEM" To VSDGORDEM
    Accept @ 07,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMORDEM" To VSDGNOMORDEM

    Label  @ 08,35 "Per¡odo de Entrega de" For "TG_DTINI2"
    Accept @ 09,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI2" To VSDGDTINI2
    Label  @ 09,51 "at‚" For "TG_DTFIM2"
    Accept @ 09,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM2" To VSDGDTFIM2
    
    Label  @ 10,35 "Op‡„o de Pedidos" For "TG_RELEXP"
    Accept @ 11,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_RELEXP" To VSDGRELEXP
    Accept @ 11,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMRELEXP" To VSDGNOMRELEXP

    Label  @ 12,00 "Op‡”es" For "TG_OPCOES"
    CheckBoxes @13,00 Height 5 Width 50 Tag "TG_OPCOES"
    "Imprimir Invent rio Final apos libera‡”es" to VSDGOPCAO[1],
    "Imprimir apenas itens em Falta           " to VSDGOPCAO[2],
    "Agrupamento dos Itens                    " to VSDGOPCAO[3]
    
    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 ValidarModelosRelatorios() then loop endif         
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf
  
  If Not VSDGRELEXP="3" And VSDGVRMINIMO<>BlankNum()
     Then Mensagem("Op‡„o de valor m¡nimo apenas para Rela‡„o de Pedidos")
          Loop
  EndIf
  
  If VSDGPEDIDO <> ""
     Then VSDGDTINI2 = BlankDate()
          VSDGDTFIM2 = BlankDate()
  EnDIf
  
  Switch
    Case VSDGOPANALISE="1" : OPANALISE = "TODOS OS PEDIDOS"
    Case VSDGOPANALISE="2" : OPANALISE = "SO COM ESTOQUE"
    Case VSDGOPANALISE="3" : OPANALISE = "GRADE COMPLETA - REFERENCIA"
    Case VSDGOPANALISE="4" : OPANALISE = "GRADE COMPLETA - REFERENCIA/COR"
    OtherWise              : OPANALISE = ""   
  Endswitch

  Switch
    Case VSDGOPRELANALSINT="1" : OPANALISESINT = "Codigo"
    Case VSDGOPRELANALSINT="2" : OPANALISESINT = "Referencia"
    OtherWise                  : OPANALISESINT = ""   
  Endswitch

  ;-----------------------------------------------------------------------------
  AGUARDE("Aguarde, Checando Dados")
  PROCESSAR_DADOS=True
  MSG_MODULO=""

  VSDGDTINI  = DateVal("01."+VSDGMES+"."+VSDGANO) ;;Data Movimento Estoque
  VSDGDTFIM  = VSDGDTREF

  Monta_Dir_Trab(PrimeiroDia_MesAnterior(VSDGDTINI),UltimoDia_MesPosterior(VSDGDTFIM))
  While Novo_Dir_Trab()
    If Not IsBlank(Dir_Trab)
       Then Verifica_Mov()
    EndIf
  EndWhile

  If Not PROCESSAR_DADOS
     Then MSG="Existem movimenta‡”es Fechadas://"
          MSG=MSG+MSG_MODULO+" //"
          MSG=MSG+"Usar esta rotina apenas para Mes em Aberto.// //"
          MSG=MSG+"Verificar !"
          Mensagem(MSG)
          Loop
  EndIf
;-------------------------------------------------------------------------------

  AGUARDE("Aguarde, processando Estoque")

  ;*** Inventario ***
  TabelaI=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Estoque\\Rm_0501" TabelaI
  Empty TabelaI

  ;*** Pedido Temporario ***
  TabelaTP=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Estoque\\Rm_0501" TabelaTP
  Empty TabelaTP

  ;*** Pedidos ***
  TabelaP=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Estoque\\Rm_0500" TabelaP
  Empty TabelaP

  ;---- Processo adptado no NotaC o qual foi alterado para outra proc p/ utiliza‡Æo de REGRA -------
  Identifica_MesAno_Periodo(VSDGDTINI,VSDGDTFIM)
  For out from 1 to ArraySize(MESANO_DTINI)
    AUX_DTINI = MESANO_DTINI[out]
    AUX_DTFIM = MESANO_DTFIM[out]
 
    If Not Verifica_Emissao_Saida(AUX_DTFIM)
       Then Return
    EndIf    
    
    Monta_Dir_Trab(AUX_DTINI,AUX_DTFIM)
    While Novo_Dir_Trab()
      Seleciona_NotaC()   
    EndWhile
  EndFor

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona_Estoque()
  EndWhile
  Saldo_Inicial()

  AGUARDE("Aguarde, processando Estoque")
  Seleciona_Pedidos()         
  Processa()

	If IsEmpty(TabelaP)
		 Then MENSAGEM("N„o Existem Registros a Processar (Pedidos)")
		      Loop
	EndIf
   
  If VSDGOPCAO[1]
     Then Inventario()
          Sleep 2000
  EndIf
  
  If VSDGRELEXP="2"
     Then Somente_Expedicao()
  EndIf
  
  If IsEmpty(TabelaP)
     Then If                          IsTable("Answer") Then Delete "Answer"  EndIf
          If IsAssigned(TabelaI)  And IsTable(TabelaI)  Then Delete TabelaI   EndIf
          If IsAssigned(TabelaP)  And IsTable(TabelaP)  Then Delete TabelaP   EndIf
          If IsAssigned(TabelaTP) And IsTable(TabelaTP) Then Delete TabelaTP  EndIf
          If IsAssigned(Tabela)   And IsTable(Tabela)   Then Delete Tabela    EndIf
          Mensagem("N„o h  registros conforme sele‡„o!")
          Loop
  EndIf

  If Not IsEmpty(TabelaP)
     Then Switch
              Case VSDGOPCAO[3]             : Agrupa_Itens()
                                              REL = "3" 
              Case VSDGORDEM="2"            : REL = "5"
              Case VSDGOPRELANALSINT="1"    :
                   Switch
                     Case VSDGOPANALISE="1" Or VSDGOPANALISE="3" Or VSDGOPANALISE="4":
                          REL = "R"
                     Case VSDGOPANALISE="2" : 
                          REL = "1"
                   EndSwitch
              Case VSDGOPRELANALSINT="2" :
                   Switch
                     Case VSDGOPANALISE="1" Or VSDGOPANALISE="3" Or VSDGOPANALISE="4" :
                          REL = "2"
                     Case VSDGOPANALISE="2" : 
                          REL = "1"
                   EndSwitch   
          EndSwitch
  EndIf

  ;---- Conforme a Ordem da Rela‡Æo de Pedidos (RPedidos) ----------------------
  Switch
    Case VSDGRELEXP="2" :
         {Ask} TypeIn TabelaP Enter
         Moveto [Numero do Pedido] Example "Ped"
         {Ask} {\\Sistemas\\Vendas\\ExpedC}
         Moveto [Numero da OE    ] Check
         Moveto [Numero do Pedido] Check Example "Ped"
         Do_it!
         ClearAll
         
         Sort "Answer" On "Numero da OE","Numero do Pedido"
         ClearAll
         
         NR  = NRecords("Answer")
         SEQ = 0
         
         View TabelaP
         Coedit "Answer"
         Scan
           Barra(NR, RecNo())
           Aguarde("Aguarde, Ordenando Registros "+BARRA_STRING)
         
           SEQ = SEQ + 1
           PED = [Numero do Pedido]

           Moveto TabelaP
           Moveto [Numero do Pedido]
           Locate PED
           If RetVal
              Then While True
                     If PED = [Numero do Pedido]
                        Then [Sequencia] = SEQ
                     EndIf
                     Skip
                     If Eot() Then QuitLoop EndIf
                     Locate Next PED
                     If Not RetVal Then QuitLoop EndIf
                   EndWhile
           EndIf
           Moveto "Answer"
         EndScan
         Do_it!
         ClearAll
         
         Seta_Ordem_Report(TabelaP,REL,"Data de Entrega","Sequencia","")
    Case VSDGRELEXP="3":
         Seta_Ordem_Report(TabelaP,REL,"Data de Entrega","Sequencia","")
  EndSwitch
  
  VSDGDTINI = VSDGDTINI2
  VSDGDTFIM = VSDGDTFIM2
  IMPRIREL(TabelaP,REL)
  
  LimpAguarde()
  Delete "Answer"
  Delete TabelaI
  Delete TabelaP
  Delete TabelaTP
  If IsAssigned(Tabela) And IsTable(Tabela) And VSDGRELEXP="3"
     Then Delete Tabela
  EndIf   

  ConfigOpcoes("ModeloRelatorio/CasasDecimais","Gravar","OP_0500")  
EndWhile
ClearAll
Release Vars All
Release Procs All
