;** RM_0040B *******************************************************************
;*  Conferencia de Notas de Entradas por Per¡odo                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 20/01/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 28/09/2009 por Bruno Carvalho
;Motivo Alteracao: Adi‡Æo da Op‡Æo TIPO DE OPERA€ÇO
;Ultima Alteracao: 22/11/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes report por ordem de data
;Ultima Alteracao: 30/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes e adicionado NDias de Media de Vencimentos
;Ultima Alteracao: 11/08/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes de Edit para CoEdit na Answer
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 03/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Nota Entrada Opera‡Æo para Impostos 
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Ordem_Report()                
;Ultima Alteracao: 27/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0040, substituido RM_0008
;Ultima Alteracao: 08/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos filtros  

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc RM_0040B_Seleciona()
Private DIAS,i,NLANCTO,DATA,NDIAS,CONT_NDIAS, tabela2 

ClearAll

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
   Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Destinat" Enter
        Moveto [Codigo                   ] example "cemit"
        Moveto [Codigo Atividade         ] TypeIn "~VSDGATIVIDADE.."

       {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento     ] Check
        Moveto [Codigo da Empresa        ] Check 
        Moveto [Nome Fantasia Empresa    ] Check
        Moveto [Numero do Documento      ] Check
        Moveto [Serie do Documento       ] Check
        Moveto [Data de Entrada          ] Check
        Moveto [Data de Emissao          ] Check
        Moveto [Codigo                   ] Check
        Moveto [Nome Fantasia EmitDest   ] Check
        Moveto [Valor Mercadoria         ] Check
        Moveto [Valor IPI                ] Check
        Moveto [Valor ICMS               ] Check
        Moveto [Valor do Seguro          ] Check
        Moveto [Valor Nota Fiscal        ] Check
        Moveto [Valor do Frete           ] Check
        Moveto [Frete Incluso na Nota    ] Check
        Moveto [CFO                      ] Check
        Moveto [Tipo de Operacao         ] Check 
        Moveto [Tipo de Pagamento        ] Check
        Moveto [Valor Desconto           ] Check
        Moveto [Valor Substituicao ICMS  ] Check
        Moveto [Valor Despesas Acessorias] Check
        Moveto [Valor ICMS Frete         ] Check
        Moveto [Aliquota de ICMS         ] Check
        
        Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."   
        Moveto [Codigo              ] Example "cemit" TypeIn ",~VSDGDESTINAT.."
        Moveto [Tipo de Operacao    ] TypeIn "~VSDGOPERACAO.."
        Moveto [Tipo do Documento   ] TypeIn VSDGESPDOCTO
        Moveto [Numero do Documento ] TypeIn VSDGNUMDOCTO
        Switch
          Case VSDGTPDATA="1" : Moveto [Data de Entrada  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Case VSDGTPDATA="2" : Moveto [Data de Emissao  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Case VSDGTPDATA="3" : Moveto [Data_Inclusao    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        EndSwitch
        Moveto [UF               ] TypeIn "~VSDGESTADO.."
        
        Do_It!
        ClearAll
        
        If IsEmpty("Answer")
           Then Return
        EndIf

        Tabela2=Adiciona_Indice_Temp("Numero do Lancamento")

        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] Example "cite"
        Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
        Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
        {Ask} TypeIn tabela2 Enter check
        Moveto [Numero do Lancamento] Example "LANCTO" 
       {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter ; s¢ para filtrar a regra 
        Moveto [Numero do Lancamento] Example "LANCTO"
        Moveto [Codigo do Item      ] Example "cite" Typein ", ~VSDGITEM.."
        Moveto [Tipo do Item        ] Typein "~VSDGTIPOEST.."
        Do_It!
        ClearAll
        
        Delete tabela2
        
        ;---- Reproveitando CAMPO - Calculo da M‚dia dos Vencimentos -----------
        {Ask} {Answer}
        Moveto [Aliquota de ICMS         ] TypeIn "Changeto Blank"
        Do_It!
        ClearAll     
        If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"Notaecp")
           Then NR=NRecords("Answer") 
                
                View "\\Sistemas\\Estoque\\"+Dir_Trab+"Notaecp"
                CoEdit "Answer"
                Scan
                  Barra(NR, RecNo())
                  Aguarde("Aguarde, Calculando Media "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)                
                
                  NLANCTO = [Numero do Lancamento]
                  DATA    = [Data de Emissao]
                  
                  DIAS = 0
                  Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"Notaecp"
                  Moveto [Numero do Lancamento]
                  Locate NLANCTO
                  If RetVal
                     Then DynArray NDIAS[]
                          CONT_NDIAS = 0
                          While [Numero do Lancamento] = NLANCTO
                            CONT_NDIAS = CONT_NDIAS + 1
                            
                            If [Data de Vencimento] < DATA
                               Then NDIAS[CONT_NDIAS] = 0 
                               Else NDIAS[CONT_NDIAS] = [Data de Vencimento] - DATA 
                            EndIf   

                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile

                          For i From 1 To CONT_NDIAS
                            DIAS = DIAS + NDIAS[i]
                          EndFor
                          If DIAS > 0 
                             Then DIAS = Int(DIAS / CONT_NDIAS)
                          EndIf    
                  EndIf          
                  Moveto "Answer"
                  If DIAS > 0
                     Then [Aliquota de ICMS] = DIAS
                  EndIf   
                EndScan
                Do_It!
                ClearAll
                
                Release Vars DIAS,i,NLANCTO,DATA,NDIAS,CONT_NDIAS 
        EndIf
        ;-----------------------------------------------------------------------

        {Ask} {Answer}
        Moveto [Numero do Lancamento     ] TypeIn "_NLanc" 
        Moveto [Codigo da Empresa        ] TypeIn "_CodE" 
        Moveto [Nome Fantasia Empresa    ] TypeIn "_NEmp"
        Moveto [Numero do Documento      ] TypeIn "_NDoc"
        Moveto [Serie do Documento       ] TypeIn "_SDoc"
        Moveto [Data de Entrada          ] TypeIn "_DtEn" 
        Moveto [Data de Emissao          ] TypeIn "_DtEm"
        Moveto [Codigo                   ] TypeIn "_Cod" 
        Moveto [Nome Fantasia EmitDest   ] TypeIn "_NFant"
        Moveto [Valor Mercadoria         ] TypeIn "_VrM"
        Moveto [Valor IPI                ] TypeIn "_VrI"
        Moveto [Valor ICMS               ] TypeIn "_VrC"
        Moveto [Valor do Seguro          ] TypeIn "_VrS"
        Moveto [Valor Nota Fiscal        ] TypeIn "_VrN"
        Moveto [Valor do Frete           ] TypeIn "_VrF"
        Moveto [Frete Incluso na Nota    ] TypeIn "_FrI"
        Moveto [CFO                      ] TypeIn "_Cfo"
        Moveto [Tipo de Operacao         ] TypeIn "_TpO"
        Moveto [Tipo de Pagamento        ] TypeIn "_TpP"
        Moveto [Valor Desconto           ] TypeIn "_VrD"
        Moveto [Valor Substituicao ICMS  ] TypeIn "_VrIC"
        Moveto [Valor Despesas Acessorias] TypeIn "_VrDA"
        Moveto [Valor ICMS Frete         ] TypeIn "_VrIF"
        Moveto [Aliquota de ICMS         ] TypeIn "_Aliq" 
        
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Numero do Lancamento     ] TypeIn "_NLanc" 
        Moveto [Codigo da Empresa        ] TypeIn "_CodE" 
        Moveto [Nome Fantasia Empresa    ] TypeIn "_NEmp"
        Moveto [Numero do Documento      ] TypeIn "_NDoc"
        Moveto [Serie do Documento       ] TypeIn "_SDoc"
        Moveto [Data de Entrada          ] TypeIn "_DtEn" 
        Moveto [Data de Emissao          ] TypeIn "_DtEm"
        Moveto [Codigo                   ] TypeIn "_Cod" 
        Moveto [Nome Fantasia EmitDest   ] TypeIn "_NFant"
        Moveto [Valor Mercadoria         ] TypeIn "_VrM"
        Moveto [Valor IPI                ] TypeIn "_VrI"
        Moveto [Valor ICMS               ] TypeIn "_VrC"
        Moveto [Valor do Seguro          ] TypeIn "_VrS"
        Moveto [Valor Nota Fiscal        ] TypeIn "_VrN"
        Moveto [Valor do Frete           ] TypeIn "_VrF"
        Moveto [Frete Incluso na Nota    ] TypeIn "_FrI"
        Moveto [CFO                      ] TypeIn "_Cfo"
        Moveto [Tipo de Operacao         ] TypeIn "_TpO"
        Moveto [Tipo de Pagamento        ] TypeIn "_TpP"
        Moveto [Valor Desconto           ] TypeIn "_VrD"
        Moveto [Valor Substituicao ICMS  ] TypeIn "_VrIC"
        Moveto [Valor Despesas Acessorias] TypeIn "_VrDA"
        Moveto [Valor ICMS Frete         ] TypeIn "_VrIF"
        Moveto [Aliquota de ICMS         ] TypeIn "_Aliq"
        Do_It!
        ClearAll            
EndIf

EndProc   ; Seleciona()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0040B_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")
Tabela=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\Rm_0008" Tabela
Empty(Tabela)

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  RM_0040B_Seleciona()
EndWhile

If IsEmpty(Tabela)
   Then 
        MENSAGEM("N„o existem registros a processar")
   else
        Switch
          Case VSDGCODMODELO="05"  : 
            If VSDGTPDATA="2"
               Then Seta_Ordem_Report(Tabela,"R","Data de Entrada","Data de Emissao","")
            EndIf   

        EndSwitch
        IMPRIREL(Tabela,"R")  
EndIf
Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0040B_Principal()

Release Vars Tabela
Release Procs RM_0040B_Principal, RM_0040B_Seleciona

