;** RM_3020J *******************************************************************
;* Resumo de Vendas por Item com Descontos                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 24/06/2020 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 
 
;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc RM_3020J_Seleciona() 
ClearAll

;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then 
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then 
                {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Tipo do Item           ] TypeIn "~VSDGTPITEM.." 
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [NCM                    ] TypeIn "~VSDGNCM.."
                Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."    
        EndIf  

        {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo                 ] Example "clie"
        Moveto [Codigo da Area         ] TypeIn "~VSDGAREA.."

        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        If VSDGGERENCIA<>""
           Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
           Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        If VSDGOPDTES="2"
           Then Moveto [Data de Saida  ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
           Else Moveto [Data de Emissao] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        EndIf    
        switch
          case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
          otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
        endswitch
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        If VSDGCODMODELO="1R"
           Then Moveto [Codigo do Representante]       Example "crep" TypeIn ", ~VSDGREPRESEN.."
           Else Moveto [Codigo do Representante] Check Example "crep" TypeIn ", ~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
        EndIf
        If VSDGCODMODELO="1R" Or VSDGCODMODELO="37"  
           Then Moveto [Codigo                 ] Check Example "clie" TypeIn ", ~VSDGDESTINAT.."
                Moveto [Razao Social           ] Check
           Else Moveto [Codigo                 ]       Example "clie" TypeIn ", ~VSDGDESTINAT.."
        EndIf
                             
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then Moveto [Codigo do Item         ] Check Example "cite" TypeIn ", ~VSDGITEM.."
           Else Moveto [Codigo do Item         ] Check                TypeIn   "~VSDGITEM.."
        EndIf  
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Moveto [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll
        
        RM_3020J_Adiciona_Dados("VENDAS")
EndIf

if Not isblank(VSDGDESTIN)
   Then Return
EndIf

;****** Devolucoes - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then 
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then 
                {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Tipo do Item           ] TypeIn "~VSDGTPITEM.." 
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [NCM                    ] TypeIn "~VSDGNCM.."
                Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."    
        EndIf  

        {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo                 ] Example "clie"
        Moveto [Codigo da Area         ] TypeIn "~VSDGAREA.."

        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        If VSDGGERENCIA<>""
           Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
           Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Data de Entrada        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Operacao       ] TypeIn "D"
        If VSDGCODMODELO="1R" Or VSDGCODMODELO="37" 
           Then Moveto [Codigo do Representante]       Example "crep" TypeIn ", ~VSDGREPRESEN.."
           Else Moveto [Codigo do Representante] Check Example "crep" TypeIn ", ~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
        EndIf        
        If VSDGCODMODELO="37" 
           Then Moveto [Codigo                 ] Check Example "clie" TypeIn ", ~VSDGDESTINAT.."
                Moveto [Razao Social           ] Check
           Else Moveto [Codigo                 ]       Example "clie" TypeIn ", ~VSDGDESTINAT.."
        EndIf    
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then Moveto [Codigo do Item         ] Check Example "cite" TypeIn ", ~VSDGITEM.."
           Else Moveto [Codigo do Item         ] Check                TypeIn   "~VSDGITEM.."
        EndIf  
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Do_It!
        ClearAll
        
        RM_3020J_Adiciona_Dados("DEVOLUCOES")
EndIf

;****** Devolucoes - Vendas ****************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then 
                {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Tipo do Item           ] TypeIn "~VSDGTPITEM.." 
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [NCM                    ] TypeIn "~VSDGNCM.."
                Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."    
        EndIf  
        
        {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo                 ] Example "clie"
        Moveto [Codigo da Area         ] TypeIn "~VSDGAREA.."

        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        If VSDGGERENCIA<>""
           Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
           Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        If VSDGOPDTES="2"
           Then Moveto [Data de Saida  ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" 
           Else Moveto [Data de Emissao] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        EndIf   
        Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
        Moveto [Tipo Movimento Estoque ] TypeIn "E"
        Moveto [Situacao               ] TypeIn "Not C"
        If VSDGCODMODELO="37" 
           Then Moveto [Codigo                 ] Check Example "clie" TypeIn ", ~VSDGDESTINAT.."
                Moveto [Razao Social           ] Check
           Else Moveto [Codigo                 ]       Example "clie" TypeIn ", ~VSDGDESTINAT.."
        EndIf   
        If VSDGCODMODELO="1R" Or VSDGCODMODELO="37" 
           Then Moveto [Codigo do Representante]       Example "crep" TypeIn ", ~VSDGREPRESEN.."
           Else Moveto [Codigo do Representante] Check Example "crep" TypeIn ", ~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        if Not IsBlank(VSDGTPITEM) or
           Not IsBlank(VSDGFAMI) or
           Not IsBlank(VSDGGRP) or
           Not IsBlank(VSDGMARCA) or
           Not IsBlank(VSDGNCM) or
           Not IsBlank(VSDGREFERENCIA) 
           Then Moveto [Codigo do Item         ] Check Example "cite" TypeIn ", ~VSDGITEM.."
           Else Moveto [Codigo do Item         ] Check                TypeIn   "~VSDGITEM.."
        EndIf  
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Moveto [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll
        
        RM_3020J_Adiciona_Dados("DEVOLUCOES")
EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc RM_3020J_Adiciona_Dados(Tipo) 

If IsEmpty("Answer")
   Then Return
EndIf

Switch
  Case VSDGCODMODELO="13C" :
       {Ask} {Answer}
       Moveto [Codigo da Empresa      ] Example "cemp"
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Quantidade             ] Example "qtde"
       Moveto [Preco Total            ] Example "ptot"
       Moveto [Valor Desconto Total   ] Example "vdes"
       {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
       Moveto [Codigo da Empresa      ] Example "cemp"
       Moveto [Codigo do Item         ] Example "cite"
       Switch
         Case Tipo="VENDAS":
              Moveto [Vendas_Quantidade      ] Example "qtde"
              Moveto [Vendas_Preco Total     ] Example "ptot" 
              Moveto [Vendas_Descontos       ] Example "vdes"
              Moveto [Vendas_Liquida         ] Example "ptot" TypeIn"-" Example "vdes"
         Case Tipo="DEVOLUCOES":
              Moveto [Devolucoes_Quantidade  ] Example "qtde"
              Moveto [Devolucoes_Preco Total ] Example "ptot" TypeIn"-" Example "vdes"
       EndSwitch
       Do_It!
       ClearAll    
EndSwitch
        
EndProc

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc RM_3020J_Processa() 

;***** Ajusta Dados ************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
   Else {Ask} {\\Sistemas\\Cadastro\\Empresas}
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] Example "nemp"
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto _nemp"
        Do_It!
        ClearAll
EndIf

{Ask} {\\Sistemas\\Estoque\\Itens}
Switch 
  Case VSDGCODMODELO="1R" : 
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Referencia             ] Example "ref"
       Moveto [Tipo do Item           ] Example "tite"
       Moveto [Descricao Tipo do Item ] Example "dtpi"
       Moveto [Unidade Fiscal         ] Example "unf"
       Moveto [Unidade Embalagem      ] Example "une"
  Case VSDGCODMODELO="37" :
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Descricao do Item      ] Example "dite"
       Moveto [Unidade Fiscal         ] Example "unf"
       Moveto [Unidade Embalagem      ] Example "une"        
  Case VSDGCODMODELO="1SA" Or 
       VSDGCODMODELO="1SB"  :         
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Descricao do Item      ] Example "dite"
       Moveto [Unidade Fiscal         ] Example "unf"
       Moveto [Codigo da Familia      ] Example "cfam"
       Moveto [Descricao da Familia   ] Example "dfam"
       Moveto [Codigo do Grupo        ] Example "cgrp"
       Moveto [Descricao do Grupo     ] Example "dgrp"
  OtherWise             :
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Descricao do Item      ] Example "dite"
       Moveto [Tipo do Item           ] Example "tite"
       Moveto [Descricao Tipo do Item ] Example "dtpi"
       Moveto [Unidade Fiscal         ] Example "unf"
       Moveto [Unidade Embalagem      ] Example "une" 
EndSwitch           
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Switch 
  Case VSDGCODMODELO="XXXXX" :
  OtherWise               :
       Moveto [Codigo do Item         ] Example "cite"
       Moveto [Descricao do Item      ] TypeIn "changeto _dite"      
       Moveto [Tipo do Item           ] TypeIn "changeto _tite"
       Moveto [Descricao Tipo do Item ] TypeIn "changeto _dtpi"
       Moveto [Unidade Fiscal         ] TypeIn "changeto _unf"
       Moveto [Unidade Embalagem      ] TypeIn "changeto _une"
EndSwitch
Do_It!
ClearAll

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item            ] Example "cite"
Moveto [Fator Conversao Embalagem ] Example "fce"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo do Item            ] Example "cite"
Moveto [Unidade Fiscal            ] Example "unf"
Moveto [Unidade Embalagem         ] TypeIn "not = " Example "unf"
Moveto [Vendas_Quantidade         ] Example "qtd"
Moveto [Vendas_Embalagem          ] TypeIn "changeto _qtd*_fce"
Do_It!
ClearAll

;***** Totaliza Dados ************************************
{Ask} TypeIn Tabela Enter Check
Moveto [Vendas_Quantidade      ] Check TypeIn "Calc Sum as \"Vendas_Quantidade\""
Moveto [Vendas_Preco Total     ] Check TypeIn "Calc Sum as \"Vendas_Preco Total\""
Moveto [Vendas_Descontos       ] Check TypeIn "Calc Sum as \"Vendas_Descontos\""
Moveto [Vendas_Liquida         ] Check TypeIn "Calc Sum as \"Vendas_Liquida\""
Moveto [Devolucoes_Quantidade  ] Check TypeIn "Calc Sum as \"Devolucoes_Quantidade\""
Moveto [Devolucoes_Preco Total ] Check TypeIn "Calc Sum as \"Devolucoes_Preco Total\""
Do_It!
ClearAll

Delete Tabela
Rename "Answer" Tabela

;*** Totaliza Empresa *****
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Vendas_Liquida         ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [VendasPreco            ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Total_Vendas_Empresa   ] TypeIn "changeto _vp"
Do_It!
ClearAll

;*** Totaliza TpItem *****
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Tipo do Item           ] Check
Moveto [Vendas_Liquida         ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll

{Ask} {Answer}                               
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Tipo do Item           ] Example "tpit"
Moveto [VendasPreco            ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Tipo do Item           ] Example "tpit"
Moveto [Total_Vendas_TipoItem  ] TypeIn "changeto _vp"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
Moveto [Codigo do Item         ] TypeIn "Blank"
Do_It!
ClearAll

EndProc    ;  (Processa)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_3020J_Principal()

AGUARDE("Aguarde, gerando o relatĒrio")

Tabela=Cria_Temp(PrivDir())
Empty "\\Base\\Sistemas\\Vendas\\RM_3100J"
Copy "\\Base\\Sistemas\\Vendas\\RM_3100J" Tabela

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

If not IsEmpty(Tabela)
   Then 
        RM_3020J_Processa()

        Impressao_Orientacao=""            
        switch
          case VSDGCODMODELO="13C": 
            Impressao_Orientacao="Paisagem"            

            CopyReport "\\Base\\Sistemas\\Vendas\\RM_3100J" "R"  Tabela "R"
            Switch
              Case VSDGOPRELCODALF="1" : Seta_Ordem_Report(Tabela,"4","Vendas_Quantidade","Codigo do Item","")
              Case VSDGOPRELCODALF="2" : Seta_Ordem_Report(Tabela,"4","Vendas_Quantidade","Descricao do Item","")
              Case VSDGOPRELCODALF="3" : Seta_Ordem_Report(Tabela,"4","Vendas_Quantidade","Vendas_Quantidade","D")
              Case VSDGOPRELCODALF="4" : Seta_Ordem_Report(Tabela,"4","Vendas_Quantidade","Vendas_Preco Total","D")
            EndSwitch

        endswitch
        IMPRIREL(Tabela,"R") 

   Else MENSAGEM("No existem registros a processar")
EndIf

Delete Tabela
EndProc

;-- Chamada principal ----------------------------------------------------------
RM_3020J_Principal()

Release Vars Tabela
Release Procs RM_3020J_Principal, RM_3020J_Seleciona, RM_3020J_Adiciona_Dados, RM_3020J_Processa
