;** ES_0002 ********************************************************************
;*  ITens com mais estoque, estoque minimo                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 21/10/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/11/2019 por Anivel Augusto Rodrigues     
;Motivo Alteracao: Ajustes estoque/referencia, itens sem venda
;Ultima Alteracao: 07/11/2019 por Anivel Augusto Rodrigues     
;Motivo Alteracao: Ajustes item data cadastro, inativo
;Ultima Alteracao: 27/04/2020 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 29/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc ES_0002_SelecionaDados()
private i

AGUARDE("Aguarde, Calculando estoque")

{Ask} {\\Sistemas\\Vendas\\Destin}
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Atualiza Estoque         ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Check Example "doc"
Moveto [Serie do Documento       ] Check Example "ser"
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Data de Emissao          ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo Movimento Estoque   ] TypeIn "S"
Moveto [Situacao                 ] TypeIn "Not C"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Item do Documento        ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Situacao_Item            ] TypeIn "Not C"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Data de Emissao          ] Example "dtref"
Moveto [Item do Documento        ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "NOTAI"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "S"
Moveto [Quantidade               ] Example "qtd"
Do_It!
ClearAll

;*** Notas de Entrada/Faturamento ***
{Ask} {\\Sistemas\\Vendas\\Destin}
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Atualiza Estoque         ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Check Example "doc"
Moveto [Serie do Documento       ] Check Example "ser"
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Descricao da Destinacao  ] TypeIn "Not ..DEVOL.., Not ..MANIF..,  Not ..CONSIG..,  Not ..REQUIS.., Not ..MOSTRUA.."
Moveto [Data de Emissao          ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo Movimento Estoque   ] TypeIn "E"
Moveto [Situacao                 ] TypeIn "Not C"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Item do Documento        ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Preco Total              ] Check
Moveto [Valor do ICMS            ] Check
Moveto [Valor do IPI             ] Check
Moveto [Valor Desconto Total     ] Check
Moveto [Situacao_Item            ] TypeIn "Not C"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Data de Emissao          ] Example "dtref"
Moveto [Item do Documento        ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Moveto [Preco Total              ] Example "vrtot"
Moveto [Valor do ICMS            ] Example "vricms"
Moveto [Valor do IPI             ] Example "vripi"
Moveto [Valor Desconto Total     ] Example "vrdes"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "NOTAI"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "E"
Moveto [Quantidade               ] Example "qtd"
Moveto [Valor Unitario           ] TypeIn "((" Example "vrtot" TypeIn "-(" Example "vrdes" TypeIn "+" Example "vricms" TypeIn "))+"
                                   Example "vripi" TypeIn ")/" Example "qtd"
Moveto [Valor Total              ] TypeIn "(" Example "vrtot" TypeIn "-(" Example "vrdes" TypeIn "+" Example "vricms" TypeIn "))+"
                                   Example "vripi"
Do_It!
ClearAll

;*** Notas de Entrada/Faturamento DEVOLUCAO/MANIFESTO ***
{Ask} {\\Sistemas\\Vendas\\Destin}
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Atualiza Estoque         ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Check Example "doc"
Moveto [Serie do Documento       ] Check Example "ser"
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.. Or ..MANIF.. Or ..CONSIG.. Or ..REQUIS.. Or ..MOSTRUA.."
Moveto [Data de Emissao          ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo Movimento Estoque   ] TypeIn "E"
Moveto [Situacao                 ] TypeIn "Not C"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Item do Documento        ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Situacao_Item            ] TypeIn "Not C"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Data de Emissao          ] Example "dtref"
Moveto [Item do Documento        ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "NOTAI"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "E"
Moveto [Tipo de Operacao         ] TypeIn "D"
Moveto [Quantidade               ] Example "qtd"
Do_It!
ClearAll


 
If VSDGOPOF="S"
   Then ;*** Ordem de Faturamento de Saida/Faturamento ***
        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Atualiza Estoque         ] TypeIn "S"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaC" Enter
        Moveto [Numero da OF             ] Check Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "S"
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaI" Enter
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Item da OF               ] Check
        Moveto [Codigo do Item           ] Check
        Ask_Estoque("Tipo do Item","NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Data de Emissao          ] Example "dtref"
        Moveto [Item da OF               ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Quantidade               ] Example "qtd"
        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
        Moveto [Tabela                   ] TypeIn "FATURAI"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Data do Movimento        ] Example "dtref"
        Moveto [Tipo do Movimento        ] TypeIn "S"
        Moveto [Quantidade               ] Example "qtd"
        Do_It!
        ClearAll
           
        ;*** Ordem de Faturamento de Entrada/Troca ***
        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Atualiza Estoque         ] TypeIn "S"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaC" Enter
        Moveto [Numero da OF             ] Check 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          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "S"
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaID" Enter
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Item da OF               ] Check
        Moveto [Codigo do Item           ] Check
        Ask_Estoque("Tipo do Item","NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Data de Emissao          ] Example "dtref"
        Moveto [Item da OF               ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Quantidade               ] Example "qtd"
        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
        Moveto [Tabela                   ] TypeIn "FATURAID"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Data do Movimento        ] Example "dtref"
        Moveto [Tipo do Movimento        ] TypeIn "E"
        Moveto [Quantidade               ] Example "qtd"
        Do_It!
        ClearAll     


        ;*** Ordem de Fatura de Entrada/Faturamento ***
        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Atualiza Estoque         ] TypeIn "S"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaC" Enter
        Moveto [Numero da OF             ] Check Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Descricao da Destinacao  ] TypeIn "Not ..DEVOL.., Not ..MANIF..,  Not ..CONSIG..,  Not ..REQUIS.., Not ..MOSTRUA.."
        Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "E"
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaI" Enter
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Item da OF               ] Check
        Moveto [Codigo do Item           ] Check
        Ask_Estoque("Tipo do Item","NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Moveto [Preco Total              ] Check
        Moveto [Valor do ICMS            ] Check
        Moveto [Valor do IPI             ] Check
        Moveto [Valor Desconto Total     ] Check
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Data de Emissao          ] Example "dtref"
        Moveto [Item da OF               ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Quantidade               ] Example "qtd"
        Moveto [Preco Total              ] Example "vrtot"
        Moveto [Valor do ICMS            ] Example "vricms"
        Moveto [Valor do IPI             ] Example "vripi"
        Moveto [Valor Desconto Total     ] Example "vrdes"
        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
        Moveto [Tabela                   ] TypeIn "FATURAI"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Data do Movimento        ] Example "dtref"
        Moveto [Tipo do Movimento        ] TypeIn "E"
        Moveto [Quantidade               ] Example "qtd"
        Moveto [Valor Unitario           ] TypeIn "((" Example "vrtot" TypeIn "-(" Example "vrdes" TypeIn "+" Example "vricms" TypeIn "))+"
                                           Example "vripi" TypeIn ")/" Example "qtd"
        Moveto [Valor Total              ] TypeIn "(" Example "vrtot" TypeIn "-(" Example "vrdes" TypeIn "+" Example "vricms" TypeIn "))+"
                                           Example "vripi"
        Do_It!
        ClearAll

        ;*** Ordem de Fatura de Entrada/Faturamento DEVOLUCAO/MANIFESTO ***
        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Atualiza Estoque         ] TypeIn "S"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaC" Enter
        Moveto [Numero da OF             ] Check Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.. Or ..MANIF.. Or ..CONSIG.. Or ..REQUIS.. Or ..MOSTRUA.."
        Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "E"
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} TypeIn "\\Sistemas\\Vendas\\FaturaI" Enter
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Item da OF               ] Check
        Moveto [Codigo do Item           ] Check
        Ask_Estoque("Tipo do Item","NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Data de Emissao          ] Example "dtref"
        Moveto [Item da OF               ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Quantidade               ] Example "qtd"
        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
        Moveto [Tabela                   ] TypeIn "FATURAI"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Data do Movimento        ] Example "dtref"
        Moveto [Tipo do Movimento        ] TypeIn "E"
        Moveto [Tipo de Operacao         ] TypeIn "D"
        Moveto [Quantidade               ] Example "qtd"
        Do_It!
        ClearAll
endif

;*** Notas de Entrada/Estoque ***
{Ask} TypeIn "\\Sistemas\\Estoque\\NotaEC" Enter
Moveto [Numero do Lancamento     ] Check Example "doc"
Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Entrada          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Operacao         ] Check TypeIn "Not A, Not I"
{Ask} TypeIn "\\Sistemas\\Estoque\\NotaEI" Enter
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Quantidade Convertida    ] Check
Moveto [Custo Medio Unitario     ] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Data de Entrada          ] Example "dtref"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Moveto [Quantidade Convertida    ] Example "qtdcv"
Moveto [Custo Medio Unitario     ] Example "ctuni"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "NOTAEI"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "E"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Quantidade               ] Example "qtdcv"
Moveto [Valor Unitario           ] TypeIn "(_ctuni*_qtd)/_qtdcv"
Moveto [Valor Total              ] Example "ctuni" TypeIn "*" Example "qtd"
Do_It!
ClearAll

;*** Ajuste em 05/04/2002 ***
;*** Requisicoes/Estoque ***
{Ask} TypeIn "\\Sistemas\\Estoque\\RqCabeca" Enter
Moveto [Numero do Lancamento     ] Check Example "doc"
Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia       ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Movimento        ] Check
Moveto [Tipo de Operacao         ] Check
{Ask} TypeIn "\\Sistemas\\Estoque\\RqItem" Enter
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Custo Unitario           ] Check
Moveto [Custo Total              ] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Data de Ocorrencia       ] Example "dtref"
Moveto [Tipo de Movimento        ] Example "mov"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Moveto [Custo Unitario           ] Example "ctuni"
Moveto [Custo Total              ] Example "cttot"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "RQITEM"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] Example "mov"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Quantidade               ] Example "qtd"
Moveto [Valor Unitario           ] Example "ctuni"
Moveto [Valor Total              ] Example "cttot"
Do_It!
ClearAll

{Ask} TypeIn "\\Sistemas\\Estoque\\RqCabeca" Enter
Moveto [Numero do Lancamento     ] Check Example "doc"
Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia       ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Movimento        ] Check TypeIn "E"
Moveto [Tipo de Operacao         ] Check TypeIn "P Or I"
{Ask} TypeIn "\\Sistemas\\Estoque\\RqMatPri" Enter
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Item        ] Check
Moveto [Sequencia Materia Prima  ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Custo Unitario           ] Check
Moveto [Custo Total              ] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Data de Ocorrencia       ] Example "dtref"
Moveto [Tipo de Movimento        ] Example "mov"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Sequencia do Item        ] Example "seq"
Moveto [Sequencia Materia Prima  ] Example "seqm"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Moveto [Custo Unitario           ] Example "ctuni"
Moveto [Custo Total              ] Example "cttot"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "RQMATPRI"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Sequencia Materia Prima  ] Example "seqm"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "S"
Moveto [Tipo de Operacao         ] TypeIn  "C"
Moveto [Quantidade               ] Example "qtd"
Moveto [Valor Unitario           ] Example "ctuni"
Moveto [Valor Total              ] Example "cttot"
Do_It!
ClearAll

{Ask} TypeIn "\\Sistemas\\Estoque\\RqCabeca" Enter
Moveto [Numero do Lancamento     ] Check Example "doc"
Moveto [Codigo                   ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia       ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Movimento        ] Check TypeIn "S"
Moveto [Tipo de Operacao         ] Check TypeIn "T"
{Ask} TypeIn "\\Sistemas\\Estoque\\RqItem" Enter
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Check
Moveto [Codigo do Item           ] Check
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
Moveto [Quantidade               ] Check
Moveto [Custo Unitario           ] Check
Moveto [Custo Total              ] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo                   ] Example "emp"
Moveto [Data de Ocorrencia       ] Example "dtref"
Moveto [Tipo de Movimento        ] Example "mov"
Moveto [Tipo de Operacao         ] Example "oper"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Moveto [Custo Unitario           ] Example "ctuni"
Moveto [Custo Total              ] Example "cttot"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Tabela                   ] TypeIn "RQITEM"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Sequencia do Lancamento  ] Example "seq"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Data do Movimento        ] Example "dtref"
Moveto [Tipo do Movimento        ] TypeIn "E"
Moveto [Tipo de Operacao         ] TypeIn  "T"
Moveto [Quantidade               ] Example "qtd"
Moveto [Valor Unitario           ] Example "ctuni"
Moveto [Valor Total              ] Example "cttot"
Do_It!
ClearAll


TAB_TEMP="\\Sistemas\\Estoque\\SdEstq"

;******** Saldo Inicial *******
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "ITEM"
Ask_Estoque("Tipo do Item","NaoControlaEstoque")
{Ask} TypeIn  TAB_TEMP Enter
Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item        ] Check Example "ITEM"
Moveto [Saldo Inicial         ] Check
Moveto [Custo Total Inicial   ] Check
Moveto [Mes Referencia        ] TypeIn "~VSDGMES"
Moveto [Ano Referencia        ] TypeIn "~VSDGANO"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa     ] Example "EMPRESA"
Moveto [Codigo do Item        ] Example "ITEM"
Moveto [Saldo Inicial         ] Example "QUANT"
Moveto [Custo Total Inicial   ] Example "CUSTO"
{Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa     ] Example "EMPRESA"
Moveto [Codigo do Item        ] Example "ITEM"
Moveto [Quantidade            ] Example "QUANT"
Moveto [Valor Unitario        ] Example "CUSTO" TypeIn "/" Example "QUANT"
Moveto [Valor Total           ] Example "CUSTO"
Moveto [Tipo do Movimento     ] TypeIn "E"
Do_It!
ClearAll

;******** Tipo de Itens e Tipo de Estoque *******
If VSDGTIPOEST<>""
   Then {Ask} {Itens}
        Moveto [Codigo do Item   ] Example "cod"
        Moveto [Tipo do Item     ] TypeIn VSDGTIPOEST
        {Ask} TypeIn TabelaR Enter Check
        Moveto [Codigo do Item   ] Example "cod"
        Do_It!
        ClearAll        

        Empty(TabelaR)
        Add "Answer" TabelaR
        ClearAll
EndIf        

If IsEmpty(TabelaR)
   Then Return
EndIf

Sort TabelaR  On "Codigo da Empresa","Codigo do Item",
                 "Data do Movimento","Tipo do Movimento","Sequencia do Lancamento"
ClearAll

View NoWindow TAB_TEMP
View NoWindow TabelaI
View NoWindow TabelaR
CoeditKey

CUSTO    = 0
CUSTO_OM = 0
SALDO    = 0
VRUNIT   = 0
ITEM     = [Codigo do Item   ]
EMPRESA2 = [Codigo da Empresa]
Custo_Total_ATual=0
Custo_Unitario_Atual=0
Saldo_Atual=0
ES_0002_Ler_CustoInicial()
Scan

   If [Codigo do Item] <> ITEM Or [Codigo da Empresa] <> EMPRESA2
      Then ES_0002_Grava_Invent()
           ES_0002_Ler_CustoInicial()
   EndIf

   If IsBlank([Data do Movimento])
      Then CUSTO_OM  = VRUNIT
   Endif

   CUSTO=0

   Switch
     Case [Tipo do Movimento]="E":
          If [Tipo de Operacao]="D"
             Then CUSTO=NDecimal(Custo_Total_Atual/Saldo_Atual,5)
                  If CUSTO=0 Or IsBlank(CUSTO)
                     Then CUSTO=CUSTO_OM
                  EndIf
                  Saldo_Atual      =NDecimal(Saldo_Atual + [Quantidade],3)
                  Custo_Total_Atual=NDecimal(Custo_Total_Atual+(NDecimal([Quantidade]*CUSTO,2)),2)
             Else Saldo_Atual      =NDecimal(Saldo_Atual      +[Quantidade],3)
                  Custo_Total_Atual=NDecimal(Custo_Total_Atual+[Valor Total],2)
          EndIf
     Case [Tipo do Movimento]="S":
          CUSTO            =NDecimal(Custo_Total_Atual/Saldo_Atual,5)
          If CUSTO=0 Or IsBlank(CUSTO)
             Then CUSTO=CUSTO_OM
          EndIf

          If [Tabela]="RQITEM" And [Tipo de Operacao]="O"
             Then Saldo_Atual      =NDecimal(Saldo_Atual - [Quantidade],3)
                  Custo_Total_Atual=NDecimal(Custo_Total_Atual-[Valor Total],2)
             Else Saldo_Atual      =NDecimal(Saldo_Atual - [Quantidade],3)
                  if Saldo_Atual=0
                     then Custo_Total_Atual=0 
                     Else Custo_Total_Atual=NDecimal(Custo_Total_Atual-(NDecimal([Quantidade]*CUSTO,2)),2)
                  endif   
          EndIf
   EndSwitch

   If Saldo_Atual=0 And (Custo_Total_Atual>=-0.15 And Custo_Total_Atual<=0.15)
      Then Custo_Total_Atual=0
   EndIf

   If (Custo_Total_Atual/Saldo_Atual)>0
      Then CUSTO_OM = NDecimal(Custo_Total_Atual/Saldo_Atual,5)
   EndIf

   Moveto TabelaR

EndScan
ES_0002_Grava_Invent()
Do_It!
ClearAll

Delete TabelaR

;-- Ajusta campos blank = 0 ----------------------------------------------------
{Ask} TypeIn TabelaI Enter TypeIn "Fast"
Moveto [Custo Total Atual] TypeIn "Blank,Changeto 0"
Moveto [Saldo Atual      ] TypeIn "Blank,Changeto 0"
Do_It!
ClearAll

;-- Elimina zerados ------------------------------------------------------------
If VSDGZERADO="N"
   Then {Ask} TypeIn TabelaI Enter TypeIn "Fast Delete"
        Moveto [Saldo Atual      ] TypeIn "=0"
        Moveto [Custo Total Atual] TypeIn "=0"
        Do_It!
        ClearAll
EndIf

;-- Ajusta dados do cadastro de Itens ------------------------------------------
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] check typein "T or P or M"
Moveto [Descricao do Item     ] check
Moveto [Unidade Interna       ] check
Moveto [Referencia            ] check
Moveto [Inativo               ]       typein "Not S"
{Ask} TypeIn TabelaI Enter check
Moveto [Codigo do Item        ] example "item"
Do_It!
ClearAll

Delete TabelaI
Rename "Answer" TabelaI

EndProc    ; (Processa)
 
;*******************************************************************************
;* Rotina Ler Custo                                                            *
;*******************************************************************************
Proc ES_0002_Ler_CustoInicial()
Moveto TAB_TEMP
Moveto [Codigo da Empresa]
Locate EMPRESA2,ITEM,VSDGANO,VSDGMES
If RetVal
   Then VRUNIT=NDecimal([Ultimo Custo Inicial],5)
   Else VRUNIT=0
EndIf
Moveto TabelaR

EndProc ;ES_0002_Ler_CustoInicial()

;*******************************************************************************
;* Rotina Grava Inventario                                                     *
;*******************************************************************************
Proc ES_0002_Grava_Invent()
Private coditem

Custo_Unitario_Atual=Custo_Total_Atual/Saldo_Atual

Moveto TabelaI
End
If Not IsBlank([Codigo da Empresa])
   Then Down
EndIf
[Codigo do Item       ]=ITEM
[Codigo da Empresa    ]=EMPRESA2
[Custo Total Atual    ]=Custo_Total_Atual
[Saldo Atual          ]=Saldo_ATual
[Valor Unitario       ]=Custo_Unitario_Atual

Moveto TabelaR
ITEM    = [Codigo do Item       ]
EMPRESA2= [Codigo da Empresa    ]
Custo_Total_Atual=0
Custo_Unitario_Atual=0
Saldo_ATual      =0
CUSTO_OM         =0

EndProc  ;ES_0002_Grava_Invent()


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ES_0002_CurvaABC()
private empant, tipant, grupo,nr

Aguarde("Aguarde, totalizando a curva")
{Ask} TypeIn TabelaI Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Tipo do Item           ] Check
Moveto [Codigo do Item         ] typein "Calc Count as Registros"
Switch
  case VSDGOPANALISE="1" : Moveto [Custo Total Atual      ] TypeIn "Calc Sum as VrTotal"
  case VSDGOPANALISE="2" : Moveto [Saldo Atual            ] TypeIn "Calc Sum as VrTotal"
endSwitch
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Tipo do Item           ] Example "tpite"
Moveto [VrTotal                ] Example "vp"
Moveto [Registros              ] Example "rg"
{Ask} TypeIn TabelaI Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Tipo do Item           ] Example "tpite"
Moveto [TotalEmpresa           ] TypeIn "changeto _vp"
Moveto [TotalItem              ] TypeIn "changeto _rg"
Do_It!
ClearAll

;---- Calculando a Porcentagem diante do total dos itens ---------------
Aguarde("Aguarde, organizando a curva")
Switch
  case VSDGOPANALISE="1" : Sort TabelaI On "Codigo da Empresa", "Tipo do Item", "Custo Total Atual" D
  case VSDGOPANALISE="2" : Sort TabelaI On "Codigo da Empresa", "Tipo do Item", "Saldo Atual" D
endSwitch
ClearAll

empant     ="***"
tipant     ="***"
grupo      =0

NR = NRecords(TabelaI)
CoEdit NoWindow TabelaI
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, calculando a curva "+BARRA_STRING)
  
  if [Codigo da Empresa]<>empant or
     [Tipo do Item     ]<>tipant
     then empant     =[Codigo da Empresa]
          tipant     =[Tipo do Item     ]
          grupo      =0
  endif          
  grupo=grupo+1

  indice=((grupo*100)/[TotalItem])
  Switch
    Case indice           <=20                            : [Classe]="A" 
    otherwise                                             : [Classe]="C" 
  EndSwitch

EndScan
Do_It!             
ClearAll       

endproc


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ES_0002_GravaCsv()
private s, arquivo, arqnew, inicio, NR, vartemp, wi, cont

Aguarde("Aguarde, Exportando Estoque")

ClearAll

for wi from 1 to 3

arquivo=VSDGPASTA+"tmp0000.txt"
  switch
    case wi=1 : arqnew =VSDGPASTA+"ES_0002T.csv"
    case wi=2 : arqnew =VSDGPASTA+"ES_0002P.csv"
    case wi=3 : arqnew =VSDGPASTA+"ES_0002M.csv"
  endswitch

  {ask} typein tabelaI     Enter check
  switch
    case wi=1: moveto [Tipo do Item ] typein "T" 
    case wi=2: moveto [Tipo do Item ] typein "P" 
    case wi=3: moveto [Tipo do Item ] typein "M" 
  endswitch
  Moveto [Classe] typein "A"
  Do_it!
  ClearAll
  
  Sort "Answer" on "Custo Total Atual" D
  
  cont=0

  NR=NRecords("Answer")
  inicio=true

  FileWrite        arquivo from "nome,descricao,info,valor\n"    

  Edit "Answer" 
  Scan
    Barra(NR, RecNo())
    AGUARDE(BARRA_STRING)

    cont=cont+1
    if cont>30 then loop endif

    if NR=0 
       then [Descricao do Item]="** SEM MOVIMENTO **"
            [Unidade Interna  ]="**"
    endif             
    if isblank([Saldo Atual      ]) then [Saldo Atual      ]=0 endif
    if isblank([Custo Total Atual]) then [Custo Total Atual]=0 endif

    s=  monta_string([Descricao do Item ])+","
    s=s+monta_string([Codigo do Item]+" - "+[Referencia])+","
    s=s+monta_string(ltrim(Format("W9.1,EIC",[Saldo Atual])+"/"+[Unidade Interna]))+","
    s=s+strval([Custo Total Atual    ])+"\n"
  
    FileWrite append arquivo from s    

    
  EndScan
  Do_It!
  ClearAll
  
  FileRead  arquivo to   vartemp
  FileWrite arqnew  from vartemp    

endfor

LimpAguarde()

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc ES_0002_SelecionaDados2()
private i

AGUARDE("Aguarde, Calculando estoque minimo")

{Ask} TypeIn "\\Sistemas\\Estoque\\EstqPrm" Enter
Moveto [Codigo da Empresa     ] Example "cemp"
Moveto [Codigo do Item        ] typein "_item"
Moveto [Estoque Minimo        ] check  typein ">0"
{Ask} TypeIn TabelaI Enter check 
Moveto [Codigo da Empresa     ] Example "cemp"
Moveto [Codigo do Item        ] typein "_item"
Do_It!
ClearAll

{Ask} {Answer} check
Moveto [Estoque Minimo        ] Example "EMIM"
Moveto [Saldo Atual           ] TypeIn "<" Example "EMIM"
Do_It!
ClearAll

{Ask} {Answer} check
Moveto [Estoque Minimo        ] typein "_emin"
Moveto [Saldo Atual           ] typein "_esaldo, calc _emin - _esaldo as DiferencaMinimo"
Do_It!
ClearAll

tabela2=Cria_Temp(PrivDir())
Rename "Answer" tabela2
clearAll

Endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ES_0002_GravaCsv2()
private s, arquivo, arqnew, inicio, NR, vartemp, wi

Aguarde("Aguarde, Exportando Estoque<Estoque Minimo")

ClearAll

for wi from 1 to 3

arquivo=VSDGPASTA+"tmp0000.txt"
  switch
    case wi=1 : arqnew =VSDGPASTA+"ES_0001T.csv"
    case wi=2 : arqnew =VSDGPASTA+"ES_0001P.csv"
    case wi=3 : arqnew =VSDGPASTA+"ES_0001M.csv"
  endswitch

  {ask} typein tabela2     Enter check
  switch
    case wi=1: moveto [Tipo do Item ] typein "T" 
    case wi=2: moveto [Tipo do Item ] typein "P" 
    case wi=3: moveto [Tipo do Item ] typein "M" 
  endswitch
  Do_it!
  ClearAll
  
  Sort "Answer" on "DiferencaMinimo" D ,"Descricao do Item"
  
  cont=0

  NR=NRecords("Answer")
  inicio=true

  FileWrite        arquivo from "nome,descricao,info,valor\n"    

  Edit "Answer" 
  Scan
    Barra(NR, RecNo())
    AGUARDE(BARRA_STRING)

    cont=cont+1
    if cont>30 then loop endif

    if NR=0 
       then [Descricao do Item]="** SEM MOVIMENTO **"
            [Unidade Interna  ]="**"
    endif             
    if isblank([Saldo Atual   ]) then [Saldo Atual   ]=0 endif
    if isblank([Estoque Minimo]) then [Estoque Minimo]=0 endif

    s=  monta_string([Descricao do Item ])+","
    s=s+monta_string([Codigo do Item]+" - "+[Referencia])+","
    s=s+monta_string(ltrim(Format("W9.1,EIC",[Estoque Minimo])+"/"+[Unidade Interna]+" Min"))+","
    s=s+strval([Saldo Atual    ])+"\n"
  
    FileWrite append arquivo from s    
    
  EndScan
  Do_It!
  ClearAll
  
  FileRead  arquivo to   vartemp
  FileWrite arqnew  from vartemp    

endfor

LimpAguarde()

Delete Tabela2
Release vars Tabela2

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc ES_0002_SelecionaDados3()
private TabelaRef

AGUARDE("Aguarde, Calculando estoque referˆncia")

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] check typein "..00"
Moveto [Tipo do Item          ]       typein "D"
Moveto [Descricao do Item     ] check
Moveto [Referencia            ] check typein "not blank"
Do_It!
ClearAll
TabelaRef=Adiciona_Indice_Temp("Referencia")

{Ask} TypeIn TabelaI Enter check 
Do_It!
ClearAll

{Ask} TypeIn TabelaRef Enter  
Moveto [Referencia            ] typein "_ref"
Moveto [Codigo do Item        ] typein "_item"
Moveto [Descricao do Item     ] typein "_ditem"
{Ask} {Answer} typein "Fast" 
Moveto [Referencia            ] typein "_ref"
Moveto [Codigo do Item        ] typein "changeto _item"
Moveto [Descricao do Item     ] typein "changeto _ditem"
Do_It!
ClearAll

delete TabelaRef

{Ask} {Answer}  
Moveto [Codigo do Item        ] check
Moveto [Descricao do Item     ] check
Moveto [Tipo do Item          ] check
Moveto [Referencia            ] check
Moveto [Unidade Interna       ] check
Moveto [Custo Total Atual     ] TypeIn "Calc Sum as \"Custo Total Atual\""
Moveto [Saldo Atual           ] TypeIn "Calc Sum as \"Saldo Atual\""
Do_It!
ClearAll

tabela2=Cria_Temp(PrivDir())
Rename "Answer" tabela2
clearAll


Endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ES_0002_GravaCsv3()
private s, arquivo, arqnew, inicio, NR, vartemp, wi

Aguarde("Aguarde, Exportando Estoque/Referˆncia")

ClearAll

for wi from 1 to 3

arquivo=VSDGPASTA+"tmp0000.txt"
  switch
    case wi=1 : arqnew =VSDGPASTA+"ES_0003T.csv"
    case wi=2 : arqnew =VSDGPASTA+"ES_0003P.csv"
    case wi=3 : arqnew =VSDGPASTA+"ES_0003M.csv"
  endswitch

  {ask} typein tabela2     Enter check
  switch
    case wi=1: moveto [Tipo do Item ] typein "T" 
    case wi=2: moveto [Tipo do Item ] typein "P" 
    case wi=3: moveto [Tipo do Item ] typein "M" 
  endswitch
  Do_it!
  ClearAll
  
  Sort "Answer" on "Custo Total Atual" D ,"Referencia"
  
  cont=0

  NR=NRecords("Answer")
  inicio=true

  FileWrite        arquivo from "nome,descricao,info,valor\n"    

  Edit "Answer" 
  Scan
    Barra(NR, RecNo())
    AGUARDE(BARRA_STRING)

    cont=cont+1
    if cont>30 then loop endif

    if NR=0 
       then [Descricao do Item]="** SEM MOVIMENTO **"
            [Unidade Interna  ]="**"
    endif             
    if isblank([Saldo Atual      ]) then [Saldo Atual      ]=0 endif
    if isblank([Custo Total Atual]) then [Custo Total Atual]=0 endif

    s=  monta_string([Descricao do Item ])+","
    s=s+monta_string([Codigo do Item]+" - "+[Referencia])+","
    s=s+monta_string(ltrim(Format("W9.1,EIC",[Saldo Atual])+"/"+[Unidade Interna]))+","
    s=s+strval([Custo Total Atual])+"\n"
  
    FileWrite append arquivo from s    
    
  EndScan
  Do_It!
  ClearAll
  
  FileRead  arquivo to   vartemp
  FileWrite arqnew  from vartemp    

endfor

LimpAguarde()

Delete Tabela2
Release vars Tabela2

EndProc


;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc ES_0002_SelecionaDados4()
private i, TabelaVenda, nmes, vsdgdtcad

AGUARDE("Aguarde, Calculando estoque sem venda")

switch
  case sys_Codigo_Cliente="0000": nmes=3
  otherwise                     : nmes=3
endswitch
for i from 1 to nmes
  VSDGDTINI=VSDGDTINI-1
  VSDGDTINI=Primeiro_Dia_Data(VSDGDTINI)
endfor

TabelaVenda=Cria_Temp(PrivDir())
Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer") Then Delete "Answer" EndIf

  If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
     IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
     Then 
           {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
           Moveto [Codigo da Empresa      ] Example "Empresa" TypeIn ", ~VSDGEMPRESA.."
           Moveto [Numero do Documento    ] Example "Docto"
           Moveto [Serie do Documento     ] Example "Serie"
           Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
           Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
           Moveto [Tipo Movimento Estoque ] TypeIn "S"
           Moveto [Situacao               ] TypeIn "Not C"
           {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"Notai" Enter
           Moveto [Codigo da Empresa      ] Example "Empresa"
           Moveto [Numero do Documento    ] Example "Docto"
           Moveto [Serie do Documento     ] Example "Serie"
           Moveto [Codigo do Item         ] Check 
           Moveto [Tipo do Item           ] TypeIn "P or T"
           Moveto [Situacao_Item          ] TypeIn "Not C"
           Do_It!
           ClearAll
  
           If IsTable(TabelaVenda)
              Then Add "Answer" TabelaVenda
              Else Rename "Answer" TabelaVenda
           EndIf                                          
  EndIf
EndWhile

{Ask} TypeIn TabelaVenda Enter
Moveto [Codigo do Item         ] Check 
Do_It!
ClearAll

Delete TabelaVenda
TabelaVenda=Adiciona_Indice_Temp("Codigo do Item")

{Ask} TypeIn TabelaI Enter check
Do_It!
ClearAll

{Ask} TypeIn TabelaVenda Enter       
Moveto [Codigo do Item        ] typein "_item"
{Ask} {Answer} typein "Fast Delete"       
Moveto [Codigo do Item        ] typein "_item"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] typein "_item"
Moveto [Inativo               ] typein "not S"  
{Ask} {Answer} check       
Moveto [Codigo do Item        ] typein "_item"
Do_It!
ClearAll

vsdgdtcad=VSDGDTFIM-45

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] typein "_item"
Moveto [Data_Cadastro         ] typein "blank or <~vsdgdtcad"  
{Ask} {Answer} check       
Moveto [Codigo do Item        ] typein "_item"
Do_It!
ClearAll

tabela2=Cria_Temp(PrivDir())
Rename "Answer" tabela2
clearAll

Delete TabelaVenda

Endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ES_0002_GravaCsv4()
private s, arquivo, arqnew, inicio, NR, vartemp, wi

Aguarde("Aguarde, Exportando Estoque/sem venda")

ClearAll

for wi from 1 to 2

arquivo=VSDGPASTA+"tmp0000.txt"
  switch
    case wi=1 : arqnew =VSDGPASTA+"ES_0004T.csv"
    case wi=2 : arqnew =VSDGPASTA+"ES_0004P.csv"
  endswitch

  {ask} typein tabela2     Enter check
  switch
    case wi=1: moveto [Tipo do Item ] typein "T" 
    case wi=2: moveto [Tipo do Item ] typein "P" 
  endswitch
  Do_it!
  ClearAll
  
  Sort "Answer" on "Custo Total Atual" D ,"Descricao do Item"
  
  cont=0

  NR=NRecords("Answer")
  inicio=true

  FileWrite        arquivo from "nome,descricao,info,valor\n"    

  Edit "Answer" 
  Scan
    Barra(NR, RecNo())
    AGUARDE(BARRA_STRING)

    cont=cont+1
    if cont>30 then loop endif

    if NR=0 
       then [Descricao do Item]="** SEM MOVIMENTO **"
            [Unidade Interna  ]="**"
    endif             
    if isblank([Saldo Atual      ]) then [Saldo Atual      ]=0 endif
    if isblank([Custo Total Atual]) then [Custo Total Atual]=0 endif

    s=  monta_string([Descricao do Item ])+","
    s=s+monta_string([Codigo do Item]+" - "+[Referencia])+","
    s=s+monta_string(ltrim(Format("W9.1,EIC",[Saldo Atual])+"/"+[Unidade Interna]))+","
    s=s+strval([Custo Total Atual])+"\n"
  
    FileWrite append arquivo from s    
    
  EndScan
  Do_It!
  ClearAll
  
  FileRead  arquivo to   vartemp
  FileWrite arqnew  from vartemp    

endfor

LimpAguarde()

Delete Tabela2
Release vars Tabela2

EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************

VSDGTIPOEST  =""
VSDGOPOF     ="S"
VSDGZERADO   ="N"
VSDGOPANALISE="1"

tabelai=Cria_Temp(PrivDir())
cria_tabela(tabelai,"Codigo da Empresa(A4),Codigo do Item(A10),Custo Total Atual($),Saldo Atual(N),Valor Unitario($),"+
                    "TotalEmpresa($),TotalItem(N),Classe(A1)") 

TabelaR=Cria_Temp(Privdir())
Copy "\\base\\sistemas\\estoque\\Reproces" TabelaR
Empty TabelaR
ClearAll

ES_0002_SelecionaDados()
ES_0002_CurvaABC()
ES_0002_GravaCsv()

ES_0002_SelecionaDados2()
ES_0002_GravaCsv2()
ES_0002_SelecionaDados3()
ES_0002_GravaCsv3()

ES_0002_VSDGDTINI=VSDGDTINI
ES_0002_SelecionaDados4()
ES_0002_GravaCsv4()
VSDGDTINI=ES_0002_VSDGDTINI

Delete tabelaI

ClearAll
Release Vars TabelaR, TabelaI, TAB_TEMP,
             QUANT, CUSTO, CUSTO_OM, SALDO, VRUNIT, ITEM, EMPRESA2,
             Custo_Total_ATual, Custo_Unitario_Atual ,Saldo_Atual, 
             VSDGTIPOEST, VSDGOPOF, VSDGZERADO, VSDGOPANALISE,
             ES_0002_VSDGDTINI

Release Procs ES_0002_SelecionaDados , ES_0002_GravaCsv , 
              ES_0002_SelecionaDados2, ES_0002_GravaCsv2,
              ES_0002_SelecionaDados3, ES_0002_GravaCsv3,
              ES_0002_SelecionaDados4, ES_0002_GravaCsv4,
              ES_0002_CurvaABC,ES_0002_Grava_Invent, ES_0002_Ler_CustoInicial
