Пример #1
0
def process_transaction(json_formatted_data, line, transaction_regex,
                        desc_regex, ignorable_regexes):
    transaction_pattern = re.compile(transaction_regex)
    desc_pattern = re.compile(desc_regex)
    ignorable_patterns = [
        re.compile(ignorable_regex) for ignorable_regex in ignorable_regexes
    ]
    m = transaction_pattern.match(line)

    if transaction_pattern.match(line):
        opening_balance = bsr_utils.get_opening_balance(json_formatted_data)
        transaction_type = bsr_utils.get_transaction_type(
            opening_balance,
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR)))
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR:
            bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            constants.DESCRIPTION_STR:
            bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.TYPE_STR:
            transaction_type,
            constants.AMOUNT_STR:
            bsr_utils.pretty_format(m.group(constants.AMOUNT_STR)),
            constants.CLOSING_BALANCE_STR:
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
    elif bsr_utils.is_ignorable(ignorable_patterns, line):
        pass
    elif desc_pattern.match(line):
        process_desc(json_formatted_data, desc_pattern, line)
def process_transaction(json_formatted_data, i, existing_desc,
                        transaction_regex, file_content, desc_regex,
                        ignorable_regexes):
    line = file_content[i]
    return_statement = False
    Description_value = ''
    transaction_pattern = re.compile(transaction_regex)
    desc_pattern = re.compile(desc_regex)
    ignorable_patterns = [
        re.compile(ignorable_regex) for ignorable_regex in ignorable_regexes
    ]
    m = transaction_pattern.match(line)

    if transaction_pattern.match(line):
        if (len(bsr_utils.pretty_format(m.group(constants.DATE_STR))) >
                0) and len(
                    bsr_utils.pretty_format(m.group(
                        constants.DESCRIPTION_STR))) > 0:
            Description_value = bsr_utils.pretty_format(
                m.group(constants.DESCRIPTION_STR))
        else:
            Description_value = ''
            return_statement = True
        opening_balance = bsr_utils.get_opening_balance(json_formatted_data)
        transaction_type = bsr_utils.get_transaction_type(
            opening_balance,
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR)))
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR:
            bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            # constants.DESCRIPTION_STR: bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.DESCRIPTION_STR:
            Description_value,
            constants.TYPE_STR:
            transaction_type,
            constants.AMOUNT_STR:
            bsr_utils.pretty_format(m.group(constants.AMOUNT_STR)),
            constants.CLOSING_BALANCE_STR:
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
        if return_statement:
            return existing_desc
    elif bsr_utils.is_ignorable(ignorable_patterns, line):
        pass
    elif desc_pattern.match(line):
        if existing_desc is None or existing_desc == '':
            existing_desc = existing_desc + line
        else:
            process_desc_custum(json_formatted_data, desc_pattern, line,
                                existing_desc)
            existing_desc = ''
    return existing_desc
Пример #3
0
def process_transaction(json_formatted_data, line, existing_desc,
                        transaction_regex, desc_regex, ignorable_regexes):
    transaction_pattern = re.compile(transaction_regex)
    desc_pattern = re.compile(desc_regex)
    ignorable_patterns = [
        re.compile(ignorable_regex) for ignorable_regex in ignorable_regexes
    ]
    m = transaction_pattern.match(line)

    if transaction_pattern.match(line):
        opening_balance = bsr_utils.get_opening_balance(json_formatted_data)
        withdraw = float(
            str(bsr_utils.pretty_format(m.group(
                constants.WITHDRAW_AMOUNT_STR))).replace(',', ''))
        deposit = float(
            str(
                bsr_utils.pretty_format(m.group(
                    constants.DEPOSIT_AMOUNT_STR)).replace(',', '')))
        amount = withdraw + deposit
        transaction_type = bsr_utils.get_transaction_type(
            opening_balance,
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR)))
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR:
            bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            constants.DESCRIPTION_STR:
            existing_desc +
            bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.TYPE_STR:
            transaction_type,
            constants.AMOUNT_STR:
            amount,
            constants.CLOSING_BALANCE_STR:
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
        existing_desc = ''
    elif bsr_utils.is_ignorable(ignorable_patterns, line):
        pass
    elif desc_pattern.match(line):
        existing_desc = process_desc_custum(desc_pattern, line, existing_desc)
    return existing_desc
Пример #4
0
def process_transaction(json_formatted_data, i, file_content,
                        transaction_regex_1, transaction_regex_2, desc_regex,
                        ignorable_regexes):
    line = file_content[i]
    transaction_pattern_1 = re.compile(transaction_regex_1)
    transaction_pattern_2 = re.compile(transaction_regex_2)
    desc_pattern = re.compile(desc_regex)
    ignorable_patterns = [
        re.compile(ignorable_regex) for ignorable_regex in ignorable_regexes
    ]
    m = transaction_pattern_1.match(line)

    if transaction_pattern_1.match(line):
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR:
            bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            constants.DESCRIPTION_STR:
            bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.AMOUNT_STR:
            bsr_utils.pretty_format(m.group(constants.AMOUNT_STR)),
            constants.CLOSING_BALANCE_STR:
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
    elif transaction_pattern_2.match(line):
        m = transaction_pattern_2.match(line)
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR:
            bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            constants.DESCRIPTION_STR:
            bsr_utils.pretty_format(file_content[i - 1]) + ' ' +
            bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.AMOUNT_STR:
            bsr_utils.pretty_format(m.group(constants.AMOUNT_STR)),
            constants.CLOSING_BALANCE_STR:
            bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
    elif bsr_utils.is_ignorable(ignorable_patterns, line):
        pass
    elif desc_pattern.match(line):
        process_desc(json_formatted_data, desc_pattern, line)
Пример #5
0
def process_transaction(json_formatted_data, line, transaction_regex, desc_regex, ignorable_regexes):
    transaction_pattern = re.compile(transaction_regex)
    desc_pattern = re.compile(desc_regex)
    ignorable_patterns = [re.compile(ignorable_regex) for ignorable_regex in ignorable_regexes]
    m = transaction_pattern.match(line)

    if transaction_pattern.match(line):
        withdraw = float(bsr_utils.pretty_format(m.group(constants.WITHDRAW_AMOUNT_STR)))
        deposit = float(bsr_utils.pretty_format(m.group(constants.DEPOSIT_AMOUNT_STR)))
        amount = withdraw + deposit
        transaction_type = get_transaction(deposit)
        json_formatted_data[constants.TRANSACTIONS_STR].append({
            constants.DATE_STR: bsr_utils.pretty_format(m.group(constants.DATE_STR)),
            constants.DESCRIPTION_STR: bsr_utils.pretty_format(m.group(constants.DESCRIPTION_STR)),
            constants.TYPE_STR: transaction_type,
            constants.AMOUNT_STR: amount,
            constants.CLOSING_BALANCE_STR: bsr_utils.pretty_format(m.group(constants.CLOSING_BALANCE_STR))
        })
    elif bsr_utils.is_ignorable(ignorable_patterns, line):
        pass
    elif desc_pattern.match(line):
        process_desc(json_formatted_data, desc_pattern, line)