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)
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)
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)
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)
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'])
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'])
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)
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)