;** Rm_Estq ********************************************************************
;* Calcula Estoque do Dia                                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 16/08/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 30/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CheckTG_OPOF[1]
;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 EstoqueDiaVerificaMovimentos()

ClearAll
AGUARDE("Aguarde, Estoque - Verificando Movimentos")

;*** 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 "~EstoqueDiaVSDGEMPRESA.."
        Moveto [Numero do Documento      ] Check
        Moveto [Serie do Documento       ] Check
        Moveto [Data de Saida            ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then EstoqueDiaMSG_MODULO=EstoqueDiaMSG_MODULO+" - "+Dir_Trab+"//"
                EstoqueDiaPROCESSAR_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 "~EstoqueDiaVSDGEMPRESA.."
        Moveto [Data de Entrada          ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then EstoqueDiaMSG_MODULO=EstoqueDiaMSG_MODULO+" - "+Dir_Trab+"//"
                EstoqueDiaPROCESSAR_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 "~EstoqueDiaVSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then EstoqueDiaMSG_MODULO=EstoqueDiaMSG_MODULO+" - "+Dir_Trab+"//"
                EstoqueDiaPROCESSAR_DADOS=False
        EndIf
EndIf

EndProc  ;EstoqueDiaVerificaMovimentos()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EstoqueDiaSelecionaVendas()

ClearAll
AGUARDE("Aguarde, Estoque - Selecionando Movimentos 1/2")

;*** Faturamento ***
For ii From 1 To CONT_REGRA
  For I From 1 To 2
    If Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") Or
       Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
       Then Loop
    EndIf
  
    {Ask} {\\Sistemas\\Estoque\\Itens}
    Moveto [Codigo do Item         ] Example "cite"
    Moveto [Tipo do Item           ]
    Switch
       Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
       Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
       Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
            If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
       OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
    EndSwitch
  
    {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 ", ~EstoqueDiaVSDGEMPRESA.."
    Moveto [Numero do Documento      ] Example "doc"
    Moveto [Serie do Documento       ] Example "ser"
    Moveto [Codigo da Destinacao     ] Example "destin"
    Switch
      Case i=1: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
      Case i=2: Moveto [Tipo Movimento Estoque   ] TypeIn "E"
    EndSwitch
    Switch
      Case REGRA_DATA_ESTOQUE = "Antiga"    : Switch
                                                Case i=1: If Not CheckTG_APOSDTFIM[1]
                                                             Then Moveto [Data de Saida] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                             Else Moveto [Data de Saida] TypeIn ">=~AUX_DTINI"
                                                          EndIf   
                                                Case i=2: Moveto [Data de Saida] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                              EndSwitch
      Case REGRA_DATA_ESTOQUE = "Transicao" : If ii=1
                                                Then Moveto [Data de Emissao] TypeIn "<~AUX_DTINI"
                                                     Switch
                                                       Case i=1: If Not CheckTG_APOSDTFIM[1]
                                                                    Then Moveto [Data de Saida] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                                    Else Moveto [Data de Saida] TypeIn ">=~AUX_DTINI"
                                                                 EndIf   
                                                       Case i=2: Moveto [Data de Saida] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                     EndSwitch
                                                Else Switch
                                                       Case i=1: If Not CheckTG_APOSDTFIM[1]
                                                                    Then Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                                    Else Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI"
                                                                 EndIf   
                                                       Case i=2: Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                     EndSwitch
                                              EndIf
      Case REGRA_DATA_ESTOQUE = "Nova"      : Switch
                                                Case i=1: If Not CheckTG_APOSDTFIM[1]
                                                             Then Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                                             Else Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI"
                                                          EndIf   
                                                Case i=2: Moveto [Data de Emissao] TypeIn ">=~AUX_DTINI, <=~AUX_DTFIM"
                                              EndSwitch
    EndSwitch  
    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 [Codigo do Item           ] Check Example "cite" 
    Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
    Moveto [Situacao_Item            ] TypeIn "Not C"
    Do_It!
    ClearAll
  
    Switch
      Case i=1: EstoqueDiaAdicionaDados("SAIDAS")
      Case i=2: EstoqueDiaAdicionaDados("ENTRADAS")
    EndSwitch
  EndFor
EndFor

EndProc  ;EstoqueDiaSelecionaVendas()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EstoqueDiaSelecionaEstoque()

ClearAll
AGUARDE("Aguarde, Estoque - Selecionando Movimentos 2/2")

If CheckTG_OPOF[1]=False And Dir_Trab="" And IsTable("\\Sistemas\\Vendas\\FaturaC")
   Then
        For I From 1 To 2
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item         ] Example "cite"
          Moveto [Tipo do Item             ]
          Switch
             Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
             Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
             Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
                  If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
             OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
          EndSwitch
          ;*** Ordem de Faturamento ***
          {Ask} {\\Sistemas\\Vendas\\Destin}
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Atualiza Estoque         ] TypeIn "S"
          {Ask} {\\Sistemas\\Vendas\\FaturaC}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
          Moveto [Codigo da Destinacao     ] Example "destin"
          Moveto [Data de Emissao          ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
          If i=1
             Then Moveto [Tipo Movimento Estoque   ] TypeIn "S"
             Else Moveto [Tipo Movimento Estoque   ] TypeIn "E"
          EndIf
          Moveto [Numero Nota Gerada       ] TypeIn "Blank"
          {Ask} {\\Sistemas\\Vendas\\FaturaI}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo do Item           ] Check Example "cite"
          Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
          Do_It!
          ClearAll

          If i=1
             Then EstoqueDiaAdicionaDados("SAIDAS")
             Else EstoqueDiaAdicionaDados("ENTRADAS")
          EndIf
        EndFor
        
        If Not IsEmpty("\\Sistemas\\Vendas\\FaturaID")
           Then ;*** Ordem de Faturamento de Entrada/Troca ***
                {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Tipo do Item           ]
                Switch
                   Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
                   Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
                   Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
                        If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
                   OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
                EndSwitch
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Atualiza Estoque         ] TypeIn "S"
                {Ask} {\\Sistemas\\Vendas\\FaturaC}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo da Empresa        ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
                Moveto [Codigo da Destinacao     ] Example "destin"
                Moveto [Descricao da Destinacao  ] TypeIn "..TROCA.."
                Moveto [Data de Emissao          ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
                Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                Moveto [Numero Nota Gerada       ] TypeIn "Blank"
                {Ask} {\\Sistemas\\Vendas\\FaturaID}
                Moveto [Numero da OF             ] Example "doc"
                Moveto [Codigo do Item           ] Check Example "cite"
                Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
                Do_It!
                ClearAll
        
                EstoqueDiaAdicionaDados("ENTRADAS")
        EndIf
EndIf

;*** Notas de Entrada/Estoque ***
  If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
     IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
     Then
          {Ask} {\\Sistemas\\Estoque\\Itens}
          Moveto [Codigo do Item         ] Example "cite"
          Moveto [Tipo do Item           ]
          Switch
             Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
             Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
             Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
                  If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
             OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
          EndSwitch

          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
          Moveto [Numero do Lancamento     ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
          Moveto [Data de Entrada          ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
          Moveto [Tipo de Operacao         ] TypeIn "Not A, Not I"
          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
          Moveto [Numero do Lancamento     ] Check Example "doc"
          Moveto [Sequencia do Lancamento  ] Check
          Moveto [Codigo do Item           ] Check Example "cite"
          Moveto [Quantidade Convertida    ] Check TypeIn "As Quantidade"
          Do_It!
          ClearAll

          {Ask} {Answer}
          Moveto [Codigo da Empresa        ] Check
          Moveto [Codigo do Item           ] Check
          Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
          Do_It!
          ClearAll

          EstoqueDiaAdicionaDados("ENTRADAS")
EndIf

;*** Requisicoes/Estoque ***
For I From 1 To 2
  If Not IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") Or
     Not IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")
     Then Loop
  EndIf

  {Ask} {\\Sistemas\\Estoque\\Itens}
  Moveto [Codigo do Item         ] Example "cite"
  Moveto [Tipo do Item             ]
  Switch
     Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
     Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
     Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
          If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
     OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
  EndSwitch

  {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
  Moveto [Numero do Lancamento     ] Example "doc"
  Moveto [Codigo da Empresa        ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
  Moveto [Data de Ocorrencia       ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
  If i=1
     Then Moveto [Tipo de Movimento] TypeIn "S"
     Else Moveto [Tipo de Movimento] TypeIn "E"
  EndIf
  {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
  Moveto [Numero do Lancamento     ] Example "doc"
  Moveto [Codigo do Item           ] Check Example "cite"
  Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
  Do_It!
  ClearAll

  If i=1
     Then EstoqueDiaAdicionaDados("SAIDAS")
     Else EstoqueDiaAdicionaDados("ENTRADAS")
  EndIf
EndFor

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri")
   Then 
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] Example "cite"
        Moveto [Tipo do Item             ]
        Switch
           Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
           Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or S"
           Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
                If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
           OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
        EndSwitch

        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
        Moveto [Data de Ocorrencia       ] TypeIn ">=~EstoqueDiaVSDGDTINI, <=~EstoqueDiaVSDGDTFIM"
        Moveto [Tipo de Movimento        ] TypeIn "E"
        Moveto [Tipo de Operacao         ] TypeIn "P Or I"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri" Enter
        Moveto [Numero do Lancamento     ] Example "doc"
        Moveto [Codigo do Item           ] Check Example "cite"
        Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
        Do_It!
        ClearAll

        EstoqueDiaAdicionaDados("SAIDAS")
EndIf

EndProc  ;EstoqueDiaSelecionaEstoque()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EstoqueDiaSaldoInicial()

ClearAll
AGUARDE("Aguarde, Estoque - Selecionando Saldo Inicial")

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Tipo do Item           ]
Switch
   Case EstoqueDiaVSDGTIPOEST = "1"       : Ask_EstoqueTpItem("ItensAlmoxarifado")
   Case EstoqueDiaVSDGTIPOEST = "2"       : TypeIn "T or P or S"
   Case Not IsBlank(EstoqueDiaVSDGTIPOEST): TypeIn "~EstoqueDiaVSDGTIPOEST"
        If EstoqueDiaVSDGTIPOEST="P" Then TypeIn " Or S" EndIf
   OtherWise                    : Ask_EstoqueTpItem("NaoControlaEstoque")
EndSwitch
{Ask} {\\Sistemas\\Estoque\\SdEstq}
Moveto [Codigo da Empresa     ] Check TypeIn "~EstoqueDiaVSDGEMPRESA.."
Moveto [Codigo do Item        ] Check Example "cite"
Moveto [Mes Referencia        ] TypeIn "~EstoqueDiaVSDGMES"
Moveto [Ano Referencia        ] TypeIn "~EstoqueDiaVSDGANO"
Moveto [Saldo Inicial         ] Check TypeIn "as Quantidade"
Do_It!
ClearAll
EstoqueDiaAdicionaDados("ENTRADAS")

Endproc  ;EstoqueDiaSaldoInicial()

;*******************************************************************************
;* Adiciona Dados                                                              *
;*******************************************************************************
Proc EstoqueDiaAdicionaDados(Tipo)
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

View TabelaEstoqueDia
Edit "Answer"
scan

  moveto TabelaEstoqueDia
  moveto [Codigo da Empresa]
  locate [Answer->Codigo da Empresa],[Answer->Codigo do Item]
  if not retval
     then end
          down
          [Codigo da Empresa ]=[Answer->Codigo da Empresa]
          [Codigo do Item    ]=[Answer->Codigo do Item   ]
  endif
  Switch
    Case Tipo="SAIDAS"   : [Saldo]=[Saldo]-[Answer->Quantidade] 
    Case Tipo="ENTRADAS" : [Saldo]=[Saldo]+[Answer->Quantidade]
  EndSwitch
          
  moveto "Answer"
endscan
do_It!
clearall

EndProc  ;EstoqueDiaAdicionaDados()


;*******************************************************************************
;*                                                                             *
;*******************************************************************************
proc EstoqueDiaProcessar()
private MSG

EstoqueDiaVSDGMes=AlinhM(strval(Month(EstoqueDiaVSDGDTINI)),2)
EstoqueDiaVSDGAno=AlinhM(strval( Year(EstoqueDiaVSDGDTINI)),4)

;-- Verifica variavel TabelaEstoqueDia, e cria tabela --------------------------
If IsAssigned(TabelaEstoqueDia)  
   Then if istable(TabelaEstoqueDia) 
           then delete TabelaEstoqueDia 
        endif
endif        
TabelaEstoqueDia=Cria_Tabela("","Codigo da Empresa(A4*),Codigo do Item(A10*),Saldo(N)")
;-----------------------------------------------------------------------------------------

EstoqueDiaPROCESSAR_DADOS=True
EstoqueDiaMSG_MODULO     =""

;---- Verifica Movimentos fechados -------------------------------------------------------
Monta_Dir_Trab(PrimeiroDia_MesAnterior(EstoqueDiaVSDGDTINI),UltimoDia_MesPosterior(EstoqueDiaVSDGDTFIM))
While Novo_Dir_Trab()
  If Not IsBlank(Dir_Trab)
     Then EstoqueDiaVerificaMovimentos()
  EndIf
EndWhile

If Not EstoqueDiaPROCESSAR_DADOS
   Then MSG="No Calculo do Estoque, existem movimenta‡”es fechadas://"
        MSG=MSG+EstoqueDiaMSG_MODULO+" //"
        MSG=MSG+"- Usar esta rotina apenas para mˆs em aberto.//"
        MSG=MSG+"- Estoque nÆo calculado neste processo.      // //"
        MSG=MSG+"Verificar !"
        Mensagem(MSG)
        Return
EndIf
;-----------------------------------------------------------------------------------------

EstoqueDiaSaldoInicial()

Identifica_MesAno_Periodo(EstoqueDiaVSDGDTINI,EstoqueDiaVSDGDTFIM)
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()
    EstoqueDiaSelecionaVendas()   
  EndWhile
EndFor

Monta_Dir_Trab(EstoqueDiaVSDGDTINI,EstoqueDiaVSDGDTFIM)
While Novo_Dir_Trab()
  EstoqueDiaSelecionaEstoque()
EndWhile

endproc  ;EstoqueDiaProcessar()


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

array CheckTG_APOSDTFIM[1]
CheckTG_APOSDTFIM[1]=true

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

EstoqueDiaProcessar()

Release Vars EstoqueDiaMSG_MODULO,EstoqueDiaPROCESSAR_DADOS,
             EstoqueDiaVSDGEMPRESA,EstoqueDiaVSDGDTINI,EstoqueDiaVSDGDTFIM,EstoqueDiaVSDGTIPOEST,
             EstoqueDIaVSDGMes,EstoqueDiaVSDGANO
 
Release procs EstoqueDiaVerificaMovimentos,EstoqueDiaSelecionaVendas,EstoqueDiaSelecionaEstoque,
              EstoqueDiaSaldoInicial,EstoqueDiaAdicionaDados,EstoqueDiaProcessar,EstoqueDiaRotinaPrincipal
