;** Rm_011AF *******************************************************************
;*  Registro de Inventario de Estoque  para AF                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 28/08/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tratamento de Inativos
;Ultima Alteracao: 23/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Custo Total centavos
;Ultima Alteracao: 03/07/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DTREF
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 28/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Preco Venda
;Ultima Alteracao: 17/10/2009 por Cleber Alves
;Motivo Alteracao: Quando a TABELAI estiver vazia "Linha 1184"
;Ultima Alteracao: 19/01/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Repreoces Sequencia do Lancamento          
;Ultima Alteracao: 02/03/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado NCM na Tabela Invent
;Ultima Alteracao: 15/05/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado relatorio AF por Tipo Tributa‡Æo
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 27/12/2012 por Kamila Gomes
;Motivo Alteracao: Ajuste ordem alfab‚tica dos itens
;Ultima Alteracao: 11/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Itens propriedade de terceiros                 
;Ultima Alteracao: 14/02/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado vari veis de POSSE_ESTOQUE
;Ultima Alteracao: 20/03/2013 por Bruno Carvalho
;Motivo Alteracao: Removido das consultas o campo NBM
;Ultima Alteracao: 06/01/2014 por Kamila Gomes
;Motivo Alteracao: Ajustada Op‡Æo Com Complemento
;Ultima Alteracao: 07/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao buscar o custo na Ficha de Estoque
;Ultima Alteracao: 20/02/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes op‡Æo de impressao e TabelaI
;Ultima Alteracao: 26/02/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Vari vel VSDGOPRELATORIO
;Ultima Alteracao: 04/03/2015 por Luis Gustavo
;Motivo Alteracao: Adicionado novo modelo de relatorio. 04. INVENTARIO AF - Modelo P7    **ALUMAX**
;Ultima Alteracao: 20/03/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado no filtro para o cliente informar qual o inicio da Folha
;Ultima Alteracao: 18/09/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado verificacao de Mes/Ano fechado "Existe_Mes_Ano_Fechado()"
;Ultima Alteracao: 30/09/2015 por Bruno Carvalho
;Motivo Alteracao: Alterado "Codigo da Empresa Destino" - > "Codigo"
;Ultima Alteracao: 02/10/2015 por Bruno Carvalho  
;Motivo Alteracao: Incluido "I" no [Tipo de Operacao] para fornecer registros quando for requisi‡äes de Industrializa‡Æo
;Ultima Alteracao: 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/02/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado PrimeiroDia_MesAnterior e UltimoDia_MesPosterior p/ resgatar o primeiro dia do mˆs anterior e o ultimo dia do mˆs posterior
;Ultima Alteracao: 01/02/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado Monta_Dir_Trab() quando ‚ feito o Verifica_Mov(), p/ resgatar o primeiro dia do mˆs anterior e o ultimo dia do mˆs posterior
;Ultima Alteracao: 08/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Procedimentos semelhantes RM_0011, Layout ShowDialog 
;Ultima Alteracao: 10/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 28/09/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: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes gravar parametros
;Ultima Alteracao: 27/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sem modelo curva abc    
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_MOV, layout e valor
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado SetaVisualizarCasasDecimais(),ConfigOpcoes()
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes variavel casas decimais
;Ultima Alteracao: 25/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no campo TG_ZERADO p/ as op‡äes serem verificadas pelo F1
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 30/05/2018 por Bruno Carvalho
;Motivo Alteracao: Movido TG_ZERADO na BibShow e ajustado neste script
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 03/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes igual ao RM_0011        
;Ultima Alteracao: 19/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MudarDescricaoTipoItem()       
;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 TG_COMPLEMENTO
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CheckTG_OPOF[1]
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo
;Ultima Alteracao: 04/08/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo
;Ultima Alteracao: 28/10/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao ser gerado a TabelaIt a partir da tabela itens conforme ajustes realizados no invent rio
;Ultima Alteracao: 29/01/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes inclusÆo balan‡o estoque com terceiros #0353

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

AGUARDE("Aguarde, verifcando se existe lan‡amentos j  fechados/abertos")

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

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

;*** Requisicoes/Estoque ***
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then MSG_MODULO=MSG_MODULO+"Requisi‡”es no Estoque      "
                Switch
                  Case VSDGMOV="ABERTO" : MSG_MODULO=MSG_MODULO+" - "+Dir_Trab+"//"
                  Case VSDGMOV="FECHADO": MSG_MODULO=MSG_MODULO+" - Em aberto//"
                EndSwitch
                PROCESSAR_DADOS=False
        EndIf
EndIf

If CheckTG_OPOF[1]=False And VSDGMOV="FECHADO"
   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             ] Check
        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"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then MSG_MODULO=MSG_MODULO+"Ordem Fatura [Data Emiss„o] "+" - Em aberto//"
                PROCESSAR_DADOS=False
        EndIf
EndIf

;*** Balan‡o com terceiros ***
if sys_Codigo_Cliente="0353"
   then
        If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"Tab_invc")
           Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"Tab_invc" Enter
                Moveto [Numero do Lancamento     ] Check
                Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA2.."
                Moveto [Data_Inclusao            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Estoque_com_Terceiros    ] TypeIn "S"
                Do_It!
                ClearAll
                If Not IsEmpty("Answer")
                   Then MSG_MODULO=MSG_MODULO+"Balan‡o no Estoque com terceiros"
                        Switch
                          Case VSDGMOV="ABERTO" : MSG_MODULO=MSG_MODULO+" - "+Dir_Trab+"//"
                          Case VSDGMOV="FECHADO": MSG_MODULO=MSG_MODULO+" - Em aberto//"
                        EndSwitch
                        PROCESSAR_DADOS=False
                EndIf
        EndIf
endif

EndProc    ; (Verifica_Mov)

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

AGUARDE("Aguarde, carregando movimentos de "+AlinhM(StrVal(Month(AUX_DTINI)),2)+"."+StrVal(Year(AUX_DTINI)))

;*** 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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Tipo do Documento        ] Check
          Moveto [Codigo da Destinacao     ] Example "destin"
          Switch
            Case REGRA_DATA_ESTOQUE = "Antiga"    : Moveto [Data de Saida  ] Check 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  ] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                           
                                                      Else Moveto [Data de Emissao] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] Check 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        ] 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 [Tipo do Documento        ] Example "tpdoc"
          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"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Tipo do Documento        ] Example "tpdoc"
          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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Tipo do Documento        ] Check
          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  ] Check 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  ] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                      Else Moveto [Data de Emissao] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] Check 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        ] 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 [Tipo do Documento        ] Example "tpdoc"
          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 [Tipo do Documento        ] Example "tpdoc"   
          Moveto [Numero do Documento      ] Example "doc"          
          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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Tipo do Documento        ] Check
          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  ] Check 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  ] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                      Else Moveto [Data de Emissao] Check TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM ,as Data de Saida"
                                                    EndIf
            Case REGRA_DATA_ESTOQUE = "Nova"      : Moveto [Data de Emissao] Check 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        ] 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 [Tipo do Documento        ] Example "tpdoc"
          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"
          Moveto [Tipo do Documento        ] Example "tpdoc"
          Moveto [Numero do Documento      ] Example "doc"
          Do_It!
          ClearAll
        EndFor
EndIf

EndProc ;Seleciona_NotaC()

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

AGUARDE("Aguarde, carregando movimentos")

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             ] 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\\"+Dir_Trab+"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"  
                Moveto [Tipo do Documento        ] TypeIn "OF"
                Moveto [Serie do Documento       ] TypeIn "OF"
                Moveto [Numero do Documento      ] Example "doc"
                Do_It!
                ClearAll

                If Not IsEmpty("\\Sistemas\\Vendas\\"+Dir_Trab+"FaturaID")
                   Then ;*** 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\\"+Dir_Trab+"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\\"+Dir_Trab+"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"
                        Moveto [Tipo do Documento        ] TypeIn "OF"
                        Moveto [Serie do Documento       ] TypeIn "OF"
                        Moveto [Numero do Documento      ] Example "doc"
                        Do_It!
                        ClearAll
                EndIf

                ;*** 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             ] 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\\"+Dir_Trab+"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 [Tipo do Documento        ] TypeIn "OF"
                Moveto [Serie do Documento       ] TypeIn "OF"
                Moveto [Numero do Documento      ] Example "doc"
                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             ] 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\\"+Dir_Trab+"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"
                Moveto [Tipo do Documento        ] TypeIn "OF"
                Moveto [Serie do Documento       ] TypeIn "OF"
                Moveto [Numero do Documento      ] Example "doc"
                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     ] 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"
        Moveto [Tipo do Documento        ] Check
        Moveto [Numero do Documento      ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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 [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        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 [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        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     ] Check Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo do Documento        ] Check
        Moveto [Numero do Documento      ] Check
        Moveto [Tipo de Movimento        ] Check
        Moveto [Tipo de Operacao         ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        {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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        Do_It!
        ClearAll

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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"
        Moveto [Tipo do Documento        ] Check
        Moveto [Numero do Documento      ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        {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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        Do_It!
        ClearAll

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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"
        Moveto [Tipo do Documento        ] Check
        Moveto [Numero do Documento      ] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        {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"
        Moveto [Tipo do Documento        ] Example "tpdoc"
        Moveto [Numero do Documento      ] Example "ndoc"
        Do_It!
        ClearAll
EndIf

EndProc       ;(Seleciona)

;*******************************************************************************
;* Rotina p/ Processar Dados                                                   *
;*******************************************************************************
Proc Processa()
ClearAll

If IsTable("\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq") 
   Then TAB_TEMP = "\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq"
   Else TAB_TEMP = "\\Sistemas\\Estoque\\SdEstq"
EndIf 
  
; *** Processo para agilizar as consultas usando apenas a estrutura de Itens ***
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item          ] check
Moveto [Tipo do Item            ] check
Moveto [Descricao do Item       ] check
Moveto [Unidade Interna         ] check
Moveto [Codigo_Localizacao      ] check
Moveto [Localizacao             ] check
Moveto [Referencia              ] check
Moveto [Descricao Complementar  ] check
Moveto [Descricao Tipo do Item  ] check
Moveto [Codigo da Familia       ] check
Moveto [Descricao da Familia    ] check
Moveto [Codigo do Grupo         ] check
Moveto [Descricao do Grupo      ] check
Moveto [Codigo da Marca         ] check
Moveto [Descricao da Marca      ] check
Moveto [Codigo da Cor_Tecido    ] check
Moveto [Descricao da Cor_Tecido ] check
Moveto [Tipo Codigo_Barras      ] check
Moveto [Codigo de Barras        ] check
Moveto [Codigo Fornecedor       ] check
Moveto [Codigo da Grade         ] check
Moveto [NCM                     ] check
Moveto [Codigo do Departamento  ] check
Moveto [Inativo                 ] check
Moveto [Tipo Tributacao         ] check
Moveto [Tributacao de ICMS      ] check
Moveto [Aliquota Reduzida BCICMS] check
Moveto [Aliquota de ICMS        ] check
Moveto [Propriedade_Terceiro    ] check
Do_It!
ClearAll              
   
TabelaIt=Adiciona_indice_temp("Codigo do Item")

;******** Saldo Inicial *******
AGUARDE("Aguarde, carregando estoque inicial de "+VSDGMES+"/"+VSDGANO)

;******** Saldo Inicial *******
{Ask} TypeIn TabelaIt Enter 
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


Coedit TabelaR
Scan
 CUSTO=[Valor Total]
 QUANT=[Quantidade] 
 [Valor Unitario] = NDecimal(CUSTO/QUANT,5)
EndScan
Do_It!
ClearAll



;******** Tipo de Itens e Tipo de Estoque *******
{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item   ] Example "cod"
Ask_EstoqueTpItem("")
{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

;-- Ajusta ordem balanco -------------------------------------------------------
{Ask} TypeIn TabelaR Enter TypeIn "Fast"
Moveto [Tabela                   ] TypeIn "RQITEM"
Moveto [Numero do Lancamento     ] TypeIn "ZERAMENTO"
Moveto [Ordem Balanco            ] TypeIn "Changeto 1"
Do_It!
ClearAll

{Ask} TypeIn TabelaR Enter TypeIn "Fast"
Moveto [Tabela                   ] TypeIn "RQITEM"
Moveto [Numero do Documento      ] TypeIn "BALANCO"
Moveto [Ordem Balanco            ] TypeIn "Changeto 2"
Do_It!
ClearAll

AGUARDE("Aguarde, calculando estoque")


;--- Em 12.11.2015 -> Foi ajustado conforme o SORT no RM_MOVTO p/ ordena‡Æo mais precisa dos registros ----------
Sort TabelaR On "Codigo da Empresa","Codigo do Item",
                "Data do Movimento", "Ordem Balanco","Tipo do Movimento","Tipo do Documento",
                "Numero do Documento","Sequencia do Lancamento"

If VSDGOPCUSTO="V" Then View "\\Sistemas\\Vendas\\Tbprite"    EndIf
If VSDGOPCUSTO="F" Then View "\\Sistemas\\Producao\\FormulaC" EndIf
View TAB_TEMP
CoEdit TabelaIt,TabelaI,TabelaR

NR = NRecords(TabelaR)

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
DATANEG=BlankDate()
Ler_CustoInicial()
Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, calculando estoque "+BARRA_STRING)
   
   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 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

   ;;*** Consiste irregularidades no inventario ***
   INCONSISTENTE=False
   If Saldo_Atual < 0 Or Custo_Total_Atual < 0
      Then INCONSISTENTE=True
   EndIf
   If Saldo_Atual > 0 And Custo_Total_Atual <= 0
      Then INCONSISTENTE=True
   EndIf
   If Custo_Total_Atual > 0 And Saldo_Atual <= 0
      Then INCONSISTENTE=True
   EndIf
   If INCONSISTENTE
      Then ENCONTRADO_INCONSISTENCIA=True
           Switch
             Case VSDGCONSIST="1":
               If IsBlank([Data do Movimento])
                  Then DATANEG=VSDGDTINI
                  Else DATANEG=[Data do Movimento]
               EndIf
             Case VSDGCONSIST="2":
               If [Data do Movimento]=VSDGDTREF
                  Then DATANEG=[Data do Movimento]
               EndIf
             Case VSDGCONSIST="3":
               If [Data do Movimento]=VSDGDTREF And Saldo_Atual<0            
                  Then DATANEG=[Data do Movimento]
               EndIf
           EndSwitch
   EndIf
   ;;**********************************************


   Moveto TabelaR

EndScan
Grava_Invent()
Do_It!
ClearAll

AGUARDE("Aguarde, ajustando dados")

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

;-- Estoque com terceiros ------------------------------------------------------
if sys_Codigo_Cliente="0353"
   then
        If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"Tab_invc")
           Then
                {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"Tab_invc" Enter
                Moveto [Numero do Lancamento     ] check Example "doc"
                Moveto [Codigo da Empresa        ] check TypeIn "~VSDGEMPRESA.."
                Moveto [Data_Inclusao            ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Estoque_com_Terceiro     ] TypeIn "S"
                Moveto [Codigo                   ] check
                {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"Tab_invi" Enter
                Moveto [Numero do Lancamento     ] Example "doc"
                Moveto [Sequencia                ] Check
                Moveto [Codigo do Item           ] Check
              ;;Ask_EstoqueTpItem("NaoControlaEstoque")
                Moveto [Quantidade               ] Check
                Moveto [Custo Unitario           ] Check
                Do_It!
                ClearAll
        
                if Not Isempty("Answer")
                   then
                        {Ask} {\\Sistemas\\Cadastro\\Destinat}
                        Moveto [Codigo                   ] Example "cpess"
                        Moveto [Razao Social             ] Example  "rz"
                        Moveto [CGC                      ] Example  "cgc"
                        {Ask} {Answer}
                        Moveto [Codigo da Empresa        ] Example "emp"
                        Moveto [Codigo do Item           ] Example "ite"
                        Moveto [Quantidade               ] typein  "_qtd"
                        Moveto [Custo Unitario           ] typein  "_ctuni"
                        Moveto [Codigo                   ] Example "cpess"
                        {Ask} TypeIn TabelaI Enter TypeIn "Insert"
                        Moveto [Codigo da Empresa        ] Example "emp"
                        Moveto [Posse_Estoque            ] TypeIn "CT"
                        Moveto [Codigo_Terceiro          ] Example "cpess"
                        Moveto [Razao Social             ] Example "rz"
                        Moveto [CGC                      ] Example "cgc"
                        Moveto [Codigo do Item           ] Example "ite"
                        Moveto [Saldo Atual              ] typein  "_qtd"
                        Moveto [Valor Unitario           ] typein  "_ctuni"
                        Moveto [Custo Total Atual        ] typein  "_qtd*_ctuni"
                        Do_It!
                        ClearAll
                endif
        endif
endif

;-- Ajusta dados do cadastro de Itens ------------------------------------------
{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item          ] example "item"
Moveto [Tipo do Item            ] example "tp"
Moveto [Descricao do Item       ] example "desc"
Moveto [Unidade Interna         ] example "un"
Moveto [Localizacao             ] example "loc"
Moveto [Referencia              ] example "ref"
Moveto [Descricao Complementar  ] example "dcomp"
Moveto [Descricao Tipo do Item  ] example "dtp"
Moveto [Codigo da Familia       ] example "cf"
Moveto [Descricao da Familia    ] example "df" 
Moveto [Codigo do Grupo         ] example "cg"
Moveto [Descricao do Grupo      ] example "dg"
Moveto [Codigo da Marca         ] example "cm"
Moveto [Descricao da Marca      ] example "dm"
Moveto [Codigo da Cor_Tecido    ] example "cct"
Moveto [Descricao da Cor_Tecido ] example "dct"
Moveto [Tipo Codigo_Barras      ] example "tcb"
Moveto [Codigo de Barras        ] example "cb"
Moveto [Codigo Fornecedor       ] example "cfr"
Moveto [NCM                     ] example "ncm"

{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"
Moveto [Localizacao             ] TypeIn "Changeto " example "loc"
Moveto [Referencia              ] TypeIn "Changeto " example "ref"
Moveto [Descricao Complementar  ] TypeIn "Changeto " example "dcomp"
Moveto [Descricao Tipo do Item  ] TypeIn "Changeto " example "dtp"
Moveto [Codigo da Familia       ] TypeIn "Changeto " example "cf"
Moveto [Descricao da Familia    ] TypeIn "Changeto " example "df" 
Moveto [Codigo do Grupo         ] TypeIn "Changeto " example "cg"
Moveto [Descricao do Grupo      ] TypeIn "Changeto " example "dg"
Moveto [Codigo da Marca         ] TypeIn "Changeto " example "cm"
Moveto [Descricao da Marca      ] TypeIn "Changeto " example "dm"
Moveto [Codigo da Cor_Tecido    ] TypeIn "Changeto " example "cct"
Moveto [Descricao da Cor_Tecido ] TypeIn "Changeto " example "dct"
Moveto [Tipo Codigo_Barras      ] TypeIn "Changeto " example "tcb"
Moveto [Codigo de Barras        ] TypeIn "Changeto " example "cb"
Moveto [Codigo Fornecedor       ] TypeIn "Changeto " example "cfr"
Moveto [NCM                     ] TypeIn "Changeto " example "ncm"
Do_It!
ClearAll

;** Apenas quando n„o consistir erros *****************************
If VSDGCONSIST="0"
   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

;-- Elimina os Inativos --------------------------------------------------------
{Ask} {\\Sistemas\\Estoque\\EstqPrm}
Moveto [Codigo da Empresa     ] example "empr"
Moveto [Codigo do Item        ] example "item"
Moveto [Data de Inatividade   ] TypeIn "<~VSDGDTFIM"
{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item        ] example "item"
Moveto [Inativo               ] TypeIn "S"
{Ask} TypeIn TabelaI Enter TypeIn "Fast Delete"
Moveto [Codigo da Empresa     ] example "empr"
Moveto [Codigo do Item        ] example "item"
Moveto [Saldo Atual           ] TypeIn "0 or Blank"
Moveto [Custo Total Atual     ] TypeIn "0 or Blank"
Do_It!
ClearAll

;-- Pega a aliquota de icms ----------------------------------------------------
{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item    ] Example "Codigo"
Moveto [Tributacao de ICMS] TypeIn "D"
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"

{Ask} TypeIn TabelaI Enter
Moveto [Codigo do Item  ] Example "Codigo"
Moveto [Aliquota de ICMS] TypeIn "Changeto " Example "Al"
Moveto [Pagina          ] TypeIn "Changeto " Example "Uf"
Do_It!
ClearAll

{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item  ] Example "Codigo"
Moveto [Tributacao de ICMS] TypeIn "D"
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
 
;-- Itens de propriedade de terceiros ------------------------------------------
AGUARDE("Aguarde, verificando itens de propriedade de terceiros")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "cforn"
Moveto [Razao Social           ] Example  "rz"
Moveto [CGC                    ] Example  "cgc"
{Ask} {\\Sistemas\\Estoque\\Marcas}
Moveto [Codigo da Marca        ] example "cmar"
Moveto [Codigo_Fornecedor_Marca] example "cforn"
{Ask} TypeIn TabelaIt Enter 
Moveto [Codigo do Item         ] example "item"
Moveto [Propriedade_Terceiro   ] TypeIn "S"
Moveto [Codigo da Marca        ] example "cmar"
{Ask} TypeIn TabelaI Enter TypeIn "Fast"
Moveto [Codigo do Item        ] example "item"
Moveto [Posse_Estoque         ] TypeIn "Changeto DT"
Moveto [Codigo_Terceiro       ] TypeIn "Changeto _cforn"
Moveto [Razao Social          ] TypeIn "Changeto _rz"
Moveto [CGC                   ] TypeIn "Changeto _cgc"
Do_It!
ClearAll

EndProc    ; (Processa)

;*******************************************************************************
;* Rotina Ler Custo                                                            *
;*******************************************************************************
Proc 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

;*******************************************************************************
;* Rotina Grava Inventario                                                     *
;*******************************************************************************
Proc Grava_Invent()

Switch
  Case VSDGOPCUSTO="V":
       Moveto "\\sistemas\\vendas\\tbprite"
       Moveto [Codigo da Tabela]
       Locate VSDGTABELA,ITEM
       If RetVal
          Then Custo_Total_Atual   =NDecimal(Saldo_Atual*[Preco Unitario],2)
               Custo_Unitario_Atual=[Preco Unitario]
          Else Custo_Total_Atual   =BlankNum()
               Custo_Unitario_Atual=BlankNum()
       EndIf
  Case VSDGOPCUSTO="U":
       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)
               Custo_Unitario_Atual=[Preco de Custo]
          Else Custo_Total_Atual   =BlankNum()
               Custo_Unitario_Atual=BlankNum()
       EndIf
  Case VSDGOPCUSTO="M":
       Custo_Unitario_Atual=Custo_Total_Atual/Saldo_Atual
EndSwitch

NCM=""
Moveto TabelaIt
Moveto [Codigo do Item]
Locate ITEM
If RetVal
   Then NCM=[NCM]
EndIf

If VSDGCONSIST<>"0"
   Then If Not IsBlank(DATANEG)
           Then Registro()
        EndIf
   Else Registro()
EndIf

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

;*******************************************************************************
;* Grava Registro                                                              *
;*******************************************************************************
Proc Registro()

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        
 
EndProc ;Registro()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
proc MudarDescricaoTipoItem()

{Ask} {TpItem}
moveto [Tipo do Item            ] typein "_tp"
moveto [SPED_Tipo               ] typein "_dtp"
{Ask} TypeIn TabelaI Enter TypeIn "Fast"
moveto [Tipo do Item            ] typein "_tp"
moveto [Descricao Tipo do Item  ] typein "changeto _dtp"
Do_It!
ClearAll

endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA    =""

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9    : Temp=False
     Case Evento["KeyCode"] = -59  :
          Switch
            Case Campo="TG_CONSIST":
              ShowPopup " Op‡äes de consistˆncia " CENTERED
               "~0~  NÆo consistir             " : " NÆo consistir erros                             " : "0",
                 Separator,
               "~1~  Consistir todos           " : " Consistir todos os erros                        " : "1",
               "~2~  Consistir erros do dia    " : " Consistir apenas erro da 'Data Final'           " : "2",
               "~3~  Consistir saldo do dia    " : " Consistir apenas saldo negativos da 'Data Final'" : "3",
                 Separator,
               "~C~ancelar                     " : " Cancelar a Opera‡„o                             " : "CANCELAR"
              EndMenu
               To VSDGCONSIST
              If Not RetVal
                 Then VSDGCONSIST=""
              EndIf
              RefreshDialog
            OtherWise               : Dialog_F1()
          EndSwitch
     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_FAMI"          :
                 If VSDGMOV="ABERTO"
                    Then Campo="TG_DTREF"
                    Else Campo="TG_MESANO"
                 EndIf
            Case Campo="TG_GRP"           : Campo="TG_FAMI"
            Case Campo="TG_MARCA"         : Campo="TG_GRP"
            Case Campo="TG_CONSIST"       : Campo="TG_MARCA"
            Case Campo="TG_ZERADO"        : Campo="TG_CONSIST"
            Case Campo="TG_OPRELCODALF"   :
                 If VSDGCONSIST="S"
                    Then Campo="TG_CONSIST"
                    Else Campo="TG_ZERADO"
                 EndIf
            Case Campo="TG_OPCUSTO"       : Campo="TG_OPRELCODALF"
            Case Campo="TG_TABELA"        : Campo="TG_OPCUSTO"
            Case Campo="TG_NFOLHA"        :
                 If VSDGOPCUSTO<>"V"
                    Then VSDGTABELA=""
                         VSDGNOMTAB=""
                         Campo="TG_OPCUSTO"
                    Else Campo="TG_TABELA"
                 EndIf
            Case Campo="TG_COMPLEMENTO"    : Campo="TG_NFOLHA"
            Case Campo="TG_CODMODELO"      : Campo="TG_COMPLEMENTO"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA" : Campo="TG_TIPOEST"
                    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(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()) And
                                    Year(VSDGDTREF)=Year(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 If Year(VSDGDTREF)<>NumVal(SubStr(VSDGMESANO,4,4)) Or
                                    Month(VSDGDTREF)<>NumVal(SubStr(VSDGMESANO,1,2))
                                    Then Mensagem("Data Final difere do mˆs/ano da Ficha de Estoque !")
                                    Else VSDGDTFIM = VSDGDTREF
                                         Campo = "TG_FAMI"
                                 EndIf
                         EndIf
                    Case Campo="TG_FAMI"        : Campo = "TG_GRP"
                    Case Campo="TG_GRP"         : Campo = "TG_MARCA"
                    Case Campo="TG_MARCA"       : Campo = "TG_CONSIST"
                    Case Campo="TG_CONSIST"     :
                         VSDGCONSIST=ControlValue("TG_CONSIST")
                         Switch
                          Case VSDGCONSIST ="1":
                               VSDGDESCCONS="Consistir todos"
                               MENSAGEM    ="Todos os erros"
                               VSDGZERADO=""
                               VSDGDESCZERADO=""
                               Campo="TG_OPRELCODALF"
                          Case VSDGCONSIST ="2":
                               VSDGDESCCONS="Consistir da Data Final"
                               MENSAGEM    ="Consistˆncia Apenas erro da 'Data Final'"
                               VSDGZERADO=""
                               VSDGDESCZERADO=""
                               Campo="TG_OPRELCODALF"
                          Case VSDGCONSIST ="3":
                               VSDGDESCCONS="Apenas negativos da Data Final"
                               MENSAGEM    ="Consistˆncia apenas itens negativos na 'Data Final'"
                               VSDGZERADO=""
                               VSDGDESCZERADO=""
                               Campo="TG_OPRELCODALF"
                          OtherWise:
                               VSDGCONSIST ="0"
                               VSDGDESCCONS="NÆo consistir erros"
                               MENSAGEM    = ""
                               Campo="TG_ZERADO"
                         EndSwitch     
                    Case Campo="TG_ZERADO"      : Campo="TG_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF" : Campo = "TG_OPCUSTO"
                    Case Campo="TG_OPCUSTO" :
                         VSDGOPCUSTO=ControlValue("TG_OPCUSTO")
                         Switch
                           Case VSDGOPCUSTO="U": VSDGNOMOPCUSTO="ULTIMO CUSTO"
                           Case VSDGOPCUSTO="V": VSDGNOMOPCUSTO="VENDA"
                           OtherWise           : VSDGOPCUSTO="M"
                                                 VSDGNOMOPCUSTO="CUSTO MEDIO"
                         EndSwitch
                         If VSDGOPCUSTO<>"V"
                            Then VSDGTABELA=""
                                 VSDGNOMTAB=""
                                 Campo="TG_NFOLHA"
                            Else Campo="TG_TABELA"
                         EndIf
                    Case Campo="TG_TABELA"      :
                         If IsBlank(VSDGTABELA)
                            Then Campo="TG_TABELA"
                                 VSDGNOMTAB=""
                            Else Campo = "TG_NFOLHA"
                         EndIf
                    Case Campo="TG_NFOLHA"      :
                         VSDGNFOLHA=ControlValue("TG_NFOLHA")
                         If VSDGNFOLHA=""
                            Then VSDGNFOLHA=2
                         EndIf
                         Campo = "TG_COMPLEMENTO"      
                           
                    Case Campo="TG_COMPLEMENTO" : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"   : Campo = "YES"
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_CONSIST":
       TECLA=TECLA+"F1=Consulta  "
       ;MSG_CAMPO="Saldos/Custos Negativos ou Irregulares"
  Case Campo="TG_OPCUSTO":
       MSG_CAMPO="M=Custo Medio, U=Ultimo Custo, V=Venda"
  Case Campo="TG_DTREF":
       MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_TABELA":
       MSG_CAMPO="Informe uma Tabela de Pre‡o"
  Case Campo="TG_NFOLHA":
       MSG_CAMPO="Informe o n£mero de in¡cio da folha"     
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

TG_CODMODELO_COMCASASDECIMAIS=true

VSDGCODMODELO     = ""
VSDGMODELO        = ""

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

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01 - Invent rio AF")
ModeloRelatoriosAdd("02 - Invent rio AF c/ NCM")
ModeloRelatoriosAdd("03 - Invent rio AF Tipo Tributa‡„o ")
ModeloRelatoriosAdd("04 - INVENTARIO AF - Modelo P7 ")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

ClearAll

VSDGEMPRESA     = ""
VSDGTIPOEST     = ""
VSDGDESCTIPOEST = ""
VSDGMOV         = ""
VSDGDESCMOV     = ""
VSDGMESANO      = ""
VSDGDTREF       = BlankDate()
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()
VSDGFAMI        = ""
VSDGMARCA       = ""
VSDGGRP         = ""
VSDGCONSIST     = "0"
VSDGDESCCONS    = ""
VSDGZERADO      = ""
VSDGDESCZERADO  = ""
VSDGOPRELCODALF = ""
VSDGOPCUSTO     = ""
VSDGNOMOPCUSTO  = ""
VSDGNFOLHA      = 2
VSDGMESANO      = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)

Array CheckTG_COMPLEMENTO[1] CheckTG_COMPLEMENTO[1]=False
Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =True  ; False=+OF, True=-OF

ModeloRelatoriosCarregaLista()

While True

  OP_SHOW="S"
  ShowDialog "Invent rio do Estoque AF" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 01,07 Height 22 Width 80

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

    Label  @ 02,00 "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  @ 06,00 "Familia"  For "TG_FAMI"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

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

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

    Label  @ 00,35 "Consistir Erros"  For "TG_CONSIST"
    Accept @ 01,39 Width 04 "A1"  Picture "0,1,2,3" Tag "TG_CONSIST" To VSDGCONSIST         
    Accept @ 01,44 Width 25 "A25"  Tag "TG_DESCCONS" To VSDGDESCCONS

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

    Label  @ 04,35 "Op‡„o de Ordem" For "TG_OPRELCODALF"
    Accept @ 05,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 05,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    Label  @ 06,35 "Op‡„o de Pre‡o" For "TG_OPCUSTO"
    Accept @ 07,39 Width 04 "A1"  Picture "M,U,V,F" Tag "TG_OPCUSTO" To VSDGOPCUSTO
    Accept @ 07,44 Width 16 "A25"  Picture "!*!" Tag "TG_NOMOPCUSTO" To VSDGNOMOPCUSTO

    Label  @ 06,59 "Tab.Pre‡o"  For "TG_TABELA"
    Accept @ 07,61 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA"    To VSDGTABELA
                  
    Label  @ 08,35 "N£mero da Folha"  For "TG_NFOLHA"
    Accept @ 09,36 Width 07 "A2"  Picture "#*#" Tag "TG_NFOLHA" To VSDGNFOLHA

    CheckBoxes @ 10,35 Height 1 Width 33 Tag "TG_COMPLEMENTO"  "Com descri‡Æo complementar"  to CheckTG_COMPLEMENTO[1]
                  
    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif
  
  If VSDGOPCUSTO="V" and IsBlank(VSDGTABELA)
     Then Mensagem("Tabela de Pre‡o Inv lida !")
          Loop
  EndIf

  If IsBlank(VSDGDTREF)    Or
     (VSDGDTFIM<VSDGDTINI) Or
     IsBlank(VSDGMESANO)
     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                                         

  If Existe_Mes_Ano_Fechado("01."+VSDGMESANO,"Estoque","Sdestq") Then Loop EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf
  If OK="A" Then Mensagem("Op‡Æo gerar em arquivo nÆo disponivel") loop EndIf
  OPIMP=OK

  AGUARDE("Aguarde, Checando Dados")
  PROCESSAR_DADOS=True
  MSG_MODULO=""
  Switch
		Case VSDGMOV="ABERTO":
				 Monta_Dir_Trab(PrimeiroDia_MesAnterior(VSDGDTINI),UltimoDia_MesPosterior(VSDGDTFIM))
				 While Novo_Dir_Trab()
           If Not IsBlank(Dir_Trab)
              Then Verifica_Mov()
					 EndIf
				 EndWhile
		Case VSDGMOV="FECHADO":
				 Dir_Trab=""
         Verifica_Mov()
  EndSwitch
  If Not PROCESSAR_DADOS
     Then Switch
            Case VSDGMOV="ABERTO":
                 MSG="Existem movimenta‡”es Fechadas://"
                 MSG=MSG+MSG_MODULO+" //"
                 MSG=MSG+"Voce selecionou op‡„o Mes em Aberto.// //"
            Case VSDGMOV="FECHADO":
                 MSG="Existem movimenta‡”es Em Aberto://"
                 MSG=MSG+MSG_MODULO+" //"
                 MSG=MSG+"Voce selecionou op‡„o Mes Fechado.// //"
          EndSwitch
          MSG=MSG+"Verificar !"
          Mensagem(MSG)
          Loop
  EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  TabelaR=Cria_Temp(Privdir())
  Empty "Reproces"
  Copy "Reproces" TabelaR

  TabelaI=Cria_Temp(PrivDir())
  Empty "Invent"
  Copy "Invent" TabelaI

  Switch
    Case VSDGMOV="FECHADO":
			   ;---- Processo adptado no NotaC o qual foi alterado para outra proc p/ utiliza‡Æo de REGRA -------
         Identifica_MesAno_Periodo(PrimeiroDia_MesAnterior(VSDGDTINI),UltimoDia_MesPosterior(VSDGDTFIM))
         For out from 1 to ArraySize(MESANO_DTINI)
           AUX_DTINI = MESANO_DTINI[out]
           AUX_DTFIM = MESANO_DTFIM[out]
         
           If Not Verifica_Emissao_Saida(AUX_DTFIM)
              Then Return
           EndIf    
            
           Monta_Dir_Trab(AUX_DTINI,AUX_DTFIM)
           While Novo_Dir_Trab()
             If Not IsBlank(Dir_Trab)
                Then Seleciona_NotaC()
             EndIf   
           EndWhile
         EndFor
        
         Monta_Dir_Trab(PrimeiroDia_MesAnterior(VSDGDTINI),UltimoDia_MesPosterior(VSDGDTFIM))
         While Novo_Dir_Trab()
           If Not IsBlank(Dir_Trab)
              Then Seleciona()
           EndIf   
         EndWhile	
    Case VSDGMOV="ABERTO":
				 Dir_Trab=""
				 ;---- 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()
  EndSwitch

  ENCONTRADO_INCONSISTENCIA=False
  Processa()
  Inventario=True
  If IsEmpty(TabelaI)
     Then If VSDGCONSIST<>"0"
             Then MENSAGEM("N„o Existem Inconsistencias")
             Else MENSAGEM("N„o Existem Registros a Processar")
          EndIf
          Delete TabelaR
          Delete TabelaI
          Loop
  EndIf
  
  If VSDGOPCUSTO="V"
     Then VSDGNOMOPCUSTO="VENDAS "+VSDGTABELA
  EndIf

  If OK="I"
     Then ARQIMP=DIREPORT+"INVENT.txt"
     Else ARQIMP=DIREPORT+ARQUIVO+".txt"
  EndIf

  SetaVisualizarCasasDecimais("15")

  POSSE   ="Do informante e em seu poder"
  POSSE_CT="Do informante em poder de terceiros"
  POSSE_DT="De terceiros em poder do informante"
                                
  If ENCONTRADO_INCONSISTENCIA And VSDGCONSIST="0"
     Then MSG=""
          MSG=MSG+"O Sistema detectou inconsistˆncia de dados !// //"
          MSG=MSG+"Saldos e valores imcompat¡veis ou//"
          MSG=MSG+"em algum momento o Estoque ficou negativo.// //"
          MSG=MSG+"Execute o Invent rio com CONSISTIR ERROS !// //"
          MSG=MSG+"Corrija o problema para obter o MELHOR controle !"
          Mensagem(MSG)
  EndIf

  {Ask} TypeIn TabelaI Enter Check
  Do_It!
  ClearAll
  Delete TabelaI
  Rename "Answer" TabelaI

  MudarDescricaoTipoItem()

  Switch
    Case VSDGCODMODELO="02" : Play "Imp_Inv2"
    Case VSDGCODMODELO="03" : Play "Imp_Inv3"
    Case VSDGCODMODELO="04" : Play "Imp_Inv4"
    OtherWise               : Play "Imp_Inv"
  EndSwitch
               
  Delete TabelaR
  Delete TabelaI

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