;** Rm_2011 ********************************************************************
;*  Emissao dos Titulos a Pagar por Emitente/Saldo                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 29/01/2015 por Luis Gustavo
;Ultima Alteracao: 08/09/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/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog    
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog TG_DESTINAT                
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 01/02/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado processo para escolher mais de um tipo de lan‡amento
;Ultima Alteracao: 04/02/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado proc ListaRegra_Funcao(), onde foi ajustado ListaRegra_TGAtivado
;Ultima Alteracao: 24/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 03/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Showdialog                       
;Ultima Alteracao: 18/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulos relatorios
;Ultima Alteracao: 12/01/2021 por Bruno Carvalho                        
;Motivo Alteracao: Ajustes p/ chamar filtro padrao *RM_0020*

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc RM_0020C_Seleciona(PARAM)
Private PARAM, DATAFINAL
ClearAll

If IsTable("\\Sistemas\\CtaPag\\"+Dir_Trab+"Titulos")
  Then If Not isblank(VSDGATIVIDADE)
          Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Destinat" Enter
               Moveto [Codigo            ] example "cemit"
               Moveto [Codigo Atividade  ] TypeIn "~VSDGATIVIDADE.."
       EndIf    
       {Ask} TypeIn "\\Sistemas\\CtaPag\\"+Dir_Trab+"Titulos" Enter Check
       Moveto [Codigo da Empresa ] TypeIn "~VSDGEMPRESA2.."
       switch
         case not isblank(VSDGATIVIDADE):
           Moveto [Codigo do Emitente] example "cemit" TypeIn ", ~VSDGDESTINAT.."
         otherwise                      :
           Moveto [Codigo do Emitente]                 TypeIn "~VSDGDESTINAT.."
       endswitch
       Moveto [Codigo da Conta   ] TypeIn "~VSDGCONTA.."
       Moveto [Saldo do Documento] TypeIn "> 0.01"
       If PARAM = 2
          Then If Not IsBlank(VSDGDTINI)
                  Then DATAFINAL = VSDGDTINI - 1
                       ;Moveto [Data de Vencimento    ] TypeIn "<=~DATAFINAL"
                       switch
                         case VSDGOPDTCP="1" : Moveto [Data de Vencimento    ] TypeIn "<=~DATAFINAL" 
                         case VSDGOPDTCP="2" : Moveto [Data de Emissao       ] TypeIn "<=~DATAFINAL" 
                         case VSDGOPDTCP="3" : Moveto [Data a Pagar          ] TypeIn "<=~DATAFINAL" 
                         case VSDGOPDTCP="6" : Moveto [Data_Inclusao         ] TypeIn "<=~DATAFINAL" 
                         case VSDGOPDTCP="4" : Moveto [Data de Entrada       ] TypeIn "<=~DATAFINAL" 
                         case VSDGOPDTCP="5" : Moveto [Data Competencia      ] TypeIn "<=~DATAFINAL" 
                       endswitch
               EndIf
          Else switch
                 case VSDGOPDTCP="1" : Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
                 case VSDGOPDTCP="2" : Moveto [Data de Emissao       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
                 case VSDGOPDTCP="3" : Moveto [Data a Pagar          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
                 case VSDGOPDTCP="6" : Moveto [Data_Inclusao         ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
                 case VSDGOPDTCP="4" : Moveto [Data de Entrada       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
                 case VSDGOPDTCP="5" : Moveto [Data Competencia      ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM" 
               endswitch
       EndIf
       If VSDGOPCAO[2]=False and isblank(VSDGTPPAGTO)
          Then Moveto [Tipo do Pagamento ] TypeIn "Not TC"
          else Switch
                 Case ListaRegra_VSDGTPPAGTO_Ativo  : Moveto [Tipo do Pagamento] TypeIn ListaRegra_VSDGTPPAGTO
                 Otherwise                          : Moveto [Tipo do Pagamento] TypeIn "~VSDGTPPAGTO.."
               EndSwitch     
       EndIf
       Switch
         Case ListaRegra_VSDGTPLANC_Ativo  : Moveto [Tipo do Lancamento] TypeIn ListaRegra_VSDGTPLANC
         Otherwise                         : Moveto [Tipo do Lancamento] TypeIn "~VSDGTPLANC.."
       EndSwitch
       If VSDGOPCAO[1]=False
          Then Moveto [Sistema Gerador   ] TypeIn "Not OC"
       EndIf    
       Do_It!
       ClearAll
EndIf
     
If PARAM = 2 And Not IsEmpty("Answer") 
   Then {Ask} TypeIn Tabela Enter
        Moveto [Valor de Juros] TypeIn "Changeto 0.00"
        Do_It!
        ClearAll
   
        If Not IsBlank(VSDGDTINI)
           Then RM_0020C_Processa("Answer")
   
                {Ask} {Answer}
                Moveto [Codigo do Emitente    ] Check
                Moveto [Valor do Documento    ] TypeIn "Calc Sum as Valor do Documento"
                Do_It!
                ClearAll
                
                {Ask} {Answer}
                Moveto [Codigo do Emitente    ] Check Example "a"
                Moveto [Valor do Documento    ] Check
                {Ask} TypeIn Tabela Enter
                Moveto [Codigo do Emitente    ] Example "a"
                Do_It!
                ClearAll
                
                
                View Tabela
                Coedit "Answer"
                Scan
                  COD = [Codigo do Emitente   ]
                  
                  Moveto Tabela
                  Moveto [Codigo do Emitente  ]
                  Locate COD
                  If RetVal
                     Then [Valor de Juros] = [Answer->Valor do Documento]
                  EndIf    
                
                  Moveto "Answer"
                EndScan
                Do_It!
                ClearAll
        EndIf             
EndIf      

Release Vars PARAM, DATAFINAL

EndProc   ; (RM_0020C_Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar os Vencimentos                                         *
;*******************************************************************************
Proc RM_0020C_SelecionaV()

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa     ] Check
Moveto [Codigo do Emitente    ] Check
Moveto [Data de Vencimento    ] TypeIn "Calc Average as Data de Vencimento"

Do_It!
ClearAll

View "Answer"
Coedit Tabela
Scan
  CODEMP = [Codigo da Empresa]
  CODDES = [Codigo do Emitente]
  
  Moveto "Answer"
  Moveto [Codigo da Empresa]
  Locate CODEMP,CODDES
  If RetVal
     Then  Moveto Tabela 
           Moveto [Data Limite Desconto]
           []=[Answer->Data de Vencimento]
           UnLockRecord
  EndIf
EndScan
Do_It!
ClearAll

EndProc   ; (RM_0020C_SelecionaV)

;*******************************************************************************
;* Rotina p/ processar Db Temporaria                                           *
;*******************************************************************************
Proc RM_0020C_Processa(TabelaRef)
Private TabelaRef

;***** Ajusta Dados ************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn TabelaRef Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
EndIf

Coedit TabelaRef
Scan For Not IsBlank([Data de Vencimento])   
   switch                     
     case VSDGOPDTCP="3" :  
       If ([Data a Pagar]<Today()) And (Not IsBlank([Data a Pagar]))
          Then NDA=Today()-[Data a Pagar]
               TXM=[Multa]
          Else NDA=0
               TXM=0
       EndIf
       [Data de Vencimento]=[Data a Pagar]
     otherwise: 
       If ([Data de Vencimento]<Today()) And (Not IsBlank([Data de Vencimento]))
          Then NDA=Today()-[Data de Vencimento]
               TXM=[Multa]
          Else NDA=0
               TXM=0
       EndIf

   Endswitch
   
   If [Data Limite Desconto]>=Today()
      Then VRDESCT=[Valor do Desconto]
      Else VRDESCT=0
   EndIf

   If [Taxa de Juros]>0
      Then TXJ=([Taxa de Juros]/[NDias Taxa de Juros])*NDA
           VRJUROS=Round((([Saldo do Documento]*TXJ)/100)+([Saldo do Documento]*TXM/100),2)
      Else VRJUROS=Round((([Valor de Juros]/[NDias Taxa de Juros])*NDA),2)
           VRJUROS=VRJUROS+Round((([Saldo do Documento]*TXM)/100),2)
   EndIf

   [Valor do Documento]=([Saldo do Documento]+VRJUROS)-VRDESCT
   [Valor do Desconto ]=VRJUROS+(VRDESCT*-1)

EndScan
Do_It!
ClearAll

Release Vars TabelaRef
EndProc     ; (RM_0020C_Processa)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0020C_Principal()

AGUARDE("Aguarde, Processando Dados")
Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer")     Then Delete "Answer" EndIf
  RM_0020C_Seleciona(1)
  If Not IsTable("Answer") Then Loop EndIf
  If IsTable(Tabela)
     Then Add "Answer" Tabela
     Else Rename "Answer" Tabela
  EndIf
EndWhile

If IsEmpty(Tabela)
   Then MENSAGEM("N„o existem registros a processar")
        Delete Tabela
        Return
EndIf
RM_0020C_Processa(Tabela)
RM_0020C_SelecionaV()
RM_0020C_Seleciona(2)

switch
  case VSDGCODMODELO="35B"  : CopyReport "\\Base\\Sistemas\\CtaPag\\Rm_1000a" "3" Tabela "R"
  case VSDGCODMODELO="35A"  : CopyReport "\\Base\\Sistemas\\CtaPag\\Rm_1000a" "1" Tabela "R"
  case VSDGCODMODELO="35C"  : CopyReport "\\Base\\Sistemas\\CtaPag\\Rm_1000a" "R" Tabela "R"  
Endswitch


IMPRIREL(Tabela,"R")

Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0020C_Principal()

Release Vars Tabela
Release Procs RM_0020C_Principal, RM_0020C_Seleciona,RM_0020C_SelecionaV,RM_0020C_Processa