;** Rm_3151 ********************************************************************
;* Resumo de Vendas por Representante/UF/Cidade/Cliente "ColeÆo"              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 08/05/2012 por Bruno Carvalho
;Ultima Alteracao: 18/05/2012 por Bruno Carvalho 
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 03/10/2013 por Andrey Fillipe          
;Motivo Alteracao: Adicionado filtro por Gerencia
;Ultima Alteracao: 16/06/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes no filtro Gerencia
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE                 
;Ultima Alteracao: 05/02/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Ordem_Report()                
;Ultima Alteracao: 12/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desfazer ask com representante nÆo cadastrado
;Ultima Alteracao: 10/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padronizaÆo nos campos [TG_CIDADE] e [TG_ESTADO]

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll
                      
;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
           Moveto [Codigo do Representante] Example "crep"
           If VSDGGERENCIA<>""
              Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
              Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
           EndIf
           
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] CheckPlus Example "cemp" TypeIn ", ~VSDGEMPRESA2"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo                 ] CheckPlus
        Moveto [Razao Social           ] CheckPlus
        Moveto [Cidade                 ] CheckPlus TypeIn CIDADE
        If IsBlank(VSDGREPRESEN)
           Then Moveto [Codigo do Representante] CheckPlus Example "crep" 
           Else Moveto [Codigo do Representante] CheckPlus Example "crep" TypeIn ", ~VSDGREPRESEN.."
        EndIf 
        Moveto [Nome Fantasia Represent] CheckPlus
        Moveto [UF                     ] CheckPlus 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 [Quantidade             ] CheckPlus
        Moveto [Preco Total            ] CheckPlus
        Moveto [Valor Desconto Total   ] CheckPlus
        Moveto [Situacao_Item          ] TypeIn "Not C"
        {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("VENDAS")
EndIf

;****** Devolucoes - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
           Moveto [Codigo do Representante] Example "crep"
           If VSDGGERENCIA<>""
              Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
              Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
           EndIf
   
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Destinat" Enter
        Moveto [Codigo                 ] Example "clie"
        Moveto [Cidade                 ] CheckPlus TypeIn CIDADE
        Moveto [UF                     ] CheckPlus TypeIn "~VSDGESTADO.."
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Codigo da Empresa      ] CheckPlus Example "cemp" TypeIn ", ~VSDGEMPRESA2"
        Moveto [Codigo                 ] CheckPlus Example "clie"
        Moveto [Razao Social           ] CheckPlus
        Moveto [Data de Entrada        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Operacao       ] TypeIn "D"
        If IsBlank(VSDGREPRESEN)
           Then Moveto [Codigo do Representante] CheckPlus Example "crep" 
           Else Moveto [Codigo do Representante] CheckPlus Example "crep" TypeIn ", ~VSDGREPRESEN.."
        EndIf
        Moveto [Nome Fantasia Represent] CheckPlus
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Codigo do Item         ] Example "codI"
        Moveto [Quantidade             ] CheckPlus
        Moveto [Preco Total            ] CheckPlus
        Moveto [Valor Desconto Total   ] CheckPlus
        {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("DEVOLUCOES")
EndIf

;****** Devolucoes - Vendas ****************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
           Moveto [Codigo do Representante] Example "crep"
           If VSDGGERENCIA<>""
              Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
              Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
           EndIf
           
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] CheckPlus Example "cemp" TypeIn ", ~VSDGEMPRESA2"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo                 ] CheckPlus
        Moveto [Razao Social           ] CheckPlus
        Moveto [Cidade                 ] CheckPlus TypeIn CIDADE
        If IsBlank(VSDGREPRESEN)
           Then Moveto [Codigo do Representante] CheckPlus Example "crep" 
           Else Moveto [Codigo do Representante] CheckPlus Example "crep" TypeIn ", ~VSDGREPRESEN.."
        EndIf
        Moveto [Nome Fantasia Represent] CheckPlus
        Moveto [UF                     ] CheckPlus TypeIn "~VSDGESTADO.."
        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         ] Example "codI"
        Moveto [Quantidade             ] CheckPlus
        Moveto [Preco Total            ] CheckPlus
        Moveto [Valor Desconto Total   ] CheckPlus
        Moveto [Situacao_Item          ] TypeIn "Not C"
        {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("DEVOLUCOES")
EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* 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                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [Cidade                 ] Example "cid"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nor"
Moveto [UF                     ] Example "uf"
Moveto [Quantidade             ] Example "qtde"
Moveto [Preco Total            ] Example "ptot"
Moveto [Valor Desconto Total   ] Example "vdes"
Moveto [Codigo da Marca        ] Example "CodM" 
Moveto [Descricao da Marca     ] Example "DesM" 
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Razao Social           ] Example "ncli"
Moveto [Cidade                 ] Example "cid"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nor"
Moveto [UF                     ] Example "uf"
Moveto [Codigo da Marca        ] Example "CodM" 
Moveto [Descricao da Marca     ] Example "DesM" 
Switch
  Case Tipo="VENDAS":
       Moveto [Vendas_Quantidade      ] Example "qtde"
       Moveto [Vendas_Preco Total     ] Example "ptot" TypeIn"-" Example "vdes"
  Case Tipo="DEVOLUCOES":
       Moveto [Devolucoes_Quantidade  ] Example "qtde"
       Moveto [Devolucoes_Preco Total ] Example "ptot" TypeIn"-" Example "vdes"
EndSwitch
Do_It!
ClearAll

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

;***** Totaliza Dados ************************************
{Ask} TypeIn Tabela Enter Check
Moveto [Vendas_Quantidade      ] Check TypeIn "Calc Sum as VendasQuantidade"
Moveto [Vendas_Embalagem       ] Check TypeIn "Calc Sum as VendasEmbalagem"
Moveto [Vendas_Preco Total     ] Check TypeIn "Calc Sum as VendasPreco"
Moveto [Devolucoes_Quantidade  ] Check TypeIn "Calc Sum as DevolucoesQuantidade"
Moveto [Devolucoes_Preco Total ] Check TypeIn "Calc Sum as DevolucoesPreco"
Do_It!
ClearAll

Empty Tabela
Add "Answer" Tabela
ClearAll

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Vendas_Embalagem          ] TypeIn "<=0, changeto blank"
Moveto [Unidade Embalagem         ] TypeIn "changeto Blank"
Do_It!
ClearAll

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

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

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

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

;*** Totaliza UF ***

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [UF                     ] Check
Moveto [Vendas_Preco Total     ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll
{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [UF                     ] Example "uf"
Moveto [VendasPreco            ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [UF                     ] Example "uf"
Moveto [Total_Vendas_UF        ] TypeIn "changeto _vp"
Do_It!
ClearAll      


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

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Codigo da Marca        ] Example "cmar"
Moveto [VendasPreco            ] Example "vp"

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Codigo da Marca        ] Example "cmar"
Moveto [Total_Vendas_Marca     ] TypeIn "changeto _vp"
Do_It!
ClearAll

CONT=0
View Colecao
Scan
  CONT=CONT+1
  If CONT=1
     Then MARCA=[Codigo da Marca]
     Else MARCA=MARCA+" or "+[Codigo da Marca]
  EndIf   
EndScan
ClearImage

{Ask} TypeIn Tabela Enter Check
Moveto [Codigo da Marca] TypeIn MARCA
Do_It!

EndProc    ;  (Processa)

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

If Disparo="OPEN"  Then AoCriarShowDialog() 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"] = -75: Exclusao_Colecao()    
     Case Evento["KeyCode"] = -77: Inclusao_Colecao()         
     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_CIDADE"        : Campo="TG_GERENCIA"
            Case Campo="TG_ESTADO"        : Campo="TG_CIDADE"
            Case Campo="TG_OPRELANALSINT" : Campo="TG_ESTADO"
            Case Campo="TG_OPRELCODALF"   : Campo="TG_OPRELANALSINT"
            Case Campo="TG_DTINI"         : Campo="TG_OPRELCODALF"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_TABELA1"       : Campo="TG_DTFIM"
            Case Campo="TG_TABELA2"       : Campo="TG_TABELA1"
            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_CIDADE"
                    
                    Case Campo="TG_CIDADE"       :Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                    Case Campo="TG_ESTADO"       :Campo="TG_OPRELANALSINT"
                    Case Campo="TG_OPRELANALSINT":
                         If VSDGOPRELANALSINT="1"
                            Then Campo="TG_OPRELCODALF"
                            Else VSDGOPRELCODALF   =""
                                 VSDGNOMOPRELCODALF=""
                                 Campo="TG_DTINI"
                         EndIf
                    Case Campo="TG_OPRELCODALF" : Campo="TG_DTINI"
                          If IsBlank(VSDGOPRELCODALF)
                             Then VSDGOPRELCODALF="1"
                          EndIf   
                    Case Campo="TG_DTINI"       : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       : Campo="TG_TABELA1"
                    Case Campo="TG_TABELA1"     : Campo="TG_TABELA2"
                    Case Campo="TG_TABELA2"     : 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

;*******************************************************************************
;* Ordena Registros                                                            *
;*******************************************************************************
Proc Ordena()
Release Vars CABECALHO_1,CABECALHO_2,CABECALHO_3,CABECALHO_4,CABECALHO_5

CONT=0
Coedit Colecao
Scan          
  CONT=CONT+1
  [Comissao Consignacao]=CONT
  Switch
    Case CONT=1 : CABECALHO_1=StrVal(CONT)+" "+[Descricao da Marca]
    Case CONT=2 : CABECALHO_2=StrVal(CONT)+" "+[Descricao da Marca]
    Case CONT=3 : CABECALHO_3=StrVal(CONT)+" "+[Descricao da Marca]
    Case CONT=4 : CABECALHO_4=StrVal(CONT)+" "+[Descricao da Marca]
    Case CONT=5 : CABECALHO_5=StrVal(CONT)+" "+[Descricao da Marca]
  EndSwitch
EndScan
Do_It!
ClearAll

Coedit Tabela2,Colecao,Tabela
Scan
  CopyToArray Registro
  VENDAS=[Vendas_Quantidade]
  MARCA =[Codigo da Marca]
  CODIGO=[Codigo]
  Moveto Colecao
  Moveto [Codigo da Marca]
  Locate MARCA
  If RetVal
     Then COLUNA=[Comissao Consignacao]
     Else Moveto Tabela
          Loop
  EndIf
  
  Moveto Tabela2
  Moveto [Codigo]
  Locate CODIGO
  If Not RetVal
     Then End Down
          CopyFromArray Registro  
  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
  EndSwitch

  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"
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)=5
                                   Then Mensagem(" poss¡vel comparar apenas 5 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],4,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]=StrVal(WHK)+"  "+Alinhm(StrVal([Codigo da Marca]),3)+Spaces(01)+SubStr([Descricao da Marca],1,30)   
        EndScan  
EndIf

ClearAll

EndProc ;Carrega_Array() 

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

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

Carrega_Array()

While True

  ShowDialog "Vendas por Representante/UF/Cidade/Cliente" 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  
   @ 05,12   Height 22 Width 70

    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE"    To VSDGEMPRESA
    Accept @ 01,09 Width 23 "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 23 "A20" Picture "!*!" Tag "TG_NOMREPR" To VSDGNOMREPR

    Label  @ 02,35 "Gerncia " For "TG_GERENCIA"
    Accept @ 03,36 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 03,44 Width 13 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA

    Label  @ 04,00 "Cidade"  For "TG_CIDADE"
    Accept @ 05,01 Width 25 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE

    Label  @ 04,25 "Estado"  For "TG_ESTADO"
    Accept @ 05,26 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
   
    Label  @ 06,00 "Opo do Relat¢rio" For "TG_OPRELANALSINT"
    Accept @ 07,01 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 07,06 Width 26 "A25"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT

    Label  @ 06,35 "Opo de Ordem" For "TG_OPRELCODALF"
    Accept @ 07,36 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 07,41 Width 26 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    Label  @ 08,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 09,00 "de" For "TG_DTINI"
    Accept @ 09,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,17 "at" For "TG_DTFIM"
    Accept @ 09,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
   
    @ 11,00 ?? " Colees Dispon¡veis" 
    @ 11,35 ?? " Seq Colees a Comparar"         
      
    PickDynArray @12,01 Height 5 width 24 ;58
    Columns 1
     Array_Lista1
      Tag "TG_TABELA1"
       To ArrayElement

    PickDynArray @12,36 Height 5 width 27 ;58
    Columns 1
     Array_Lista2
      Tag "TG_TABELA2"
       To ArrayElement

    Pushbutton @ 13,26 width 9 "~>~>"   Tag "TG_ADICIONA"  To BottonValue
    Pushbutton @ 15,26 width 9 "~<~<"   Tag "TG_REMOVE"    To BottonValue

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

  EndDialog

  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") 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")
  Tabela=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\RM_3115"
  Copy "\\Base\\Sistemas\\Vendas\\RM_3115" Tabela

  Tabela2=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\RM_3115a"
  Copy "\\Base\\Sistemas\\Vendas\\RM_3115a" Tabela2
  
  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile

  Processa()
  Ordena()
      
  If IsEmpty(Tabela2)
     Then MENSAGEM("No existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  
  If VSDGOPRELANALSINT="1"
     Then If VSDGOPRELCODALF="1"
             Then Seta_Ordem_Report(Tabela2,"R","Codigo","Codigo","")
             Else Seta_Ordem_Report(Tabela2,"R","Codigo","Razao Social","")
          EndIf
          IMPRIREL(Tabela,"R")
     Else Seta_Ordem_Report(Tabela2,"1","Codigo","Codigo","")
          IMPRIREL(Tabela,"1")
  EndIf        

  Delete Tabela
  Delete Tabela2 
  
EndWhile
ClearAll
Release Vars All
Release Procs All
