;** Rm_3152 ********************************************************************
;* Resumo de Pedidos comparaÆo marca/coleÆo                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 19/07/2012 por Bruno Carvalho
;Ultima Alteracao: 23/07/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes Diret¢rio Ms Fechado
;Ultima Alteracao: 25/07/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes Diret¢rio Ms Fechado
;Ultima Alteracao: 24/06/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado Filtro "Status" 
;Ultima Alteracao: 19/12/2014 por Bruno Carvalho
;Motivo Alteracao: Alterado Modelo de Report de "2" para "R" e de "3" para "1" -> ??? Realizado esta alteraÆo,
;                  pois nÆo havia nenhum ligamento com o relat¢rio e estes modelos anteriores. O "R" e "1" estavam em desuso.
;Ultima Alteracao: 03/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adiconado rotina para exportar para excel na proc Gera_Tabela()
;Ultima Alteracao: 19/04/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustado VSDGSTATUS="3" como padrÆo
;Ultima Alteracao: 20/04/2016 por Anivel Augusto
;Motivo Alteracao: Ajustes na proc Seleciona() p/ otimizaÆo de processo
;Ultima Alteracao: 21/04/2016 por Anivel Augusto
;Motivo Alteracao: Ajustes 18 colunas, adicao e remoÆo de coleäes, logica        
;Ultima Alteracao: 22/04/2016 por Anivel Augusto
;Motivo Alteracao: Ajustes RM_3151 = RM_3152 com parametros                
;Ultima Alteracao: 25/04/2016 por Anivel Augusto
;Motivo Alteracao: Ajustes Logica
;Ultima Alteracao: 05/05/2016 por Bruno Carvalho
;Motivo Alteracao: Desmembrado RM_3152 e RM_3152A -> 18 Colunas / 5 Colunas
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 02/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro gerencia, representante
;Ultima Alteracao: 02/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos modelos 03, 49
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Ordem_Report()                
;Ultima Alteracao: 06/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro Area                        
;Ultima Alteracao: 07/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 03                          

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll
            
            
if ORIGEM_RM_3152="PEDIDOS"
   then
        If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC") And
           IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI")
           Then 
                {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
                Moveto [Codigo do Representante] Example "crep"
                Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
                
                {Ask} {\\Sistemas\\Vendas\\Destin}
                Moveto [Codigo da Destinacao  ] Example "cd"
                Moveto [Tipo Movimento Estoque] TypeIn "S"
        
                {Ask} {\\Sistemas\\Cadastro\\Destinat}
                Moveto [Codigo                 ] Example "cli"
                Moveto [Codigo da Area         ] Check TypeIn "~VSDGAREA.."
                Moveto [Descricao da Area      ] Check 
                Moveto [Inativo                ]
                Switch
                  Case VSDGSTATUS="1": TypeIn "N"
                  Case VSDGSTATUS="2": TypeIn "S"
                EndSwitch
                
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC" Enter
                Moveto [Numero do Pedido       ] Example "NPed"
                Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2"
                Moveto [Codigo                 ] Check Example "cli"
                Moveto [Razao Social           ] Check
                Moveto [Cidade                 ] Check TypeIn CIDADE
                Moveto [Codigo do Representante] Check TypeIn "_crep, ~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
                Moveto [UF                     ] Check TypeIn "~VSDGESTADO.."
                Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                Moveto [Codigo da Destinacao   ] Example "cd"
                Moveto [Descricao da Destinacao] TypeIn "..VEND.."
                Moveto [Situacao do Pedido     ] TypeIn "Not CANCELADO, NOT SUSPENSO"
        
                {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoI" Enter
                Moveto [Numero do Pedido       ] Example "NPed"
                Moveto [Codigo do Item         ] Example "codI"
                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"    
                
                {Ask} TypeIn Tabela_Itens Enter
                Moveto [Codigo do Item         ] Example "codI"
                Moveto [Codigo da Marca        ] Check
                Moveto [Descricao da Marca     ] Check 
                
                Do_It!      
                ClearAll
        EndIf
   else
        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"
                Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
                   
                {Ask} {\\Sistemas\\Cadastro\\Destinat}
                Moveto [Codigo                 ] Example "cli"
                Moveto [Codigo da Area         ] Check TypeIn "~VSDGAREA.."
                Moveto [Descricao da Area      ] Check 
                Moveto [Inativo                ]
                Switch
                  Case VSDGSTATUS="1": TypeIn "N"
                  Case VSDGSTATUS="2": TypeIn "S"
                EndSwitch
                
                {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 Example "cli"
                Moveto [Razao Social           ] Check    
                Moveto [Cidade                 ] Check TypeIn CIDADE
                Moveto [Codigo do Representante] Check TypeIn "_crep, ~VSDGREPRESEN.."
                Moveto [Nome Fantasia Represent] Check
                Moveto [UF                     ] Check TypeIn "~VSDGESTADO.."
                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 [Codigo do Item         ] Example "codI"
                Moveto [Situacao_Item          ] TypeIn "Not C"
                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"    
        
                {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
                Moveto [Codigo do Item         ] Example "codI"
                Moveto [Codigo da Marca        ] Check
                Moveto [Descricao da Marca     ] Check 
                Do_It!      
                ClearAll
        
                Adiciona_Dados()
        EndIf
   
endif
   
EndProc   ; (Seleciona)

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

If Not IsTable(TabelaTEMP) Or IsEmpty(TabelaTEMP)
   Then Return
EndIf

Aguarde("Aguarde, adicionando os dados... ")

{Ask} TypeIn TabelaTEMP Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [Codigo do Representante] Example "rep"
Moveto [Nome Fantasia Represent] Example "nor"
Moveto [Codigo da Marca        ] Example "CodM" 
Moveto [Descricao da Marca     ] Example "DesM" 
Moveto [Quantidade             ] Example "qtde"
Moveto [Preco Total            ] Example "ptot"
Moveto [Valor Desconto Total   ] Example "vdes"

switch
  case VSDGCODMODELO="03" :
    Moveto [UF                     ] Example "uf"
    Moveto [Descricao da Area      ] Example "cid"
  
  otherwise               :
    Moveto [Cidade                 ] Example "cid"
    Moveto [UF                     ] Example "uf"
endswitch

{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [Codigo do Representante] Example "rep"
Moveto [Nome Fantasia Represent] Example "nor"
Moveto [Codigo da Marca        ] Example "CodM" 
Moveto [Descricao da Marca     ] Example "DesM" 
Moveto [Vendas_Quantidade      ] Example "qtde"
Moveto [Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"

Moveto [Cidade                 ] Example "cid"
Moveto [UF                     ] Example "uf"

Do_It!
ClearAll

EndProc
 
;*******************************************************************************
;* 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

switch
  case VSDGCODMODELO="49" :
    {Ask} TypeIn Tabela Enter typein "Fast"
    Moveto [UF                     ] typein "changeto blank"
    Moveto [Cidade                 ] typein "changeto blank" 
    Do_It!
    ClearAll

  case VSDGCODMODELO="03" :
    {Ask} TypeIn Tabela Enter typein "Fast"
    Moveto [Codigo do Representante] typein "changeto blank"
    Moveto [Nome Fantasia Represent] typein "changeto blank" 
    Do_It!
    ClearAll

endswitch

;***** Totaliza Dados ************************************

{Ask} TypeIn Tabela Enter 
Moveto [Codigo da Empresa      ] Check 
Moveto [Nome Fantasia Empresa  ] check
Moveto [Codigo                 ] Check 
Moveto [Razao Social           ] Check
Moveto [UF                     ] Check 
Moveto [Cidade                 ] Check 
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Moveto [Codigo da Marca        ] Check
Moveto [Descricao da Marca     ] Check 
Moveto [Vendas_Quantidade      ] TypeIn "Calc Sum as VendasQuantidade"
Moveto [Vendas_Preco Total     ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll

{Ask} TypeIn Colecao Enter
Moveto [Codigo da Marca] TypeIn "_cmarca"
{Ask} {Answer} Check
Moveto [Codigo da Marca] TypeIn "_cmarca"
Do_It!
ClearAll

Delete Tabela
Rename "Answer" Tabela                                  

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Nome Fantasia Empresa  ] check
Moveto [Codigo                 ] Check
Moveto [Razao Social           ] Check
Moveto [UF                     ] Check
Moveto [Cidade                 ] Check
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [UF                     ] Example "uf"
Moveto [Cidade                 ] Example "cid"
Moveto [Codigo do Representante] Example "rep"
Moveto [Nome Fantasia Represent] Example "nor"
{Ask} TypeIn Tabela2 Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [UF                     ] Example "uf"
Moveto [Cidade                 ] Example "cid"
Moveto [Codigo do Representante] Example "rep"
Moveto [Nome Fantasia Represent] Example "nor"
Do_It!
ClearAll

EndProc    ;  (Processa)

;*******************************************************************************
;* Ordena Registros                                                            *
;*******************************************************************************
Proc Ordena()
private regok

CABECALHO_1 =""
CABECALHO_2 =""
CABECALHO_3 =""
CABECALHO_4 =""
CABECALHO_5 =""
CABECALHO_6 =""
CABECALHO_7 =""
CABECALHO_8 =""
CABECALHO_9 =""
CABECALHO_10=""
CABECALHO_11=""
CABECALHO_12=""
CABECALHO_13=""
CABECALHO_14=""
CABECALHO_15=""
CABECALHO_16=""
CABECALHO_17=""
CABECALHO_18=""

CONT=0
Coedit Colecao
Scan          
  CONT=CONT+1
  [Comissao Consignacao]=CONT
  Switch
    Case CONT= 1 : CABECALHO_1 =[Descricao da Marca]
    Case CONT= 2 : CABECALHO_2 =[Descricao da Marca]
    Case CONT= 3 : CABECALHO_3 =[Descricao da Marca]
    Case CONT= 4 : CABECALHO_4 =[Descricao da Marca]
    Case CONT= 5 : CABECALHO_5 =[Descricao da Marca]
    Case CONT= 6 : CABECALHO_6 =[Descricao da Marca]
    Case CONT= 7 : CABECALHO_7 =[Descricao da Marca]
    Case CONT= 8 : CABECALHO_8 =[Descricao da Marca]
    Case CONT= 9 : CABECALHO_9 =[Descricao da Marca]
    Case CONT=10 : CABECALHO_10=[Descricao da Marca]
    Case CONT=11 : CABECALHO_11=[Descricao da Marca]
    Case CONT=12 : CABECALHO_12=[Descricao da Marca]
    Case CONT=13 : CABECALHO_13=[Descricao da Marca]
    Case CONT=14 : CABECALHO_14=[Descricao da Marca]
    Case CONT=15 : CABECALHO_15=[Descricao da Marca]
    Case CONT=16 : CABECALHO_16=[Descricao da Marca]
    Case CONT=17 : CABECALHO_17=[Descricao da Marca]
    Case CONT=18 : CABECALHO_18=[Descricao da Marca]
  EndSwitch
EndScan
Do_It!
ClearAll

Coedit Tabela2,Colecao,Tabela
Scan
  VENDAS=[VendasQuantidade]
  MARCA =[Codigo da Marca]

  CODIGO=[Codigo]
  REPRES=[Codigo do Representante]

  Moveto Colecao
  Moveto [Codigo da Marca]
  Locate MARCA
  If RetVal
     Then COLUNA=[Comissao Consignacao]
     Else Moveto Tabela
          Loop
  EndIf
  
  regok=false
  
  Moveto Tabela2
  Moveto [Codigo]
  Locate CODIGO
  If RetVal
     then while [Codigo]=CODIGO
            if [Codigo do Representante]=REPRES
               then regok=true
                    quitloop
            endif
            skip
            if eot() then quitloop endif
            Locate Next CODIGO
          endwhile
  endif   
  if not regok
     then moveto Tabela
          Loop
  endif        
  
  Switch
    Case COLUNA= 1 : [Coluna_1 ]=VENDAS
    Case COLUNA= 2 : [Coluna_2 ]=VENDAS
    Case COLUNA= 3 : [Coluna_3 ]=VENDAS
    Case COLUNA= 4 : [Coluna_4 ]=VENDAS
    Case COLUNA= 5 : [Coluna_5 ]=VENDAS
    Case COLUNA= 6 : [Coluna_6 ]=VENDAS
    Case COLUNA= 7 : [Coluna_7 ]=VENDAS
    Case COLUNA= 8 : [Coluna_8 ]=VENDAS
    Case COLUNA= 9 : [Coluna_9 ]=VENDAS
    Case COLUNA=10 : [Coluna_10]=VENDAS
    Case COLUNA=11 : [Coluna_11]=VENDAS
    Case COLUNA=12 : [Coluna_12]=VENDAS
    Case COLUNA=13 : [Coluna_13]=VENDAS
    Case COLUNA=14 : [Coluna_14]=VENDAS
    Case COLUNA=15 : [Coluna_15]=VENDAS
    Case COLUNA=16 : [Coluna_16]=VENDAS
    Case COLUNA=17 : [Coluna_17]=VENDAS
    Case COLUNA=18 : [Coluna_18]=VENDAS
  EndSwitch
  [Coluna_Total] = [Coluna_1 ]+[Coluna_2 ]+[Coluna_3 ]+[Coluna_4 ]+[Coluna_5 ]+
                   [Coluna_6 ]+[Coluna_7 ]+[Coluna_8 ]+[Coluna_9 ]+[Coluna_10]+
                   [Coluna_11]+[Coluna_12]+[Coluna_13]+[Coluna_14]+[Coluna_15]+
                   [Coluna_16]+[Coluna_17]+[Coluna_18]

  Moveto Tabela
EndScan 
Do_It!
ClearAll

{Ask} TypeIn Tabela2 Enter
Moveto [Coluna_1 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_2 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_3 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_4 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_5 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_6 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_7 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_8 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_9 ] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_10] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_11] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_12] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_13] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_14] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_15] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_16] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_17] TypeIn "blank, Changeto 0" Down
Moveto [Coluna_18] TypeIn "blank, Changeto 0"
Do_It!
ClearAll

EndProc ;Ordena()

;*******************************************************************************
;* Inclusao ColecÆo                                                            *
;*******************************************************************************
Proc Inclusao_Colecao()

ADICAO=False

Switch
  Case Campo="TG_TABELA1"     : IND=NumVal(ControlValue("TG_TABELA1"))
                                
                                If DynArraySize(Array_Lista1)=0
                                   Then Return
                                EndIf

                                If DynArraySize(Array_Lista2)=18
                                   Then Mensagem(" poss¡vel comparar apenas 18 colees !")
                                        Return
                                EndIf   
                                
                                CodTabela=AlinhM(SubStr(Array_Lista1[IND],1,3),3)
                        
                                View Colecao_Temp
                                Moveto [Codigo da Marca]
                                Locate CodTabela
                                If RetVal
                                   Then CopyToArray TABCOLECAO
                                        Coedit Colecao
                                        End Down
                                        CopyFromArray TABCOLECAO
                                        Do_It!
                                        ClearAll
                                        ADICAO=True
                                        Exclusao_Colecao()
                                EndIf
                            
  Case Campo="TG_TABELA2" And 
       EXCLUSAO = True        : Coedit Colecao_Temp
                                Moveto [Codigo da Marca]
                                End Down                            
                                CopyFromArray TABCOLECAO_REMOVE
                                Do_It!
                                ClearAll
EndSwitch

Carrega_Array()

EndProc ;Inclusao_Colecao()

;*******************************************************************************
;* ExclusÆo Tabela de Preo                                                    *
;*******************************************************************************
Proc Exclusao_Colecao()                   
                                   
EXCLUSAO=False                          
                     
Switch                                    
  Case Campo="TG_TABELA1" And
       ADICAO=True            : Coedit Colecao_Temp
                                Moveto [Codigo da Marca]
                                Locate CodTabela
                                If RetVal                 
                                   Then Del
                                EndIf
                                Do_It!   
                                ClearAll

  Case Campo="TG_TABELA2"     : IND=NumVal(ControlValue("TG_TABELA2"))

                                If DynArraySize(Array_Lista2)=0
                                   Then Return         
                                EndIf
                                
                                CodTabela=AlinhM(SubStr(Array_Lista2[IND],5,3),3)
                                
                                Coedit Colecao
                                Moveto [Codigo da Marca]
                                Locate CodTabela
                                If RetVal
                                   Then CopyToArray TABCOLECAO_REMOVE
                                        Del
                                EndIf
                                Do_It!   
                                ClearAll
                                EXCLUSAO=True
                                Inclusao_Colecao()
EndSwitch

Carrega_Array()                    

EndProc ;Exclusao_Colecao()

;*******************************************************************************
;* Carrega Array e Verifica AlteraÆo                                          *
;*******************************************************************************
Proc Carrega_Array()
Private WHI,WHK
WHI=0
WHK=0

Release Vars Array_Lista1
Release Vars Array_Lista2

DynArray Array_Lista2[] 
DynArray Array_Lista1[]                         

If Not IsAssigned(Colecao_Temp)
   Then {Ask} {\\Sistemas\\Estoque\\Marcas} Check
        Do_It!
        ClearAll
       
        Colecao_Temp=Cria_Temp(PrivDir())
        Copy "Answer" Colecao_Temp
EndIf

If Not IsAssigned(Colecao)
   Then Colecao=Cria_Temp(PrivDir())
        Copy Colecao_Temp Colecao
        Empty Colecao
EndIf

If Not IsEmpty(Colecao_Temp)
   Then View Colecao_Temp
        Scan
          WHI=WHI+1
          Array_Lista1[WHI]=Alinhm(StrVal([Codigo da Marca]),3)+Spaces(01)+SubStr([Descricao da Marca],1,30)
        EndScan 
EndIf  

If Not IsEmpty(Colecao)
   Then View Colecao
        Scan
          WHK=WHK+1 
          Array_Lista2[WHK]=AlinhM(StrVal(WHK),2)+"  "+Alinhm(StrVal([Codigo da Marca]),3)+Spaces(01)+SubStr([Descricao da Marca],1,30)   
        EndScan  
EndIf

ClearAll

EndProc ;Carrega_Array() 

;*******************************************************************************
;* Gera Tabela em Excel                                                        *
;*******************************************************************************
Proc Gera_Tabela()

Tabela3=Cria_Temp(PrivDir()) ;---- PARA ARQUIVO EM EXCEL -----
Empty "\\Base\\Sistemas\\Vendas\\RM_3020" 
Copy "\\Base\\Sistemas\\Vendas\\RM_3020" Tabela3                                        

{Ask} TypeIn Tabela2 Enter  
Moveto [Codigo da Empresa      ] TypeIn "_CodF"
Moveto [Nome Fantasia Empresa  ] TypeIn "_NomF"
Moveto [Codigo do Representante] TypeIn "_CodR"
Moveto [Nome Fantasia Represent] TypeIn "_NomR"
Moveto [UF                     ] TypeIn "_UF"
Moveto [Cidade                 ] TypeIn "_Cid"
Moveto [Codigo                 ] TypeIn "_CodC"
Moveto [Razao Social           ] TypeIn "_RazS"
Moveto [Coluna_1               ] TypeIn "_Col1"
Moveto [Coluna_2               ] TypeIn "_Col2"
Moveto [Coluna_3               ] TypeIn "_Col3"
Moveto [Coluna_4               ] TypeIn "_Col4"
Moveto [Coluna_5               ] TypeIn "_Col5"
Moveto [Coluna_6               ] TypeIn "_Col6"
Moveto [Coluna_7               ] TypeIn "_Col7"
Moveto [Coluna_8               ] TypeIn "_Col8"
Moveto [Coluna_9               ] TypeIn "_Col9"
Moveto [Coluna_10              ] TypeIn "_Col10"
Moveto [Coluna_11              ] TypeIn "_Col11"
Moveto [Coluna_12              ] TypeIn "_Col12"
Moveto [Coluna_13              ] TypeIn "_Col13"
Moveto [Coluna_14              ] TypeIn "_Col14"
Moveto [Coluna_15              ] TypeIn "_Col15"
Moveto [Coluna_16              ] TypeIn "_Col16"
Moveto [Coluna_17              ] TypeIn "_Col17"
Moveto [Coluna_18              ] TypeIn "_Col18"
{Ask} TypeIn Tabela3 Enter TypeIn "Fast Insert"  
Moveto [Codigo da Empresa      ] TypeIn "_CodF"
Moveto [Nome Fantasia Empresa  ] TypeIn "_NomF"
Moveto [Codigo do Representante] TypeIn "_CodR"
Moveto [Nome Fantasia Represent] TypeIn "_NomR"
Moveto [UF                     ] TypeIn "_UF"
Moveto [Cidade                 ] TypeIn "_Cid"
Moveto [Codigo                 ] TypeIn "_CodC"
Moveto [Razao Social           ] TypeIn "_RazS"
Moveto [Coluna_1               ] TypeIn "_Col1"
Moveto [Coluna_2               ] TypeIn "_Col2"
Moveto [Coluna_3               ] TypeIn "_Col3"
Moveto [Coluna_4               ] TypeIn "_Col4"
Moveto [Coluna_5               ] TypeIn "_Col5"
Moveto [Coluna_6               ] TypeIn "_Col6"
Moveto [Coluna_7               ] TypeIn "_Col7"
Moveto [Coluna_8               ] TypeIn "_Col8"
Moveto [Coluna_9               ] TypeIn "_Col9"
Moveto [Coluna_10              ] TypeIn "_Col10"
Moveto [Coluna_11              ] TypeIn "_Col11"
Moveto [Coluna_12              ] TypeIn "_Col12"
Moveto [Coluna_13              ] TypeIn "_Col13"
Moveto [Coluna_14              ] TypeIn "_Col14"
Moveto [Coluna_15              ] TypeIn "_Col15"
Moveto [Coluna_16              ] TypeIn "_Col16"
Moveto [Coluna_17              ] TypeIn "_Col17"
Moveto [Coluna_18              ] TypeIn "_Col18"
Do_It!
ClearAll

Coedit Tabela3
Scan
  [Cabecalho_1 ] = CABECALHO_1
  [Cabecalho_2 ] = CABECALHO_2
  [Cabecalho_3 ] = CABECALHO_3
  [Cabecalho_4 ] = CABECALHO_4
  [Cabecalho_5 ] = CABECALHO_5
  [Cabecalho_6 ] = CABECALHO_6
  [Cabecalho_7 ] = CABECALHO_7
  [Cabecalho_8 ] = CABECALHO_8
  [Cabecalho_9 ] = CABECALHO_9
  [Cabecalho_10] = CABECALHO_10
  [Cabecalho_11] = CABECALHO_11
  [Cabecalho_12] = CABECALHO_12
  [Cabecalho_13] = CABECALHO_13
  [Cabecalho_14] = CABECALHO_14
  [Cabecalho_15] = CABECALHO_15
  [Cabecalho_16] = CABECALHO_16
  [Cabecalho_17] = CABECALHO_17
  [Cabecalho_17] = CABECALHO_18

  [Total      ] = [Coluna_1 ]+[Coluna_2 ]+[Coluna_3 ]+[Coluna_4 ]+[Coluna_5 ]+
                  [Coluna_6 ]+[Coluna_7 ]+[Coluna_8 ]+[Coluna_9 ]+[Coluna_10]+
                  [Coluna_11]+[Coluna_12]+[Coluna_13]+[Coluna_14]+[Coluna_15]+
                  [Coluna_16]+[Coluna_17]+[Coluna_18]
EndScan
Do_It!
ClearAll  

Copy Tabela3 Tabela2
Delete Tabela3

EndProc;Gera_Tabela()
  
;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf

If Disparo="CLOSE"
   Then Switch
          Case Campo="YES": AcceptDialog
          Case Campo="NO" : CancelDialog
        EndSwitch
        Return Temp
EndIf 

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_ADICIONA": Temp=True 
                                    Campo="TG_TABELA1"
                                    Inclusao_Colecao()
          Case Campo="TG_REMOVE"  : Temp=True
                                    Campo="TG_TABELA2"
                                    Exclusao_Colecao()
          Case Campo="YES"        : If Checa_TAG()
                                       Then RefreshDialog
                                    EndIf   
          Case Campo="NO"         : If Checa_TAG()
                                       Then RefreshDialog
                                    EndIf   
          OtherWise               : Return Temp
        EndSwitch
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"] =-147: 
          Switch
            Case Campo="TG_TABELA1"       : INDICE=ControlValue("TG_TABELA1")
                                            If IsAssigned(Array_Lista1) And DynArraySize(Array_Lista1)<>0 
                                               Then ConfGeral("Confirma a excluso desta coleo ?//"+Array_Lista1[INDICE])
                                                    If OK="S"
                                                       Then Exclusao_Colecao()
                                                    EndIF
                                            EndIf   
         EndSwitch            
     Case Evento["KeyCode"] = -77 and Campo="TG_TABELA1": ;tabela1
          indicelista=ArrayElement1
          Inclusao_Colecao()
          ArrayElement1=indicelista
                   
     Case Evento["KeyCode"] = -75 and Campo="TG_TABELA2": ; tabela2
          indicelista=ArrayElement2
          Exclusao_Colecao()    
          ArrayElement2=indicelista

     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"       : Campo="NO"     
            Case Campo="TG_REPRESEN"      : Campo="TG_EMPRESATE"
            Case campo="TG_GERENCIA"      : Campo="TG_REPRESEN"
            Case Campo="TG_ESTADO"        : Campo="TG_GERENCIA"
            Case Campo="TG_CIDADE"        : Campo="TG_ESTADO"
            Case Campo="TG_AREA"          : Campo="TG_CIDADE"
            Case Campo="TG_DTINI"         : Campo="TG_AREA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPRELCODALF"   : Campo="TG_DTFIM"
            Case Campo="TG_STATUS"        : Campo="TG_OPRELCODALF"
            Case Campo="TG_TABELA1"       : Campo="TG_STATUS"
            Case Campo="TG_TABELA2"       : Campo="TG_TABELA1"
            Case Campo="TG_CODMODELO"     : Campo="TG_TABELA2"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESATE"
          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_EMPRESATE"      :
                         If Not IsBlank(VSDGEMPRESA)
                            Then Campo="TG_REPRESEN"
                            Else VSDGNOMEMP=""
                         EndIf   
                    Case Campo="TG_REPRESEN"     :Campo="TG_GERENCIA"
                    Case campo="TG_GERENCIA"     :Campo="TG_ESTADO"
                    Case Campo="TG_ESTADO"       :Campo="TG_CIDADE"
                    Case Campo="TG_CIDADE"       :Campo="TG_AREA"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf       
                    Case Campo="TG_AREA"        : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"       : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       : Campo="TG_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF" : Campo="TG_STATUS"
                    Case Campo="TG_STATUS"      : Campo="TG_TABELA1"
                         VSDGSTATUS = ControlValue("TG_STATUS")
                         If VSDGSTATUS=""
                            Then VSDGSTATUS    = "3"
                                 VSDGNOMSTATUS = "AMBOS"
                         EndIf
                    Case Campo="TG_TABELA1"     : Campo="TG_TABELA2"
                    Case Campo="TG_TABELA2"       : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESATE"  :
     MSG_CAMPO="Informa a Empresa"  
  Case Campo="TG_DTFIM":
     MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_TABELA1"    : 
     MSG_CAMPO=" >> Adiciona tabela de preo"
     TECLA=TECLA+" >=Adicionar"
  Case Campo="TG_TABELA2"    : 
     MSG_CAMPO=" << Remove tabela de preo"  
     TECLA=TECLA+" <=Remover"  
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Representante/UF/Cidade/Cliente")
ModeloRelatoriosAdd("02  UF/Cidade")
ModeloRelatoriosAdd("03  UF/Area/Cliente")
ModeloRelatoriosAdd("49  Representante/Cliente")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

If Not IsAssigned(TITTULO_RM_3152) then TITTULO_RM_3152="Pedidos  - ComparaÆo de Marcas 18/Meses" endif
If Not IsAssigned(ORIGEM_RM_3152 ) then ORIGEM_RM_3152 ="PEDIDOS"                                                  endif

EXCLUSAO    =False
VSDGEMPRESA =""
VSDGESTADO  = ""
VSDGCIDADE  =""              
VSDGREPRESEN=""
VSDGAREA    =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGOPRELCODALF=""

Carrega_Array()

ModeloRelatoriosCarregaLista()

While True

  ShowDialog TITTULO_RM_3152 Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
  Key "F1","ENTER","ESC","TAB",
      -75, -77, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -147  
    @ 01,00 Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    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 "Gerncia " For "TG_GERENCIA"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 05,09 Width 25 "A20"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA

    Label  @ 06,00 "Estado"  For "TG_ESTADO"
    Accept @ 07,03 Width 05 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMESTADO"  To VSDGNOMESTADO

    Label  @ 08,00 "Cidade"  For "TG_CIDADE"
    Accept @ 09,01 Width 33 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE                         
   
    Label  @ 10,00 "Area"  For "TG_AREA"
    Accept @ 11,01 Width 07 "A2"  Picture "#*#" Tag "TG_AREA"     To VSDGAREA
    Accept @ 11,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMAREA"  To VSDGNOMAREA    
                        
    Label  @ 00,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 01,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 01,51 "at" For "TG_DTFIM"
    Accept @ 01,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
   
    Label  @ 02,35 "Opo de Ordem" For "TG_OPRELCODALF"
    Accept @ 03,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    Label  @ 04,35 "Status Cliente"  For "TG_STATUS"
    Accept @ 05,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_STATUS" To VSDGSTATUS
    Accept @ 05,44 Width 25 "A12" Picture "!*!" Tag "TG_NOMSTATUS" To VSDGNOMSTATUS

    @ 12,00 ?? " Colees Dispon¡veis" 
    @ 12,40 ?? " Seq Colees a Comparar"         
      
    PickDynArray @13,01 Height 4 width 27 ;58
    Columns 1
     Array_Lista1
      Tag "TG_TABELA1"
       To ArrayElement1

    PickDynArray @13,41 Height 4 width 27 ;58
    Columns 1
     Array_Lista2
      Tag "TG_TABELA2"
       To ArrayElement2

    Pushbutton @ 13,31 width 8 "~>~>"   Tag "TG_ADICIONA"  To BottonValue
    Pushbutton @ 15,31 width 8 "~<~<"   Tag "TG_REMOVE"    To BottonValue

    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog

  If Not RetVal Then QuitLoop EndIf
  If Not Usuario_Vendedor() Then Loop EndIf  

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
 
  If IsEmpty(Colecao)
     Then MENSAGEM("Informe pelo menos uma coleo para prosseguir !")
          Loop
  EndIf

  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf

  ClearAll
  DISPOSITIVO()
  If OK=""  Then Loop EndIf

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

  AGUARDE("Aguarde, gerando o relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\RM_3102"
  Copy "\\Base\\Sistemas\\Vendas\\RM_3102" Tabela
  
  Tabela2=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\RM_3102a"
  Copy "\\Base\\Sistemas\\Vendas\\RM_3102a" Tabela2
  
  Aguarde("Gerando Tabela dos Itens... ")
  {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
  Moveto [Codigo do Item         ] Check
  Moveto [Codigo da Marca        ] Check
  Moveto [Descricao da Marca     ] Check
  Do_It!
  ClearAll
  Tabela_Itens=Cria_Temp(PrivDir())
  Copy "Answer" Tabela_Itens
  
  TabelaTEMP=Cria_Temp("\\Sistemas\\Vendas\\")
  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    If IsTable("Answer") Then Delete "Answer" EndIf
    Seleciona()
    If Not IsTable("Answer") Then Loop EndIf
    If IsTable(TabelaTEMP)
       Then Add "Answer" TabelaTEMP
       Else Rename "Answer" TabelaTEMP
    EndIf
  EndWhile  
  
  Adiciona_Dados()
  Processa()
  Ordena()

  If IsEmpty(Tabela2)
     Then MENSAGEM("No existem registros a processar")
          Delete Tabela
          Delete Tabela_Itens
          Loop
  EndIf
  
  switch
    case DISPOSITIVO_OPCAO="A": 
      Gera_Tabela()
      IMPRIREL(Tabela2,"R")
    
    otherwise                 :
      Impressao_Orientacao="Paisagem"
      switch
        case VSDGCODMODELO="01" :
          If VSDGOPRELCODALF="1"
             Then Seta_Ordem_Report(Tabela2,"R","Codigo","Codigo","")
             Else Seta_Ordem_Report(Tabela2,"R","Codigo","Razao Social","")
          EndIf
          IMPRIREL(Tabela2,"R")
   
        case VSDGCODMODELO="02" :
          IMPRIREL(Tabela2,"1")

        case VSDGCODMODELO="03" :
          If VSDGOPRELCODALF="1"
             Then Seta_Ordem_Report(Tabela2,"7","Codigo","Codigo","")
             Else Seta_Ordem_Report(Tabela2,"7","Codigo","Razao Social","")
          EndIf
          IMPRIREL(Tabela2,"7")
   
        case VSDGCODMODELO="49" :
          If VSDGOPRELCODALF="1"
             Then Seta_Ordem_Report(Tabela2,"6","Codigo","Codigo","")
             Else Seta_Ordem_Report(Tabela2,"6","Codigo","Razao Social","")
          EndIf
          IMPRIREL(Tabela2,"6")
   
      endswitch   
  endswitch
  
  Delete Tabela
  Delete Tabela2
  Delete Tabela_Itens

EndWhile
ClearAll
Release Vars All
Release Procs All
