Пример #1
0
    def test_df_to_csv(self):
        df_original = get_operations()

        df_to_csv(df_original, 'df_to_csv_testing.txt')

        df_lido = get_operations('df_to_csv_testing.txt')
        assert df_lido.equals(df_original)
Пример #2
0
    def test_df_to_csv(self):
        df_original = get_operations(OPERACOES_DE_TESTE)
        assert len(df_original) > 0

        df_to_csv(df_original, 'temp/df_to_csv_testing.txt')

        df_lido = get_operations('temp/df_to_csv_testing.txt')
        assert df_lido.equals(df_original)
Пример #3
0
def do_busca_carteira():
    from src.crawler_cei import CrawlerCei
    crawler_cei = CrawlerCei(headless=True)
    df_carteira = crawler_cei.busca_carteira(data=data_referencia)

    df_to_csv(df_carteira,
              WORK_DIR + nome_com_referencia('carteira_cei.txt'),
              colunas=df_carteira.columns,
              header=True)
Пример #4
0
def do_salva_carteira(filepath):
    from src.crawler_cei import CrawlerCei
    crawler_cei = CrawlerCei(headless=True)
    with open(filepath, 'r') as file:
        df_carteira = crawler_cei.converte_html_carteira(file.read())

    df_to_csv(df_carteira,
              WORK_DIR + nome_com_referencia('carteira_cei.txt'),
              colunas=df_carteira.columns,
              header=True)
Пример #5
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'])
Пример #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 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)