diff --git a/src/calculo_ir.py b/src/calculo_ir.py index 2b707e7..81cdadf 100644 --- a/src/calculo_ir.py +++ b/src/calculo_ir.py @@ -55,7 +55,7 @@ def calcula_ir_a_pagar_no_mes(self, data): for tipo in TipoTicker: prejuizo_acumulado = self.calcula_prejuizo_acumulado(data, tipo) ir_a_pagar += calcula_ir_a_pagar(prejuizo_acumulado, tipo, - self.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO]) + self.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO_OU_ETF]) return ir_a_pagar def calcula_dedo_duro_no_mes(self, data): @@ -117,13 +117,12 @@ def possui_vendas_no_mes(self, data): def calcula_ir_a_pagar(lucro, tipo, vendas_acoes_no_mes=None): if lucro > 0: - if tipo == TipoTicker.ACAO: + if tipo == TipoTicker.ACAO_OU_ETF: if vendas_acoes_no_mes > 20000.0: return lucro * 0.15 else: return 0.0 if tipo == TipoTicker.BDR \ - or tipo == TipoTicker.ETF \ or tipo == TipoTicker.FUTURO \ or tipo == TipoTicker.OPCAO: return lucro * 0.15 diff --git a/src/crawler_advfn.py b/src/crawler_advfn.py index 1619155..42bfde7 100644 --- a/src/crawler_advfn.py +++ b/src/crawler_advfn.py @@ -80,7 +80,7 @@ def __recupera_tipo_ticker(self): return TipoTicker.FUTURO if self.__ticker_eh_acao(): - return TipoTicker.ACAO + return TipoTicker.ACAO_OU_ETF if self.__ticker_eh_opcao(): return TipoTicker.OPCAO @@ -89,7 +89,7 @@ def __recupera_tipo_ticker(self): return TipoTicker.FII if self.__ticker_eh_etf(): - return TipoTicker.ETF + return TipoTicker.ACAO_OU_ETF if self.__ticker_eh_bdr(): return TipoTicker.BDR diff --git a/src/relatorio.py b/src/relatorio.py index e418182..1752034 100644 --- a/src/relatorio.py +++ b/src/relatorio.py @@ -59,7 +59,7 @@ def relatorio_txt(ir): relatorio.append(__tab(3) + 'Lucro/Prejuizo acumulado: ' + __format(ir.calcula_prejuizo_acumulado(data, tipo))) relatorio.append(__tab(3) + 'IR no mês para ' + tipo.name + ': ' + __format(calcula_ir_a_pagar(ir.calcula_prejuizo_acumulado(data, tipo), tipo, - ir.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO]))) + ir.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO_OU_ETF]))) relatorio.append(__tab(2) + 'Dedo-Duro TOTAL no mês: ' + __format(ir.calcula_dedo_duro_no_mes(data))) relatorio.append(__tab(2) + 'IR a pagar TOTAL no mês: ' + __format(ir.calcula_ir_a_pagar_no_mes(data))) @@ -114,7 +114,7 @@ def relatorio_html(ir, numero_de_meses=None): relatorio_mes += __p('Lucro/Prejuizo acumulado: ' + __format(ir.calcula_prejuizo_acumulado(data, tipo)), tab=3) relatorio_mes += __p('IR no mês para ' + tipo.name + ': ' + __format(calcula_ir_a_pagar(ir.calcula_prejuizo_acumulado(data, tipo), tipo, - ir.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO])), tab=3) + ir.total_vendido_no_mes_por_tipo(data)[TipoTicker.ACAO_OU_ETF])), tab=3) relatorio_mes += __p('Dedo-Duro TOTAL no mês: ' + __format(ir.calcula_dedo_duro_no_mes(data)), tab=2) relatorio_mes += __p('IR a pagar TOTAL no mês: ' + __format(ir.calcula_ir_a_pagar_no_mes(data)), tab=2) @@ -160,12 +160,10 @@ def __close_html(): def __cor_tabela(tipo=None): if tipo is None: return 'blue_light' - elif tipo == TipoTicker.ACAO: + elif tipo == TipoTicker.ACAO_OU_ETF: return 'grey_light' elif tipo == TipoTicker.FII: return 'yellow_light' - elif tipo == TipoTicker.ETF: - return 'orange_light' return 'blue_light' diff --git a/src/tipo_ticker.py b/src/tipo_ticker.py index 5ffa0bd..c20a71d 100644 --- a/src/tipo_ticker.py +++ b/src/tipo_ticker.py @@ -12,9 +12,8 @@ class TipoTicker(Enum): - ETF = 1 FII = 2 - ACAO = 3 + ACAO_OU_ETF = 3 OPCAO = 4 FUTURO = 5 FIP = 6 @@ -29,10 +28,10 @@ def tipo_ticker(ticker): return TipoTicker.FII if e_tipo_etf(ticker): - return TipoTicker.ETF + return TipoTicker.ACAO_OU_ETF if busca_preco_atual_yahoo(ticker): - return TipoTicker.ACAO + return TipoTicker.ACAO_OU_ETF from src.crawler_advfn import advfn_tipo_ticker return advfn_tipo_ticker(ticker) diff --git a/tests/test_calculo_ir.py b/tests/test_calculo_ir.py index c07da65..022de0f 100644 --- a/tests/test_calculo_ir.py +++ b/tests/test_calculo_ir.py @@ -12,14 +12,14 @@ class TestCalculoIr(): def test_acoes_deve_ter_percentual_de_15_perc(self): - assert calcula_ir_a_pagar(25000, TipoTicker.ACAO, 100000) == 3750.0 + assert calcula_ir_a_pagar(25000, TipoTicker.ACAO_OU_ETF, 100000) == 3750.0 def test_acoes_isencao_ate_20_mil_de_vendas_no_mes(self): - assert calcula_ir_a_pagar(15000, TipoTicker.ACAO, 15000) == 0.0 - assert calcula_ir_a_pagar(15000, TipoTicker.ACAO, 30000) == 2250.0 + assert calcula_ir_a_pagar(15000, TipoTicker.ACAO_OU_ETF, 15000) == 0.0 + assert calcula_ir_a_pagar(15000, TipoTicker.ACAO_OU_ETF, 30000) == 2250.0 @pytest.mark.parametrize("tipo_ticker", - filter(lambda tipo: tipo not in (TipoTicker.ACAO, TipoTicker.FIPIE), + filter(lambda tipo: tipo not in (TipoTicker.ACAO_OU_ETF, TipoTicker.FIPIE), [tipo for tipo in TipoTicker if tipo])) def test_apenas_acoes_possuem_isencao_de_vendas_ate_20_mil(self, tipo_ticker): assert calcula_ir_a_pagar(10000, tipo_ticker, 15000) > 0.0 @@ -38,7 +38,7 @@ def test_deve_ser_zero_se_nao_tiver_lucro(self, tipo_ticker): assert calcula_ir_a_pagar(0, tipo_ticker) == 0.0 def test_etf_deve_ter_percentual_de_15_perc(self): - assert calcula_ir_a_pagar(25000, TipoTicker.ETF) == 3750.0 + assert calcula_ir_a_pagar(25000, TipoTicker.ACAO_OU_ETF) == 3750.0 def test_futuro_deve_ter_percentual_de_15_perc(self): assert calcula_ir_a_pagar(25000, TipoTicker.FUTURO) == 3750.0 @@ -56,3 +56,6 @@ def test_tipos_isentos_devem_ter_imposto_zero(self): # deve calcular prejuizo_por_tipo para um mes e tipo. # deve considerar meses desde a primeira compra ate o dia atual # deve testar todos os metodos publicos + + + # deve printar o calculo final em ordem decrescente, para sempre mostrar o mes mais atual em cima diff --git a/tests/test_crawlerAdvfn.py b/tests/test_crawlerAdvfn.py index 3ea07a4..9a90ca9 100644 --- a/tests/test_crawlerAdvfn.py +++ b/tests/test_crawlerAdvfn.py @@ -15,13 +15,13 @@ def test_busca_preco_atual(self): def test_busca_tipo_ticker(self): busca_parametros.clear_cache() - assert advfn_tipo_ticker('ALUP11') == TipoTicker.ACAO + assert advfn_tipo_ticker('ALUP11') == TipoTicker.ACAO_OU_ETF assert advfn_tipo_ticker('SDIL11') == TipoTicker.FII - assert advfn_tipo_ticker('BOVA11') == TipoTicker.ETF + assert advfn_tipo_ticker('BOVA11') == TipoTicker.ACAO_OU_ETF assert advfn_tipo_ticker('MAXR11') == TipoTicker.FII assert advfn_tipo_ticker('ISPU' + ano_corrente()) == TipoTicker.FUTURO assert advfn_tipo_ticker('INVALID') is None - assert advfn_tipo_ticker('ITSA4') == TipoTicker.ACAO + assert advfn_tipo_ticker('ITSA4') == TipoTicker.ACAO_OU_ETF assert advfn_tipo_ticker('ITSA4') == advfn_tipo_ticker('itsa4') assert advfn_tipo_ticker('AAPL34') == TipoTicker.BDR assert advfn_tipo_ticker('BABA34') == TipoTicker.BDR diff --git a/tests/test_tipo_ticker.py b/tests/test_tipo_ticker.py index 2f44b49..dfd9415 100644 --- a/tests/test_tipo_ticker.py +++ b/tests/test_tipo_ticker.py @@ -11,7 +11,7 @@ def setup_method(self, method): tipo_ticker.clear_cache() def test_tipo_ticker(self): - assert tipo_ticker('ALUP11') is TipoTicker.ACAO + assert tipo_ticker('ALUP11') is TipoTicker.ACAO_OU_ETF assert tipo_ticker('whgr11') is TipoTicker.FII assert tipo_ticker('RZAG11') is TipoTicker.FII assert tipo_ticker('AAZQ11') is TipoTicker.FII @@ -19,11 +19,11 @@ def test_tipo_ticker(self): assert tipo_ticker('GRLV11') is TipoTicker.FII assert tipo_ticker('VRTA11') is TipoTicker.FII assert tipo_ticker('vrta11') is TipoTicker.FII - assert tipo_ticker('ITSA4') is TipoTicker.ACAO - assert tipo_ticker('PETR4') is TipoTicker.ACAO - assert tipo_ticker('CMIN3') is TipoTicker.ACAO - assert tipo_ticker('BOVA11') is TipoTicker.ETF - assert tipo_ticker('SPXI11') is TipoTicker.ETF + assert tipo_ticker('ITSA4') is TipoTicker.ACAO_OU_ETF + assert tipo_ticker('PETR4') is TipoTicker.ACAO_OU_ETF + assert tipo_ticker('CMIN3') is TipoTicker.ACAO_OU_ETF + assert tipo_ticker('BOVA11') is TipoTicker.ACAO_OU_ETF + assert tipo_ticker('SPXI11') is TipoTicker.ACAO_OU_ETF assert tipo_ticker('MSFT34') is TipoTicker.BDR assert tipo_ticker('invalid') is None assert tipo_ticker('ISPU' + ano_corrente()) is TipoTicker.FUTURO