;** Exp_Inv ********************************************************************
;*  Exportacao do Inventario de Estoque p/ Asplan                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 16/08/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/03/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Quantidade Convertida
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 30/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Entradas Faturamento para custo medio DEVOL/MANIF/CONSIG/REQUIS
;Ultima Alteracao: 01/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes OF em aberto situa‡Æo TROCA
;Ultima Alteracao: 20/08/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desprezar item notai cancalado
;Ultima Alteracao: 20/03/2013 por Bruno Carvalho
;Motivo Alteracao: Removido  o campo PR_NBM
;Ultima Alteracao: 07/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao buscar o custo na Ficha de Estoque
;Ultima Alteracao: 30/09/2015 por Bruno Carvalho
;Motivo Alteracao: Alterado "Codigo da Empresa Destino" - > "Codigo"
;Ultima Alteracao: 27/10/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Identifica_MesAno_Periodo() e adicionado parte do processo Seleciona() na proc Seleciona_NotaC()
;Ultima Alteracao: 01/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 03/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Nota Entrada Opera‡Æo para Impostos 
;Ultima Alteracao: 13/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Entrada de MOSTRUARIO - custo medio 
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_MOV, layout e valor
;Ultima Alteracao: 25/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no campo TG_ZERADO p/ as op‡äes serem verificadas pelo F1
;Ultima Alteracao: 30/05/2018 por Bruno Carvalho
;Motivo Alteracao: Movido TG_ZERADO na BibShow e ajustado neste script
;Ultima Alteracao: 30/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]

;*******************************************************************************
;* Rotina p/ Verificar se existe movimentacao no mes em aberto                 *
;*******************************************************************************
Proc Verifica_Mov()
Private WV
WV = True
ClearAll

;*** Notas de Saida/Faturamento ***
{Ask} {\\Sistemas\\Vendas\\Destin}
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Atualiza Estoque         ] TypeIn "S"
{Ask} {\\Sistemas\\Vendas\\NotaC}
Moveto [Codigo da Empresa        ] Example "emp" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Moveto [Codigo da Destinacao     ] Example "destin"
Moveto [Data de Saida            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo Movimento Estoque   ] TypeIn "E Or S"
Moveto [Situacao                 ] TypeIn "Not C"
{Ask} {\\Sistemas\\Vendas\\NotaI} Check
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Numero do Documento      ] Example "doc"
Moveto [Serie do Documento       ] Example "ser"
Ask_Estoque("Tipo do Item","")
Do_It!
ClearAll
If Not IsEmpty("Answer")
   Then Mensagem("Mes com movimenta‡„o em aberto nas Notas de Saidas")
        WV=False
EndIf

If CheckTG_OPOF[1]=False
   Then ;*** Ordem de Fatura de Saida/Entrada - Faturamento ***
        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Atualiza Estoque         ] TypeIn "S"
        {Ask} {\\Sistemas\\Vendas\\FaturaC}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo da Destinacao     ] Example "destin"
        Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "E Or S"
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} {\\Sistemas\\Vendas\\FaturaI} Check
        Moveto [Numero da OF             ] Example "doc"
        Ask_Estoque("Tipo do Item","")
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then Mensagem("Mes com movimenta‡„o em aberto nas Ordens de Faturamento")
                WV=False
        EndIf
EndIf

;*** Notas de Entrada/Estoque ***
{Ask} {NotaEC}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Operacao         ] TypeIn "Not A, Not I"
{Ask} {NotaEI} Check
Moveto [Numero do Lancamento     ] Example "doc"
Ask_Estoque("Tipo do Item","")
Do_It!
ClearAll
If Not IsEmpty("Answer")
   Then Mensagem("Mes com movimenta‡„o em aberto nas Notas de Entrada")
        WV=False
EndIf

;*** Requisicoes/Estoque ***
{Ask} {RqCabeca}
Moveto [Numero do Lancamento     ] Example "doc"
Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo de Movimento        ] TypeIn "E Or S"
Moveto [Tipo de Operacao         ] TypeIn "P Or I Or T"
{Ask} {RqItem} Check
Moveto [Numero do Lancamento     ] Example "doc"
Ask_Estoque("Tipo do Item","")
Do_It!
ClearAll
If Not IsEmpty("Answer")
   Then Mensagem("Mes com movimenta‡„o em aberto nas Requisi‡”es")
        WV=False
EndIf
Return WV
EndProc    ; (Verifica_Mov)

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

;*** Notas de Saida/Faturamento ***
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then For i From 1 To CONT_REGRA 
          {Ask} {\\Sistemas\\Vendas\\Destin}
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Atualiza Estoque         ] TypeIn "S"
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
          Moveto [Codigo da Empresa        ] CheckPlus Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] CheckPlus Example "doc"
          Moveto [Serie do Documento       ] CheckPlus Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          Switch
            Case REGRA_DATA_ESTOQUE = "Antiga"    : Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
            Case REGRA_DATA_ESTOQUE = "Transicao" : If i=1
                                                      Then Moveto [Data de Emissao] TypeIn "<~AUX_DTINI" 
                                                           Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                      Else Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
          EndSwitch
          Moveto [Tipo Movimento Estoque   ] TypeIn "S"
          Moveto [Situacao                 ] TypeIn "Not C"
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Item do Documento        ] CheckPlus
          Moveto [Codigo do Item           ] CheckPlus
          Ask_Estoque("Tipo do Item","")
          Moveto [Quantidade               ] CheckPlus
          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 Saida            ] 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\\"+Dir_Trab+"NotaC" Enter
          Moveto [Codigo da Empresa        ] CheckPlus Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] CheckPlus Example "doc"
          Moveto [Serie do Documento       ] CheckPlus Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Descricao da Destinacao  ] TypeIn "Not ..DEVOL.., Not ..MANIF..,  Not ..CONSIG..,  Not ..REQUIS.., Not ..MOSTRUA.."
          Switch
            Case REGRA_DATA_ESTOQUE = "Antiga"    : Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
            Case REGRA_DATA_ESTOQUE = "Transicao" : If i=1
                                                      Then Moveto [Data de Emissao] TypeIn "<~AUX_DTINI" 
                                                           Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                      Else Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
          EndSwitch
          Moveto [Tipo Movimento Estoque   ] TypeIn "E"
          Moveto [Situacao                 ] TypeIn "Not C"
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Item do Documento        ] CheckPlus
          Moveto [Codigo do Item           ] CheckPlus
          Ask_Estoque("Tipo do Item","")
          Moveto [Quantidade               ] CheckPlus
          Moveto [Preco Total              ] CheckPlus
          Moveto [Valor do ICMS            ] CheckPlus
          Moveto [Valor do IPI             ] CheckPlus
          Moveto [Valor Desconto Total     ] CheckPlus
          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 Saida            ] 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\\"+Dir_Trab+"NotaC" Enter
          Moveto [Codigo da Empresa        ] CheckPlus Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] CheckPlus Example "doc"
          Moveto [Serie do Documento       ] CheckPlus Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.. Or ..MANIF.. Or ..CONSIG.. Or ..REQUIS.. Or ..MOSTRUA.."
          Switch
            Case REGRA_DATA_ESTOQUE = "Antiga"    : Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
            Case REGRA_DATA_ESTOQUE = "Transicao" : If i=1
                                                      Then Moveto [Data de Emissao] TypeIn "<~AUX_DTINI" 
                                                           Moveto [Data de Saida  ] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                      Else Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] CheckPlus TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
          EndSwitch
          Moveto [Tipo Movimento Estoque   ] TypeIn "E"
          Moveto [Situacao                 ] TypeIn "Not C"
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Item do Documento        ] CheckPlus
          Moveto [Codigo do Item           ] CheckPlus
          Ask_Estoque("Tipo do Item","")
          Moveto [Quantidade               ] CheckPlus
          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 Saida            ] 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
        EndFor
EndIf

EndProc ;Seleciona_NotaC()

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

If IsTable("\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq") 
   Then TAB_TEMP = "\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq"
   Else TAB_TEMP = "\\Sistemas\\Estoque\\SdEstq"
EndIf 

If CheckTG_OPOF[1]=False
   Then ;*** Ordem de Faturamento de Saida/Faturamento ***
        If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaC")
           Then 
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Atualiza Estoque         ] TypeIn "S"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaC" Enter
                Moveto [Numero da OF             ] CheckPlus Example "doc"
                Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA.."
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Data de Emissao          ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaI" Enter
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Item da OF               ] CheckPlus
                Moveto [Codigo do Item           ] CheckPlus
                Ask_Estoque("Tipo do Item","")
                Moveto [Quantidade               ] CheckPlus
                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 Fatura Entrada/Troca ***
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Atualiza Estoque         ] TypeIn "S"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaC" Enter
                Moveto [Numero da OF             ] CheckPlus Example "doc"
                Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA.."
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Descricao da Destinacao  ] TypeIn "..TROCA.."
                Moveto [Data de Emissao          ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaID" Enter
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Item da OF               ] CheckPlus
                Moveto [Codigo do Item           ] CheckPlus
                Ask_Estoque("Tipo do Item","")
                Moveto [Quantidade               ] CheckPlus
                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\\"+Dir_Trab+"FaturaC" Enter
                Moveto [Numero da OF             ] CheckPlus Example "doc"
                Moveto [Codigo da Empresa        ] CheckPlus 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          ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "E"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaI" Enter
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Item da OF               ] CheckPlus
                Moveto [Codigo do Item           ] CheckPlus
                Ask_Estoque("Tipo do Item","")
                Moveto [Quantidade               ] CheckPlus
                Moveto [Preco Total              ] CheckPlus
                Moveto [Valor do ICMS            ] CheckPlus
                Moveto [Valor do IPI             ] CheckPlus
                Moveto [Valor Desconto Total     ] CheckPlus
                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\\"+Dir_Trab+"FaturaC" Enter
                Moveto [Numero da OF             ] CheckPlus Example "doc"
                Moveto [Codigo da Empresa        ] CheckPlus 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          ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "E"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaI" Enter
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Item da OF               ] CheckPlus
                Moveto [Codigo do Item           ] CheckPlus
                Ask_Estoque("Tipo do Item","")
                Moveto [Quantidade               ] CheckPlus
                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
EndIf


;*** Notas de Entrada/Estoque ***
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento     ] CheckPlus Example "doc"
        Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Entrada          ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo de Operacao         ] CheckPlus TypeIn "Not A, Not I"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] CheckPlus
        Moveto [Codigo do Item           ] CheckPlus
        Ask_Estoque("Tipo do Item","")
        Moveto [Quantidade               ] CheckPlus
        Moveto [Quantidade Convertida    ] CheckPlus
        Moveto [Custo Medio Unitario     ] CheckPlus
        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
EndIf

;*** Ajuste em 05/04/2002 ***
;*** Requisicoes/Estoque ***
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] CheckPlus Example "doc"
        Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo de Movimento        ] CheckPlus
        Moveto [Tipo de Operacao         ] CheckPlus
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] CheckPlus
        Moveto [Codigo do Item           ] CheckPlus
        Ask_Estoque("Tipo do Item","")
        Moveto [Quantidade               ] CheckPlus
        Moveto [Custo Unitario           ] CheckPlus
        Moveto [Custo Total              ] CheckPlus
        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\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] CheckPlus Example "doc"
        Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo de Movimento        ] CheckPlus TypeIn "E"
        Moveto [Tipo de Operacao         ] CheckPlus TypeIn "P Or I"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Item        ] CheckPlus
        Moveto [Sequencia Materia Prima  ] CheckPlus
        Moveto [Codigo do Item           ] CheckPlus
        Ask_Estoque("Tipo do Item","")
        Moveto [Quantidade               ] CheckPlus
        Moveto [Custo Unitario           ] CheckPlus
        Moveto [Custo Total              ] CheckPlus
        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\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] CheckPlus Example "doc"
        Moveto [Codigo                   ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo de Movimento        ] CheckPlus TypeIn "S"
        Moveto [Tipo de Operacao         ] CheckPlus TypeIn "T"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] CheckPlus
        Moveto [Codigo do Item           ] CheckPlus
        Ask_Estoque("Tipo do Item","")
        Moveto [Quantidade               ] CheckPlus
        Moveto [Custo Unitario           ] CheckPlus
        Moveto [Custo Total              ] CheckPlus
        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
EndIf

;******** Saldo Inicial *******
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "ITEM"
Moveto [Tipo do Item          ] Example "TPITE" 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 *******
{Ask} {Itens}
Moveto [Codigo do Item   ] Example "cod"
Ask_Estoque("Tipo do Item","Opcao")
{Ask} TypeIn TabelaR Enter Check
Moveto [Codigo do Item   ] Example "cod"
Do_It!
ClearAll

{Ask} {Itens}
Moveto [Codigo do Item   ] Example "COD"
Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
{Ask} {Answer} 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"

View TAB_TEMP
CoEdit TabelaI,TabelaR
CUSTO    = 0
CUSTO_OM = 0
SALDO    = 0
VRUNIT   = 0
ITEM     = [Codigo do Item   ]
EMPRESA2 = [Codigo da Empresa]
Custo_Total_ATual=0
Saldo_Atual=0
DATANEG=BlankDate()
Ler_CustoInicial()
Scan
   If [Codigo do Item] <> ITEM Or [Codigo da Empresa] <> EMPRESA2
      Then Grava_Invent()
           DATANEG=BlankDate()
           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
                     Then CUSTO=CUSTO_OM
                  EndIf
                  Saldo_Atual      =NDecimal(Saldo_Atual + [Quantidade],3)
                  Custo_Total_Atual=NDecimal(Custo_Total_Atual +(CUSTO*[Quantidade]),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
             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)
                  Custo_Total_Atual=NDecimal(Custo_Total_Atual-([Quantidade]*CUSTO),2)
          EndIf
   EndSwitch

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

   ;;*** Consiste irregularidades no inventario ***

   If VSDGCONSIST="S"
      Then If Saldo_Atual < 0 Or Custo_Total_Atual < 0
              Then DATANEG=[Data do Movimento]
           EndIf

           If Saldo_Atual > 0 And Custo_Total_Atual <= 0
              Then DATANEG=[Data do Movimento]
           EndIf

           If Custo_Total_Atual > 0 And Saldo_Atual <= 0
              Then DATANEG=[Data do Movimento]
           EndIf
   EndIf

   ;;**********************************************


   Moveto TabelaR

EndScan
Grava_Invent()
Do_It!
ClearAll

{Ask} TypeIn TabelaI Enter TypeIn "Fast"
Moveto [Custo Total Atual] TypeIn "Blank,Changeto 0"
Moveto [Saldo Atual      ] TypeIn "Blank,Changeto 0"
Do_It!
ClearAll

;Ajusta dados do cadastro de Itens
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] example "tp"
Moveto [Descricao do Item     ] example "desc"
Moveto [Unidade Interna       ] example "un"
{Ask} TypeIn TabelaI Enter TypeIn "Fast"
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] TypeIn "Changeto " example "tp"
Moveto [Descricao do Item     ] TypeIn "Changeto " example "desc"
Moveto [Unidade Interna       ] TypeIn "Changeto " example "un"
Do_It!
ClearAll

;** Apenas quando n„o consistir erros *****************************
If VSDGCONSIST="N"
   Then Switch
          Case VSDGZERADO="0" :  ;Sem Estoque Zerado
               {Ask} TypeIn TabelaI Enter TypeIn "Fast Delete"
               Moveto [Saldo Atual      ] TypeIn "blank or 0"
               Do_It!
               ClearAll
          Case VSDGZERADO="2" : ;S¢ Estoque Zerado
               {Ask} TypeIn TabelaI Enter TypeIn "Fast Delete"
               Moveto [Saldo Atual      ] TypeIn "not blank, not 0"
               Do_It!
               ClearAll
          Case VSDGZERADO="3" : ;S¢ Negativo
               {Ask} TypeIn TabelaI Enter TypeIn "Fast Delete"
               Moveto [Saldo Atual      ] TypeIn ">=0"
               Do_It!
               ClearAll
        EndSwitch
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Pega a aliquota de icms;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
{Ask} TypeIn TabelaI Enter
Moveto [Codigo do Item  ] Example "Codigo"
Moveto [Aliquota de ICMS] TypeIn "Changeto " Example "Al"
Moveto [Pagina          ] TypeIn "Changeto " Example "Uf"

{Ask} {Itens}
Moveto [Codigo do Item    ] Example "Codigo"
Moveto [Codigo Fornecedor ] Example "Fornec"

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo           ] Example "Fornec"
Moveto [Uf               ] Example  "Uf"

{Ask} {\\Sistemas\\Vendas\\Estados}
Moveto [Uf               ] Example "Uf"
Moveto [Aliquota de ICMS ] Example "Al"
Do_It!
ClearAll

{Ask} {Itens}
Moveto [Codigo do Item  ] Example "Codigo"
Moveto [Aliquota de ICMS] Example "Al"
{Ask} TypeIn TabelaI Enter
Moveto [Codigo do Item  ] Example "Codigo"
Moveto [Aliquota de Icms] TypeIn "Blank Or 0, Changeto " Example "Al"

Do_It!
ClearAll

EndProc    ; (Seleciona)

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

;*******************************************************************************
;* Rotina Grava Inventario                                                     *
;*******************************************************************************
Proc Grava_Invent()
If VSDGOPCUSTO="U"
   Then Moveto TAB_TEMP
        Moveto [Codigo da Empresa]
        Locate EMPRESA2,ITEM,VSDGANO,VSDGMES
        If RetVal
           Then Custo_Total_Atual=NDecimal(Saldo_Atual*[Preco de Custo],2)
           Else Custo_Total_Atual=0
        EndIf
EndIf
If VSDGCONSIST="S"
   Then If Not IsBlank(DATANEG)
           Then 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 Total Atual]/[Saldo Atual]

        EndIf
   Else 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 Total Atual]/[Saldo Atual]

EndIf

Moveto TabelaR
ITEM    = [Codigo do Item       ]
EMPRESA2= [Codigo da Empresa    ]
Custo_Total_Atual=0
Saldo_ATual      =0
CUSTO_OM         =0
EndProc  ;  (Grava_Invent)


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9   : Temp=False
     Case Evento["KeyCode"] = -59 : Dialog_F1()
     Case Evento["KeyCode"] =  27 :
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_TIPOEST"       : Campo="TG_EMPRESA"
            Case Campo="TG_MOV"           : Campo="TG_TIPOEST"
            Case Campo="TG_MESANO"        : Campo="TG_MOV"
            Case Campo="TG_DTREF"         : Campo="TG_MESANO"
            Case Campo="TG_ZERADO"        : Campo="TG_OPCUSTO"
                 If VSDGMOV="ABERTO"
                    Then Campo="TG_DTREF"
                    Else Campo="TG_MESANO"
                 EndIf
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
           If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA" :
                         If Not IsBlank(VSDGEMPRESA)
                            Then Campo="TG_TIPOEST"
                            Else VSDGNOMEMP=""
                         EndIf
                    Case Campo="TG_TIPOEST" : Campo="TG_MOV"
                    Case Campo="TG_MOV"     : Campo="TG_MESANO"
                    Case Campo="TG_MESANO"  :
                        VSDGMES=SubStr(VSDGMESANO,1,2)
                        VSDGANO=SubStr(VSDGMESANO,4,4)
                         If NumVal(VSDGANO) < 2000
                            Then VSDGANO=SubStr(VSDGANO,3,2)
                            Else VSDGANO=VSDGANO
                         EndIf
                         If NumVal(VSDGMES) > 12 Or NumVal(VSDGMES) = 0
                            Then MENSAGEM("Mˆs Inv lido!")
                            Else VSDGDTINI = DateVal("01."+VSDGMES+"."+VSDGANO)
                                 VSDGDTREF=Ultimo_Dia(VSDGMES+VSDGANO)

                                 If Month(VSDGDTREF)=Month(Today())
                                    Then VSDGDTREF=Today()
                                 EndIf
                                 Campo = "TG_DTREF"
                         EndIf
                    Case Campo="TG_DTREF"       :
                         VSDGDTREF = ControlValue("TG_DTREF")
                         If IsBlank(VSDGDTREF) Or (VSDGDTREF<VSDGDTINI)
                            Then Mensagem("Data Final Inv lida !")
                            Else VSDGDTFIM = VSDGDTREF
                                 Campo = "TG_ZERADO"
                         EndIf
                    Case Campo="TG_ZERADO"      : Campo = "YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTREF":
       MSG_CAMPO="Informe a Data Final"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


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

VSDGEMPRESA     = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""
VSDGMOV         = ""
VSDGDESCMOV     = ""
VSDGMESANO      = ""
VSDGDTREF       = BlankDate()
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()
VSDGZERADO      = ""
VSDGDESCZERADO  = ""
VSDGOPCUSTO="M"
VSDGNOMOPCUSTO  = ""
;;;VSDGMESANO   = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =False ; False=+OF, True=-OF

While True

  ShowDialog "Exporta‡„o do Invent rio Fiscal p/ Asplan" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 01,00 Height 11 Width 72

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

    Label  @ 02,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 03,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

    Label  @ 04,00 "Movimento"  For "TG_MOV"
    Accept @ 05,01 Width 11 "A7"  Picture "ABERTO,FECHADO" Tag "TG_MOV" To VSDGMOV

    Label  @ 04,12 "Mˆs/Ano"  For "TG_MESANO"
    Accept @ 05,12  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO

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

    Label  @ 00,35 "Op‡„o do Estoque" For "TG_ZERADO"
    Accept @ 01,39 Width 04 "A1"  Picture "0,1,2,3" Tag "TG_ZERADO" To VSDGZERADO
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_DESCZERADO" To VSDGDESCZERADO  

    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal Then QuitLoop EndIf

  MES=SubStr(VSDGMESANO,1,2)
  ANO=SubStr(VSDGMESANO,4,4)
  MESANO=MES+"."+ANO

  If IsBlank(VSDGEMPRESA)
     Then Loop
  EndIf
  If IsBlank(VSDGDTREF)    Or
     (VSDGDTFIM<VSDGDTINI)
     Then Loop
  EndIf
  If Year(VSDGDTREF)<>NumVal(SubStr(VSDGMESANO,4,4)) Or
     Month(VSDGDTREF)<>NumVal(SubStr(VSDGMESANO,1,2))
     Then Mensagem("Data Final difere do mes/ano da Ficha de Estoque !")
          Loop
  EndIf
  VSDGCONSIST="N"

  AGUARDE("Aguarde, Processando")
  TabelaR=Cria_Temp("\\Sistemas\\Estoque\\")
  Empty "Reproces"
  Copy "Reproces" TabelaR

  TabelaI=Cria_Temp("\\Sistemas\\Estoque\\")
  Empty "Invent"
  Copy "Invent" TabelaI
      
      
  Switch
    Case VSDGMOV="ABERTO"  : Dir_Trab=""
    Case VSDGMOV="FECHADO" : Dir_Trab="Fechames\\"+SubStr(VSDGMESANO,4,4)+"_"+SubStr(VSDGMESANO,1,2)+"\\"
                             If Not Verifica_Mov()
                                Then Msg="Para efetuar esta opera‡„o com as movimenta‡”es do mes "+StrVal(VSDGMESANO)+ ".//"+
                                         "Vocˆ devera fechar as movimenta‡”es do mes "+StrVal(VSDGMESANO)+" Em Aberto e //" +
                                         "repetir esta opera‡„o ou Tipo da Movimenta‡„o = (A) EM ABERTO"
                                     Mensagem(MSG)
                                     Delete TabelaR
                                     Delete TabelaI
                                     Loop
                             EndIf   
  EndSwitch
    
	;---- Processo adptado no NotaC o qual foi alterado para outra proc p/ utiliza‡Æo de REGRA -------
  Identifica_MesAno_Periodo(VSDGDTINI,VSDGDTFIM)
  For out from 1 to ArraySize(MESANO_DTINI)
    AUX_DTINI = MESANO_DTINI[out]
    AUX_DTFIM = MESANO_DTFIM[out]
  
    If Not Verifica_Emissao_Saida(AUX_DTFIM)
       Then Return
    EndIf    
    
    Seleciona_NotaC()
  EndFor
  ;-------------------------------------------------------------------------------------------------
  Seleciona()

  If IsEmpty(TabelaR)
     Then MENSAGEM("N„o Existem Registros a Processar")
          Delete TabelaR
          Delete TabelaI
          Loop
  EndIf

  NR=NRecords(TabelaI)
  Empty("Exp_Inv")
  View "Exp_Inv"
  View "Itens"
  View "Exp_Inv"
  CoEdit TabelaI
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Exportando Dados "+BARRA_STRING)
    CopyToArray REGITEM

    Moveto "Itens"
    Moveto [Codigo do Item]
    Locate REGITEM["Codigo do Item"]
    If RetVal
       Then Moveto "Exp_Inv"
            End Down
            [PR_TPEST]=1
            [PR_COD  ]=[Itens->Codigo do Item   ]
            [PR_DESC ]=[Itens->Descricao do Item]
            [PR_UNID ]=[Itens->Unidade Interna  ]
            Switch
              Case [Itens->Tipo do Item]="T"    : [PR_TIPOMAT]="RV"
              Case [Itens->Tipo do Item]="M" or
                   [Itens->Tipo do Item]="A"    : [PR_TIPOMAT]="MP"
              Case [Itens->Tipo do Item]="S"    : [PR_TIPOMAT]="SA"
              Case [Itens->Tipo do Item]="P"    : [PR_TIPOMAT]="PA"
              Case [Itens->Tipo do Item]="E"    : [PR_TIPOMAT]="EB"
            EndSwitch
            ;[PR_CUSTO]=NDECIMAL(REGITEM["Custo Total Atual"]/REGITEM["Saldo Atual"],5)
            [PR_CUSTO]=NDECIMAL(REGITEM["Valor Unitario"],5)
            [PR_SALDO]=REGITEM["Saldo Atual"]
       Else Moveto "Exp_Inv"
            End Down
            [PR_TPEST]=1
            [PR_COD  ]=REGITEM["Codigo do Item"]
            [PR_TIPOMAT]="PA"
    EndIf
    UnlockRecord
    Moveto TabelaI
  EndScan
  Do_It!
  ClearAll

  VSDGDRIVE=SubStr(Directory(),1,2)
  ARQ="\\Sistemas\\Exporta\\Dados\\CP"+VSDGEMPRESA+SubStr(VSDGMESANO,1,2)+".DBF"
  Deleta_Arquivo(ARQ)
  ARQNW=SubStr(ARQ,25,8)+"."+SubStr(VSDGMESANO,6,2)

  {Tools} {ExportImport} {Export} {dBASE} {2) dBASE III} {Exp_inv}
  TypeIn ARQ Enter
  Renomeia_Arquivo(ARQ+" "+ARQNW)

  MENSAGEM("Fim da Opera‡„o !// //Arquivo gerado em "+VSDGDRIVE+"\\Sistemas\\Exporta\\Dados\\"+ARQNW)

  Delete "Answer"
  Delete TabelaR
  Delete TabelaI
  Empty("Exp_Inv")
EndWhile
ClearAll
Release Vars All
Release Procs All
