;** RANKT **********************************************************************
;* Ranking de Pedidos/Faturamento                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 26/12/2016 por Bruno Carvalho               
;Ultima Alteracao: 27/12/2016 por Bruno Carvalho                      
;Motivo Alteracao: Adicionado Usuario_Vendedor()
;Ultima Alteracao: 28/12/2016 por Bruno Carvalho                      
;Motivo Alteracao: Adicionado Op‡Æo para gerar Ranking por Pedidos
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 12/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulo de credito TR->TC
;Ultima Alteracao: 31/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Adiciona_TC() e retirado do processo Adiciona_Dados() 
;                  ** Verificando o [Valor TC] conforme RM_0931
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor INSS] -> [Valor TC] 
;Ultima Alteracao: 09/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro situacao do pedido
;Ultima Alteracao: 02/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste simples faturamento

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona_Vendedor()

{Ask} TypeIn Tabela Enter Check
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Do_it!
ClearAll

Rename "Answer" Tabela

EndProc ;Seleciona_Vendedor()
 
;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
private wc

ClearAll

If MODO_RANKING = "PEDIDO"
   Then If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC") And IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI")
           Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC" Enter
                Moveto [Numero do Pedido       ] Check Example "ped"
                Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
                Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
                Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
                Moveto [Situacao do Pedido     ]
                Switch
                  case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
                  case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO+SUSPENSO" : TypeIn "not CANCELADO, not SUSPENSO"
                  case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO"          : TypeIn "not CANCELADO"
                  case VSDGSITUACAOPEDIDO<>"TODAS"                     : TypeIn "~VSDGSITUACAOPEDIDO.."
                EndSwitch
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI" Enter
                Moveto [Numero do Pedido       ] Example "ped"
                Moveto [Codigo do Item         ] Check
                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
        
                Adiciona_Dados("VENDAS")
                Adiciona_NVendas(1)
                Adiciona_NItens(1)
        EndIf
   Else If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
           Then 
                for wc from 1 to 2
                  {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
                  Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
                  Moveto [Numero do Documento    ] Example "ndoc"
                  Moveto [Serie do Documento     ] Example "sdoc"
                  Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
                  Moveto [Nome Fantasia Represent] Check
                  Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  switch
                    case wc=1:
                      Moveto [Descricao da Destinacao]       TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
                      
                    case wc=2:
                      Moveto [Descricao da Destinacao]       TypeIn "..SIMP..FATUR.."
                     
                  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 "cemp"
                  Moveto [Numero do Documento    ] Example "ndoc"
                  Moveto [Serie do Documento     ] Example "sdoc"
                  Moveto [Codigo do Item         ] Check
                  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
          
                  Adiciona_Dados("VENDAS")
                  Adiciona_NVendas(wc)
                  Adiciona_NItens(wc)
                endfor
        EndIf
        
        ;---- Devolucoes - Estoque -----------------------------------------------------
        If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
           Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
                Moveto [Numero do Lancamento   ] Example "nlan"
                Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
                Moveto [Data de Entrada        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
                Moveto [Tipo de Operacao       ] TypeIn "D"
                {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
                Moveto [Numero do Lancamento   ] Example "nlan"
                Moveto [Codigo do Item         ] Check
                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
        
                Adiciona_Dados("DEVOLUCOES")
        EndIf
        
        ;---- Devolucoes - Vendas ------------------------------------------------------
        If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
           IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
           Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
                Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
                Moveto [Numero do Documento    ] Example "ndoc"
                Moveto [Serie do Documento     ] Example "sdoc"
                Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
                Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
                Moveto [Tipo Movimento Estoque ] TypeIn "E"
                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 [Codigo do Item         ] Check
                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
        
                Adiciona_Dados("DEVOLUCOES")
        EndIf
        
        ;---- Vendas -------------------------------------------------------------------
        If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
           Then 
                for wc from 1 to 2
                  {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
                  Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
                  Moveto [Numero do Documento    ] Example "ndoc"
                  Moveto [Serie do Documento     ] Example "sdoc"
                  Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
                  Moveto [Nome Fantasia Represent] Check
                  Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                  switch
                    case wc=1:
                      Moveto [Descricao da Destinacao]       TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
                      
                    case wc=2:
                      Moveto [Descricao da Destinacao]       TypeIn "..SIMP..FATUR.."
                     
                  endswitch
                  Moveto [Tipo Movimento Estoque ] TypeIn "S"
                  Moveto [Situacao               ] TypeIn "Not C"
                  Moveto [Valor TC               ] Check
                  {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV" Enter
                  Moveto [Codigo da Empresa      ] Example "cemp"
                  Moveto [Numero do Documento    ] Example "ndoc"
                  Moveto [Serie do Documento     ] Example "sdoc"
                  Moveto [Forma de Pagamento     ] TypeIn "TC"
                  Moveto [Valor                  ] TypeIn "Calc Sum as Valor"     
                  Do_It!
                  ClearAll

                  Adiciona_TC()
                endfor
        EndIf
EndIF        

EndProc   ; (Seleciona)
                                              
;*******************************************************************************
;* Rotina adicionar dados nvendas                                              *
;*******************************************************************************
Proc Adiciona_NVendas(wc)
private wc

If MODO_RANKING = "PEDIDO"
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC" Enter
        Moveto [Numero do Pedido       ] Check Example "ped" 
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent] Check
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Situacao do Pedido     ] TypeIn "Not CANCELADO"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI" Enter
        Moveto [Numero do Pedido       ] Example "ped"
        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
   Else 
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
          Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento    ] Check Example "ndoc" 
          Moveto [Serie do Documento     ] Check Example "sdoc"
          Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
          Moveto [Nome Fantasia Represent] Check
          Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          switch
            case wc=1:
              Moveto [Descricao da Destinacao]       TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
              
            case wc=2:
              Moveto [Descricao da Destinacao]       TypeIn "..SIMP..FATUR.."
             
          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 "cemp"
          Moveto [Numero do Documento    ] Example "ndoc"
          Moveto [Serie do Documento     ] Example "sdoc"
          Moveto [Codigo do Item         ] Check
          Moveto [Situacao_Item          ] TypeIn "Not C"     
          Do_It!
          ClearAll
EndIf

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check 
If MODO_RANKING = "PEDIDO"
   Then Moveto [Numero do Pedido       ] TypeIn "_ped ,calc _ped as nvendas"
   Else Moveto [Numero do Documento    ] TypeIn "_ndoc" 
        Moveto [Serie do Documento     ] TypeIn "_sdoc ,calc _ndoc+_Sdoc as nvendas"
EndIf
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check 
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Moveto [nvendas                ] TypeIn "Calc count as nvendas"
Do_It!
ClearAll
   
{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [nvendas                ] Example "qtde"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [Total Numero Vendas    ] Example "qtde"
Do_It!
ClearAll       

EndProc

;*******************************************************************************
;* Rotina adicionar dados nitens                                               *
;*******************************************************************************
Proc Adiciona_NItens(wc)
private wc

;-- Metodo quantidade de itens em cada venda -----------------------------------
If MODO_RANKING = "PEDIDO"
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC" Enter
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Numero do Pedido       ] Check Example "ped"
        Moveto [Codigo do Representante] Check
        Moveto [Nome Fantasia Represent] Check
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        Moveto [Situacao do Pedido     ] TypeIn "Not CANCELADO"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI" Enter
        Moveto [Numero do Pedido       ] Example "ped"
        Moveto [Item do Pedido         ] Check TypeIn "as Item do Documento"
        Moveto [Codigo do Item         ] Check
        Do_It!
        ClearAll
   Else 
          {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
          Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
          Moveto [Numero do Documento    ] Check Example "ndoc"
          Moveto [Serie do Documento     ] Check Example "sdoc"
          Moveto [Codigo do Representante] Check 
          Moveto [Nome Fantasia Represent] Check
          Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          switch
            case wc=1:
              Moveto [Descricao da Destinacao]       TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
              
            case wc=2:
              Moveto [Descricao da Destinacao]       TypeIn "..SIMP..FATUR.."
             
          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 "cemp"
          Moveto [Numero do Documento    ] Example "ndoc"
          Moveto [Serie do Documento     ] Example "sdoc"
          Moveto [Item do Documento      ] Check
          Moveto [Codigo do Item         ] Check
          Moveto [Situacao_Item          ] TypeIn "Not C"     
          Do_It!
          ClearAll
EndIf
   
If IsEmpty("Answer")
   Then Return
EndIf

{Modify} {Restructure} {Answer}
Moveto [Field Name]
Locate "Item do Documento"
If RetVal
 Then Right CtrlBackSpace "A6" Enter
EndIf
Do_It! 
ClearImage

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check 
If MODO_RANKING = "PEDIDO"
   Then Moveto [Numero do Pedido       ] TypeIn "_ped"
        Moveto [Item do Documento      ] TypeIn "_nite ,calc _ped+_nite as nitens"
   Else Moveto [Numero do Documento    ] TypeIn "_ndoc" 
        Moveto [Serie do Documento     ] TypeIn "_sdoc"
        Moveto [Item do Documento      ] TypeIn "_nite ,calc _ndoc+_Sdoc+_nite as nitens"
EnDIf        
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check 
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Moveto [nitens                 ] TypeIn "Calc count as nitens"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [nitens                 ] Example "qtde"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [Total Numero Itens     ] Example "qtde"
Do_It!
ClearAll       

EndProc

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

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"  TypeIn ", ~VSDGREPRESEN.."
Moveto [Nome Fantasia Represent] Example "nrep"
If Tipo<>"TC"
   Then Moveto [Quantidade             ] Example "qtde"
        Moveto [Preco Total            ] Example "ptot"
        Moveto [Valor Desconto Total   ] Example "vdes"
   ;Else Moveto [Valor                  ] Example "vr"
EndIf        
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Switch
  Case Tipo="VENDAS":
       Moveto [Total Quantidade       ] Example "qtde"
       Moveto [Total Valor Vendas     ] Example "ptot" TypeIn"-" Example "vdes"
       Moveto [Total Desconto Vendas  ] Example "vdes"
  Case Tipo="DEVOLUCOES":
       Moveto [Devolucao Quantidade   ] Example "qtde"
       Moveto [Devolucao Preco Total  ] Example "ptot" TypeIn"-" Example "vdes"
       Moveto [Total Desconto Vendas  ] Example "vdes"
  ;Case Tipo="TC":
  ;     Moveto [Total Titulo de Credito] Example "vr"       
EndSwitch
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_TC()           

If IsEmpty("Answer")
   Then Return
EndIf
   
View Tabela
Coedit "Answer"
Scan
  Achou=False
  Moveto Tabela
  Moveto [Codigo do Representante]
  Locate [Answer->Codigo do Representante]
  If RetVal
     Then While [Codigo do Representante] = [Answer->Codigo do Representante]
            If [Codigo da Empresa] = [Answer->Codigo da Empresa] 
               Then Achou = True
                    QuitLoop
            EndIf        
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next [Answer->Codigo do Representante]
            If Not RetVal
               Then QuitLoop
            EndIf   
          EndWhile
  EndIf
  If Not Achou
     Then End 
          If [Codigo da Empresa]<>""
             Then Down
          EndIf   
          [Codigo da Empresa      ] = [Answer->Codigo da Empresa      ]
          [Codigo do Representante] = [Answer->Codigo do Representante]
          [Nome Fantasia Represent] = [Answer->Nome Fantasia Represent]
  EndIf        
  If [Answer->Valor TC]<=0
     Then [Total Titulo de Credito]=[Total Titulo de Credito]+[Answer->Valor]
     Else If [Answer->Valor ]>=[Answer->Valor TC]
             Then [Total Titulo de Credito]=[Total Titulo de Credito]+([Answer->Valor]-[Answer->Valor TC])
             Else [Total Titulo de Credito]=[Total Titulo de Credito]+ [Answer->Valor]
          Endif   
  EndIf
  Moveto "Answer"
EndScan   
Do_It!
ClearAll

EndProc ;Adiciona_TC()

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc 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\\Cadastro\\Represen}
Moveto [Codigo do Representante  ] Example "crep"
Moveto [Nome Fantasia Represent  ] Example "nrep"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo do Representante  ] Example "crep"
Moveto [Nome Fantasia Represent  ] TypeIn "changeto _nrep"
Do_It!
ClearAll

;---- Totaliza Dados -----------------------------------------------------------
{Ask} TypeIn Tabela Enter Check
Moveto [Total Desconto Vendas  ] Check TypeIn "Calc Sum as Total Desconto Vendas"
Moveto [Total Numero Vendas    ] Check TypeIn "Calc Sum as Total Numero Vendas"
Moveto [Total Numero Itens     ] Check TypeIn "Calc Sum as Total Numero Itens"
Moveto [Total Quantidade       ] Check TypeIn "Calc Sum as Total Quantidade"
Moveto [Total Valor Vendas     ] Check TypeIn "Calc Sum as Total Valor Vendas"
Moveto [Devolucao Quantidade   ] Check TypeIn "Calc Sum as Devolucao Quantidade"
Moveto [Devolucao Preco Total  ] Check TypeIn "Calc Sum as Devolucao Preco Total"
Moveto [Total Titulo de Credito] Check TypeIn "Calc Sum as Total Titulo de Credito"
Do_It!
ClearAll     

Delete Tabela
Rename "Answer" Tabela
ClearAll

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

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Total Valor Vendas     ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Total Geral Vendas     ] TypeIn "changeto _vp"
Do_It!
ClearAll

EndProc    ;  (Processa)

;*******************************************************************************
;* Rotina p/ Verificar Dias Uteis                                              *
;*******************************************************************************
Proc Verifica_Dias_Uteis()
                        
If IsBlank(VSDGDTFIM_PROGRAMACAO) Or IsBlank(VSDGDTINI_PROGRAMACAO)
   Then DIASUTEIS        = 0
        DIAS_PERCORRIDOS = 0 
        DIAS_FALTANTES   = 0
        If VSDGREPRESEN<>""
           Then FastMsg("N„o h  cadastro de metas para este representante no per¡odo informado!")
           Else FastMsg("N„o h  cadastro de metas no per¡odo informado!")
        EndIf   
        Return
EndIf                             
                        
DIASUTEIS     = 0
NDIAS         = VSDGDTFIM_PROGRAMACAO-VSDGDTINI_PROGRAMACAO+1
AUX_VSDGDTINI = VSDGDTINI_PROGRAMACAO-1

For i From 1 To NDIAS
  FERIADO       = False
  AUX_VSDGDTINI = AUX_VSDGDTINI+1
  DIA           = Dow(AUX_VSDGDTINI)
  
  GetRecord "\\Sistemas\\Cadastro\\Feriados" AUX_VSDGDTINI To REGFERIADO
  If Retval
     Then If REGFERIADO["Dias a Receber"]>0
             Then FERIADO = True
                  If REGFERIADO["Dias a Receber"]>1
                     Then AUX_VSDGDTINI = AUX_VSDGDTINI + REGFERIADO["Dias a Receber"]-1
                          i=i+REGFERIADO["Dias a Receber"]-1
                  EndIf
          EndIf
  EndIf        
  If DIA<>"Sun" And Not FERIADO
     Then DIASUTEIS = DIASUTEIS +1
  EndIf 
  If AUX_VSDGDTINI>= VSDGDTFIM_PROGRAMACAO Then QuitLoop EndIf
EndFor

DIAS_PERCORRIDOS = 0
NDIAS            = VSDGDTFIM-VSDGDTINI+1
AUX_VSDGDTINI    = VSDGDTINI_PROGRAMACAO-1

For i From 1 To NDIAS
  FERIADO       = False
  AUX_VSDGDTINI = AUX_VSDGDTINI+1
  DIA           = Dow(AUX_VSDGDTINI)
  
  GetRecord "\\Sistemas\\Cadastro\\Feriados" AUX_VSDGDTINI To REGFERIADO
  If Retval
     Then If REGFERIADO["Dias a Receber"]>0
             Then FERIADO = True
                  If REGFERIADO["Dias a Receber"]>1
                     Then AUX_VSDGDTINI = AUX_VSDGDTINI + REGFERIADO["Dias a Receber"]-1
                          i=i+REGFERIADO["Dias a Receber"]-1
                  EndIf
          EndIf
  EndIf        
  If DIA<>"Sun" And Not FERIADO
     Then DIAS_PERCORRIDOS = DIAS_PERCORRIDOS +1
  EndIf 
  If AUX_VSDGDTINI>=VSDGDTFIM Then QuitLoop EndIf
EndFor
              
DIAS_FALTANTES   = DIASUTEIS-DIAS_PERCORRIDOS

EndProc ;Verifica_Dias_Uteis()

;*******************************************************************************
;* Rotina p/ Verificar as Programa‡äes de Meta                                 *
;*******************************************************************************
Proc Verifica_Programacao()  
MSG = ""

{Ask} {\\Sistemas\\Vendas\\Rankvc}
Moveto [Numero da Programacao  ] Check TypeIn "_Prog"
Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Data Inicial           ] Check TypeIn "~VSDGDTINI.."
Moveto [Data Final             ] Check
{Ask} {\\Sistemas\\Vendas\\Rankvi}
Moveto [Numero da Programacao  ] TypeIn "_Prog"
Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
Moveto [Nome Fantasia Represent] Check
Moveto [Meta_Faturamento       ] Check
Moveto [Meta_Itens             ] Check
Moveto [Meta_ValorMedio        ] Check
Moveto [Meta_Pecas             ] Check
Do_it!
ClearAll

Tabela_Prog=Cria_Temp(PrivDir())
Copy "Answer" Tabela_Prog 

;If IsEmpty(Tabela_Prog)
;   Then MSG="N„o h  programa‡„o de meta no per¡odo informado!"
;        Return
;EndIf   

{Ask} {Answer}
Moveto [Numero da Programacao  ] TypeIn "Calc Count as Vendedor"
Moveto [Codigo do Representante] Check 
Do_it!
ClearAll 

View "Answer"
Scan
  If [Vendedor] > 1
     Then MSG="O Vendedor "+[Codigo do Representante]+" est  em mais de uma programa‡„o//referente a data inicial "+StrVal(VSDGDTINI)+"!"
          QuitLoop
  EndIf        
EndScan
Clearall

{Ask} TypeIn Tabela_Prog Enter
Moveto [Numero da Programacao] TypeIn "Calc Count as Data"
Moveto [Data Inicial         ] Check
Do_it!
ClearAll                         

View "Answer"
Scan
  If [Data] > 1
     Then MSG="H  programa‡”es com a mesma DATA INICIAL de "+StrVal(VSDGDTINI)+"!"
          QuitLoop
  EndIf        
EndScan
ClearAll
  
EndProc ;Verifica_Programacao()

;*******************************************************************************
;* Cabe‡alho                                                                   *
;*******************************************************************************
Proc Cabecalho()

If IMPRIME_ARQUIVO And Not IsAssigned(CI_F_TIMES)
   Then CI_20CPP   = Chr(27)+Chr(77)+Chr(15)
        CI_F_TIMES = CI_20CPP  
EndIf

Print File ARQIMP CI_F_TIMES+CI_20CPP+"\n"
Print File ARQIMP Spaces(2)+Fill("-",227) + "\n"
Print File ARQIMP Spaces(2)+Format("W227,AC","Painel de Vendas - "+StrVal(VSDGDTINI)+" … "+StrVal(VSDGDTFIM))+ "\n"
Print File ARQIMP Spaces(2)+Fill("-",227)+"\n"                     
Print File ARQIMP Spaces(2)+"Vendas Real At‚ Dia "+"01.11.2016"+"\n"
Print File ARQIMP Spaces(2)+" Troca Real At‚ Dia "+""+"\n\n"
Print File ARQIMP Spaces(2)+"Dias Uteis "+StrVal(DIASUTEIS)+Spaces(8)+"Percorridos "+StrVal(DIAS_PERCORRIDOS)+Spaces(8)+"Faltantes "+StrVal(DIAS_FALTANTES)+"\n\n"
Print File ARQIMP Spaces(2)+"              _______________________________________________ Faturamento ________________________________________________"+
                            " _____________ Quantidade Vendas ____________ ____ Itens por Pedido ____ ______Vr Medio Pedido ______"+"\n"
Print File ARQIMP Spaces(2)+"Vendedor              META      (A)Real (B)Devolucao           TC      Liquido   Meta Dia  Media Dia    Tendencia        %"+
                            "    Meta      Real MediaDia Tendenci        %     Meta     Real     Perf     Meta       Real     Perf"+"\n"
Print File ARQIMP Spaces(2)+"------------- ------------ ------------ ------------ ------------ ------------ ---------- ---------- ------------ --------"+
                            " -------- -------- -------- -------- -------- -------- -------- -------- -------- ---------- --------"+"\n"
                                                                                                                                                        
Conta_Linha = 13

EndProc ;Cabecalho()

;*******************************************************************************
;* Corpo do Relat¢rio                                                          *
;*******************************************************************************
Proc Corpo()

Print File ARQIMP Spaces(2)+Format("W13",[Nome Fantasia Represent])
;---- Faturamento --------------------------------------------------------------
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_META_MENSAL])
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_REAL_VENDAS])
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_DEVOL])
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_TC])
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_VRLIQ])                          
Print File ARQIMP Spaces(1)+Format("W10.2,EIC",[FATURAMENTO_META_DIA])
Print File ARQIMP Spaces(1)+Format("W10.2,EIC",[FATURAMENTO_MEDIA_DIA])
Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[FATURAMENTO_TENDENCIA_VR])
If [FATURAMENTO_TENDENCIA_PC]>0
   Then Print File ARQIMP Spaces(1)+Format("W7",[FATURAMENTO_TENDENCIA_PC])+"%"
   Else Print File ARQIMP Spaces(1)+Format("W7",[FATURAMENTO_TENDENCIA_PC])+" "
EndIf   
;---- Quantidade Vedas ---------------------------------------------------------
Print File ARQIMP Spaces(1)+Format("W8.2",[QTDVENDAS_META])
Print File ARQIMP Spaces(1)+Format("W8.2",[QTDVENDAS_REAL_NVENDAS])
Print File ARQIMP Spaces(1)+Format("W8.2",[QTDVENDAS_MEDIA_DIA])
Print File ARQIMP Spaces(1)+Format("W8.2",[QTDVENDAS_TENDENCIA_VR])
If [QTDVENDAS_TENDENCIA_PC]>0
   Then Print File ARQIMP Spaces(1)+Format("W7",[QTDVENDAS_TENDENCIA_PC])+"%" 
   Else Print File ARQIMP Spaces(1)+Format("W7",[QTDVENDAS_TENDENCIA_PC])+" "
EndIf   
;---- Itens Por Pedido ---------------------------------------------------------
Print File ARQIMP Spaces(1)+Format("W8.2",[ITENS_PEDIDO_META])
Print File ARQIMP Spaces(1)+Format("W8.2,EIC",[ITENS_PEDIDO_REAL])
If [ITENS_PEDIDO_PERF]>0
   Then Print File ARQIMP Spaces(1)+Format("W7",[ITENS_PEDIDO_PERF])+"%"
   Else Print File ARQIMP Spaces(1)+Format("W7",[ITENS_PEDIDO_PERF])+" "
EndIf     
;---- Vr Medio Por Pedido ------------------------------------------------------
Print File ARQIMP Spaces(1)+Format("W8.2,EIC",[VRMEDIO_PEDIDO_META])
Print File ARQIMP Spaces(1)+Format("W10.2,EIC",[VRMEDIO_PEDIDO_REAL])
If [VRMEDIO_PEDIDO_PERF]>0
   Then Print File ARQIMP Spaces(1)+Format("W7",[VRMEDIO_PEDIDO_PERF])+"%"
   Else Print File ARQIMP Spaces(1)+Format("W7",[VRMEDIO_PEDIDO_PERF])+" "
EndIf
Print File ARQIMP "\n"

EndProc ;Corpo()

;*******************************************************************************
;* Corpo do Relat¢rio                                                          *
;*******************************************************************************
Proc Adiciona_Tabela()

Moveto Tabela_Rank
End Down
[Codigo da Empresa       ] = COD_EMP
[Nome Fantasia Empresa   ] = NOM_EMP
[Codigo do Representante ] = COD_REP                 
[Nome Fantasia Represent ] = NOM_REP           
[FATURAMENTO_META_MENSAL ] = FATURAMENTO_META_MENSAL                                    
[FATURAMENTO_REAL_VENDAS ] = FATURAMENTO_REAL_VENDAS
[FATURAMENTO_DEVOL       ] = FATURAMENTO_DEVOL
[FATURAMENTO_TC          ] = FATURAMENTO_TC
[FATURAMENTO_VRLIQ       ] = FATURAMENTO_VRLIQ           
[FATURAMENTO_META_DIA    ] = FATURAMENTO_META_DIA     
[FATURAMENTO_MEDIA_DIA   ] = FATURAMENTO_MEDIA_DIA    
[FATURAMENTO_TENDENCIA_VR] = FATURAMENTO_TENDENCIA_VALOR
[FATURAMENTO_TENDENCIA_PC] = FATURAMENTO_TENDENCIA_PORC
[QTDVENDAS_META          ] = QTDVENDAS_META           
[QTDVENDAS_REAL_NVENDAS  ] = QTDVENDAS_REAL_NVENDAS   
[QTDVENDAS_MEDIA_DIA     ] = QTDVENDAS_MEDIA_DIA      
[QTDVENDAS_TENDENCIA_VR  ] = QTDVENDAS_TENDENCIA_VALOR  
[QTDVENDAS_TENDENCIA_PC  ] = QTDVENDAS_TENDENCIA_PORC  
[ITENS_PEDIDO_META       ] = ITENS_PEDIDO_META        
[ITENS_PEDIDO_REAL       ] = ITENS_PEDIDO_REAL        
[ITENS_PEDIDO_PERF       ] = ITENS_PEDIDO_PERF       
[VRMEDIO_PEDIDO_META     ] = VRMEDIO_PEDIDO_META      
[VRMEDIO_PEDIDO_REAL     ] = VRMEDIO_PEDIDO_REAL      
[VRMEDIO_PEDIDO_PERF     ] = VRMEDIO_PEDIDO_PERF
[Dias Uteis              ] = DIASUTEIS
[Dias Percorridos        ] = DIAS_PERCORRIDOS
[Dias Faltantes          ] = DIAS_FALTANTES
[Data Real Ate Dia       ] = VSDGDTFIM
[Troca Real Ate Dia      ] = BlankDate()
UnLockRecord             

EndProc ;Corpo()

;*******************************************************************************
;* Corpo do Relat¢rio                                                          *
;*******************************************************************************
Proc Totalizador(PARAM)

If PARAM=""
   Then Release Vars Ranking

        TOT_FATURAMENTO_META_MENSAL     = BlankNum()                                                  
        TOT_FATURAMENTO_REAL_VENDAS     = BlankNum()
        
        TOT_FATURAMENTO_DEVOL           = BlankNum()
        TOT_FATURAMENTO_TC              = BlankNum()
        TOT_FATURAMENTO_VRLIQ           = BlankNum()        
        TOT_FATURAMENTO_META_DIA        = BlankNum()
        TOT_FATURAMENTO_MEDIA_DIA       = BlankNum()
        TOT_FATURAMENTO_TENDENCIA_VALOR = BlankNum()
        TOT_FATURAMENTO_TENDENCIA_PORC  = BlankNum()
        
        TOT_QTDVENDAS_META              = BlankNum()
        TOT_QTDVENDAS_REAL_NVENDAS      = BlankNum()
        TOT_QTDVENDAS_MEDIA_DIA         = BlankNum()
        TOT_QTDVENDAS_TENDENCIA_VALOR   = BlankNum()
        TOT_QTDVENDAS_TENDENCIA_PORC    = BlankNum()
        
        TOT_ITENS_PEDIDO_META           = BlankNum()
        TOT_ITENS_PEDIDO_REAL           = BlankNum()
        CONT_ITENS_PEDIDO_REAL          = BlankNum()
        TOT_ITENS_PEDIDO_PERF           = BlankNum()
        
        TOT_VRMEDIO_PEDIDO_META         = BlankNum()
        TOT_VRMEDIO_PEDIDO_REAL         = BlankNum()
        TOT_VRMEDIO_PEDIDO_PERF         = BlankNum()
        
   Else If CONTADOR > 1
           Then TOT_FATURAMENTO_META_DIA        = (TOT_FATURAMENTO_META_MENSAL - TOT_FATURAMENTO_VRLIQ) / DIAS_FALTANTES 
                TOT_FATURAMENTO_MEDIA_DIA       = TOT_FATURAMENTO_VRLIQ / DIAS_PERCORRIDOS
                TOT_FATURAMENTO_TENDENCIA_VALOR = TOT_FATURAMENTO_MEDIA_DIA * DIASUTEIS
                TOT_FATURAMENTO_TENDENCIA_PORC  = Round((TOT_FATURAMENTO_TENDENCIA_VALOR / TOT_FATURAMENTO_META_MENSAL) * 100,2) 
        
                TOT_QTDVENDAS_MEDIA_DIA         = TOT_QTDVENDAS_REAL_NVENDAS / DIAS_PERCORRIDOS
                TOT_QTDVENDAS_TENDENCIA_VALOR   = TOT_QTDVENDAS_MEDIA_DIA * DIASUTEIS
                TOT_QTDVENDAS_TENDENCIA_PORC    = Round((TOT_QTDVENDAS_TENDENCIA_VALOR / TOT_QTDVENDAS_META) * 100,2) 
                    
                TOT_ITENS_PEDIDO_META           = ITENS_PEDIDO_META
                TOT_ITENS_PEDIDO_REAL           = TOT_ITENS_PEDIDO_REAL / CONT_ITENS_PEDIDO_REAL  
                TOT_ITENS_PEDIDO_PERF           = Round((TOT_ITENS_PEDIDO_REAL / TOT_ITENS_PEDIDO_META) * 100,2)
                
                TOT_VRMEDIO_PEDIDO_META         = TOT_FATURAMENTO_META_MENSAL / TOT_QTDVENDAS_META
                TOT_VRMEDIO_PEDIDO_REAL         = TOT_FATURAMENTO_VRLIQ / TOT_QTDVENDAS_REAL_NVENDAS
                TOT_VRMEDIO_PEDIDO_PERF         = Round((TOT_VRMEDIO_PEDIDO_REAL / TOT_VRMEDIO_PEDIDO_META) * 100,2)    
        
                Print File ARQIMP Spaces(15)
                ;---- Faturamento --------------------------------------------------------------
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_META_MENSAL)
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_REAL_VENDAS)
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_DEVOL)
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_TC)
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_VRLIQ)
                Print File ARQIMP Spaces(1)+Format("W10.2,EIC",TOT_FATURAMENTO_META_DIA)
                Print File ARQIMP Spaces(1)+Format("W10.2,EIC",TOT_FATURAMENTO_MEDIA_DIA)
                Print File ARQIMP Spaces(1)+Format("W12.2,EIC",TOT_FATURAMENTO_TENDENCIA_VALOR)
                If TOT_FATURAMENTO_TENDENCIA_PORC>0
                   Then Print File ARQIMP Spaces(1)+Format("W7",TOT_FATURAMENTO_TENDENCIA_PORC)+"%"
                   Else Print File ARQIMP Spaces(1)+Format("W7",TOT_FATURAMENTO_TENDENCIA_PORC)+" "
                EndIF        
                ;---- Quantidade Vedas ---------------------------------------------------------
                Print File ARQIMP Spaces(1)+Format("W8.2",TOT_QTDVENDAS_META)
                Print File ARQIMP Spaces(1)+Format("W8.2",TOT_QTDVENDAS_REAL_NVENDAS)
                Print File ARQIMP Spaces(1)+Format("W8.2",TOT_QTDVENDAS_MEDIA_DIA)
                Print File ARQIMP Spaces(1)+Format("W8.2",TOT_QTDVENDAS_TENDENCIA_VALOR)
                If TOT_QTDVENDAS_TENDENCIA_PORC>0
                   Then Print File ARQIMP Spaces(1)+Format("W7",TOT_QTDVENDAS_TENDENCIA_PORC)+"%"
                   Else Print File ARQIMP Spaces(1)+Format("W7",TOT_QTDVENDAS_TENDENCIA_PORC)+" "
                EndIf   
                ;---- Itens Por Pedido ---------------------------------------------------------
                Print File ARQIMP Spaces(1)+Format("W8.2",TOT_ITENS_PEDIDO_META)
                Print File ARQIMP Spaces(1)+Format("W8.2,EIC",TOT_ITENS_PEDIDO_REAL)
                If TOT_ITENS_PEDIDO_PERF > 0
                   Then Print File ARQIMP Spaces(1)+Format("W7",TOT_ITENS_PEDIDO_PERF)+"%"
                   Else Print File ARQIMP Spaces(1)+Format("W7",TOT_ITENS_PEDIDO_PERF)+" "
                EndIf   
                ;---- Vr Medio Por Pedido ------------------------------------------------------
                Print File ARQIMP Spaces(1)+Format("W8.2,EIC",TOT_VRMEDIO_PEDIDO_META)
                Print File ARQIMP Spaces(1)+Format("W10.2,EIC",TOT_VRMEDIO_PEDIDO_REAL)
                If TOT_VRMEDIO_PEDIDO_PERF>0
                   Then Print File ARQIMP Spaces(1)+Format("W7",TOT_VRMEDIO_PEDIDO_PERF)+"%"
                   Else Print File ARQIMP Spaces(1)+Format("W7",TOT_VRMEDIO_PEDIDO_PERF)+" "
                EndIf
                Print File ARQIMP "\n"
        EndIf
        Gera_Ranking()
EndIf

EndProc ;Totalizador()

;*******************************************************************************
;* Controle p/ Gerar Tabela de Ranking                                         *
;*******************************************************************************
Proc Gera_Ranking()

Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+"Ranking"+"\n"
Print File ARQIMP Spaces(2)+"Vendedor       Faturamento   Qtd Vendas Itens Pedido    Vr Pedido"+"\n"
Print File ARQIMP Spaces(2)+"------------- ------------ ------------ ------------ ------------"+"\n"

Cont_Ranking = 0
DynArray Ranking[]
                                           
Sort Tabela_Rank On "FATURAMENTO_TENDENCIA_PC" D
Home
Scan
  If [FATURAMENTO_TENDENCIA_PC]<=0 Then Loop EndIf
  
  If Cont_Ranking<=15
     Then Cont_Ranking = Cont_Ranking + 1
          Ranking[Cont_Ranking] = Format("W20",[Nome Fantasia Represent])+Format("W11",[FATURAMENTO_TENDENCIA_PC])+ 
                                                                          Format("W11",[QTDVENDAS_TENDENCIA_PC])+
                                                                          Format("W11",[ITENS_PEDIDO_PERF])+
                                                                          Format("W11",[VRMEDIO_PEDIDO_PERF])
  EndIf
  
  Print File ARQIMP Spaces(2)+Format("W13",[Nome Fantasia Represent])
  If [FATURAMENTO_TENDENCIA_PC] > 0
     Then Print File ARQIMP Spaces(1)+Format("W11",[FATURAMENTO_TENDENCIA_PC])+"%"
     Else Print File ARQIMP Spaces(1)+Format("W11",[FATURAMENTO_TENDENCIA_PC])+" "
  EndIf
  If [QTDVENDAS_TENDENCIA_PC] > 0
     Then Print File ARQIMP Spaces(1)+Format("W11",[QTDVENDAS_TENDENCIA_PC])+"%"
     Else Print File ARQIMP Spaces(1)+Format("W11",[QTDVENDAS_TENDENCIA_PC])+" "
  EndIf     
  If [ITENS_PEDIDO_PERF] > 0
     Then Print File ARQIMP Spaces(1)+Format("W11",[ITENS_PEDIDO_PERF])+"%"
     Else Print File ARQIMP Spaces(1)+Format("W11",[ITENS_PEDIDO_PERF])+" "
  EndIf     
  If [VRMEDIO_PEDIDO_PERF] > 0
     Then Print File ARQIMP Spaces(1)+Format("W11",[VRMEDIO_PEDIDO_PERF])+"%"+"\n"
     Else Print File ARQIMP Spaces(1)+Format("W11",[VRMEDIO_PEDIDO_PERF])+" "+"\n"
  EndIf
EndScan
Do_it!
ClearAll
   

EndProc ;Gera_Ranking()       

;*******************************************************************************
;* Controle ShowDialog                                                         *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch           
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"         : Campo="NO"
            Case Campo="TG_REPRESEN"        : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"           : Campo="TG_REPRESEN"
            Case Campo="TG_DTFIM"           : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOPEDIDO"  : Campo="TG_DTFIM"
            Case Campo="TG_OPCAO"           : If MODO_RANKING="PEDIDO"
                                                 Then Campo="TG_SITUACAOPEDIDO"
                                                 Else Campo="TG_DTFIM"
                                              EndIf   
            Case Campo="YES" Or Campo="NO"  : Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"         : 
                         If VSDGEMPRESA="" Or VSDGEMPRESA="0000"
                            Then FastMsg("Informe a Empresa para prosseguir!")
                            Else Campo="TG_REPRESEN"
                         EndIf   
                    Case Campo="TG_REPRESEN"        : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"           : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"           : If MODO_RANKING="PEDIDO"
                                                         Then Campo="TG_SITUACAOPEDIDO" 
                                                         Else Campo="TG_OPCAO"
                                                      EndIf
                    Case Campo="TG_SITUACAOPEDIDO"  : Campo="TG_OPCAO"
                    Case Campo="TG_OPCAO"           : Campo="YES"   
                    
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

If Campo="TG_MODRELATORIO"
   Then TECLA="F1=Consulta  "
EndIf 

Switch
  Case Campo="TG_OPCAO": MensagemCheckBoxes()
  Case Campo=""        : MSG_CAMPO=""
Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Bloq"
SYS_VALOR()
LimpAguarde()
If Not IsAssigned(VSDGEMPRESA)         Then VSDGEMPRESA = ""           EndIf
If Not IsAssigned(SYS_USUARIO_CODEMPR) Then SYS_USUARIO_CODEMPR=""     EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""       EndIf
If Not IsAssigned(SYS_USUARIO_CODVEND) Then SYS_USUARIO_CODVEND=""     EndIf
If Not IsAssigned(SYS_USUARIO_GERVEND) Then SYS_USUARIO_GERVEND=""     EndIf
If Not IsAssigned(MODO_RANKING)        Then MODO_RANKING=""            EndIf  

If Bloqueia_Rotina("METAS")
   Then Return
EndIf

If MODO_RANKING=""
   Then Mensagem("Execute o modelo corretamente -> RANKTF (Faturamento ou RANKTP (Pedido)!")
        Release Vars All
        Release Procs All
        Return
   Else If MODO_RANKING="PEDIDO"        
           Then IC1=35
                IC2=36
           Else IC1=80
                IC2=80    
        EndIf
EndIf

ANT_VSDGEMPRESA     = ""
VSDGEMPRESA         = ""
VSDGNOMEMP          = ""
VSDGREPRESEN        = ""
VSDGNOMREPR         = ""
VSDGDTINI           = BlankDate()            
VSDGDTFIM           = BlankDate()
VSDGSITUACAOPEDIDO  = ""

Array VSDGOPCAO[1]
VSDGOPCAO[1] = True

While True
  ShowDialog "Painel de Vendas" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 11 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
    
    Label  @ 00,IC1 "Situacao do Pedido"  For "TG_SITUACAOPEDIDO"
    Accept @ 01,IC2 Width 33 "A30"  Picture "ABERTO,SUSPENSO,CANCELADO,FATURADO,TODAS,!*!" Tag "TG_SITUACAOPEDIDO"  To VSDGSITUACAOPEDIDO

    Label  @ 02,00 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR
    
    Label  @ 04,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    
    CheckBoxes @05,35 Height 1 Width 30 Tag "TG_OPCAO"
    "Painel de Vendas no Excel" to VSDGOPCAO[1]
    
    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
                                                                            
  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGEMPRESA="" Or VSDGEMPRESA="0000"
     Then FastMsg("Informe a Empresa para prosseguir!")
          Loop 
  EndIf   
  
  GetRecord "\\Sistemas\\Cadastro\\Empresas" VSDGEMPRESA To REG_EMP
  If Not RetVal
     Then VSDGEMPRESA = ""
          VSDGNOMEMP  = ""
          FastMsg("Informe uma empresa v lida para prosseguir!")
          Loop
     Else ANT_VSDGEMPRESA = VSDGEMPRESA     
  EndIf   
                      
  GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
  If RetVal
     Then SYS_USUARIO_CODEMPR = REG_USUARIO["Cod_Empresa"         ]
          SYS_USUARIO_CODVEND = REG_USUARIO["Codigo_Representante"]
          SYS_USUARIO_GERVEND = REG_USUARIO["Codigo da Gerencia"  ]
  EndIf                      
  If Not Usuario_Vendedor() Then Loop EndIf                      
  
  If IsBlank(VSDGDTINI)
     Then FastMsg("Informe o Per¡odo Inicial!")
          Loop
  EndIf        
  
  If IsBlank(VSDGDTFIM)
     Then FastMsg("Informe o Per¡odo Final!")
          Loop
  EndIf
                         
  If VSDGOPCAO[1]
     Then DISPOSITIVO_OPCAO=""
          IMPRIME_ARQUIVO=True
     Else IMPRIME_ARQUIVO=False 
          DISPOSITIVO()
          If OK="" Then Loop EndIf
  EndIf   

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

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

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile
  
  If IsEmpty(Tabela)
     Then Mensagem("N„o h  registros a processar!")
          Delete Tabela
          Loop
  EndIf
  Processa()
  If VSDGREPRESEN<>"" Then Seleciona_Vendedor() EndIf
  
  Verifica_Programacao()
  If MSG<>"" 
     Then Mensagem(MSG)
          Loop
  EndIf
  
  Totalizador("")
  CONTADOR = 0
  Impressao_Orientacao="Paisagem"
  ARQIMP = PrivDir()+"RM_3130.Txt"
  If IsFile(ARQIMP)
     Then Deleta_Arquivo(ARQIMP)
  EndIf

  COD_ANT = "***"
  Tabela_Rank=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\Rankt" Tabela_Rank
  
  View Tabela_Rank
  View Tabela
  CoEdit Tabela_Prog
  Scan
    COD_EMP                 = [Codigo da Empresa      ] 
    NOM_EMP                 = [Nome Fantasia Empresa  ] 
    VSDGDTINI_PROGRAMACAO   = [Data Inicial           ]
    VSDGDTFIM_PROGRAMACAO   = [Data Final             ]
    COD_REP                 = [Codigo do Representante]
    NOM_REP                 = [Nome Fantasia Represent]
    FATURAMENTO_META_MENSAL = [Meta_Faturamento       ]
    If MODO_RANKING="PEDIDO"
       Then ITENS_PEDIDO_META       = [Meta_Pecas     ]
       Else ITENS_PEDIDO_META       = [Meta_Itens     ]
    EndIf
    VRMEDIO_PEDIDO_META     = [Meta_ValorMedio        ]
    QTDVENDAS_META          = FATURAMENTO_META_MENSAL / VRMEDIO_PEDIDO_META    
    CONTADOR                = CONTADOR + 1
    If COD_ANT<>[Numero da Programacao]
       Then Verifica_Dias_Uteis()
            If COD_ANT = "***"
               Then Cabecalho()
            EndIf
            COD_ANT=[Numero da Programacao]
    EndIf
    
    Moveto Tabela
    Moveto [Codigo do Representante]
    Locate COD_REP
    If RetVal
       Then TOTAL_QUANTIDADE            = [Total Quantidade       ]
            TOTAL_NUMERO_VENDAS         = [Total Numero Vendas    ]
            QTDVENDAS_NUMERO_VENDAS     = TOTAL_NUMERO_VENDAS
            
            FATURAMENTO_REAL_VENDAS     = [Total Valor Vendas     ]
            FATURAMENTO_DEVOL           = [Devolucao Preco Total  ]
            FATURAMENTO_TC              = [Total Titulo de Credito]
            FATURAMENTO_VRLIQ           = FATURAMENTO_REAL_VENDAS - (FATURAMENTO_TC + FATURAMENTO_DEVOL)
            
            ;---- Vari veis utilizadas no sistema (CONTROLE AUTOMATICO) ----------------
            FATURAMENTO_META_DIA        = (FATURAMENTO_META_MENSAL - FATURAMENTO_VRLIQ) / DIAS_FALTANTES 
            FATURAMENTO_MEDIA_DIA       = FATURAMENTO_VRLIQ / DIAS_PERCORRIDOS
            FATURAMENTO_TENDENCIA_VALOR = FATURAMENTO_MEDIA_DIA * DIASUTEIS
            FATURAMENTO_TENDENCIA_PORC  = Round((FATURAMENTO_TENDENCIA_VALOR / FATURAMENTO_META_MENSAL) * 100,2)
            
            QTDVENDAS_REAL_NVENDAS      = QTDVENDAS_NUMERO_VENDAS
            QTDVENDAS_MEDIA_DIA         = QTDVENDAS_REAL_NVENDAS / DIAS_PERCORRIDOS
            QTDVENDAS_TENDENCIA_VALOR   = QTDVENDAS_MEDIA_DIA * DIASUTEIS
            QTDVENDAS_TENDENCIA_PORC    = Round((QTDVENDAS_TENDENCIA_VALOR / QTDVENDAS_META) * 100,2)
            
            ITENS_PEDIDO_REAL           = TOTAL_QUANTIDADE / TOTAL_NUMERO_VENDAS
            ITENS_PEDIDO_PERF           = Round((ITENS_PEDIDO_REAL / ITENS_PEDIDO_META) * 100,2)
            
            VRMEDIO_PEDIDO_REAL         = FATURAMENTO_VRLIQ / QTDVENDAS_REAL_NVENDAS
            VRMEDIO_PEDIDO_PERF         = Round((VRMEDIO_PEDIDO_REAL / VRMEDIO_PEDIDO_META) * 100,2)
            
       Else TOTAL_QUANTIDADE            = BlankNum()
            TOTAL_NUMERO_VENDAS         = BlankNum()
            QTDVENDAS_NUMERO_VENDAS     = BlankNum()

            FATURAMENTO_REAL_VENDAS     = BlankNum()
            FATURAMENTO_DEVOL           = BlankNum()
            FATURAMENTO_TC              = BlankNum()
            FATURAMENTO_VRLIQ           = BlankNum()
            
            If FATURAMENTO_META_MENSAL > 0
               Then FATURAMENTO_META_DIA= (FATURAMENTO_META_MENSAL - FATURAMENTO_VRLIQ) / DIAS_FALTANTES
               Else FATURAMENTO_META_DIA= BlankNum()
            EndIf 
            FATURAMENTO_MEDIA_DIA       = BlankNum()
            FATURAMENTO_TENDENCIA_VALOR = BlankNum()
            FATURAMENTO_TENDENCIA_PORC  = BlankNum()
            
            QTDVENDAS_REAL_NVENDAS      = BlankNum()
            QTDVENDAS_MEDIA_DIA         = BlankNum()
            QTDVENDAS_TENDENCIA_VALOR   = BlankNum()
            QTDVENDAS_TENDENCIA_PORC    = BlankNum()
            
            ITENS_PEDIDO_REAL           = BlankNum()
            ITENS_PEDIDO_PERF           = BlankNum()
            
            VRMEDIO_PEDIDO_REAL         = BlankNum()
            VRMEDIO_PEDIDO_PERF         = BlankNum()
    EndIf        
    
    TOT_FATURAMENTO_META_MENSAL = TOT_FATURAMENTO_META_MENSAL + FATURAMENTO_META_MENSAL
    TOT_FATURAMENTO_REAL_VENDAS = TOT_FATURAMENTO_REAL_VENDAS + FATURAMENTO_REAL_VENDAS
    TOT_FATURAMENTO_DEVOL       = TOT_FATURAMENTO_DEVOL + FATURAMENTO_DEVOL      
    TOT_FATURAMENTO_TC          = TOT_FATURAMENTO_TC + FATURAMENTO_TC
    TOT_FATURAMENTO_VRLIQ       = TOT_FATURAMENTO_VRLIQ + FATURAMENTO_VRLIQ
    TOT_QTDVENDAS_META          = TOT_QTDVENDAS_META + QTDVENDAS_META
    TOT_QTDVENDAS_REAL_NVENDAS  = TOT_QTDVENDAS_REAL_NVENDAS + QTDVENDAS_REAL_NVENDAS
    If ITENS_PEDIDO_REAL > 0
       Then CONT_ITENS_PEDIDO_REAL = CONT_ITENS_PEDIDO_REAL + 1 
    EndIf   
    TOT_ITENS_PEDIDO_REAL       = TOT_ITENS_PEDIDO_REAL + ITENS_PEDIDO_REAL

    If Conta_Linha >= 68
       Then Print File ARQIMP "\f"
            Cabecalho()
    EndIf
    Conta_Linha = Conta_Linha + 1  
    Adiciona_Tabela()
    Moveto Tabela_Prog
  EndScan
  Do_it!
  ClearAll
  
  ;---- Verifica Vendas sem Programa‡Æo de Meta --------------------------------
  View Tabela_Rank   
  View Tabela_Prog
  CoEdit Tabela
  Scan
    COD_EMP                 = [Codigo da Empresa    ] 
    NOM_EMP                 = [Nome Fantasia Empresa]
    COD_REP                 = [Codigo do Representante]
    NOM_REP                 = [Nome Fantasia Represent]
    
    Moveto Tabela_Prog
    Moveto [Codigo do Representante]
    Locate COD_REP
    If RetVal
       Then Moveto Tabela
            Loop
       Else CONTADOR                = CONTADOR + 1
            VSDGDTINI_PROGRAMACAO   = BlankDate()
            VSDGDTFIM_PROGRAMACAO   = BlankDate()
            FATURAMENTO_META_MENSAL = BlankNum()      
    EndIf         
    Moveto Tabela
      
    TOTAL_QUANTIDADE            = [Total Quantidade       ]
    TOTAL_NUMERO_VENDAS         = [Total Numero Vendas    ]
    QTDVENDAS_NUMERO_VENDAS     =  TOTAL_NUMERO_VENDAS
    FATURAMENTO_REAL_VENDAS     = [Total Valor Vendas     ]
    FATURAMENTO_TC              = [Total Titulo de Credito]
    FATURAMENTO_DEVOL           = [Devolucao Preco Total  ]
    FATURAMENTO_VRLIQ           = FATURAMENTO_REAL_VENDAS - (FATURAMENTO_TC + FATURAMENTO_DEVOL)
    
    ;---- Vari veis utilizadas no sistema (CONTROLE AUTOMATICO) ----------------
    FATURAMENTO_META_DIA        = (FATURAMENTO_META_MENSAL - FATURAMENTO_VRLIQ) / DIAS_FALTANTES 
    FATURAMENTO_MEDIA_DIA       = FATURAMENTO_VRLIQ / DIAS_PERCORRIDOS
    FATURAMENTO_TENDENCIA_VALOR = FATURAMENTO_MEDIA_DIA * DIASUTEIS
    FATURAMENTO_TENDENCIA_PORC  = Round((FATURAMENTO_TENDENCIA_VALOR / FATURAMENTO_META_MENSAL) * 100,2)
    
    QTDVENDAS_META              = FATURAMENTO_META_MENSAL / VRMEDIO_PEDIDO_META
    QTDVENDAS_REAL_NVENDAS      = QTDVENDAS_NUMERO_VENDAS
    QTDVENDAS_MEDIA_DIA         = QTDVENDAS_REAL_NVENDAS / DIAS_PERCORRIDOS
    QTDVENDAS_TENDENCIA_VALOR   = QTDVENDAS_MEDIA_DIA * DIASUTEIS
    QTDVENDAS_TENDENCIA_PORC    = Round((QTDVENDAS_TENDENCIA_VALOR / QTDVENDAS_META) * 100,2)
    
    ITENS_PEDIDO_REAL           = TOTAL_QUANTIDADE / TOTAL_NUMERO_VENDAS
    If ITENS_PEDIDO_REAL > 0
       Then CONT_ITENS_PEDIDO_REAL = CONT_ITENS_PEDIDO_REAL + 1 
    EndIf
    ITENS_PEDIDO_PERF           = Round((ITENS_PEDIDO_REAL / ITENS_PEDIDO_META) * 100,2)
    
    VRMEDIO_PEDIDO_REAL         = FATURAMENTO_VRLIQ / QTDVENDAS_REAL_NVENDAS
    VRMEDIO_PEDIDO_PERF         = Round((VRMEDIO_PEDIDO_REAL / VRMEDIO_PEDIDO_META) * 100,2)

    TOT_FATURAMENTO_META_MENSAL = TOT_FATURAMENTO_META_MENSAL + FATURAMENTO_META_MENSAL
    TOT_FATURAMENTO_REAL_VENDAS = TOT_FATURAMENTO_REAL_VENDAS + FATURAMENTO_REAL_VENDAS    
    TOT_FATURAMENTO_DEVOL       = TOT_FATURAMENTO_DEVOL + FATURAMENTO_DEVOL
    TOT_FATURAMENTO_TC          = TOT_FATURAMENTO_TC + FATURAMENTO_TC
    TOT_FATURAMENTO_VRLIQ       = TOT_FATURAMENTO_VRLIQ + FATURAMENTO_VRLIQ
    TOT_QTDVENDAS_META          = TOT_QTDVENDAS_META + QTDVENDAS_META
    TOT_QTDVENDAS_REAL_NVENDAS  = TOT_QTDVENDAS_REAL_NVENDAS + QTDVENDAS_REAL_NVENDAS
    TOT_ITENS_PEDIDO_REAL       = TOT_ITENS_PEDIDO_REAL + ITENS_PEDIDO_REAL

    If Not IsAssigned(DIASUTEIS)
       Then VSDGDTFIM_PROGRAMACAO = BlankDate()
            VSDGDTINI_PROGRAMACAO = BlankDate()
            Verifica_Dias_Uteis()
            Cabecalho()
    EndIf

    If Conta_Linha >= 68
       Then Print File ARQIMP "\f"
            Cabecalho()
    EndIf
    Conta_Linha = Conta_Linha + 1  
    Adiciona_Tabela()
    Moveto Tabela
  EndScan
  Do_it!
  ClearAll  
  
  
  ;---- Imprime Arquivo --------------------------------------------------------
  Sort Tabela_Rank On "FATURAMENTO_REAL_VENDAS" D
  Home
  Scan
    COD_REP = [Codigo do Representante]
    NOM_REP = [Nome Fantasia Represent]
    Corpo()
  EndScan
  Do_it!
  ClearAll 
  
  Print File ARQIMP "\n"
  Totalizador("VALORES")   
  
  ;---- Ordenando Ranking de Vendas e Ranking Geral ----------------------------
  Sort Tabela_Rank On "FATURAMENTO_REAL_VENDAS" D 
  SaveTables 
  ClearAll
  
  If IsAssigned(Ranking) And DynArraySize(Ranking)>0 And IMPRIME_ARQUIVO
     Then Coedit Tabela_Rank
          For i From 1 To DynArraySize(Ranking)
            [Ranking_Nome       ] = SubStr(Ranking[i],1,20)
            [Ranking_Faturamento] = NumVal(SubStr(Ranking[i],21,11))
            [Ranking_QtdVendas  ] = NumVal(SubStr(Ranking[i],32,11))
            [Ranking_ItemPedido ] = NumVal(SubStr(Ranking[i],43,11))
            [Ranking_VrPedido   ] = NumVal(SubStr(Ranking[i],54,11))
            Down
          EndFor
          Do_it!
          ClearAll
  EndIf

  If DISPOSITIVO_OPCAO = "A"
     Then ImpriRel(Tabela_Rank,"R")
     Else If Not IMPRIME_ARQUIVO
                 Then If IsFile(ARQIMP)
                         Then ImpriArq(ARQIMP)
                              Deleta_Arquivo(ARQIMP)
                      EndIf
                 Else CI_20CPP   = Chr(27)+Chr(77)+Chr(15)
                      CI_F_TIMES = CI_20CPP
                      PDFZEBRA = False
                      DISPOSITIVO_OPCAO = "A"
                      
                      ;---- Fechando os V¡nculus rec‚m atualizados -------------                       
                      Comando="c:\\vise\\Vpxc.exe "+Tabela_Rank+".db "+SubStr(Directory(),1,3)+"Sistemas\\Vendas\\XLS\\Ranking.xls /Open"
                      Executa_Programa(comando)
                      Sleep 1000
                      Delete Tabela_Rank
                      
                      If MODO_RANKING = "PEDIDO"
                         Then FileWrite  PrivDir()+"funcao1.txt"  From  "EXEF|"+SubStr(Directory(),1,3)+"Sistemas\\Vendas\\XLS\\Painel_P.xlsm"
                         Else If SYS_CODIGO_CLIENTE="0294"
                                 Then FileWrite  PrivDir()+"funcao1.txt"  From  "EXEF|"+SubStr(Directory(),1,3)+"Sistemas\\Vendas\\XLS\\Painel_F_0294.xlsm"
                                 Else FileWrite  PrivDir()+"funcao1.txt"  From  "EXEF|"+SubStr(Directory(),1,3)+"Sistemas\\Vendas\\XLS\\Painel_F.xlsm"
                               EndIF  
                      EndIf         
                      ExecVise(PrivDir()+"funcao1.txt")
                      
                      ;---- Fechando os V¡nculus rec‚m atualizados -------------                                 
                      JANELA = "Ranking  [Modo de Compatibilidade]"
                      FileWrite  PrivDir()+"funcao1.txt"  From  "CLOSE|"+JANELA
                      ExecVise(PrivDir()+"funcao1.txt")
              EndIf
  EndIf            
  If ANT_VSDGEMPRESA<>"" Then VSDGEMPRESA=ANT_VSDGEMPRESA EndIf
  Delete Tabela
  Delete Tabela_Prog
EndWhile
ClearAll
Release Vars All
Release Procs All
