Skip to content

Commit

Permalink
Merge pull request #93 from staticdev/enhancement/add-2021
Browse files Browse the repository at this point in the history
Add 2021
  • Loading branch information
staticdev authored Mar 11, 2022
2 parents 48765ef + 98959ce commit 80dbdee
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 44 deletions.
4 changes: 3 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ IRPF Investidor

Programa auxiliar para calcular custos de ações, ETFs e FIIs. Este programa foi feito para calcular emolumentos, taxa de liquidação e custo total para a declaração de Bens e Direitos do Imposto de Renda Pessoa Física.

**Essa aplicação foi testada e configurada para calcular tarifas referentes aos anos de 2019 a 2020 (IRPF 2020/2021) e não faz cálculos para compra e venda no mesmo dia (Day Trade), contratos futuros e Índice Brasil 50.**
**Essa aplicação foi testada e configurada para calcular tarifas referentes aos anos de 2019 a 2021 (IRPF 2020/2022) e não faz cálculos para compra e venda no mesmo dia (Day Trade), contratos futuros e Índice Brasil 50.**


Requisitos
Expand Down Expand Up @@ -78,6 +78,8 @@ Uso

1. Entre na `Área do Investidor`_ da B3, faça login e entre no menu Extratos e Informativos → Negociação de Ativos → Escolha uma corretora e as datas 1 de Janeiro e 31 de Dezembro do ano em que deseja declarar. Em seguida clique no botão “Exportar para EXCEL”. Ele irá baixar o arquivo “InfoCEI.xls”.

**Ainda não é possível rodar o programa usando os novos arquivos XLSX, gerar no formato antigo.**

Você pode combinar lançamentos de anos diferentes em um mesmo documento colando as linhas de um relatório em outro, mas mantenha a ordem cronológica.

2. Execute o programa através do comando:
Expand Down
76 changes: 37 additions & 39 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ sphinx-click = ">=3.0.2"
typeguard = ">=2.13.3"
xdoctest = {extras = ["colors"], version = ">=0.15.10"}
pyfakefs = ">=4.5.3"
bandit = "==1.7.2"

[tool.poetry.scripts]
irpf-investidor = "irpf_investidor.__main__:main"
Expand Down
6 changes: 5 additions & 1 deletion src/irpf_investidor/b3.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
datetime.datetime(2020, 11, 1), datetime.datetime(2020, 12, 1), 0.00003247
),
RatePeriod(
datetime.datetime(2020, 12, 1), datetime.datetime(2021, 1, 1), 0.00003020
datetime.datetime(2020, 12, 1), datetime.datetime(2022, 1, 1), 0.00003020
),
]
EMOLUMENTOS_AUCTION_RATE = 0.00007
Expand Down Expand Up @@ -700,6 +700,10 @@ def get_asset_info(code: str) -> AssetInfo:
"""
if code in STOCKS:
return AssetInfo("STOCKS", STOCKS[code])
# STOCKS CAN END IN F
elif code.endswith("F") and code[:-1] in STOCKS:
code = code[:-1]
return AssetInfo("STOCKS", STOCKS[code])
# ETF and FII code can end in 11 or 11B
if len(code) == 6 and code.endswith("11"):
code = code[:-2]
Expand Down
8 changes: 7 additions & 1 deletion src/irpf_investidor/report_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
"STOCKS": "31 (Ações)",
"NOT_FOUND": "Não encontrado",
}
FIRST_IMPLEMENTED_YEAR = 2019
LAST_IMPLEMENTED_YEAR = 2021


def get_xls_filename() -> str:
Expand All @@ -45,7 +47,11 @@ def validate_period(first: str, second: str) -> int:
"""Consider the year from the first trade date."""
first_year = int(first[-4:])
second_year = int(second[-4:])
if first_year <= second_year and first_year > 2018 and second_year < 2021:
if (
first_year <= second_year
and first_year >= FIRST_IMPLEMENTED_YEAR
and second_year <= LAST_IMPLEMENTED_YEAR
):
return second_year
return sys.exit(
f"Erro: o período de {first} a {second} não é válido, favor verificar "
Expand Down
7 changes: 7 additions & 0 deletions tests/test_b3.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ def test_get_asset_info_stock() -> None:
assert asset_info.cnpj == "33.000.167/0001-01"


def test_get_asset_info_stock_fractionary() -> None:
"""Return STOCKS."""
asset_info = b3.get_asset_info("PETR4F")
assert asset_info.category == "STOCKS"
assert asset_info.cnpj == "33.000.167/0001-01"


def test_get_asset_info_not_found() -> None:
"""Return NOT_FOUND."""
asset_info = b3.get_asset_info("OMG3M3")
Expand Down
4 changes: 2 additions & 2 deletions tests/test_report_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ def test_get_xls_filename_download_folder(
def test_validate_period_success() -> None:
"""Return reference year."""
first_date = "01/01/2019"
second_date = "31/12/2020"
second_date = "31/12/2021"

assert report_reader.validate_period(first_date, second_date) == 2020
assert report_reader.validate_period(first_date, second_date) == 2021


def test_validate_period_wrong_start_finish() -> None:
Expand Down

0 comments on commit 80dbdee

Please sign in to comment.