;** 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()
;Ultima Alteracao: 08/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes logica, otimiza‡Æo de tempo e filtro rela‡Æo de pedidos
;Ultima Alteracao: 17/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask c/ erro
;Ultima Alteracao: 31/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask itens com changeto
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

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

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"
  Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
  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

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, selecionando 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")

AGUARDE("Aguarde, calculando estoque atual")

;******** 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)

Adiciona_Indice(TabelaI,"Codigo da Empresa,Codigo do Item")

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        ] check
Moveto [Tipo do Item          ] check
Moveto [Descricao do Item     ] check
Moveto [Unidade Interna       ] check
Moveto [Referencia            ] check
Do_It!
ClearAll
TabelaItens=Adiciona_Indice_Temp("Codigo do Item")

{Ask} TypeIn TabelaItens Enter
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
Delete TabelaItens


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()

AGUARDE("Aguarde, selecionando pedidos")
switch
  case VSDGRELEXP="2":
    {Ask} {\\Sistemas\\Vendas\\Expedc}
    Moveto [Numero do Pedido] Check 
    Moveto [Numero da OE    ]       typein "Calc Min as Sequencia"
    Moveto [Situacao da OE  ]       typeIn "EM ABERTO Or LIBERADO"
    do_it!
    clearall
    Adiciona_Indice("Answer","Numero do Pedido")

    {Ask} {Answer}
    Moveto [Numero do Pedido       ] Check Example "Pedido"
    Moveto [Sequencia              ] Check 
    {Ask} {\\Sistemas\\Vendas\\PedidoC}
    Moveto [Numero do Pedido       ]       Example "Pedido"

  case VSDGRELEXP="3":
    {Ask} {\\Sistemas\\Estoque\\RPedidos}
    Moveto [Numero do Pedido       ] Check Example "Pedido"
    Moveto [Sequencia              ] Check 
    {Ask} {\\Sistemas\\Vendas\\PedidoC}
    Moveto [Numero do Pedido       ]       Example "Pedido"

  otherwise          :
    {Ask} {\\Sistemas\\Vendas\\PedidoC}
    Moveto [Numero do Pedido       ] Check                  typein "~VSDGPEDIDO.."
    Moveto [Situacao do Pedido     ] TypeIn "ABERTO"
    If IsBlank(VSDGPEDIDO)
       Then Moveto [Data de Entrega] TypeIn ">=~VSDGDTINI2, <=~VSDGDTFIM2"
    EndIf    

endswitch
Moveto [Codigo da Empresa      ] Check typeIn "~VSDGEMPRESA.."
Moveto [Data de Entrega        ] Check  
Moveto [Observacao do Pedido   ] Check
If VSDGVRMINIMO > 0
   Then Moveto [Valor Nota Fiscal ] TypeIn ">=~VSDGVRMINIMO"
EndIf

do_it!
clearall

TabelaRP=Adiciona_indice_temp("Numero do Pedido")


TabelaTI=Cria_Temp(PrivDir())
Cria_Tabela(TabelaTI,"Numero do Pedido(A6),Codigo do Item(A10),Qtde_Pedida(N),Qtde_Faturada(N),Qtde_AFaturar(N),Qtde_Expedida(N)")


AGUARDE("Aguarde, selecionando itens dos pedidos")

{Ask} TypeIn TabelaRP Enter
Moveto [Numero do Pedido       ]       Example "Pedido"
{Ask} {\\Sistemas\\Vendas\\PedidoI}
Moveto [Numero do Pedido       ] Check Example "Pedido"
Moveto [Item do Pedido         ] Check
Moveto [Codigo do Item         ] Check 
Moveto [Quantidade             ] Check TypeIn ">" Example "qf"
Moveto [Quantidade Faturada    ] Check Example "qf"
do_it!
clearall

{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} {Answer} 
Moveto [Numero do Pedido       ] check
Moveto [Codigo do Item         ] Check Example "cite"
Moveto [Quantidade             ]       Typein "Calc Sum as \"Quantidade\""
Moveto [Quantidade Faturada    ]       Typein "Calc Sum as \"Quantidade Faturada\""
Do_It!
ClearAll

{Ask} {Answer} 
Moveto [Numero do Pedido       ] typein "_ped"
Moveto [Codigo do Item         ] typein "_item" 
Moveto [Quantidade             ] typein "_qtd" 
Moveto [Quantidade Faturada    ] typein "_qtdf"
{Ask} TypeIn TabelaTI Enter typein "Fast Insert"
Moveto [Numero do Pedido       ] typein "_ped"
Moveto [Codigo do Item         ] typein "_item" 
Moveto [Qtde_Pedida            ] typein "_qtd" 
Moveto [Qtde_Faturada          ] typein "_qtdf"
Moveto [Qtde_AFaturar          ] typein "_qtd - _qtdf"
Do_It!
ClearAll

;-------------------------------------------------------------------------------

AGUARDE("Aguarde, selecionando expedidos")

{Ask} TypeIn TabelaRP Enter
Moveto [Numero do Pedido   ]       Example "Pedido"
{Ask} {\\Sistemas\\Vendas\\ExpedC}
Moveto [Numero da OE       ]       Example "Expedic"
Moveto [Situacao da OE     ]       typeIn "EM ABERTO Or LIBERADO"
Moveto [Numero do Pedido   ] Check Example "Pedido"
{Ask} {\\Sistemas\\Vendas\\ExpedI}
Moveto [Numero da OE       ]       Example "Expedic"
Moveto [Codigo do Item     ] Check 
Moveto [Quantidade_Expedida]       typein "Calc Sum As \"Quantidade_Expedida\""
do_it!
clearall

Adiciona_Indice("Answer","Numero do Pedido,Codigo do Item")

{Ask} {Answer} 
Moveto [Numero do Pedido       ] typein "_ped"
Moveto [Codigo do Item         ] typein "_item" 
Moveto [Quantidade_Expedida    ] typein "_qtd" 
{Ask} TypeIn TabelaTI Enter typein "Fast"
Moveto [Numero do Pedido       ] typein "_ped"
Moveto [Codigo do Item         ] typein "_item" 
Moveto [Qtde_Expedida          ] typein "changeto _qtd" 
Do_It!
ClearAll

;-------------------------------------------------------------------------------

{Ask} TypeIn TabelaRP Enter check
Moveto [Numero do Pedido       ] check typein "_ped"
{Ask} TypeIn TabelaTI Enter check
Moveto [Numero do Pedido       ] typein "_ped"
Do_It!
ClearAll

Delete TabelaTI
delete TabelaRP

EndProc

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

If IsEmpty("Answer")
	 Then Return
EndIf

Aguarde("Aguarde, processando estoque/pedidos ")

TabelaTP=Cria_Temp(PrivDir())
Cria_Tabela(TabelaTP,"Codigo da Empresa(A4),Codigo do Item(A10),Qtde_AFaturar(N)")

If VSDGRELEXP="1"
   Then 
        Sort "Answer" On "Data de Entrega", "Numero do Pedido", "Codigo do Item"
        ClearAll         
   Else
        Sort "Answer" On "Sequencia","Numero do Pedido", "Codigo do Item" ;liberar na ordem crescente da rela‡Æo pedidos ou expedi‡Æo
        ClearAll  
EndIf

NR   =NRecords("Answer")

PEDOK=True
NPED="***"

View TabelaP
View TabelaTP
View TabelaI
Coedit "Answer"
NR = NRecords("Answer")
Scan
  Barra(NR, RecNo())
  
  Aguarde("Aguarde, Processando pedidos "+BARRA_STRING)

  If [Numero do Pedido]<>NPED
     Then Estorno()
  EndIf


  Moveto TabelaP
  End
  Down
  [Numero do Pedido       ]=[Answer->Numero do Pedido       ]
  [Codigo do Item         ]=[Answer->Codigo do Item         ]
  [Observacao do Pedido   ]=[Answer->Observacao do Pedido   ]
  [Qtde_Pedida            ]=[Answer->Qtde_Pedida            ]
  [Qtde_Faturada          ]=[Answer->Qtde_Faturada          ]
  [Qtde_AFaturar          ]=[Answer->Qtde_AFaturar          ]
  [Qtde_Expedida          ]=[Answer->Qtde_Expedida          ]
  switch
    case VSDGRELEXP="2" : [Sequencia]=numVal([Answer->Sequencia])
    case VSDGRELEXP="3" : [Sequencia]=[Answer->Sequencia]
  endswitch

  QTDE        = [Answer->Qtde_AFaturar]
  FALTA       = [Answer->Qtde_AFaturar]
  SALDO_EXPED = [Answer->Qtde_Expedida]

  if VSDGOPANALISE="2"
     then
          Moveto TabelaTP
          End
          Down
          [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
          [Codigo do Item         ]=[Answer->Codigo do Item         ]
          [Qtde_AFaturar          ]=[Answer->Qtde_AFaturar          ]
          UnLockRecord
  endif

  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
          
          NOVOSALDO=SALDOATUAL-QTDE
          If NOVOSALDO<0
             Then 
                  FALTA=QTDE-SALDOATUAL
                  PEDOK=False
             Else 
                  FALTA=0
          EndIf
          [Saldo]=[Saldo]-QTDE
  EndIf

  Moveto TabelaP
  If SALDO_EXPED > 0
     Then 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": 
    If VSDGOPCAO[2]
      Then 
           {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
           Moveto [Qtde_Falta      ] TypeIn "Blank or 0"
           Do_It!
           ClearAll
    EndIf

  Case VSDGOPANALISE="2": ;s¢ com estoque
    {Ask} TypeIn TabelaP Enter
    Moveto [Numero do Pedido       ] check
    Moveto [Qtde_Falta             ] TypeIn "> 0"
    Do_It!
    ClearAll
    
    If not IsEmpty("Answer")
       Then
            {Ask} {Answer}
            Moveto [Numero do Pedido] Example "np"
            {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
            Moveto [Numero do Pedido] Example "np"
            Do_It!
            ClearAll
    EndIf
       
  Case VSDGOPANALISE="3":   
   {Ask} TypeIn TabelaP Enter
    Moveto [Numero do Pedido       ] check
    Moveto [Referencia             ] check
    Moveto [Qtde_Falta             ] TypeIn "> 0"
    Do_It!
    ClearAll

    If not IsEmpty("Answer")
       Then
            {Ask} {Answer}
            Moveto [Numero do Pedido       ] Example "np"
            Moveto [Referencia             ] Example "Ref"
            {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
            Moveto [Numero do Pedido       ] Example "np"
            Moveto [Referencia             ] Example "Ref"
            Do_It!
            ClearAll
    EndIf
    
  Case VSDGOPANALISE="4":   
   {Ask} TypeIn TabelaP Enter 
    Moveto [Numero do Pedido       ] check
    Moveto [Referencia             ] check
    Moveto [Descricao da Cor_Tecido] check
    Moveto [Qtde_Falta             ] TypeIn "> 0"
    Do_It!
    ClearAll
     
    If not IsEmpty("Answer")
       Then 
            {Ask} {Answer}
            Moveto [Numero do Pedido       ] Example "np"
            Moveto [Referencia             ] Example "Ref"
            Moveto [Descricao da Cor_Tecido] Example "Cor"
            {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
            Moveto [Numero do Pedido       ] Example "np"
            Moveto [Referencia             ] Example "Ref"
            Moveto [Descricao da Cor_Tecido] Example "Cor"
            Do_It!
            ClearAll
    EndIf
       
EndSwitch
           

EndProc

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

If VSDGOPANALISE="2"
   then
        If Not PEDOK 
           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["Qtde_AFaturar"]
                  EndIf
                  Moveto TabelaTP
                EndScan
        EndIf
        
        Moveto TabelaTP
        Home
        While True
          If Not RecordStatus("New")
             Then Del
             Else QuitLoop
          EndIf
        EndWhile
endif

Moveto "Answer"
NPED=[Answer->Numero do Pedido]
PEDOK=True

EndProc


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

switch
  Case VSDGCODMODELO="03B"  :
    NR=NRecords(TabelaP)
    
    View NoWindow TabelaP
    EditKey
    Scan
      Barra(NR, RecNo())
      Aguarde("Aguarde, agrupando itens "+BARRA_STRING)
      
      [Codigo do Item]=PegaCodigoRaiz([Codigo do Item])
    EndScan
    Do_It!
    ClearAll

endswitch

{Ask} TypeIn TabelaP Enter   
Moveto [Codigo da Empresa     ] Check
Moveto [Nome Fantasia Empresa ] Check
Moveto [Codigo do Item        ] Check 
Moveto [Descricao do Item     ] Check
Moveto [Referencia            ] Check 
Moveto [Qtde_Pedida           ] TypeIn "Calc Sum as \"Qtde_Pedida\""             
Moveto [Qtde_Faturada         ] TypeIn "Calc Sum as \"Qtde_Faturada\""               
Moveto [Qtde_AFaturar         ] TypeIn "Calc Sum as \"Qtde_AFaturar\""               
Moveto [Qtde_Expedida         ] TypeIn "Calc Sum as \"Qtde_Expedida\""               
Moveto [Qtde_AExpedir         ] TypeIn "Calc Sum as \"Qtde_AExpedir\""               
Moveto [Qtde_Falta            ] TypeIn "Calc Sum as \"Qtde_Falta\"" 
Do_It!
ClearAll

Delete TabelaP
Rename "Answer" TabelaP
ClearAll
 
EndProc ;Agrupa_Itens()

;*******************************************************************************
;* 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 " @ 07,19
                  "~1~ TODOS OS PEDIDOS                         " : " Todos os pedidos                                        " :"1",
                  "~2~ Sà PEDIDOS COM ESTOQUE                   " : " Somente os pedidos com estoque                          " :"2",
                  "~3~ Sà PEDIDOS COM GRADE COMPLETA - REF      " : " Somente os pedidos - Com grade completa - Referencia    " :"3",
                  "~4~ Sà PEDIDOS COM 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="Sà COM ESTOQUE"
                             Case VSDGOPANALISE="3": VSDGNOMOPANALISE="GRADE COMPLETA-REF"
                             Case VSDGOPANALISE="4": VSDGNOMOPANALISE="GRADE COMPLETA-REF+COR"
                           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_DTINI2"         : Campo="TG_VRMINIMO"
            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-REF"
                           Case VSDGOPANALISE="4": VSDGNOMOPANALISE="GRADE COMPLETA-REF+COR"
                           OtherWise             : VSDGNOMOPANALISE="TODOS PEDIDOS"
                                                   VSDGOPANALISE="1"
                         EndSwitch
                    Case Campo="TG_VRMINIMO"        : Campo="TG_DTINI2"     
                         VSDGVRMINIMO = ControlValue("TG_VRMINIMO")                    
                    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 EM ABERTO"
                         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: 1=Todos em Aberto  2=Pedidos em Expedi‡„o  3=Rela‡„o de Pedidos"
  Case Campo="TG_OPANALISE":  MSG_CAMPO="Op‡äes, [F1]=Consultar tabela"
  Case Campo="TG_OPCOES"   :  MensagemCheckBoxes()
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 - Anal¡tico por Pedido/Referencia/Codigo do Item") ;R
ModeloRelatoriosAdd("01B- Anal¡tico por Pedido/Referencia/Cor")            ;2
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("02 - Sint‚tico por Pedido")                           ;5
;;;ModeloRelatoriosAdd("02B- Sint‚tico por Pedido II")                        ;1   sem sentido ver cliente que usava !
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("03 - Sint‚tico por Codigo do Item")                   ;3
ModeloRelatoriosAdd("03B- Sint‚tico por Referˆncia")                       ;3
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista
                            
;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Proc"
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     = ""
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[2]

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 "Per¡odo de Entrega de" For "TG_DTINI2"
    Accept @ 05,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI2" To VSDGDTINI2
    Label  @ 05,51 "at‚" For "TG_DTFIM2"
    Accept @ 05,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM2" To VSDGDTFIM2
    
    Label  @ 06,35 "Op‡„o de Pedidos" For "TG_RELEXP"
    Accept @ 07,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_RELEXP" To VSDGRELEXP
    Accept @ 07,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMRELEXP" To VSDGNOMRELEXP

    Label  @ 08,35 "Op‡”es para Imprimir" For "TG_OPCOES"
    CheckBoxes @09,35 Height 5 Width 43 Tag "TG_OPCOES"
    "Invent rio Final apos libera‡”es" to VSDGOPCAO[1],
    "Apenas itens em Falta de Estoque" to VSDGOPCAO[2]
    
    Label  @ 15,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 16,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 16,06  Width 71 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO

    Pushbutton @ 18,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,36 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 VSDGPEDIDO <> ""
     Then VSDGDTINI2 = BlankDate()
          VSDGDTFIM2 = BlankDate()
  EnDIf
  
  VSDGDTINI  = DateVal("01."+VSDGMES+"."+VSDGANO) ;;Data Movimento Estoque
  VSDGDTFIM  = VSDGDTREF

  AGUARDE("Aguarde, processando")

  ;*** Inventario ***
  TabelaI=Cria_Temp(PrivDir())
  Cria_Tabela(TabelaI,"Codigo da Empresa(A4),Codigo do Item(A10),Saldo(N)")

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

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

  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

  VSDGDTINI = VSDGDTINI2
  VSDGDTFIM = VSDGDTFIM2
  
  Switch
      Case VSDGCODMODELO="01"          : CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "R" TabelaP "R"
      Case VSDGCODMODELO="01B"         : CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "2" TabelaP "R"

      Case VSDGCODMODELO="02"          : CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "5" TabelaP "R"
      Case VSDGCODMODELO="02B"         : CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "1" TabelaP "R"

      Case VSDGCODMODELO="03"          : Agrupa_Itens()
                                         CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "3" TabelaP "R"

      Case VSDGCODMODELO="03B"         : Agrupa_Itens()
                                         CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0500" "3" TabelaP "R"
                                         Seta_Ordem_Report(TabelaP,"R","Codigo do Item","Referencia","")

  EndSwitch

  Switch
      Case VSDGCODMODELO="01"  or
           VSDGCODMODELO="01B" or      
           VSDGCODMODELO="02"  or      
           VSDGCODMODELO="02B"        :
        Switch
          Case VSDGRELEXP="2" : Seta_Ordem_Report(TabelaP,"R","Data de Entrega","Sequencia","")
          Case VSDGRELEXP="3" : Seta_Ordem_Report(TabelaP,"R","Data de Entrega","Sequencia","")
        EndSwitch
           
  EndSwitch

  IMPRIREL(TabelaP,"R")
  
  LimpAguarde()
  Delete TabelaI
  Delete TabelaP

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