;** Rm_3114 ********************************************************************
;* Resumo de Vendas por Representante/Cliente Maximo Ultimos 4 Anos            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 26/02/2015 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/02/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes filtro cliente, adicionado mais uma coluna de ano
;Ultima Alteracao: 05/03/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes - Ask duplicando registro - novo modelo sem total
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE   
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT              
;Ultima Alteracao: 28/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes reports, Seta_Ordem_Report      
;Ultima Alteracao: 12/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desfazer ask com representante nÆo cadastrado
;Ultima Alteracao: 20/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes chamada principal RM_3110             

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc RM_3114_Seleciona()
ClearAll

;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {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"
        Moveto [Codigo                 ] Check TypeIn "~VSDGDESTINAT.."
        Moveto [Codigo do Representante] Check Example "crep" TypeIn ", ~VSDGREPRESEN.."
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        {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"
        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_3114_Adiciona_Dados("VENDAS")
EndIf

EndProc   ; (RM_3114_Seleciona)

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

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Codigo do Representante] Example "crep"
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                 ] Example "ccli"
Moveto [Codigo do Representante] Example "crep"
Switch
  Case Tipo="VENDAS":
       Moveto [Vendas_Quantidade      ] Example "qtde"
       Moveto [Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
       
     Switch
       Case anoref=1:  
            Moveto [Ano1_Vendas_Quantidade      ] Example "qtde"
            Moveto [Ano1_Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
       Case anoref=2:  
            Moveto [Ano2_Vendas_Quantidade      ] Example "qtde"
            Moveto [Ano2_Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
       Case anoref=3:  
            Moveto [Ano3_Vendas_Quantidade      ] Example "qtde"
            Moveto [Ano3_Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
       Case anoref=4:  
            Moveto [Ano4_Vendas_Quantidade      ] Example "qtde"
            Moveto [Ano4_Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
     EndSwitch  
EndSwitch
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc RM_3114_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

;***** Totaliza Dados ************************************
{Ask} TypeIn Tabela Enter Check
Moveto [Vendas_Quantidade      ] Check TypeIn "Calc Sum as VendasQuantidade"
Moveto [Vendas_Embalagem       ] Check TypeIn "Calc Sum as VendasEmbalagem"
Moveto [Vendas_Preco Total     ] Check TypeIn "Calc Sum as VendasPreco"
Moveto [Devolucoes_Quantidade  ] Check TypeIn "Calc Sum as DevolucoesQuantidade"
Moveto [Devolucoes_Preco Total ] Check TypeIn "Calc Sum as DevolucoesPreco"
Moveto [Ano1_Vendas_Quantidade ] Check TypeIn "Calc Sum as Ano1VendasQuantidade"
Moveto [Ano1_Vendas_Preco Total] Check TypeIn "Calc Sum as Ano1VendasPreco"
Moveto [Ano2_Vendas_Quantidade ] Check TypeIn "Calc Sum as Ano2VendasQuantidade"
Moveto [Ano2_Vendas_Preco Total] Check TypeIn "Calc Sum as Ano2VendasPreco"
Moveto [Ano3_Vendas_Quantidade ] Check TypeIn "Calc Sum as Ano3VendasQuantidade"
Moveto [Ano3_Vendas_Preco Total] Check TypeIn "Calc Sum as Ano3VendasPreco"
Moveto [Ano4_Vendas_Quantidade ] Check TypeIn "Calc Sum as Ano4VendasQuantidade"
Moveto [Ano4_Vendas_Preco Total] Check TypeIn "Calc Sum as Ano4VendasPreco"
Do_It!
ClearAll

Empty Tabela
Add "Answer" Tabela
ClearAll

;*** Totaliza Empresa ***
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Vendas_Preco Total     ] 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 Representante ***
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Codigo do Representante] Check
Moveto [Vendas_Preco Total     ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "cemp"
Moveto [Codigo do Representante  ] Example "crep"
Moveto [VendasPreco              ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa        ] Example "cemp"
Moveto [Codigo do Representante  ] Example "crep"
Moveto [Total_Vendas_Represent   ] TypeIn "changeto _vp"
Do_It!
ClearAll
                          
If VSDGCODMODELO="2CB" Or VSDGCODMODELO="2CD"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast" Enter
        Moveto [Vendas_Preco Total     ] TypeIn "Changeto Blank"
        Moveto [Ano1_Vendas_Preco Total] TypeIn "Changeto Blank"
        Moveto [Ano2_Vendas_Preco Total] TypeIn "Changeto Blank"
        Moveto [Ano3_Vendas_Preco Total] TypeIn "Changeto Blank"
        Moveto [Ano4_Vendas_Preco Total] TypeIn "Changeto Blank"
        Moveto [Total_Vendas_Empresa   ] TypeIn "changeto Blank"
        Do_It!
        ClearAll
EndIf


{Ask} {\\Sistemas\\Cadastro\\Destinat} TypeIn "Fast" Enter
Moveto [Codigo                   ] Example "ccli"
Moveto [Nome Fantasia EmitDest   ] Example "nf"
Moveto [Cidade                   ] Example "cid"
Moveto [Uf                       ] Example "uf"
Moveto [Contato                  ] Example "cont"
Moveto [Razao Social             ] Example "ncli"
{Ask} TypeIn Tabela Enter TypeIn "Fast" Enter
Moveto [Codigo                   ] Example "ccli"
Moveto [Nome Fantasia EmitDest   ] TypeIn "Changeto " Example "nf"
Moveto [Cidade                   ] TypeIn "Changeto " Example "cid"
Moveto [Uf                       ] TypeIn "Changeto " Example "uf"
Moveto [Descricao da Destinacao  ] TypeIn "Changeto " Example "cont"
Moveto [Razao Social             ] TypeIn "Changeto " Example "ncli"
Do_It!
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Represen} TypeIn "Fast" Enter
Moveto [Codigo do Representante  ] Example "crep"
Moveto [Nome Fantasia Represent  ] Example "nr"
{Ask} TypeIn Tabela Enter TypeIn "Fast" Enter
Moveto [Codigo do Representante  ] Example "crep"
Moveto [Nome Fantasia Represent  ] TypeIn "Changeto " Example "nr"
Do_It!
ClearAll

EndProc    ;  (RM_3114_Processa)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_3114_Principal()

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

;--campos calculado report/titulos ---
 ano1="____"
 ano2="____"
 ano3="____"
 ano4="____"
;-------------------------------------
VSDGDTINI2=VSDGDTINI
VSDGDTFIM2=VSDGDTFIM

For anoref from 1 to qanos
  Switch
    case anoref=1: VSDGDTINI=VSDGDTINI2
                   VSDGDTFIM=DateVal("31.12."+StrVal(Year(VSDGDTINI2)))
                   ano1=StrVal(Year(VSDGDTFIM))
                   
    case anoref=2: VSDGDTINI=DateVal("01.01."+StrVal(Year(VSDGDTINI2)+1))
                   VSDGDTFIM=DateVal("31.12."+StrVal(Year(VSDGDTINI2)+1))
                   ano2=StrVal(Year(VSDGDTFIM))
                   
    case anoref=3: VSDGDTINI=DateVal("01.01."+StrVal(Year(VSDGDTINI2)+2))
                   VSDGDTFIM=DateVal("31.12."+StrVal(Year(VSDGDTINI2)+2))
                   ano3=StrVal(Year(VSDGDTFIM))
    case anoref=4: VSDGDTINI=DateVal("01.01."+StrVal(Year(VSDGDTINI2)+3))
                   VSDGDTFIM=VSDGDTFIM2
                   ano4=StrVal(Year(VSDGDTFIM))
  EndSwitch

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    RM_3114_Seleciona()
  EndWhile
EndFor

VSDGDTINI=VSDGDTINI2
VSDGDTFIM=VSDGDTFIM2

If not IsEmpty(Tabela)
   then RM_3114_Processa()
        Impressao_Orientacao="Paisagem"
        switch
          case VSDGCODMODELO="2CA" Or VSDGCODMODELO="2CB" :
            If VSDGOPRELCODALF="1"
               Then Seta_Ordem_Report(Tabela,"R","Codigo","Codigo"              ,"")
               Else Seta_Ordem_Report(Tabela,"R","Codigo do Item","Razao Social","")
            EndIf
            IMPRIREL(Tabela,"R")

          case VSDGCODMODELO="2CC" Or VSDGCODMODELO="2CD" :
            If VSDGOPRELCODALF="1"
               Then Seta_Ordem_Report(Tabela,"2","Codigo","Codigo"              ,"")
               Else Seta_Ordem_Report(Tabela,"2","Codigo do Item","Razao Social","")
            EndIf
            IMPRIREL(Tabela,"2")
        endswitch
   else MENSAGEM("N„o existem registros a processar")
EndIf

If IsTable(Tabela)   Then Delete Tabela   EndIf
If IsTable("Answer") Then Delete "Answer" EndIf

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_3114_Principal()

Release Vars Tabela
Release Procs RM_3114_Principal, RM_3114_Seleciona, RM_3114_Adiciona_Dados, RM_3114_Processa