Пример #1
0
    def test_download_dropbox_file(self):
        if os.path.exists(OPERATIONS_FILEPATH):
            os.remove(OPERATIONS_FILEPATH)

        download_dropbox_file()

        assert os.path.isfile(OPERATIONS_FILEPATH)
Пример #2
0
    def test_calcula_precos_medios_do_dropbox(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file()

        df = get_operations()

        precos_medios_de_compra = calcula_precos_medio_de_compra(df)
        assert type(precos_medios_de_compra) is dict
Пример #3
0
    def test_calcula_precos_medios_do_dropbox(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file(OPERACOES_DE_TESTE)

        df = get_operations(OPERACOES_DE_TESTE)
        assert len(df) > 0

        precos_medios_de_compra = calcula_precos_medio_de_compra(df)
        assert type(precos_medios_de_compra) is dict
Пример #4
0
def do_busca_trades_e_faz_merge_operacoes():
    from src.crawler_cei import busca_trades
    df_cei = busca_trades(os.environ['CPF'], os.environ['SENHA_CEI'])

    from src.dropbox_files import download_dropbox_file
    download_dropbox_file()

    df = get_operations()
    df = merge_operacoes(df, df_cei)
    df_to_csv(df, OPERATIONS_FILEPATH)

    upload_dropbox_file(OPERATIONS_FILEPATH,
                        os.environ['DROPBOX_FILE_LOCATION'])
Пример #5
0
    def test_relatorio_txt(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file()

        df = get_operations()
        df = df.tail(60)

        calcula_custodia(df)
        calculo_ir = CalculoIr(df=df)
        calculo_ir.calcula()

        with open("relatorio.txt", "w") as relatorio:
            relatorio.write(relatorio_txt(calculo_ir))
Пример #6
0
def do_busca_trades_e_faz_merge_operacoes():
    from src.crawler_cei import CrawlerCei
    crawler_cei = CrawlerCei(headless=True)
    df_cei = crawler_cei.busca_trades()

    from src.dropbox_files import download_dropbox_file
    download_dropbox_file()

    df = get_operations_dataframe()
    df = merge_operacoes(df, df_cei)
    df_to_csv(df, OPERATIONS_FILEPATH)

    upload_dropbox_file(OPERATIONS_FILEPATH, os.environ['DROPBOX_FILE_LOCATION'])
Пример #7
0
def do_busca_trades_e_faz_merge_operacoes():
    from src.crawler_cei import CrawlerCei
    crawler_cei = CrawlerCei(headless=True)
    df_cei = crawler_cei.busca_trades()

    from src.dropbox_files import download_dropbox_file
    download_dropbox_file(OPERATIONS_FILEPATH)

    df = get_operations(filepath=OPERATIONS_FILEPATH)
    df = merge_operacoes(df, df_cei)
    df_to_csv(df, OPERATIONS_FILEPATH)

    upload_dropbox_file(OPERATIONS_FILEPATH, None)
Пример #8
0
    def test_relatorio_html(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file()

        df = get_operations_dataframe()
        df = df.tail(150)

        calcula_custodia(df)
        calculo_ir = CalculoIr(df=df)
        calculo_ir.calcula()

        from py_w3c.validators.html.validator import HTMLValidator

        assert HTMLValidator().validate_fragment(relatorio_html(calculo_ir))
Пример #9
0
def do_calculo_ir():
    from src.dropbox_files import download_dropbox_file
    download_dropbox_file()
    df = get_operations()

    from src.stuff import calcula_custodia

    calcula_custodia(df)
    calculo_ir = CalculoIr(df=df)
    calculo_ir.calcula()

    print(relatorio_txt(calculo_ir))

    envia_relatorio_html_por_email(assunto(calculo_ir),
                                   relatorio_html(calculo_ir))
Пример #10
0
    def test_relatorio_txt(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file(OPERACOES_DE_TESTE)

        df = get_operations(OPERACOES_DE_TESTE)
        assert len(df.count()) > 0
        df = df.tail(60)

        custodia = calcula_custodia(df)
        calculo_ir = CalculoIr(df=df)
        calculo_ir.calcula()

        with open("temp/relatorio_teste.txt", "w") as relatorio:
            relatorio.write(
                relatorio_txt(custodia, calculo_ir, datetime.date.today(),
                              False))
Пример #11
0
def do_calculo_ir():
    from src.dropbox_files import download_dropbox_file
    download_dropbox_file()
    df = get_operations_dataframe()

    from src.stuff import calcula_custodia

    calcula_custodia(df)
    calculo_ir = CalculoIr(df=df)
    calculo_ir.calcula()

    print(relatorio_txt(calculo_ir))

    envia_relatorio_html_por_email(
        'Calculo de IR - ' + calculo_ir.mes_do_relatorio + ' - CPF: ' +
        os.environ['CPF'] + ' - ' + datetime.now().strftime("%H:%M:%S"),
        relatorio_html(calculo_ir))
Пример #12
0
    def test_calcula_custodia(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file()

        df = get_operations_dataframe()

        data = datetime.datetime.now().date()
        custodia = calcula_custodia(df, data)

        assert type(custodia) is pd.DataFrame
        assert 'preco_medio_compra' in custodia.columns
        assert 'ticker' in custodia.columns
        assert 'qtd' in custodia.columns
        assert 'preco_atual' in custodia.columns
        assert 'valorizacao' in custodia.columns
        assert 'valor' in custodia.columns
        assert 'tipo' in custodia.columns
        assert 'data_primeira_compra' in custodia.columns
Пример #13
0
    def test_calcula_custodia(self):
        from src.dropbox_files import download_dropbox_file
        download_dropbox_file(OPERACOES_DE_TESTE)

        df = get_operations(OPERACOES_DE_TESTE)
        assert len(df) > 0
        df = df.tail(80)

        data = datetime.datetime.now().date()
        custodia = calcula_custodia(df, data)

        assert type(custodia) is pd.DataFrame
        assert 'preco_medio_compra' in custodia.columns
        assert 'ticker' in custodia.columns
        assert 'qtd' in custodia.columns
        assert 'preco_atual' in custodia.columns
        assert 'valorizacao' in custodia.columns
        assert 'ultimo_yield' in custodia.columns
        assert 'valor' in custodia.columns
        assert 'tipo' in custodia.columns
        assert 'data_primeira_compra' in custodia.columns
Пример #14
0
def do_calculo_ir():
    from src.dropbox_files import download_dropbox_file
    download_dropbox_file(OPERATIONS_FILEPATH)
    df = get_operations(filepath=OPERATIONS_FILEPATH)

    first_year = df['data'].min().year
    last_year = df['data'].max().year
    # Permite separar as outras operações de forma organizada
    for f in [
            'outras_operacoes.txt', 'custos.txt', 'ofertas_publicas.txt',
            'subscricoes.txt'
    ]:
        for year in range(first_year, last_year + 1):
            outros = get_operations(WORK_DIR + str(year) + '/' + f,
                                    operations=df)
            df = merge_outros(df, outros)
        outros = get_operations(WORK_DIR + f, operations=df)
        df = merge_outros(df, outros)

    df.reset_index(drop=True, inplace=True)
    df = ajusta_datas(df, 'data')
    df.drop(df[df['data'] > data_referencia].index, inplace=True)

    df = verifica_conversoes(df, first_year, last_year)

    if len(df) == 0:
        raise Exception("Não existem dados para processar até a data : " +
                        str(data_referencia))

    df_to_csv(df, WORK_DIR + nome_com_referencia('combinado.txt'))

    do_diario(df.copy(), first_year, last_year)

    from src.stuff import calcula_custodia

    # Custódia e IR são gerados somente uma vez e passados para os relatórios
    custodia = calcula_custodia(df)
    calculo_ir = CalculoIr(df=df)
    calculo_ir.calcula()

    declaracao_anual = data_referencia.strftime('%m%d') == '1231'
    adicionais = {}
    if declaracao_anual:
        # final do ano gerar relatorio para facilitar IRPF Anual
        print("*** GERANDO RELATORIO PARA IRPF")
        try:
            carteira_cei = pd.read_csv(WORK_DIR +
                                       nome_com_referencia('carteira_cei.txt'),
                                       sep='\t',
                                       header=0)
            carteira_cei = carteira_cei.groupby('ticker',
                                                as_index=False,
                                                sort=True).agg({'qtd': 'sum'})
            for a, ra in custodia.iterrows():
                carteira_cei['qtd'] = carteira_cei.apply(
                    lambda row: row.qtd - ra.qtd
                    if row.ticker == ra.ticker else row.qtd,
                    axis=1)
                # Verificando se tem itens na custodia que não estão na carteira cei
                filtro = carteira_cei[carteira_cei['ticker'] == ra.ticker]
                if len(filtro) == 0:
                    print("*** " + ra.ticker + " não está na carteira CEI")
                    carteira_cei = carteira_cei.append(
                        {
                            'ticker': ra.ticker,
                            'qtd': ra.qtd * -1
                        },
                        ignore_index=True)

            carteira_cei = carteira_cei[carteira_cei['qtd'] != 0]
            if len(carteira_cei) > 0:
                print("*** ERRO NA COMPARACAO COM CARTEIRA CEI : ")
                print(carteira_cei)
                adicionais['diferenca_carteira_cei'] = carteira_cei

        except FileNotFoundError:
            pass
        except Exception as e:
            print("Erro lendo carteira_cei.txt ")
            print(e)

    salva_planilha_irpf(WORK_DIR + nome_com_referencia('custodia.xlsx'),
                        custodia, adicionais)

    txt = relatorio_txt(custodia.copy(), calculo_ir, data_referencia,
                        declaracao_anual)
    save_to_daily_file("txt", txt)
    print(txt)

    html = relatorio_html(custodia.copy(), calculo_ir, data_referencia,
                          declaracao_anual)
    save_to_daily_file("html", html)
    envia_relatorio_html_por_email(assunto(calculo_ir), html)