;** 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()
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CheckTG_OPOF[1]
;Ultima Alteracao: 02/06/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes #0227             
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo

;*******************************************************************************
;* 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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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 CheckTG_OPOF[1]=False
   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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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_EstoqueTpItem("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

{Ask} {Itens}
Moveto [Codigo do Item   ] Example "cod"
Ask_EstoqueTpItem("")
{Ask} TypeIn TabelaR Enter Check
Moveto [Codigo do Item   ] Example "cod"
Do_It!
ClearAll        

Empty(TabelaR)
Add "Answer" TabelaR
ClearAll

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}
switch
  case sys_Codigo_cliente="0227":
    Moveto [Codigo do Item        ] check typein "02..0000"
    
  otherwise                     :
    Moveto [Codigo do Item        ] check typein "..00"
    
endswitch
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  =""
Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =False ; False=+OF, True=-OF
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, CheckTG_OPOF, 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
