;** Rm_0080 *******************************************************************
;*  Relatorio de Honorarios por Indice                                         *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 02/05/2007 por Anivel Augusto Rodrigues
;Ultima Alteracao: 21/03/2012 por Bruno Carvalho
;Motivo Alteracao: InlusÆo de um novo Modelo "RazÆo Social" (Anal¡tico)
;Ultima Alteracao: 01/11/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos layout relatorios e tabela               
;Ultima Alteracao: 16/11/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Modelo por CODIGO #0092# 
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()
;Ultima Alteracao: 04/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos modelos e ordem               
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 10/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos modelos e ordem               
;Ultima Alteracao: 07/01/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 08                     
;Ultima Alteracao: 08/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 06B                    
;Ultima Alteracao: 03/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 06D                    
;Ultima Alteracao: 05/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos filtros                      
;Ultima Alteracao: 10/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo rel inativos           
;Ultima Alteracao: 14/01/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 01 ranking +agrupamento
;Ultima Alteracao: 17/05/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes satus A,I
;Ultima Alteracao: 16/07/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VSDGSTATUS

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc ORDEM()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa     ] TypeIn "_ce"
Moveto [Nome Fantasia Empresa ] Check

If VSDGGERENCIA<>""
  Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
       Moveto [Codigo do Representante] Example "crep"
       Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
EndIf

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                ] TypeIn "_cc"
Moveto [Nome Fantasia EmitDest] Check
Moveto [Razao Social          ] Check          
Moveto [Cidade                ] Check          
Moveto [UF                    ] Check          
Moveto [Telefone              ] Check          
Moveto [Contato               ] Check          
Moveto [Codigo Atividade      ] Check      
Moveto [Descricao Atividade   ] Check      
Moveto [Data_Cadastro         ] Check      
Moveto [Codigo do Cobrador    ] Check      
Moveto [Descricao do Cobrador ] Check      

Moveto [Cidade                ] TypeIn CIDADE
Moveto [UF                    ] TypeIn "~VSDGESTADO.."
Moveto [Codigo Atividade      ] TypeIn "~VSDGATIVIDADE.."
Moveto [Codigo da Area        ] TypeIn "~VSDGAREA.."
Moveto [Codigo do Cobrador    ] TypeIn "~VSDGCOBRADOR.."
Moveto [Codigo da Rota        ] TypeIn "~VSDGROTA.."

Switch
  Case VSDGGERENCIA<>"" : Moveto [Codigo do Representante] Example "crep" TypeIn ", ~VSDGREPRESEN.."
  Case VSDGREPRESEN<>"" : Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Endswitch  
Moveto [Data_Inativo          ] Check      


{Ask} {Indice}
Moveto [Codigo do Indice      ] TypeIn "_ci"
Moveto [Valor do Indice       ] Check TypeIn "_vi"
{Ask} {CobClie} 
Moveto [Codigo do Cliente     ] Check TypeIn "_cc"
Moveto [Codigo da Empresa     ] Check TypeIn "_ce"
Moveto [Codigo do Indice      ] Check TypeIn "_ci"
Moveto [Formulario            ] Check
Moveto [Observacoes           ] Check
Moveto [Dia do Vencimento     ] Check
Switch
  Case VSDGSTATUS="INATIVO" : TypeIn "Blank"
  Case VSDGSTATUS="ATIVO"   : TypeIn "Not Blank"
EndSwitch     
Moveto [Indice do Salario     ] Check TypeIn "_is, calc (_is*_vi) as Valor Honorario"
Do_It!
ClearAll

MudaEstruturaDaTabelaPara("Answer","\\Base\\Sistemas\\Cobranca\\Rm_0020")

{Ask} {Answer} typein "Fast" 
Moveto [Indice do Salario      ] TypeIn "_ind"
Moveto [Indice do SalarioReport] TypeIn "changeto _ind"
Do_It!
ClearAll

Switch
  Case VSDGCODMODELO="01" and VSDGOPRELCODALFRANK="3" and not IsEmpty("Answer") :
    {Ask} {\\Sistemas\\Cadastro\\GPessoac}
    Moveto [CodigoGrupoPessoa     ] TypeIn "_gp"
    Moveto [DescricaoGrupoPessoa  ] TypeIn "_dgp"
    {Ask} {\\Sistemas\\Cadastro\\GPessoai}
    Moveto [Codigo                ] TypeIn "_cc"
    Moveto [CodigoGrupoPessoa     ] TypeIn "_gp"
    {Ask} {Answer} typein "Fast" 
    Moveto [Codigo do Cliente     ] TypeIn "_cc"
    Moveto [CodigoGrupoPessoa     ] TypeIn "changeto _gp"
    Moveto [DescricaoGrupoPessoa  ] TypeIn "changeto _dgp"
    Do_It!
    ClearAll

    TabelaT=Cria_Temp(PrivDir())
    Rename "Answer" TabelaT

    {Ask} typein TabelaT enter
    Moveto [CodigoGrupoPessoa     ] check  typein "not Blank" 
    Moveto [Indice do Salario     ] TypeIn "calc sum as Indice"
    Do_It!
    ClearAll
    TabelaT2=Adiciona_Indice_Temp("CodigoGrupoPessoa")

    {Ask} typein TabelaT2 enter
    Moveto [CodigoGrupoPessoa     ] typein "_gp"
    Moveto [Indice                ] TypeIn "_ind"
    {Ask} typein TabelaT  enter typein "Fast"
    Moveto [CodigoGrupoPessoa      ] typein "_gp"
    Moveto [Indice do SalarioReport] TypeIn "changeto _ind"
    Do_It!
    ClearAll

    {Ask} typein TabelaT enter check
    Do_It!
    ClearAll
    
    Coedit "Answer"
    scan
      [AgrupamentoReport]=Format("W3.4,EIC",[Indice do SalarioReport])+format("W4",[CodigoGrupoPessoa])+Format("W3.4,EIC",[Indice do Salario])
    endscan
    Do_It!
    ClearAll

    Delete TabelaT
    Delete TabelaT2
    
endSwitch

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc ORDEM2()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa     ] TypeIn "_ce"
Moveto [Nome Fantasia Empresa ] Check
{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                ] TypeIn "_cc"
Moveto [Nome Fantasia EmitDest] Check
Moveto [Razao Social          ] Check          
Moveto [Cidade                ] Check          
Moveto [UF                    ] Check          
Moveto [Telefone              ] Check          
Moveto [Contato               ] Check          
Moveto [Data_Cadastro         ] Check      
Moveto [Codigo Atividade      ] Check      
Moveto [Descricao Atividade   ] Check      
Moveto [Regime_Tributario     ] Check      
{Ask} {CobClie} 
Moveto [Codigo do Cliente     ] Check TypeIn "_cc"
Moveto [Codigo da Empresa     ] Check TypeIn "_ce"
Moveto [Observacoes           ] Check
Moveto [Codigo do Indice      ] Check
Moveto [Indice do Salario     ] Check
Moveto [Dia do Vencimento     ] Check
Switch
  Case VSDGSTATUS="INATIVO" : TypeIn "Blank"
  Case VSDGSTATUS="ATIVO"   : TypeIn "Not Blank"
EndSwitch     
Do_It!
ClearAll

{Ask} {CompClie} check
Moveto [Codigo                ]       TypeIn "_cc"
{Ask} {Indice}
Moveto [Codigo do Indice      ] TypeIn "_ci"
Moveto [Valor do Indice       ] Check TypeIn "_vi"
{Ask} {Answer} check
Moveto [Codigo do Cliente     ]       TypeIn "_cc"
Moveto [Codigo do Indice      ]       TypeIn "_ci"
Moveto [Indice do Salario     ]       TypeIn "_is, calc (_is*_vi) as Valor Honorario"
Do_It!
ClearAll

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog1(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf   
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_GERENCIA"        : Campo="NO"
            Case Campo="TG_REPRESEN"        : Campo="TG_GERENCIA"
            Case Campo="TG_ATIVIDADE"       : Campo="TG_REPRESEN"
            Case Campo="TG_COBRADOR"        : Campo="TG_ATIVIDADE"
            Case Campo="TG_CIDADE"          : Campo="TG_COBRADOR" 
            Case Campo="TG_ESTADO"          : Campo="TG_CIDADE"
            Case Campo="TG_AREA"            : Campo="TG_ESTADO"
            Case Campo="TG_ROTA"            : Campo="TG_AREA"
            Case Campo="TG_STATUS"          : Campo="TG_ROTA"
            Case Campo="TG_OPRELCODALFRANK" : Campo="TG_STATUS"
            Case Campo="TG_CODMODELO"       : Campo="TG_OPRELCODALFRANK"
            Case Campo="YES" Or Campo="NO"  : Campo="TG_GERENCIA"
          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_GERENCIA"        : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN"        : Campo="TG_ATIVIDADE"
                    Case Campo="TG_ATIVIDADE"       : Campo="TG_COBRADOR"
                    Case Campo="TG_COBRADOR"        : 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_AREA"
                    Case Campo="TG_AREA"            : Campo="TG_ROTA"
                    Case Campo="TG_ROTA"            : Campo="TG_STATUS"
                    Case Campo="TG_STATUS"          : Campo="TG_OPRELCODALFRANK"
                    Case Campo="TG_OPRELCODALFRANK" : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"       : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
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  Por %Indice")
ModeloRelatoriosAdd("02  Por UF/Cidade")
ModeloRelatoriosAdd("02B Por UF/Cidade/Sint‚tico")
ModeloRelatoriosAdd("03  Por Data de cadastro")
ModeloRelatoriosAdd("03I Por Data de Inativa‡Æo")
ModeloRelatoriosAdd("05  Por Cobrador")
ModeloRelatoriosAdd("06  Por Atividade")
ModeloRelatoriosAdd("06B Por Atividade/Sintetico")
ModeloRelatoriosAdd("06C Por Atividade/Sintetico II")
ModeloRelatoriosAdd("06D Por Atividade/Modulos")
ModeloRelatoriosAdd("07  Por Dia Vencimento")
ModeloRelatoriosAdd("08  Por C¢digo de Indice")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("04  Simples")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

If Not IsAssigned(SYS_CODIGO_CLIENTE) Then SYS_CODIGO_CLIENTE = "" EndIf
   
VSDGSTATUS          =""
VSDGOPRELCODALFRANK = ""


VSDGCOBRADOR   = ""
VSDGAREA       = ""
VSDGATIVIDADE  = ""
VSDGROTA       = ""
VSDGESTADO    =""
VSDGCIDADE    =""
VSDGREPRESEN  =""
VSDGGERENCIA  =""

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Relat¢rio de honor rios" Proc "SD_Dialog1"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 22 Width 80

    Label  @ 00,00 "Gerˆncia " For "TG_GERENCIA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 01,09 Width 25 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA

    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 "Atividade"  For "TG_ATIVIDADE"
    Accept @ 05,01 Width 07 "A4"  Picture "!*!" Tag "TG_ATIVIDADE" To VSDGATIVIDADE
    Accept @ 05,09 Width 25 "A30"  Picture "#*#" Tag "TG_NOMATIV" To VSDGNOMATIV

    Label  @ 06,00 "Cobrador"  For "TG_COBRADOR"
    Accept @ 07,01 Width 07 "A2"  Picture "[&,#][#*#]" Tag "TG_COBRADOR" To VSDGCOBRADOR
    Accept @ 07,09 Width 25 "A30"  Picture "!*!" Tag "TG_NOMCOBRADOR" To VSDGNOMCOBRADOR

    Label  @ 08,00 "Cidade"  For "TG_CIDADE"
    Accept @ 09,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
    Label  @ 08,27 "Estado"  For "TG_ESTADO"
    Accept @ 09,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO

    Label  @ 10,00 "Area"  For "TG_AREA"
    Accept @ 11,03 Width 05 "A2"  Picture "#*#" Tag "TG_AREA"  To VSDGAREA
    Accept @ 11,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMAREA" To VSDGNOMAREA

    Label  @ 12,00 "Rota"  For "TG_ROTA"
    Accept @ 13,01 Width 07 "A4"  Picture "#*#" Tag "TG_ROTA" To VSDGROTA
    Accept @ 13,09 Width 25 "A20" Picture "!*!" Tag "TG_DESCROTA"  To VSDGDESCROTA


    Label  @ 00,35 "Status do Cliente" For "TG_STATUS"
    Accept @ 01,36 Width 33 "A25"  Picture "ATIVO,INATIVO,TODOS" Tag "TG_STATUS" To VSDGSTATUS

    Label  @ 02,35 "Op‡„o de Ordem" For "TG_OPRELCODALFRANK"
    Accept @ 03,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPRELCODALFRANK" To VSDGOPRELCODALFRANK
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALFRANK" To VSDGNOMOPRELCODALFRANK

    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 ValidarModelosRelatorios() then loop endif         
                       
  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando Relat¢rio")

  Switch
      Case VSDGCODMODELO="06D"    : ORDEM2()
      
      otherwise                   : ORDEM()   

  EndSwitch
  
  If IsEmpty("Answer")
     Then MENSAGEM("N„o Existem Registros a Processar")
          Loop
  EndIf

  Impressao_Orientacao="Paisagem"
  Switch
      Case VSDGCODMODELO="01"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "3" "Answer" "R"
        Switch
          Case VSDGOPRELCODALFRANK="3" : Seta_Ordem_Report("Answer","R","AgrupamentoReport"      ,"AgrupamentoReport"        ,"D")
                                         Seta_Ordem_Report("Answer","R","Indice do SalarioReport","Indice do SalarioReport"  ,"D")
        endSwitch
                                                                    
      Case VSDGCODMODELO="02"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "1" "Answer" "R"
        
      Case VSDGCODMODELO="02B"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020B" "R" "Answer" "R"
        
      Case VSDGCODMODELO="03"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "4" "Answer" "R" 

      Case VSDGCODMODELO="03I"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "12" "Answer" "R" 

      Case VSDGCODMODELO="04"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "5" "Answer" "R"
        
      Case VSDGCODMODELO="05"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "6" "Answer" "R"

      Case VSDGCODMODELO="06"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "7" "Answer" "R"
        
      Case VSDGCODMODELO="06B"    :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "10" "Answer" "R"
        
      Case VSDGCODMODELO="06C"    :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "11" "Answer" "R"
        
      Case VSDGCODMODELO="07"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "8" "Answer" "R"
        
      Case VSDGCODMODELO="08"     :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0020" "9" "Answer" "R"
                                                                    
      Case VSDGCODMODELO="06D"    :    
        CopyReport "\\Base\\Sistemas\\Cobranca\\Rm_0060" "R" "Answer" "R"
                                                                    
  EndSwitch    
  Switch
    Case VSDGOPRELCODALFRANK="2" : Seta_Ordem_Report("Answer","R","Codigo do Cliente","Nome Fantasia EmitDest","")
    Case VSDGOPRELCODALFRANK="3" : Seta_Ordem_Report("Answer","R","Codigo do Cliente","Valor Honorario"       ,"D")
    OtherWise                    : Seta_Ordem_Report("Answer","R","Codigo do Cliente","Codigo do Cliente"     ,"")
  EndSwitch

  IMPRIREL("Answer","R")

  Delete "Answer"
EndWhile
ClearAll
Release Vars All
Release Procs All
