;** Rm_0060 ********************************************************************
;*  Emissao da Apuracao da Comissao usando % da Nota Fiscal                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/95 por Anivel Augusto Rodrigues
;Ultima Alteracao: 28/02/2005 por Davi Pereira Carrano
;Motivo Alteracao: Corre‡Æo das Ask para liberar tabelas quando se usa Fast Insert
;Ultima Alteracao: 03/11/2008 por Nikolas
;Motivo Alteracao: Ajustes Filtro destina‡ao
;Ultima Alteracao: 22/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout
;Ultima Alteracao: 26/06/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Gerencia
;Ultima Alteracao: 12/01/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes estrutura rm_0050 descricao/unidade
;Ultima Alteracao: 29/04/2010 por Cleber Alves            
;Motivo Alteracao: ".." VSDGGERENCIA
;Ultima Alteracao: 06/07/2011 por Karina Andrade            
;Motivo Alteracao: Ajuste "TOTAL EMPRESAS"
;Ultima Alteracao: 19/10/2011 por Bruno Carvalho      
;Motivo Alteracao: Adicionado Condi‡Æo e Forma de Pagamento
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 14/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ Inclusao de Rateio de Comissao de Representante
;Ultima Alteracao: 30/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes e adicionado NDias de Media de Vencimentos
;Ultima Alteracao: 23/05/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo para filtrar por rateio de comissao de representante
;Ultima Alteracao: 16/06/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes no filtro Gerencia
;Ultima Alteracao: 10/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes para Tabela2 
;Ultima Alteracao: 25/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Apontava usu rio utilizando rotina, gerando NET"
;Ultima Alteracao: 13/08/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes no Seleciona()   Sem Rateio nao estava pegando devolu‡ao
;Ultima Alteracao: 07/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo ESPECIFICO para o cliente #0112#
;Ultima Alteracao: 23/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de relat¢rio para quebrar por cidade 
;Ultima Alteracao: 17/08/2015 por Bruno Carvalho
;Motivo Alteracao: As devolu‡äes nÆo entram nos processos para a empresa #0112#
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE                 
;Ultima Alteracao: 27/11/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado modelo 03 e 04  
;Ultima Alteracao: 21/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes unidade fiscal e UF          
;Ultima Alteracao: 24/01/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado checkbox p/ #0171# com a opcao para dividir valo por 2 
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 31/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado modelo 01B
;Ultima Alteracao: 15/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes adicionar valor servico
;Ultima Alteracao: 28/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar comissao 
;Ultima Alteracao: 13/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 01C
;Ultima Alteracao: 12/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desfazer ask com representante nÆo cadastrado
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 07/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 24/12/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ chamar filtro padrao *RM_0062 
;Ultima Alteracao: 18/03/2021 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes liberacao #0353, RM_0062A_GeraComissao
;Ultima Alteracao: 14/04/2021 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes modelo 01D #0353
                                      
;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc RM_0062A_Seleciona()
Private PROCESSO     

;----- H  um processo de Troca Diferenciado ------------------------------------
;----- NÆo controla estoque quando ‚ troca, e a troca deve ter a comissao ------ 
;----- subtraida ---------------------------------------------------------------
If SYS_CODIGO_CLIENTE="0112"  
   Then PROCESSO = 3 
   Else PROCESSO = 2
EndIf   

ClearAll

;****** Vendas/Devolu‡äes *******
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaIC")                      
   Then For wi2 From 1 To PROCESSO 

          For wi From INICIO_RATEIO To FIM_RATEIO 
           {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
            Moveto [Codigo do Representante] Example "crep"
            Moveto [Codigo da Gerencia     ] Check
            If Not IsBlank(VSDGGERENCIA)
               Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
            EndIf
            
            If wi = 2
               Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaIC" Enter
                    Moveto [Codigo da Empresa        ] Example "a"
                    Moveto [Numero do Documento      ] Example "b"
                    Moveto [Serie do Documento       ] Example "c"
                    Moveto [Item do Documento        ] TypeIn "0"
                    Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
                    Moveto [Nome Fantasia Represent  ] Check
                    Moveto [Comissao do Representante] Check
            EndIf

            {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
            Moveto [Codigo da Empresa        ] Check Example "a , ~VSDGEMPRESA.."
            Moveto [Numero do Documento      ] Check Example "b"
            Moveto [Serie do Documento       ] Check Example "c"
            Moveto [Nome Fantasia Empresa    ] Check 
            Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" 
            Moveto [Tipo do Documento        ] Check
            Moveto [Codigo                   ] Check TypeIn "~VSDGDESTINAT.."
            Moveto [Razao Social             ] Check 
            Moveto [Cidade                   ] Check 
            Moveto [UF                       ] Check 
            Moveto [Valor Mercadoria         ] Check 
            Moveto [Valor Desconto           ] Check 
            Moveto [Valor Mercadoria Liquido ] Check 
            Moveto [Valor Servico            ] Check 
            Moveto [Valor Desconto Servico   ] Check 
            Moveto [Valor Servico Liquido    ] Check 
            Moveto [Situacao                 ] TypeIn "Not C"
            Moveto [Nome Fantasia EmitDest   ] Check
            Moveto [Numero da OF             ] Check
            Moveto [Descricao CondPagto      ] Check
            Moveto [Forma de Pagamento       ] Check
            If VSDGNCARREG<>"" 
               Then Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG.."
            EndIf
            
            Switch
              Case wi2 = 1 : Moveto [Descricao da Destinacao  ] Check TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
                             Moveto [Tipo Movimento Estoque   ] TypeIn "S"
              Case wi2 = 2 : Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."
                             Moveto [Tipo Movimento Estoque   ] TypeIn "E"
              Case wi2 = 3 : Moveto [Descricao da Destinacao  ] TypeIn "..TROC.."          
            EndSwitch   

            If wi = 1
               Then Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
                    Moveto [Nome Fantasia Represent  ] Check
                    Moveto [Comissao do Representante] Check
            EndIf
            
            {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
            Moveto [Codigo da Empresa        ] Example "a"
            Moveto [Numero do Documento      ] Example "b"
            Moveto [Serie do Documento       ] Example "c"
            Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
            Moveto [Situacao_Item            ] TypeIn "Not C"
            Do_It!
            ClearAll  
         
           If VSDGMARCA<>""
              Then {Ask} {Answer} Check
                   Moveto [Codigo do Item          ] Example "coditem"
                   {Ask} {\\Sistemas\\Estoque\\Itens}  
                   Moveto [Codigo do Item          ] Example "coditem"
                   Moveto [Codigo da Marca         ] TypeIn "~VSDGMARCA.." 
                   Do_It!
                   ClearAll
           EndIf
            
            If SYS_CODIGO_CLIENTE="0112" And wi2 = 1
               Then Coedit "Answer"
                    While True
                      If Search("TROC",[Descricao da Destinacao])>0
                         Then Del
                              Home
                      EndIf   
                      Skip
                      If Eot() Then QuitLoop EndIf
                    EndWhile
                    Do_It!
                    ClearAll
            EndIf   
                               
            {Ask} {Answer}
            Moveto [Codigo da Empresa        ] Example "a"
            Moveto [Numero do Documento      ] Example "b"
            Moveto [Serie do Documento       ] Example "c"
            Moveto [Codigo do Representante  ] Example "d"
            Moveto [Comissao do Representante] Example "TAXA"
            Moveto [Data de Emissao          ] Example "e"
            Moveto [Nome Fantasia Empresa    ] Example "ne"
            Moveto [Nome Fantasia Represent  ] Example "nr"
            Moveto [Codigo                   ] Example "cc"
            Moveto [Nome Fantasia EmitDest   ] Example "nc"
            Moveto [Razao Social             ] Example "rz"
            If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
               Then Moveto [Cidade                   ] Example "Cida"
                    Moveto [UF                       ] Example "Uf"
            EndIf
            Moveto [Numero da OF             ] Example "no"
            Moveto [Valor Mercadoria         ] typein "_hb" 
            Moveto [Valor Desconto           ] typein "_hd" 
            Moveto [Valor Mercadoria Liquido ] typein "_h" 
            Moveto [Valor Servico            ] typein "_sb" 
            Moveto [Valor Desconto Servico   ] typein "_sd" 
            Moveto [Valor Servico Liquido    ] typein "_s" 
            Moveto [Quantidade               ] Example "g"
            Moveto [Descricao CondPagto      ] Example "despag"
            Moveto [Forma de Pagamento       ] Example "fppag"
            
            {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
            Switch
              Case wi2 = 1 : Moveto [Operacao       ] TypeIn "\"Vendas\""
              Case wi2 = 2 : Moveto [Operacao       ] TypeIn "\"Devolucoes\""
              Case wi2 = 3 : Moveto [Operacao       ] TypeIn "\"Troca\""
            EndSwitch
            Moveto [Codigo da Empresa        ] Example "a"
            Moveto [Numero do Documento      ] Example "b"
            Moveto [Serie do Documento       ] Example "c"
            Moveto [Codigo do Representante  ] Example "d"
            Moveto [Data de Emissao          ] Example "e"
            Moveto [Nome Fantasia Empresa    ] Example "ne"
            Moveto [Nome Fantasia Represent  ] Example "nr"
            Moveto [Codigo                   ] Example "cc"
            Moveto [Nome Fantasia EmitDest   ] Example "nc"
            Moveto [Razao Social             ] Example "rz"
            If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
               Then Moveto [Cidade                   ] Example "Cida"
                    Moveto [UF                       ] Example "Uf"
            EndIf        
            Moveto [Numero da OF             ] Example "no"
            Moveto [Aliquota Comissao        ] Example "TAXA"
            Moveto [Descricao CondPagto      ] Example "despag"
            Moveto [Forma de Pagamento       ] Example "fppag"
            Switch
              Case wi2 = 1 : Moveto [Quantidade     ] Example "g"
                             Moveto [Preco Total    ] typein "_h + _s"
                             Moveto [Comissao       ] TypeIn "((_h + _s)* _TAXA )/100"
                             Moveto [Valor Bruto    ] typein "_hb + _sb"
                             Moveto [Valor Desconto ] typein "_hd + _sd"

              Case wi2 = 2 : Moveto [Quantidade     ] Example "g" TypeIn "*-1"
                             Moveto [Preco Total    ] typein "(_h + _s) * -1"
                             Moveto [Comissao       ] TypeIn "((_h + _s)* _TAXA )/100*-1"

              Case wi2 = 3 : Moveto [Quantidade     ] Example "g" TypeIn "*-1"
                             Moveto [Preco Total    ] typein "(_h + _s) * -1"
                             Moveto [Comissao       ] TypeIn "((_h + _s) * _TAXA )/100*-1"
            EndSwitch        
            Do_It!
            ClearAll
          EndFor

          Switch
            Case wi2 = 1 and VSDGCODMODELO="01D" : RM_0062A_RelacaoDePedidos()

          EndSwitch        

        Endfor       
        
        ;---- Reproveitando CAMPO - Calculo da M‚dia dos Vencimentos -----------

        if VSDGCODMODELO<>"01D"
           then
                If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")    
                   Then {Ask} TypeIn Tabela Enter
                        Moveto [Codigo da Empresa  ] Check
                        Moveto [Serie do Documento ] Check 
                        Moveto [Numero do Documento] Check
                        Moveto [Data de Emissao    ] Check
                        Do_It!
                        ClearAll
                        
                        If Not IsEmpty("Answer")
                           Then {Ask} TypeIn Tabela Enter
                                Moveto [Aliquota Comissao       ] TypeIn "Changeto Blank"
                                Do_It!
                                ClearAll     
                      
                                NR=NRecords("Answer") 
                        
                                Tabela2 = Cria_Temp(PrivDir())
                                Copy "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV" Tabela2
                        
                                View Tabela2
                                View Tabela
                                CoEdit "Answer"
                                Scan
                                  Barra(NR, RecNo())
                                  Aguarde("Aguarde, Calculando Media "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)                
                                
                                  COD_EMP = [Codigo da Empresa  ]
                                  COD_DOC = [Serie do Documento ]
                                  NUM_DOC = [Numero do Documento]
                                  DATA    = [Data de Emissao    ]
                                  
                                  DIAS = 0
                                  Moveto Tabela2
                                  Moveto [Codigo da Empresa]
                                  Locate COD_EMP,NUM_DOC,COD_DOC
                                  If RetVal
                                     Then DynArray NDIAS[]
                                          CONT_NDIAS = 0
                                          While [Codigo da Empresa  ] = COD_EMP And
                                                [Serie do Documento ] = COD_DOC And
                                                [Numero do Documento] = NUM_DOC
                                          
                                                CONT_NDIAS = CONT_NDIAS + 1
                                            
                                                If [Data] < DATA
                                                   Then NDIAS[CONT_NDIAS] = 0 
                                                   Else NDIAS[CONT_NDIAS] = [Data] - DATA 
                                                EndIf   
                  
                                                Skip
                                                If Eot() Then QuitLoop EndIf
                                          EndWhile
                
                                          For i From 1 To CONT_NDIAS
                                            DIAS = DIAS + NDIAS[i]
                                          EndFor
                                          If DIAS > 0 
                                             Then DIAS = Int(DIAS / CONT_NDIAS)
                                          EndIf    
                                  EndIf     
                                  If DIAS > 0
                                     Then Moveto Tabela
                                          Moveto [Codigo da Empresa]
                                          Locate COD_EMP
                                          If Retval
                                             Then While COD_EMP = [Codigo da Empresa]
                                                    If [Serie do Documento ] = COD_DOC
                                                       Then If [Numero do Documento] = NUM_DOC
                                                               Then [Aliquota Comissao] = DIAS
                                                                    ;QuitLoop
                                                            EndIf
                                                    EndIf
                                                    Skip
                                                    If Eot() Then QuitLoop EndIf
                                                    Locate Next COD_EMP
                                                    If Not RetVal
                                                       Then QuitLoop 
                                                    EndIf
                                                  EndWhile
                                          EndIf    
                                  EndIf        
                                  Moveto "Answer"   
                                EndScan
                                Do_It!
                                ClearAll
                                
                                If IsTable(Tabela2)
                                   Then Delete Tabela2
                                EndIf   
                                Release Vars DIAS,i,NLANCTO,DATA,NDIAS,CONT_NDIAS 
                        EndIf   
                EndIf        
                ;-----------------------------------------------------------------------       
        endif
EndIf

;****** Devolucoes *******
If PROCESSO <> 3
   Then 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\\Estoque\\"+Dir_Trab+"NotaEc" Enter
                Moveto [Numero do Lancamento     ] Example "x"
                Moveto [Codigo da Empresa        ] CheckPlus TypeIn "~VSDGEMPRESA2.."
                Moveto [Numero do Documento      ] CheckPlus
                Moveto [Serie do Documento       ] CheckPlus
                Moveto [Codigo do Representante  ] CheckPlus Example "crep" TypeIn ", ~VSDGREPRESEN.."
                Moveto [Comissao do Representante] CheckPlus
                Moveto [Data de Entrada          ] CheckPlus TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                Moveto [Tipo de Operacao         ] TypeIn "D"
                Moveto [Nome Fantasia Empresa    ] CheckPlus
                Moveto [Nome Fantasia Represent  ] CheckPlus
                Moveto [Codigo                   ] CheckPlus TypeIn "~VSDGDESTINAT.."
                Moveto [Nome Fantasia EmitDest   ] CheckPlus
                Moveto [Razao Social             ] CheckPlus
                Moveto [Cidade                   ] CheckPlus
                Moveto [UF                       ] CheckPlus
                {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
                Moveto [Numero do Lancamento     ] Example "x"
                Moveto [Codigo do Item           ] CheckPlus
                Moveto [Descricao do Item        ] CheckPlus
                Moveto [Quantidade               ] CheckPlus
                Moveto [Unidade Fiscal           ] CheckPlus
                Moveto [Preco Total              ] CheckPlus
                Moveto [Valor Desconto Total     ] CheckPlus
                Do_It!
                ClearAll
                
                If VSDGMARCA<>""
                   Then {Ask} {Answer} Check
                        Moveto [Codigo do Item          ] Example "coditem"
                        {Ask} {\\Sistemas\\Estoque\\Itens}  
                        Moveto [Codigo do Item          ] Example "coditem"
                        Moveto [Codigo da Marca         ] TypeIn "~VSDGMARCA.." 
                        Do_It!
                        ClearAll
                EndIf
        
                {Ask} {Answer}
                Moveto [Codigo da Empresa        ] Example "a"
                Moveto [Numero do Documento      ] Example "b"
                Moveto [Serie do Documento       ] Example "c"
                Moveto [Codigo do Representante  ] Example "d"
                Moveto [Comissao do Representante] Example "TAXA"
                Moveto [Data de Entrada          ] Example "e"
                Moveto [Nome Fantasia Empresa    ] Example "ne"
                Moveto [Nome Fantasia Represent  ] Example "nr"
                Moveto [Codigo                   ] Example "cc"
                Moveto [Nome Fantasia EmitDest   ] Example "nc"
                Moveto [Razao Social             ] Example "rz"
                If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
                   Then Moveto [Cidade                   ] Example "Cida"
                        Moveto [UF                       ] Example "Uf"
                EndIf
                Moveto [Codigo do Item           ] Example "f"
                Moveto [Descricao do Item        ] Example "descr"
                Moveto [Quantidade               ] Example "g"
                Moveto [Unidade Fiscal           ] Example "un"
                Moveto [Preco Total              ] Example "h"
                Moveto [Valor Desconto Total     ] Example "i"
        
                {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
                Moveto [Operacao               ] TypeIn "\"Devolucoes\""
                Moveto [Codigo da Empresa      ] Example "a"
                Moveto [Numero do Documento    ] Example "b"
                Moveto [Serie do Documento     ] Example "c"
                Moveto [Codigo do Representante] Example "d"
                Moveto [Data de Emissao        ] Example "e"
                Moveto [Nome Fantasia Empresa  ] Example "ne"
                Moveto [Nome Fantasia Represent] Example "nr"
                Moveto [Codigo                 ] Example "cc"
                Moveto [Nome Fantasia EmitDest ] Example "nc"
                Moveto [Razao Social           ] Example "rz"
                If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
                   Then Moveto [Cidade                   ] Example "Cida"
                        Moveto [UF                       ] Example "Uf"
                EndIf
                Moveto [Codigo do Item         ] Example "f"
                Moveto [Descricao do Item      ] Example "descr"
                Moveto [Quantidade             ] Example "g" TypeIn "*-1"
                Moveto [Unidade Fiscal         ] Example "un"
                Moveto [Preco Total            ] TypeIn "(" Example "h" TypeIn "-" Example "i" TypeIn ")*-1"
                Moveto [Comissao               ] TypeIn "((("Example "h" TypeIn "-" Example "i" TypeIn ")*" Example "TAXA" TypeIn ")/100)*-1"
                Moveto [Aliquota Comissao      ] Example "TAXA"
                Do_It!
                ClearAll   
        EndIf
EndIf

EndProc   ; (RM_0062A_Seleciona)

;*******************************************************************************
;* Rotina para processar Db temporaria                                 !       *
;*******************************************************************************
Proc RM_0062A_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
EndIf

;****** Taxa Administrativa sobre Devolucoes *******
If Not VSDGTAXAD>0
   Then Return
EndIf

{Ask} TypeIn Tabela Enter
Moveto [Operacao               ] Check TypeIn "Devolucoes"
Moveto [Codigo da Empresa      ] Check
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "a"
Moveto [Codigo do Representante] Example "d"
Moveto [Nome Fantasia Empresa  ] Example "ne"
Moveto [Nome Fantasia Represent] Example "nr"
Moveto [Preco Total            ] Example "h"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Operacao               ] TypeIn "\"Administr.\""
Moveto [Codigo da Empresa      ] Example "a"
Moveto [Codigo do Representante] Example "d"
Moveto [Nome Fantasia Empresa  ] Example "ne"
Moveto [Nome Fantasia Represent] Example "nr"
Moveto [Nome Fantasia EmitDest ] TypeIn "\"SOBRE DEVOLUCOES\""
Moveto [Razao Social           ] TypeIn "\"SOBRE DEVOLUCOES\""
Moveto [Comissao               ] TypeIn "("Example "h" TypeIn "*~VSDGTAXAD)/100"
Moveto [Aliquota Comissao      ] TypeIn "~VSDGTAXAD"
Do_It!
ClearAll

EndProc   ;  (RM_0062A_Processa)

;*******************************************************************************
;* Pedidos em Aberto                                                           *
;*******************************************************************************          
Proc RM_0062A_Pedidos_EmAberto()

If Not IsEmpty(Tabela) 
   Then {Ask} TypeIn Tabela Enter
        Moveto [Grupo] TypeIn "Changeto 1"
        Do_It!  
        ClearAll
EndIf

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"PedidoC")
   Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        Moveto [Codigo da Gerencia     ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then Moveto [Codigo da Gerencia] TypeIn "~VSDGGERENCIA"
        EndIf        
        {Ask} {\\Sistemas\\Vendas\\PedidoC}
        Moveto [Numero do Pedido         ] Check
        Moveto [Codigo da Empresa        ] Check "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa    ] Check 
        Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" 
        Moveto [Codigo                   ] Check
        Moveto [Razao Social             ] Check 
        Moveto [Cidade                   ] Check 
        Moveto [UF                       ] Check 
        Moveto [Valor Mercadoria Liquido ] Check 
        Moveto [Situacao do Pedido       ] TypeIn "ABERTO"
        Moveto [Nome Fantasia EmitDest   ] Check
        Moveto [Descricao CondPagto      ] Check
        Moveto [Forma de Pagamento       ] Check
        Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent  ] Check
        Moveto [Comissao do Representante] Check
        Do_It!
        ClearAll
    
        {Ask} {Answer}
        Moveto [Numero do Pedido         ] Example "ped"
        Moveto [Codigo da Empresa        ] Example "a"
        Moveto [Nome Fantasia Empresa    ] Example "ne"
        Moveto [Codigo do Representante  ] Example "d"
        Moveto [Nome Fantasia Represent  ] Example "nr"
        Moveto [Comissao do Representante] Example "TAXA"
        Moveto [Data de Emissao          ] Example "e"
        Moveto [Codigo                   ] Example "cc"
        Moveto [Nome Fantasia EmitDest   ] Example "nc"
        Moveto [Razao Social             ] Example "rz"
        Moveto [Cidade                   ] Example "Cida"
        Moveto [UF                       ] Example "Uf"
        Moveto [Valor Mercadoria Liquido ] Example "h"
        Moveto [Descricao CondPagto      ] Example "despag"
        Moveto [Forma de Pagamento       ] Example "fppag"
        
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Operacao                 ] TypeIn "\"PED\""
        Moveto [Grupo                    ] TypeIn "2"                 
        Moveto [Numero do Pedido         ] Example "ped"
        Moveto [Codigo da Empresa        ] Example "a"
        Moveto [Codigo do Representante  ] Example "d"
        Moveto [Data de Emissao          ] Example "e"
        Moveto [Nome Fantasia Empresa    ] Example "ne"
        Moveto [Nome Fantasia Represent  ] Example "nr"
        Moveto [Codigo                   ] Example "cc"
        Moveto [Nome Fantasia EmitDest   ] Example "nc"
        Moveto [Razao Social             ] Example "rz"
        Moveto [Cidade                   ] Example "Cida"
        Moveto [UF                       ] Example "Uf"
        Moveto [Aliquota Comissao        ] Example "TAXA"
        Moveto [Descricao CondPagto      ] Example "despag"
        Moveto [Forma de Pagamento       ] Example "fppag"
        Moveto [Preco Total              ] Example "h"
        Moveto [Comissao                 ] TypeIn "(_h * _TAXA )/100"
        Do_It!
        ClearAll        
EndIf
  
EndProc ;RM_0062A_Pedidos_EmAberto()          
          
;*******************************************************************************
;* Rotina para Quebrar por Cidade                                              *
;*******************************************************************************
Proc RM_0062A_PorCidade()

{Ask} TypeIn Tabela Enter
Moveto [Descricao da Destinacao] TypeIn "Changeto Blank" Down
Moveto [Condicao de Pagamento  ] TypeIn "Changeto Blank"
Do_it!
ClearAll

COD_CLI = "***"

Sort Tabela On "Codigo"
ClearAll

View "\\Sistemas\\Cadastro\\Destinat"
Coedit Tabela
Scan
  Barra(NRecords(Tabela), RecNo())
  Aguarde("Aguarde, Verificando Cidade/UF "+BARRA_STRING)
  If COD_CLI <> [Codigo]
     Then COD_CLI = [Codigo]
          GetRecord "\\Sistemas\\Cadastro\\Destinat" COD_CLI To REG_CLI
          If RetVal
             Then CID_CLI = REG_CLI["Cidade"]
                  EST_CLI = REG_CLI["Uf"]
          EndIf   
  EndIf   
  [Descricao da Destinacao] = CID_CLI
  [Condicao de Pagamento  ] = EST_CLI
EndScan
Do_It!
ClearAll

Sort Tabela On "Descricao da Destinacao","Condicao de Pagamento","Data de Emissao"
ClearAll

EndProc ;RM_0062A_PorCidade()


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc RM_0062A_RelacaoDePedidos()
private reg_tabela, s

{Ask} {Answer} 
Moveto [Codigo da Empresa        ] check
Moveto [Numero do Documento      ] check
Moveto [Serie do Documento       ] check
Do_It!
ClearAll
TabelaRP=adiciona_indice_temp("Codigo da Empresa,Numero do Documento,Serie do Documento")

{Ask} TypeIn TabelaRP Enter 
Moveto [Codigo da Empresa        ] check Example "a"
Moveto [Numero do Documento      ] check Example "b"
Moveto [Serie do Documento       ] check Example "c"
{Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
Moveto [Codigo da Empresa        ] Example "a"
Moveto [Numero do Documento      ] Example "b"
Moveto [Serie do Documento       ] Example "c"
Moveto [Numero Pedido_Orcamento  ] check typein "not Blank"
Moveto [Situacao_Item            ] TypeIn "Not C"
Do_It!
ClearAll  

Delete TabelaRP
TabelaRP=adiciona_indice_temp("Codigo da Empresa,Numero do Documento,Serie do Documento,Numero Pedido_Orcamento")


View TabelaRP
Edit Tabela
scan
  copytoarray reg_tabela 

  moveto TabelaRP
  moveto [Codigo da Empresa]
  locate reg_tabela["Codigo da Empresa"],reg_tabela["Numero do Documento"],reg_tabela["Serie do Documento"]
  if retval
     then 
          s="" 
          while [Codigo da Empresa  ]=reg_tabela["Codigo da Empresa"  ] and
                [Numero do Documento]=reg_tabela["Numero do Documento"] and
                [Serie do Documento ]=reg_tabela["Serie do Documento" ]
  
            if s<>""
               then s=s+","
            endif   
            s=s+[Numero Pedido_Orcamento]
            
            skip
            if eot() then quitloop endif
          endwhile  
     
          moveto Tabela   
          [RelacaoDePedidos]=s
          
  endif
  
  moveto Tabela   

endscan
Do_It!
ClearAll  

Delete TabelaRP
endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc RM_0062A_Ajusta_Excel()

If IsEmpty(Tabela)
   Then Return
EndIf   

TABELA_TEMP=Cria_Tabela("","Empresa(A25),"+
                           "Representante(A25),"+
                           "Operacao(A20),"+
                           "Documento(A20),"+
                           "Pedido(A6),"+
                           "Cliente(A25),"+
                           "UF_Cidade(A23),"+
                           "Data(D),"+
                           "Valor($),"+        
                           "Porc(N),"+
                           "Comissao($),"+
                           "Grupo(N)")
                           
ClearAll

View TABELA_TEMP
CoEdit Tabela
Scan
 CopyToArray REGISTRO
 
 Moveto TABELA_TEMP
 End Down
 [Empresa      ] = Ltrim(Format("W5",REGISTRO["Codigo da Empresa"]))+
                   Ltrim(REGISTRO["Nome Fantasia Empresa"])
 [Representante] = Ltrim(Format("W5",REGISTRO["Codigo do Representante"]))+
                   Ltrim(REGISTRO["Nome Fantasia Represent"])
 If SubStr(REGISTRO["Operacao"],1,3)="PED"
    Then [Operacao     ] = "Pedidos em Aberto"
    Else [Operacao     ] = REGISTRO["Operacao"]
 EndIf
 [Documento    ] = Ltrim(Format("W11",REGISTRO["Numero do Documento"]))
 If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
    Then [Pedido       ] = Ltrim(REGISTRO["Numero do Pedido"])
         [UF_Cidade    ] = Ltrim(REGISTRO["UF"])+"-"+Ltrim(REGISTRO["Cidade"])
 EndIf       
 [Cliente      ] = Ltrim(Format("W5",REGISTRO["Codigo"]))+
                   Ltrim(REGISTRO["Razao Social"])
 [Data         ] = REGISTRO["Data de Emissao"]
 [Valor        ] = REGISTRO["Preco Total"]
 [Porc         ] = REGISTRO["Comissao"]*100/REGISTRO["Preco Total"]
 [Comissao     ] = REGISTRO["Comissao"]
 Switch
    Case [Operacao] = "Vendas"      : [Grupo] = 1
    Case [Operacao] = "Devolucoes"  : [Grupo] = 2
    Case [Operacao] = "Troca"       : [Grupo] = 3
    OtherWise                       : [Grupo] = 4
  EndSwitch
 Release Vars REGISTRO
 Moveto Tabela
EndScan
Do_it!
ClearAll

Rename TABELA_TEMP Tabela
Sort Tabela On "Empresa","Representante","Grupo","Operacao","Data","UF_Cidade"
ClearAll

EndProc ;RM_0062A_Ajusta_Excel()

;*******************************************************************************
;* Rotina para Dividir Valor por 2                                             *
;*******************************************************************************
Proc RM_0062A_Divide_Por2()

{Ask} TypeIn Tabela Enter
Moveto [Preco Total] TypeIn "_PrTot, ChangeTo _PrTot/2"
Moveto [Comissao   ] TypeIn "_Comis, ChangeTo _Comis/2"
Do_it!
ClearAll

EndProc ;RM_0062A_Divide_Por2()

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc RM_0062A_GeraComissao()

ClearAll

{Ask} typein Tabela Enter
moveto [Codigo da Empresa      ] check
moveto [Codigo do Representante] check
moveto [Operacao               ]       typein "\"Vendas\" or \"Devolucoes\""
moveto [Comissao               ]       typein "Calc Sum As ValorComissao"
Do_IT!
PC_0000_TabelaComissaoBruta=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Representante")
ClearAll

{Ask} typein Tabela Enter
moveto [Codigo da Empresa      ] check
moveto [Codigo do Representante] check
moveto [Comissao               ]       typein "Calc Sum As ValorComissao"
Do_IT!
PC_0000_TabelaComissaoLiquida=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Representante")
ClearAll

;-------------

PC_0000_AquivoDeParametrosGeraComissao="PC_0062A" ; informar o Rm_XXXX como PC_XXXX nÆo esquecer 
Play "PC_0000"

;-------------

EndProc ;RM_0062A_GeraComissao     

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AGUARDE("Aguarde, gerando o relat¢rio")
While True
  ROTINA_SCRIPT = "RM_0062A"
  AGUARDE("Aguarde, Gerando o Relat¢rio")
  
  Tabela=Cria_Temp(PrivDir())
  If VSDGCODMODELO="01" Or VSDGCODMODELO="02"
     Then Empty "\\Base\\Sistemas\\Vendas\\Rm_0050"
          Copy "\\Base\\Sistemas\\Vendas\\Rm_0050" Tabela
     Else Empty "\\Base\\Sistemas\\Vendas\\Rm_0050b"
          Copy "\\Base\\Sistemas\\Vendas\\Rm_0050b" Tabela
  EndIf   
  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    RM_0062A_Seleciona()
  EndWhile
   
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          QuitLoop
  EndIf
  RM_0062A_Processa()
  
  Switch
    Case VSDGCODMODELO="02"                        : RM_0062A_PorCidade()
    Case VSDGCODMODELO="03"  Or VSDGCODMODELO="04" : RM_0062A_Pedidos_EmAberto()
  EndSwitch    
     
  Switch
    Case VSDGCODMODELO="01" : REL = "R"  ; rm_0050 
    Case VSDGCODMODELO="01B": REL = "3"  ; rm_0050b
    Case VSDGCODMODELO="01C": REL = "4"  ; rm_0050b
    Case VSDGCODMODELO="01D": REL = "5"  ; rm_0050b

    Case VSDGCODMODELO="02" : REL = "12" ; rm_0050
    Case VSDGCODMODELO="03" : REL = "1"  ; rm_0050b
    Case VSDGCODMODELO="04" : REL = "2"  ; rm_0050b      
  EndSwitch
  
  If DIVIDEPOR2[1] 
      Then RM_0062A_Divide_Por2()
  EndIf
       
  if CheckTG_COMISSAO[1]
     then RM_0062A_GeraComissao()
     else If IMPRIME_ARQUIVO
             Then RM_0062A_Ajusta_Excel() 
                  REL = "R"
          EndIf
          IMPRIREL(Tabela,REL)
  endif

  Delete Tabela
  QuitLoop
EndWhile
ClearAll
Release Vars RM_0062A_Seleciona,RM_0062A_Processa,RM_0062A_GeraComissao,
             RM_0062A_PorCidade,RM_0062A_Pedidos_EmAberto,RM_0062A_Divide_Por2,
             RM_0062A_Ajusta_Excel,RM_0062A_RelacaoDePedidos           
