예제 #1
0
def make_refund_split_transaction(transaction):
    if df_is_not_empty(transaction):
        reverse_amount(transaction)
        assign_new_column(transaction, 'type', 'FIC')
        apply_function_to_field_overrule(transaction, 'date', datetime_to_timestamp, destination='timestamp')
        create_id(transaction)
    return transaction
예제 #2
0
def add_link_fields(df):
    def join_str(x):
        return sep_link_ids.join(x)

    for field_name, fields in fields_link_ids.items():
        values = apply_function(select_columns(df, fields),
                                join_str).astype(str)
        assign_new_column(df, field_name, values)
예제 #3
0
def add_new_column_autofilled(data,
                              column_from,
                              column_to,
                              keep_initial=False,
                              default_value='-'):
    dictioname = make_dictioname(column_from, column_to)
    column_content = _autofill_series(data[column_from],
                                      dictioname,
                                      keep_initial,
                                      default_value=default_value)
    assign_new_column(data, column_to, column_content)
예제 #4
0
def add_the_amount_to_df(df):
    def turn_amount_to_string(series):
        return (100 * series.fillna(0)).abs().astype(int).astype(str)

    the_amounts = turn_amount_to_string(get_one_field(df, amount_field))
    assign_new_column(df, amount_name, the_amounts)

    the_o_currency = get_one_field(df, o_currency_field).fillna('EUR')
    assign_new_column(df, currency_name, the_o_currency)

    the_o_amounts = (100 * get_one_field(df, o_amount_field).fillna(
        get_one_field(df, amount_field))).abs().astype(int).astype(str)
    assign_new_column(df, o_amount_name, the_o_amounts)
예제 #5
0
def recap_by_cat(cycle, round_it=True):
    output_columns = ['category', 'currency', 'spent', 'remaining', 'spent_from_budget', 'amount', 'budget', 'over']
    data = get_data_from_cycle(cycle)
    deposit = get_deposit_debits_from_cycle(cycle)

    convert_non_euro_amounts(data)
    add_column_with_value(deposit, currency_col, default_currency)

    field_name = category_col
    selected_columns = [amount_euro_col, field_name, currency_col]
    data = filter_df_on_bools(data, column_is_null(data, deposit_name_col))
    data = select_columns(data, selected_columns)
    deposit = select_columns(deposit, selected_columns)

    all_output = concat_lines([data, deposit])
    if df_is_empty(all_output):
        return empty_df(columns=output_columns)

    spent = group_by_field(all_output, category_col).set_index(currency_col, append=True)
    if df_is_empty(spent):
        return empty_df(columns=output_columns)

    budgets = get_budgets(cycle).set_index(currency_col, append=True)
    rename_columns(budgets, {amount_euro_col: budgets_col})

    recap = concat_columns([spent, budgets], keep_index_name=True).round(2).fillna(0).reset_index()
    recap = filter_df_not_these_values(recap, category_col, no_recap_categories)

    over = positive_part(- recap[amount_euro_col] - recap[budgets_col])
    remaining = positive_part(recap[budgets_col] + recap[amount_euro_col])
    spent = positive_part(- recap[amount_euro_col] - over)

    assign_new_column(recap, 'over', ceil_series(over) if round_it else over)
    assign_new_column(recap, 'remaining', floor_series(remaining) if round_it else remaining)
    assign_new_column(recap, 'spent_from_budget', ceil_series(spent) if round_it else spent)

    return recap