Você está na página 1de 5

'Taxa de Administrao - Linear 252 (PL Abertura D0) - Excluindo fundos investidos 'Data: 14/06/2010 Dim TaxaAdministracao As Currency

Dim TaxaSistemaDeAtivos As Currency Function RetornaPeriodoAnterior(Data As Double, Decremento) As Double Dim Dia As Word Dim Mes As Word Dim Ano As Word Dim DataRetorno As Double DecodeDate(Data, Ano, Mes, Dia) If ((Mes - Decremento) <= 0) Then Mes = 12 + (Mes - (Decremento Mod 12)) Ano = Ano - (Decremento Mod 12) Else Mes = (Mes - Decremento) End If DataRetorno = EncodeDate(Ano, Mes, 1) Return DataRetorno End Function Function RetornaDiaUtilAnterior(Data As Double) As Double Data = Data - 1 While Not VB_DIAUTIL(Data) Data = Data - 1 WEnd Return Data End Function Sub CalculaTaxaAdm() 'Falta retirar as variveis desnecessrias!!!!!!!! Dim PL As Currency Dim Aplicacoes As Currency Dim Resgates As Currency Dim TaxaAdm As Currency Dim TaxaDiaria As Currency Dim TaxaAcumulada As Currency Dim TaxaAdmFI As Currency Dim PosicaoCotas As Currency Dim ValorTaxaCotasInvestidas As Currency Dim TaxaCobradaCota As Currency Dim TaxaMinCalcDiaria As Currency Dim TaxaMaxCalcDiaria As Currency Dim TaxaMinCalcAcum As Currency Dim TaxaMaxCalcAcum As Currency Dim TaxaPerformance As Currency Dim TEMPTxAdmCaixa As Currency Dim Dim Dim Dim Dim IdFundoFI Cotas StatusEncargoDiaria StatusEncargoAcum TipoPagamentoSAC As As As As As String Variant String String Integer

Dim I As Integer Dim Decremento As Integer Dim DataEnquadramento As Double

Dim DataAnterior

As Double

Dim SeparadorMilhar As String 'Identifica qual o separador de milhar da mquina para realizar o 'arredondamento correto com a funo FormatNumber pois a mesma coloca separadores de milhares que 'devemos retirar na hora de converter novamente para nmero! Try StrToFloat("1000,99") SeparadorMilhar = "." Catch SeparadorMilhar = "," End Try Decremento DataEnquadramento TipoPagamentoSAC TEMPTxAdmCaixa TaxaAdministracao TaxaDiaria TaxaMinCalcDiaria TaxaMaxCalcDiaria TaxaMinCalcAcum TaxaMaxCalcAcum TaxaPerformance Resgates Aplicacoes = = = = = = = = = = = = = VB_DECREMENTO_D VB_DE VB_INFADIC(50, DataEnquadramento) 0 0 0 0 0 0 0 0 0 0

' If (Decremento > 0) Then ' DataEnquadramento = RetornaPeriodoAnterior(DataEnquadramento, Decremento) ' VB_DE = DataEnquadramento ' End If 'Verificando se o processamento esta sendo feito para um dia util If (VB_DIAUTIL(DataEnquadramento)) Then DataAnterior = RetornaDiaUtilAnterior(DataEnquadramento) If (DataEnquadramento = VB_DI) Then TaxaAcumulada = 0 Else TaxaAcumulada = VB_MEMCALC_TXADM(DataAnterior, "TaxaCalcAcumulada") End If TEMPTxAdmCaixa = VB_VALOR_CX("CX041", DataEnquadramento)+_ VB_VALOR_CX("CX050", DataEnquadramento)+_ VB_VALOR_CX("CX041LZ", DataEnquadramento)+_ VB_VALOR_CX("CX050LZ", DataEnquadramento)+_ VB_VALOR_CX("CX676", DataEnquadramento)+_ VB_VALOR_CX("CX676LZ", DataEnquadramento)+_ VB_VALOR_CX("CX696", DataEnquadramento)+_ VB_VALOR_CX("CX696LZ", DataEnquadramento)+_ VB_VALOR_CX("CX698", DataEnquadramento)+_ VB_VALOR_CX("CX698LZ", DataEnquadramento)+_ VB_VALOR_CX("CX699", DataEnquadramento)+_ VB_VALOR_CX("CX699LZ", DataEnquadramento) 'Se o tipo do pagamento for mensal

If (TipoPagamentoSAC = 0) Then 'Verifica se pagou taxa de adm no dia If (TEMPTxAdmCaixa <> 0) Then 'se pagou, taxa diria a taxa paga - taxa provisionada em D-1 TaxaSistemaDeAtivos = ABS(TEMPTxAdmCaixa) + ABS(VB_TITID("CX041", DataEn quadramento)+_ VB_TITID("CX050", DataEnquadramento)+_ VB_TITID("CX041LZ", DataEnquadramento)+_ VB_TITID("CX050LZ", DataEnquadramento)+_ VB_TITID("CX676", DataEnquadramento)+_ VB_TITID("CX676LZ", DataEnquadramento)+_ VB_TITID("CX696", DataEnquadramento)+_ VB_TITID("CX696LZ", DataEnquadramento)+_ VB_TITID("CX698", DataEnquadramento)+_ VB_TITID("CX698LZ", DataEnquadramento)+_ VB_TITID("CX699", DataEnquadramento)+_ VB_TITID("CX699LZ", DataEnquadramento)) TaxaSistemaDeAtivos = ABS(TaxaSistemaDeAtivos) - ABS(VB_TITID("CX041", D ataAnterior)+_ VB_TITID("CX050", DataAnterior)+_ VB_TITID("CX041LZ", DataAnterior)+_ VB_TITID("CX050LZ", DataAnterior)+_ VB_TITID("CX676", DataAnterior)+_ VB_TITID("CX676LZ", DataAnterior)+_ VB_TITID("CX696", DataAnterior)+_ VB_TITID("CX696LZ", DataAnterior)+_ VB_TITID("CX698", DataAnterior)+_ VB_TITID("CX698LZ", DataAnterior)+_ VB_TITID("CX699", DataAnterior)+_ VB_TITID("CX699LZ", DataAnterior)) Else 'Busca taxa de Administrao provisionada no SAC em D0 TaxaSistemaDeAtivos = VB_TITID("CX041", DataEnquadramento)+_ VB_TITID("CX050", DataEnquadramento)+_ VB_TITID("CX041LZ", DataEnquadramento)+_ VB_TITID("CX050LZ", DataEnquadramento)+_ VB_TITID("CX676", DataEnquadramento)+_ VB_TITID("CX676LZ", DataEnquadramento)+_ VB_TITID("CX696", DataEnquadramento)+_ VB_TITID("CX696LZ", DataEnquadramento)+_ VB_TITID("CX698", DataEnquadramento)+_ VB_TITID("CX698LZ", DataEnquadramento)+_ VB_TITID("CX699", DataEnquadramento)+_ VB_TITID("CX699LZ", DataEnquadramento) 'Subtrai da taxa provisionada em D0 a taxa provisionada em D-1 TaxaSistemaDeAtivos = ABS(TaxaSistemaDeAtivos) - ABS(VB_TITID("CX041", D ataAnterior)+_ VB_TITID("CX050", DataAnterior)+_ VB_TITID("CX041LZ", DataAnterior)+_ VB_TITID("CX050LZ", DataAnterior)+_ VB_TITID("CX676", DataAnterior)+_ VB_TITID("CX676LZ", DataAnterior)+_ VB_TITID("CX696", DataAnterior)+_ VB_TITID("CX696LZ", DataAnterior)+_ VB_TITID("CX698", DataAnterior)+_

VB_TITID("CX698LZ", DataAnterior)+_ VB_TITID("CX699", DataAnterior)+_ VB_TITID("CX699LZ", DataAnterior)) End If 'Se for taxa de pagamento dirio Else 'Busca taxa de Administrao diria paga no Caixa do SAC TaxaSistemaDeAtivos = ABS(TEMPTxAdmCaixa) 'CALCULO DA TAXA PARTIR DO PL DO FUNDO End If 'Busca taxa de Performance provisionada no SAC TaxaPerformance = VB_TITID("CX040", DataEnquadramento)+_ VB_TITID("CX042", DataEnquadramento)+_ VB_TITID("CX040LZ", DataEnquadramento)+_ VB_TITID("CX042LZ", DataEnquadramento) 'Busca taxa de Performance paga no dia no SAC TaxaPerformance = ABS(TaxaPerformance) + ABS(VB_VALOR_CX("CX040", DataAn terior)+_ VB_VALOR_CX("CX042", DataAnterior)+_ VB_VALOR_CX("CX040LZ", DataAnterior)+_ VB_VALOR_CX("CX042LZ", DataAnterior)) Resgates = VB_RESGATES(DataEnquadramento) Aplicacoes = VB_APLICACOES(DataEnquadramento) TaxaAdm = VB_TX(DataEnquadramento) PL = VB_PL(DataEnquadramento) 'Recalculando o PL PL = ABS(PL) + ABS(Resgates) - ABS(Aplicacoes) + ABS(TaxaSistemaDeAtivos) + ABS(TaxaPerformance) ValorTaxaCotasInvestidas = 0 TaxaCobradaCota = 0 Cotas = VB_COTAS(DataEnquadramento) For I = LBound(Cotas) To UBound(Cotas) IdFundoFI = Cotas[I, 2] PosicaoCotas = Cotas[I, 1] If (IdFundoFI <> "") Then If (VB_TPAPUR = "E") Then TaxaAdmFI = StrToFloat(FloatToStr(VB_TX(DataEnquadramento, IdFundoFI))) If (TaxaAdmFI > 0) Then TaxaCobradaCota = (PosicaoCotas)*(TaxaAdmFI)/252/100 End If Else TaxaCobradaCota = VB_TAXAFUNDO(IdFundoFI, DataEnquadramento, 0) If (TaxaCobradaCota <> 0) Then PLCota = VB_PL(DataEnquadramento, IdFundoFI) TaxaCobradaCota = (TaxaCobradaCota*PosicaoCotas)/PLCota Else TaxaAdmFI = StrToFloat(FloatToStr(VB_TX(DataEnquadramento, I dFundoFI))) If (TaxaAdmFI > 0) Then TaxaCobradaCota = (PosicaoCotas)*(TaxaAdmFI)/252/100 End If End If

End If End If ValorTaxaCotasInvestidas = ABS(ValorTaxaCotasInvestidas) + ABS(TaxaCobra daCota) TaxaCobradaCota = 0 Next 'Calcula Taxa diria do fundo 'TaxaDiaria = ((TaxaAdm/100)/252)*PL TaxaDiaria = (((TaxaAdm*PL)/100)/252) 'Arredonda o clculo do dia em duas casas decimais TaxaDiaria = StrToFloat(Replace(FormatNumber(TaxaDiaria,2),SeparadorMilha r,"")) 'Desconsidera valores de taxas pagas para outros fundos TaxaDiaria = ABS(TaxaDiaria) - ABS(ValorTaxaCotasInvestidas) 'Calcula taxa acumulada no dia TaxaAcumulada = TaxaAcumulada + TaxaDiaria 'Associa varivel de retorno TaxaAdministracao = TaxaDiaria TaxaSistemaDeAtivos = ABS(TaxaSistemaDeAtivos) If (VB_TPAPUR <> "E") Then VB_INCLUIR_MEMCALC_TXADM(["TaxaSisAtivo",_ "PLFundo",_ "BaseCalculo",_ "ValorPercTaxa",_ "TaxaCalcDiaria",_ "TaxaCalcAcumulada",_ "TaxaMinCalcDiaria",_ "TaxaMaxCalcDiaria",_ "TaxaMinCalcAcum",_ "TaxaMaxCalcAcum",_ "StatusEncargoDiaria",_ "StatusEncargoAcum"],_ [TaxaSistemaDeAtivos,_ PL,_ PL,_ TaxaAdm,_ TaxaDiaria,_ TaxaAcumulada,_ TaxaMinCalcDiaria,_ TaxaMaxCalcDiaria,_ TaxaMinCalcAcum,_ TaxaMaxCalcAcum,_ StatusEncargoDiaria,_ StatusEncargoAcum]) End If End If End Sub CalculaTaxaAdm

Você também pode gostar