;** Rm_0011B ********************************************************************
;*  Registro de Inventario para Balan‡o                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/12/2010 por Karina Andrade
;Ultima Alteracao: 01/02/2011 Karina 
;Motivo Alteracao: Ajustes novos campos 
;Ultima Alteracao: 30/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Isabela Garcia Nova Codifica‡Æo
;Ultima Alteracao: 12/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novas fun‡äes para confec‡äes  
;Ultima Alteracao: 21/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Inventario do Dia do Balan‡o  
;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: 28/12/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sele‡Æo tipo do item       
;Ultima Alteracao: 09/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sele‡Æo tipo do item typein VSDGTIPOEST
;Ultima Alteracao: 30.01.2012 Karina Andrade 
;Motivo Alteracao: Ajustes Ask para selecionar itens
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 14/08/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes RM_0011B_Compara_Balanco() onde nÆo estava filtrando familia, grupo, marca
;Ultima Alteracao: 30/08/2012 por Kamila Gomes
;Motivo Alteracao: Ajustes RM_0011B_Compara_Balanco() VSDGZERAEST nÆo era setada corretamente
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 25/01/2013 por Kamila Gomes
;Motivo Alteracao: Consistir diferen‡as ou nÆo consistir
;Ultima Alteracao: 01/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes descricao do movimento/operacao                   
;Ultima Alteracao: 11/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Itens propriedade de terceiros 
;Ultima Alteracao: 12/02/2014 por Andrey Fillipe
;Motivo Alteracao: Correcao Consistir diferen‡as ou nÆo consistir                
;Ultima Alteracao: 07/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao buscar o custo na Ficha de Estoque
;Ultima Alteracao: 27/05/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Op‡Æo paara filtrar balan‡os de um determinado item mostrando os lan‡amentos
;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: 28/10/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Identifica_MesAno_Periodo() e adicionado parte do processo 
;                  RM_0011B_Seleciona() na proc RM_0011B_Seleciona_NotaC()
;Ultima Alteracao: 01/02/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado Monta_Dir_Trab() quando ‚ feito o RM_0011B_Verifica_Mov(), 
;                  p/ resgatar o primeiro dia do mˆs anterior e o ultimo dia do mˆs posterior
;Ultima Alteracao: 30/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 01/08/2016 por Bruno Carvalho 
;Motivo Alteracao: Adicionado no filtro VSDGEMPRESA nas ASK da Tab_InvC -> RM_0011B_Gera_Tabela()
;Ultima Alteracao: 18/08/2016 por Bruno Carvalho 
;Motivo Alteracao: Ajsutes p/ quando VSDGTIPOEST = "" no RM_0011B_Processa()
;Ultima Alteracao: 29/09/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0388# -> PegaCodigoRaiz()
;Ultima Alteracao: 30/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes permitir informar quantidade 0              
;Ultima Alteracao: 03/12/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0390# -> PegaCodigoRaiz()
;Ultima Alteracao: 29/12/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes em RM_0011B_Compara_Balanco()
;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: 07/04/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0396# -> PegaCodigoRaiz()
;Ultima Alteracao: 25/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes balan‡o qtd=0 e item nÆo inforamdo no balanco mas ficou zerado
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Ordem_Report()                
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: 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: 24/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ atender tambem o script do vendas RM_3250D -> Vai vel de Controle PARAM_SCRIPT
;Ultima Alteracao: 18/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0419# -> PegaCodigoRaiz()
;Ultima Alteracao: 20/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes logica report rm_1002 5
;Ultima Alteracao: 05/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes RM_0011B_Compara_Balanco()
;Ultima Alteracao: 28/12/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processos de #0427#
;Ultima Alteracao: 06/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes seramento saldo diferen‡a centavos
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 23/04/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0429# -> PegaCodigoRaiz()
;Ultima Alteracao: 04/06/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes RM_0011B_Compara_Balanco()
;Ultima Alteracao: 02/08/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes saldo=0 custo=0               
;Ultima Alteracao: 06/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado processos de #0388# para #0444#
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 12/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc RM_0011B_Processa(), criado "Tabela_Item" p/ ser utilizada durante as ASKs realizadas neste processo
;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: 29/05/2020 por Bruno Carvalho
;Motivo Alteracao: Foi adicionado IsAssigned(VSDGTIPOEST) para a vari vel VSDGTIPOEST 
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro final tipo de item
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo

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

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

EndProc ;RM_0011B_Verifica_Mov()

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RM_0011B_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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          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
          If LOCALIZA_ITEM And VSDGITEM<>""
             Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
          EndIf
          Ask_EstoqueTpItem("NaoControlaEstoque")
          Moveto [Quantidade               ] Check
          Moveto [Situacao_Item            ] TypeIn "Not C"
          Do_It!
          ClearAll
  
          {Ask} {Answer}
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Data de 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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Descricao da Destinacao  ] TypeIn "Not ..DEVOL.., Not ..MANIF..,  Not ..CONSIG..,  Not ..REQUIS.., Not ..MOSTRUA.."
          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
          If LOCALIZA_ITEM And VSDGITEM<>""
             Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
          EndIf
          Ask_EstoqueTpItem("NaoControlaEstoque")
          Moveto [Quantidade               ] Check
          Moveto [Preco Total              ] Check
          Moveto [Valor do ICMS            ] Check
          Moveto [Valor do IPI             ] Check
          Moveto [Valor Desconto Total     ] Check
          Moveto [Situacao_Item            ] TypeIn "Not C"
          Do_It!
          ClearAll
  
          {Ask} {Answer}
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Data de 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        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento      ] Check Example "doc"
          Moveto [Serie do Documento       ] Check Example "ser"
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.. Or ..MANIF.. Or ..CONSIG.. Or ..REQUIS.. Or ..MOSTRUA.."
          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
          If LOCALIZA_ITEM And VSDGITEM<>""
             Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
          EndIf
          Ask_EstoqueTpItem("NaoControlaEstoque")
          Moveto [Quantidade               ] Check
          Moveto [Situacao_Item            ] TypeIn "Not C"
          Do_It!
          ClearAll
  
          {Ask} {Answer}
          Moveto [Codigo da Empresa        ] Example "emp"
          Moveto [Numero do Documento      ] Example "doc"
          Moveto [Serie do Documento       ] Example "ser"
          Moveto [Data de 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 ;RM_0011B_Seleciona_NotaC() 

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RM_0011B_Seleciona()
ClearAll
 
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
                If LOCALIZA_ITEM And VSDGITEM<>""
                   Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
                EndIf
                Ask_EstoqueTpItem("NaoControlaEstoque")
                Moveto [Quantidade               ] Check
                Do_It!
                ClearAll

                {Ask} {Answer}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo da Empresa        ] Example "emp"
                Moveto [Data de Emissao          ] Example "dtref"
                Moveto [Item da OF               ] Example "seq"
                Moveto [Codigo do Item           ] Example "ite"
                Moveto [Quantidade               ] Example "qtd"
                {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
                Moveto [Tabela                   ] TypeIn "FATURAI"
                Moveto [Codigo da Empresa        ] Example "emp"
                Moveto [Numero do Lancamento     ] Example "doc"
                Moveto [Sequencia do Lancamento  ] Example "seq"
                Moveto [Codigo do Item           ] Example "ite"
                Moveto [Data do Movimento        ] Example "dtref"
                Moveto [Tipo do Movimento        ] TypeIn "S"
                Moveto [Quantidade               ] Example "qtd"
                Do_It!
                ClearAll
                   
                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
                        If LOCALIZA_ITEM And VSDGITEM<>""
                           Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
                        EndIf
                        Ask_EstoqueTpItem("NaoControlaEstoque")
                        Moveto [Quantidade               ] Check
                        Do_It!
                        ClearAll
        
                        {Ask} {Answer}
                        Moveto [Numero da OF             ] Example "doc"
                        Moveto [Codigo da Empresa        ] Example "emp"
                        Moveto [Data de Emissao          ] Example "dtref"
                        Moveto [Item da OF               ] Example "seq"
                        Moveto [Codigo do Item           ] Example "ite"
                        Moveto [Quantidade               ] Example "qtd"
                        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
                        Moveto [Tabela                   ] TypeIn "FATURAID"
                        Moveto [Codigo da Empresa        ] Example "emp"
                        Moveto [Numero do Lancamento     ] Example "doc"
                        Moveto [Sequencia do Lancamento  ] Example "seq"
                        Moveto [Codigo do Item           ] Example "ite"
                        Moveto [Data do Movimento        ] Example "dtref"
                        Moveto [Tipo do Movimento        ] TypeIn "E"
                        Moveto [Quantidade               ] Example "qtd"
                        Do_It!
                        ClearAll     
                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
                If LOCALIZA_ITEM And VSDGITEM<>""
                   Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
                EndIf
                Ask_EstoqueTpItem("NaoControlaEstoque")
                Moveto [Quantidade               ] Check
                Moveto [Preco Total              ] Check
                Moveto [Valor do ICMS            ] Check
                Moveto [Valor do IPI             ] Check
                Moveto [Valor Desconto Total     ] Check
                Do_It!
                ClearAll

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

                ;*** Ordem de Fatura de Entrada/Faturamento DEVOLUCAO/MANIFESTO ***
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Atualiza Estoque         ] TypeIn "S"
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+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
                If LOCALIZA_ITEM And VSDGITEM<>""
                   Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
                EndIf
                Ask_EstoqueTpItem("NaoControlaEstoque")
                Moveto [Quantidade               ] Check
                Do_It!
                ClearAll

                {Ask} {Answer}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo da Empresa        ] Example "emp"
                Moveto [Data de Emissao          ] Example "dtref"
                Moveto [Item da OF               ] Example "seq"
                Moveto [Codigo do Item           ] Example "ite"
                Moveto [Quantidade               ] Example "qtd"
                {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
                Moveto [Tabela                   ] TypeIn "FATURAI"
                Moveto [Codigo da Empresa        ] Example "emp"
                Moveto [Numero do Lancamento     ] Example "doc"
                Moveto [Sequencia do Lancamento  ] Example "seq"
                Moveto [Codigo do Item           ] Example "ite"
                Moveto [Data do Movimento        ] Example "dtref"
                Moveto [Tipo do Movimento        ] TypeIn "E"
                Moveto [Tipo de Operacao         ] TypeIn "D"
                Moveto [Quantidade               ] Example "qtd"
                Do_It!
                ClearAll
        EndIf
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"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Check
        Moveto [Codigo do Item           ] Check
        If LOCALIZA_ITEM And VSDGITEM<>""
           Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
        EndIf
        Ask_EstoqueTpItem("NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Moveto [Quantidade Convertida    ] Check
        Moveto [Custo Medio Unitario     ] Check
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Data de Entrada          ] Example "dtref"
        Moveto [Tipo de Operacao         ] Example "oper"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Quantidade               ] Example "qtd"
        Moveto [Quantidade Convertida    ] Example "qtdcv"
        Moveto [Custo Medio Unitario     ] Example "ctuni"
        {Ask} TypeIn TabelaR Enter TypeIn "Fast Insert"
        Moveto [Tabela                   ] TypeIn "NOTAEI"
        Moveto [Codigo da Empresa        ] Example "emp"
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Example "seq"
        Moveto [Codigo do Item           ] Example "ite"
        Moveto [Data do Movimento        ] Example "dtref"
        Moveto [Tipo do Movimento        ] TypeIn "E"
        Moveto [Tipo de Operacao         ] Example "oper"
        Moveto [Quantidade               ] Example "qtdcv"
        Moveto [Valor Unitario           ] TypeIn "(_ctuni*_qtd)/_qtdcv"
        Moveto [Valor Total              ] Example "ctuni" TypeIn "*" Example "qtd"
        Do_It!
        ClearAll
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 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
        If LOCALIZA_ITEM And VSDGITEM<>""
           Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
        EndIf
        Ask_EstoqueTpItem("NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Moveto [Custo Unitario           ] Check
        Moveto [Custo Total              ] Check
        Do_It!
        ClearAll

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

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+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"
        {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
        If LOCALIZA_ITEM And VSDGITEM<>""
           Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
        EndIf
        Ask_EstoqueTpItem("NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Moveto [Custo Unitario           ] Check
        Moveto [Custo Total              ] Check
        Do_It!
        ClearAll

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

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+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"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Sequencia do Lancamento  ] Check
        Moveto [Codigo do Item           ] Check
        If LOCALIZA_ITEM And VSDGITEM<>""
           Then Moveto [Codigo do Item   ] TypeIn "~VSDGITEM.."
        EndIf
        Ask_EstoqueTpItem("NaoControlaEstoque")
        Moveto [Quantidade               ] Check
        Moveto [Custo Unitario           ] Check
        Moveto [Custo Total              ] Check
        Do_It!
        ClearAll

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

EndProc       ;(Seleciona)

;*******************************************************************************
;* Rotina p/ Processar Dados                                                   *
;*******************************************************************************
Proc RM_0011B_Processa()
ClearAll
                            
If IsTable("\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq") 
   Then TAB_TEMP = "\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq"
   Else TAB_TEMP = "\\Sistemas\\Estoque\\SdEstq"
EndIf 
                            
;******** Saldo Inicial *******
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "ITEM"
Ask_EstoqueTpItem("NaoControlaEstoque")
{Ask} TypeIn TAB_TEMP Enter
Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item        ] Check Example "ITEM"
Moveto [Saldo Inicial         ] Check
Moveto [Custo Total Inicial   ] Check
Moveto [Mes Referencia        ] TypeIn "~VSDGMES"
Moveto [Ano Referencia        ] TypeIn "~VSDGANO"
Do_It!
ClearAll

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

Coedit TabelaR
Scan
 CUSTO=[Valor Total]
 QUANT=[Quantidade] 
 [Valor Unitario] = NDecimal(CUSTO/QUANT,5)
EndScan
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.."
Moveto [Referencia       ] TypeIn "~VSDGREFERENCIA.."
Ask_EstoqueTpItem("")
{Ask} TypeIn TabelaR Enter Check
Moveto [Codigo do Item   ] Example "COD"
Do_It!
ClearAll

Empty(TabelaR)
Add "Answer" TabelaR
ClearAll

If IsEmpty(TabelaR)
   Then Return
EndIf

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

View TAB_TEMP
CoEdit "Itens","\\Sistemas\\Vendas\\Tbprite",TabelaI,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()
RM_0011B_Ler_CustoInicial()
Scan
   If [Codigo do Item] <> ITEM Or [Codigo da Empresa] <> EMPRESA2
      Then RM_0011B_Grava_Invent()
           DATANEG=BlankDate()
           RM_0011B_Ler_CustoInicial()
   EndIf

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

   CUSTO=0

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

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

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

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

   Moveto TabelaR

EndScan
RM_0011B_Grava_Invent()
Do_It!
ClearAll

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

;-- Ajusta dados do cadastro de Itens ------------------------------------------
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Check
Moveto [Tipo do Item          ] Check
Moveto [Descricao Tipo do Item] Check
Moveto [Descricao do Item     ] Check
Moveto [Unidade Interna       ] Check
Moveto [Codigo Fornecedor     ] Check
Moveto [Aliquota de ICMS      ] Check
Moveto [Propriedade_Terceiro  ] Check
Moveto [Codigo da Marca       ] Check
Do_It!
ClearAll

Tabela_Item=Adiciona_Indice_Temp("Codigo do Item")
ClearAll

{Ask} TypeIn Tabela_Item Enter
Moveto [Codigo do Item        ] example "item"
Moveto [Tipo do Item          ] example "tp"
Moveto [Descricao Tipo do Item] example "dtp"
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"
Moveto [Descricao Tipo do Item] TypeIn "Changeto " example "dtp"
Do_It!
ClearAll

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

;-- 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} {\\Sistemas\\Estoque\\Itens}
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 Tabela_Item Enter
Moveto [Codigo do Item    ] Example "Codigo"
Moveto [Codigo Fornecedor ] Example "Fornec"
{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} {\\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} TypeIn Tabela_Item Enter
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

;-- Itens de propriedade de terceiros ------------------------------------------
{Ask} TypeIn Tabela_Item Enter
Moveto [Codigo do Item         ] example "item"
Moveto [Propriedade_Terceiro   ] TypeIn "S"
Moveto [Codigo da Marca        ] example "cmar"
{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 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 RM_0011B_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 ;RM_0011B_Ler_CustoInicial()

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

Switch
  Case VSDGOPCUSTO="V":
			 coditem=ITEM

			 Moveto "Itens"
			 Moveto [Codigo do Item]
			 Locate coditem
			 If RetVal
			    Then If Not IsBlank([Codigo da Grade])
				          Then CodItem=PegaCodigoRaiz(CodItem)
				       EndIf
               If SYS_CODIGO_CLIENTE="0239" Or
                  SYS_CODIGO_CLIENTE="0388" Or
                  SYS_CODIGO_CLIENTE="0427" Or
                  SYS_CODIGO_CLIENTE="0390" Or
                  SYS_CODIGO_CLIENTE="0396" Or
                  SYS_CODIGO_CLIENTE="0345" Or
                  SYS_CODIGO_CLIENTE="0419" Or
                  SYS_CODIGO_CLIENTE="0444" Or
                  SYS_CODIGO_CLIENTE="0429"  
                  Then CodItem=PegaCodigoRaiz(CodItem)
               EndIf
       EndIf

       Moveto "\\sistemas\\vendas\\tbprite"
       Moveto [Codigo da Tabela]
       Locate VSDGTABELA,coditem
       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

If VSDGCONSIST<>"0"
   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_Unitario_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_Unitario_Atual
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  ;RM_0011B_Grava_Invent()

;*******************************************************************************
;* ROTINA Compara_Balanco                                                      *
;*******************************************************************************
Proc RM_0011B_Compara_Balanco()

If IsEmpty(TabelaI)
  Then Return
EndIf   

{Ask} {Itens}
Moveto [Codigo do Item    ] TypeIn "_COD"   
Moveto [Codigo da Familia ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo   ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca   ] TypeIn "~VSDGMARCA.."
Moveto [Referencia        ] TypeIn "~VSDGREFERENCIA.."

{Ask} TypeIn "Tab_InvC" Enter
Moveto [Numero do Lancamento] TypeIn "_Lanc"
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Moveto [Data_Inclusao       ] TypeIn "~VSDGDTREF.."  

{Ask} TypeIn "Tab_InvI" Enter Check
Moveto [Numero do Lancamento] TypeIn "_Lanc"
Moveto [Codigo do Item      ] TypeIn "_COD"
If LOCALIZA_ITEM  
   Then 
        If VSDGITEM<>""
           Then Moveto [Codigo do Item] TypeIn ", ~VSDGITEM.."
        EndIf   
EndIf   
Do_It!
ClearAll

Rename "Answer" "InvI"
              
;Add registro no Invent e a quantidade do Balan‡o

Coedit TabelaI, "InvI"
Scan
  Barra(NRecords("InvI"), RecNo())
  Aguarde("Aguarde, verificando dados "+BARRA_STRING)
   
  If LOCALIZA_ITEM
     Then NLANC = [Numero do Lancamento]
  EndIf   
  CODEMP     = [Codigo da Empresa   ]
  COD_ITEM   = [Codigo do Item      ] 
  DESCITEM   = [Descricao do Item   ]
  QUANTIDADE = [Quantidade          ]
  UNIDADE    = [Unidade             ]    
  CUSTO      = [Custo Unitario      ]
  FAZ_ROTINA = True    

  Moveto TabelaI
  Moveto [Codigo do Item]
  Locate COD_ITEM
  If RetVal
     Then If LOCALIZA_ITEM  
             Then If NLANC <> [Pagina]
                     Then FAZ_ROTINA = False
                  EndIf 
          EndIf        
          If FAZ_ROTINA 
             Then FAZ_ROTINA = False
                  [Quantidade_Balanco] = [Quantidade_Balanco] + QUANTIDADE
                  [Custo_Balanco     ] = CUSTO
          EndIf          
   EndIf
   
   If FAZ_ROTINA
      Then End Down
           [Codigo da Empresa     ] = CODEMP
           [Codigo do Item        ] = COD_ITEM
           [Descricao do Item     ] = DESCITEM
           [Unidade Interna       ] = UNIDADE
           [Quantidade_Balanco    ] = QUANTIDADE
           [Custo_Balanco         ] = CUSTO
           If LOCALIZA_ITEM
              Then [Pagina        ] = NLANC
           EndIf   
   EndIf
   Moveto "InvI"
EndScan       
Do_It! 
ClearAll   

{Ask} TypeIn TabelaI Enter 
Moveto [Saldo Atual        ] Example "sd"
Moveto [Quantidade_Balanco ] Example "ba"
Moveto [Diferenca_Balanco  ] TypeIn "changeto " Example "sd-" Example "ba"
Do_It!
ClearAll

{Ask} TypeIn TabelaI Enter  TypeIn "Fast"
Moveto [Custo_Balanco        ] TypeIn "_ct"
Moveto [Quantidade_Balanco   ] TypeIn "_qtdb"
Moveto [Custo Total_Balanco  ] TypeIn "changeto _qtdb*_ct"
Do_It!
ClearAll 
        
{Ask} TypeIn TabelaI Enter  TypeIn "Fast"
Moveto [Custo Total Atual    ] TypeIn "_cta"
Moveto [Custo Total_Balanco  ] TypeIn "_ctb"
Moveto [Custo Total_Diferenca] TypeIn "changeto _cta - _ctb"
Do_It!
ClearAll 

If Not LOCALIZA_ITEM
   Then 
        {Ask} TypeIn TabelaI Enter  TypeIn "Fast Delete"
        Moveto [Saldo Atual        ] TypeIn "blank or 0.00"
        Moveto [Custo Total Atual  ] TypeIn "blank or 0.00"   
        Moveto [Diferenca_Balanco  ] TypeIn "blank or 0.00"
        Do_It!
        ClearAll
        
        If VSDGCONSISTD="2"
           Then {Ask} TypeIn TabelaI Enter  TypeIn "Fast Delete"
                Moveto [Diferenca_Balanco  ] TypeIn "blank or 0.000"
                Do_It!
                ClearAll 
        EndIf
EndIf

{Ask} TypeIn Tabelai Enter
Moveto [Custo Total Atual] TypeIn "calc sum as Total"
Do_It!
CTOT=[Answer->Total]
ClearAll

If VSDGZERAEST="PARCIAL"
  Then {Ask} {InvI} Enter
       Moveto [Codigo do Item] TypeIn "_cod"

       {Ask} TypeIn TabelaI Enter  Check
       Moveto [Codigo do Item] TypeIn "_cod"
       Do_It!
       ClearAll
       
       Delete TabelaI
       
       Rename "Answer" TabelaI
EndIf  
Delete "InvI"

EndProc  ;RM_0011B_Compara_Balanco()

;*******************************************************************************
;* Rotina Zera_Estoque                                                         *
;*******************************************************************************
Proc RM_0011B_Zera_Estoque()

{Ask} TypeIn TabelaI Enter
Moveto [Codigo da Empresa     ] Check
Moveto [Codigo do Item        ] Check
Moveto [Saldo Atual           ] Check
Moveto [Custo Total Atual     ] Check
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

NR = NRecords("Answer")
ReqOK=False

For wi From 1 to 2
  ini   =true
  QTDTOT=0
  VRTOT =0
  SEQ   =0

  Coedit "RqCabeca","RqItem","Answer"   
  Scan 

    Barra(NR, RecNo())
    Switch
      Case wi=1: Aguarde("Processando 1/2 Saidas "+BARRA_STRING)
      Case wi=2: Aguarde("Processando 2/2 Entradas "+BARRA_STRING)
    EndSwitch

    If ([Saldo Atual       ]=0 Or IsBlank([Saldo Atual       ])) And
       ([Custo Total Atual ]=0 Or IsBlank([Custo Total Atual ]))
       Then Loop
    EndIf   

    Switch
      Case wi=1:
        If [Saldo Atual]<0
           Then Loop
        EndIf
      Case wi=2:
        If [Saldo Atual]>=0
           Then Loop
        EndIf
    EndSwitch
  
    If ini
       then ini=false
       
            Moveto "RqCabeca"
            While True
              End
              Moveto [Numero do Lancamento]
              If Numero_Lancamento("Interno","Locked_Down")
                 Then NUMEROL = PROXLANCTO_NLANC
                      Release Vars PROXLANCTO_NLANC
                      quitloop
              EndIf    
            EndWhile
       
            [Codigo da Empresa     ]=VSDGEMPRESA                 
            [Tipo de Operacao      ]="O"
            [Descricao da Operacao ]="OUTRAS"
            [Codigo do Documento   ]="REQ"
            [Numero do Documento   ]="ZERAMENTO"
            [Data de Ocorrencia    ]=VSDGDTREF                   
            Switch
              Case wi=1: [Tipo de Movimento     ]="S"
                         [Descricao do Movimento]="SAIDA"
                         [Descricao Requisitante]="ZERA ESTOQUE SAIDAS"
              Case wi=2: [Tipo de Movimento     ]="E"
                         [Descricao do Movimento]="ENTRADA"
                         [Descricao Requisitante]="ZERA ESTOQUE ENTRADAS"
            EndSwitch 
            Controle_Dia()
            [Codigo_Usuario        ]="9999"
            UnLockrecord
    Endif
  
    Moveto "\\Sistemas\\Estoque\\RqItem"
    End
    Down
    SEQ=SEQ+1
    [Numero do Lancamento       ]=NUMEROL
    [Sequencia do Lancamento    ]=SEQ
    [Codigo da Empresa          ]=VSDGEMPRESA
    [Codigo do Item             ]=[Answer->Codigo do Item]
    Switch
      Case wi=1: 
        [Quantidade         ]=[Answer->Saldo Atual       ]
        [Custo Total        ]=[Answer->Custo Total Atual ]
      Case wi=2: 
        [Quantidade         ]=[Answer->Saldo Atual       ]*-1
        [Custo Total        ]=[Answer->Custo Total Atual ]*-1
    EndSwitch
    
    If [Quantidade]>0
       Then [Custo Unitario             ]=NDecimal([Custo Total]/[Quantidade],5)
       Else [Custo Unitario             ]=[Custo Total]
    EndIf
  
    QTDTOT=QTDTOT+[Quantidade ]
    VRTOT =VRTOT +[Custo Total]
    UnLockrecord
  
    Moveto "Answer"
  EndScan
  
  If SEQ>0
     Then 
          ReqOK=True
          
          Moveto "\\Sistemas\\Estoque\\RqCabeca"
          Moveto [Numero do Lancamento]
          Locate NUMEROL
          If RetVal
             Then [Quantidade Total         ]=QTDTOT
                  [Valor Total              ]=VRTOT
                  UnLockRecord
          EndIf
  EndIf
  Do_It!
  ClearAll
EndFor             

EndProc ;RM_0011B_Zera_Estoque()

;*******************************************************************************
;* Rotina Gera_Requisicao                                                      *
;*******************************************************************************
Proc RM_0011B_Gera_Tabela()

{Ask} TypeIn TabelaI Enter Check
Moveto [Codigo do Item] TypeIn "_CodI"
If LOCALIZA_ITEM And VSDGITEM<>""
   Then TypeIn ", ~VSDGITEM.."
EndIF   

{Ask} {\\Sistemas\\Estoque\\Tab_InvC}
Moveto [Numero do Lancamento] TypeIn "_NLanc"
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Moveto [Data_Inclusao       ] TypeIn "~VSDGDTREF.."

{Ask} {\\Sistemas\\Estoque\\Tab_InvI}
Moveto [Numero do Lancamento] Check TypeIn "_NLanc"
If VSDGOPRELCODALF="3"
   Then Moveto [Sequencia   ] Check
EndIf   
Moveto [Codigo do Item      ] TypeIn "_CodI"
Moveto [Quantidade          ] Check
Do_It!
ClearAll

If IsAssigned(CheckTG_TG_OPCOES) And IsAssigned(TODOS_ITENS)
   Then If TODOS_ITENS
           Then {Ask} {Answer} Check
                Moveto [Numero do Lancamento] TypeIn "_NLanc"
                Moveto [Codigo do Item      ] Check
                Moveto [Descricao do Item   ] Check
                If VSDGOPRELCODALF="3"
                   Then Moveto [Sequencia   ] Check
                EndIf   
                Moveto [Quantidade          ] Check
                {Ask} {\\Sistemas\\Estoque\\Tab_InvI}
                Moveto [Numero do Lancamento] TypeIn "_NLanc"
                If VSDGOPRELCODALF="3"
                   Then Moveto [Sequencia   ] Check
                EndIf   
                Moveto [Codigo do Item      ] Check
                Moveto [Descricao do Item   ] Check
                Moveto [Quantidade          ] Check
                Do_It!
                ClearAll
        EndIf
EndIf   

{Ask} {Answer} Enter
Moveto [Codigo da Empresa   ] TypeIn "_CodE"
Moveto [Codigo do Item      ] TypeIn "_CodI"
Moveto [Descricao do Item   ] TypeIn "_DesI"
Moveto [Unidade Interna     ] TypeIn "_UndI"
Moveto [Quantidade          ] TypeIn "_QtdB"
Moveto [Numero do Lancamento] TypeIn "_NLanc"
If VSDGOPRELCODALF="3"
   Then Moveto [Sequencia   ] TypeIn "_Seq"
EndIf  
{Ask} TypeIn Tabela_Temp Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa   ] TypeIn "_CodE"
Moveto [Codigo do Item      ] TypeIn "_CodI"
Moveto [Descricao do Item   ] TypeIn "_DesI"
Moveto [Unidade Interna     ] TypeIn "_UndI"
Moveto [Quantidade_Balanco  ] TypeIn "_QtdB"
Moveto [Pagina              ] TypeIn "_NLanc"
If VSDGOPRELCODALF="3"
   Then Moveto [Aliquota de ICMS    ] TypeIn "_Seq"
EndIf  
Do_It!
ClearAll
                 
Rename Tabela_Temp TabelaI

Switch
  Case VSDGOPRELCODALF="1" : Sort TabelaI On "Codigo da Empresa","Codigo do Item"
  Case VSDGOPRELCODALF="2" : Sort TabelaI On "Codigo da Empresa","Descricao do Item"
  Case VSDGOPRELCODALF="3" : Sort TabelaI On "Codigo da Empresa","Pagina","Aliquota de ICMS"         ;Empresa -> Numero do Lancamento -> Sequencia
EndSwitch  
ClearAll

EndProc ;RM_0011B_Gera_Tabela()

;*******************************************************************************
;* Rotina Gera_Requisicao                                                      *
;*******************************************************************************
Proc RM_0011B_Gera_Requisicao()

{Ask} TypeIn TabelaI Enter Check Do_It! ClearAll

ReqOK=False

NR = NRecords("Answer")

ini   =true
QTDTOT=0
VRTOT =0
SEQ   =0

Coedit "RqCabeca","RqItem","Answer"
Scan 

  Barra(NR, RecNo())
  Aguarde("Processando Entradas Balanco "+BARRA_STRING)
  
  If IsBlank([Quantidade_Balanco])
      Then Loop
  EndIf   

  If ini
     Then ini=false
     
          Moveto "RqCabeca"
          While True
            End
            Moveto [Numero do Lancamento]
            If Numero_Lancamento("Interno","Locked_Down")
               Then NUMEROL = PROXLANCTO_NLANC
                    Release Vars PROXLANCTO_NLANC
                    quitloop
            EndIf    
          EndWhile
     
         ;While True
         ; Moveto "RqCabeca"
         ; End
         ; Moveto [Numero do Lancamento]
         ; If Numero_Lancamento("Interno","")
         ;    Then NUMEROL = PROXLANCTO_NLANC
         ;         Release Vars PROXLANCTO_NLANC
         ; EndIf
         ; Down
         ; [Numero do Lancamento  ]=NUMEROL
         ; If IsLockRecord()
         ;    Then Del
         ;         Loop
         ; EndIf
         ; QuitLoop
         ;EndWhile
         
          [Codigo da Empresa     ]=VSDGEMPRESA                 
          [Tipo de Operacao      ]="O"
          [Descricao da Operacao ]="OUTRAS"
          [Codigo do Documento   ]="REQ"
          [Numero do Documento   ]="BALANCO"
          [Data de Ocorrencia    ]=VSDGDTREF                   
          [Tipo de Movimento     ]="E"
          [Descricao do Movimento]="ENTRADA"
          [Descricao Requisitante]="BALANCO ESTOQUE ENTRADAS"
           
          Controle_Dia()
          UnLockrecord
  Endif

  Moveto "\\Sistemas\\Estoque\\RqItem"

  End
  Down
  SEQ=SEQ+1
  [Numero do Lancamento    ]=NUMEROL
  [Sequencia do Lancamento ]=SEQ
  [Codigo da Empresa       ]=VSDGEMPRESA
  [Codigo do Item          ]=[Answer->Codigo do Item]
  [Quantidade              ]=[Answer->Quantidade_Balanco ]
  [Custo Unitario          ]=NDecimal([Answer->Custo_Balanco],5)
  [Custo Total             ]=Round([Quantidade]*[Custo Unitario],2)         

  QTDTOT=QTDTOT+[Quantidade ]
  VRTOT =VRTOT +[Custo Total]
  UnLockrecord

  Moveto "Answer"

EndScan

If SEQ>0
   Then 
        ReqOK=True
        
        Moveto "\\Sistemas\\Estoque\\RqCabeca"
        Moveto [Numero do Lancamento]
        Locate NUMEROL
        If RetVal
           Then [Quantidade Total         ]=QTDTOT
                [Valor Total              ]=VRTOT
                UnLockRecord
        EndIf
EndIf
Do_It!
ClearAll
Delete "Answer"

EndProc ;RM_0011B_Gera_Requisicao()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Proc"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""   EndIf
If Not IsAssigned(LOCALIZA_ITEM)       Then LOCALIZA_ITEM=False     EndIf
If Not IsAssigned(PARAM_SCRIPT)        Then PARAM_SCRIPT=""         EndIf

LimpAguarde()
ConfigOpcoes("ModeloRelatorio/CasasDecimais","Ler","OR_0011")  
ClearAll

VSDGDTINI       = DateVal("01."+AlinhM(StrVal(Month(VSDGDTREF)),2)+"."+StrVal(Year(VSDGDTREF)))
VSDGDTFIM       = VSDGDTREF
VSDGMESANO      = AlinhM(StrVal(Month(VSDGDTREF)),2)+"."+AlinhM(StrVal(Year(VSDGDTREF)),4);mes e ano do balan‡o
VSDGMES         = AlinhM(StrVal(Month(VSDGDTREF)),2)
VSDGANO         = AlinhM(StrVal(Year(VSDGDTREF)),4)

VSDGDESCTIPOEST = ""           ; desc tipo de estoque
VSDGMOV         = "ABERTO"     ; tipo movimenta‡Æo 
VSDGDESCMOV     = ""          ; tipo movimenta‡Æo
VSDGCONSIST     = "0"     ; consistir erro
VSDGDESCCONS    = ""     
VSDGZERADO      = ""
VSDGDESCZERADO  = ""
VSDGOPCUSTO     = "M"
VSDGNOMOPCUSTO  = ""
VSDGNOMTAB      = ""
VSDGSITITEM     = "A"
VSDGREFERENCIA  = ""

VSDGOPRELCODALF = VSD_OPRELCODALF

If Not LOCALIZA_ITEM And PARAM_SCRIPT<>"RM_3250D"
   Then
   
EndIf        

If Not IsAssigned(CheckTG_OPOF) Then Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =False   EndIf ; False=+OF, True=-OF


;-------------------------------------------------------------------------------
While True
  AGUARDE("Aguarde, Conferindo os Dados: Etapa 1")
  PROCESSAR_DADOS=True
  MSG_MODULO=""
  If VSDGMOV="ABERTO"
		 Then Monta_Dir_Trab(PrimeiroDia_MesAnterior(VSDGDTINI),UltimoDia_MesPosterior(VSDGDTFIM))
				  While Novo_Dir_Trab()
            If Not IsBlank(Dir_Trab)
               Then RM_0011B_Verifica_Mov()
					  EndIf
				  EndWhile
  EndIf
  If Not PROCESSAR_DADOS
     Then Switch
            Case VSDGMOV="ABERTO":
                 MSG="Existem movimenta‡”es Fechadas://"
                 MSG=MSG+MSG_MODULO+" //"
          EndSwitch
          MSG=MSG+"Verificar !"
          Mensagem(MSG)
          QuitLoop
  EndIf
;-------------------------------------------------------------------------------
  AGUARDE("Aguarde, Conferindo os Dados: Etapa 2")
  TabelaR=Cria_Temp(Privdir())
  Empty "Reproces"
  Copy "Reproces" TabelaR

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

  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    
   
    RM_0011B_Seleciona_NotaC()
  EndFor
  ;-------------------------------------------------------------------------------------------------
  AGUARDE("Aguarde, Conferindo os Dados: Etapa 3")
  RM_0011B_Seleciona()
           
  
  AGUARDE("Aguarde, Conferindo os Dados: Etapa 4")
  RM_0011B_Processa()
  
  Inventario=True
  
  If PARAM_SCRIPT=""  
     Then AGUARDE("Aguarde, Conferindo os Dados: Etapa 5")
          RM_0011B_Compara_Balanco()
          
          If IsEmpty(TabelaI)
             Then MENSAGEM("N„o Existem Registros a Processar")
                  QuitLoop
          EndIf
     
          If Requisicao 
             Then AGUARDE("Aguarde, Conferindo os Dados: Etapa 6")
                  RM_0011B_Zera_Estoque()
                  AGUARDE("Aguarde, Conferindo os Dados: Etapa 7") 
                  RM_0011B_Gera_Requisicao()
                  If ReqOk
                     Then MENSAGEM("Fim do processo, gerado Requisi‡Æo e Balan‡o CONFIRMADO!// // Reprocessar estoque e verificar invent rio !")
                     Else MENSAGEM("Fim do processo, nÆo gerou Requisi‡Æo !")
                  EndIf      
             Else If LOCALIZA_ITEM
                     Then 
                          Tabela_Temp = Cria_Temp(Privdir())
                          Copy "\\Base\\Sistemas\\Estoque\\Rm_1002A" Tabela_Temp
                          RM_0011B_Gera_Tabela()            
                          Switch
                            Case VSDGOPRELCODALF="1" : Seta_Ordem_Report(TabelaI,"R","Pagina","Codigo do Item","") 
                            Case VSDGOPRELCODALF="2" : Seta_Ordem_Report(TabelaI,"R","Pagina","Descricao do Item","")
                            Case VSDGOPRELCODALF="3" :                            
                          EndSwitch
                     Else 
                          CopyReport "\\Base\\Sistemas\\Estoque\\Rm_1002" "5" TabelaI "R"
                          switch
                            case VSDGOPRELCODALF="2"  : Seta_Ordem_Report(TabelaI,"R","Codigo do Item","Descricao do Item","")
                            case VSDGOPRELCODALF="3"  : Seta_Ordem_Report(TabelaI,"R","Codigo do Item","Custo Total Atual","D")
                          endswitch
                  EndIf
                  
                  SetaVisualizarCasasDecimais("13")
        
                  POSSE   ="Do informante e em seu poder"
                  POSSE_CT="Do informante em poder de terceiros"
                  POSSE_DT="De terceiros em poder do informante"
                  
                  IMPRIREL(TabelaI,"R")
        
          Endif   
          
     Else If PARAM_SCRIPT = "RM_3250D"
             Then Tabela_RM3250D = Cria_Temp(Privdir())
                  Copy TabelaI Tabela_RM3250D 
          EndIf   
  EndIf        
  QuitLoop
EndWhile
Delete TabelaR  
Delete TabelaI

ClearAll
Release Vars VSDGMES,VSDGANO,VSDGDTINI,VSDGDTFIM,VSDGMESANO,
             VSDGTIPOEST,VSDGDESCTIPOEST,VSDGMOV,VSDGDESCMOV,VSDGFAMI,    
             VSDGMARCA,VSDGGRP,VSDGCONSIST,VSDGDESCCONS,VSDGZERADO,VSDGDESCZERADO,
             VSDGCONSISTD, VSDGDESCCONSD, VSDGOPRELCODALF,CheckTG_COMPLEMENTO,VSDGOPCUSTO,VSDGNOMOPCUSTO,
             VSDGNOMTAB,VSDGSITITEM,VSDGREFERENCIA,PROCESSAR_DADOS,
             MSG_MODULO,Dir_Trab,Inventario, TabelaR,TabelaI,TabelaRel,CUSTO,CUSTO_OM,
             SALDO,VRUNIT,ITEM,EMPRESA2,Custo_Total_ATual,Custo_Unitario_Atual,Saldo_Atual,
             DATANEG,coditem,OPCAO,QUANTIDADE,INICIO_DIALOG,EXECUTA,
             VSDGNOMEMP,VSDGNOMFAMI,VSDGNOMGRP,VSDGNOMMARCA,VSD_DESCCOMP,
             CheckTG_OPOF, VSD_COMPLEMENTO,
             POSSE, POSSE_DT, POSSE_CT              

Release Procs RM_0011B_Verifica_Mov,RM_0011B_Seleciona_NotaC,RM_0011B_Seleciona,RM_0011B_Processa,
              RM_0011B_Ler_CustoInicial,RM_0011B_Grava_Invent,RM_0011B_Compara_Balanco,RM_0011B_Zera_Estoque,
              RM_0011B_Gera_Tabela,RM_0011B_Gera_Requisicao
