Moved plugins to their own repo
This commit is contained in:
41
optional_balance.py
Normal file
41
optional_balance.py
Normal file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from beancount.core import data
|
||||
from beancount.core import account
|
||||
from beancount.core import getters
|
||||
from beancount.core import amount
|
||||
from beancount.core import account_types
|
||||
from beancount.core import realization
|
||||
from beancount.core.number import D
|
||||
from beancount.parser import options
|
||||
|
||||
import re
|
||||
|
||||
__plugins__ = ('optional_balance_plugin',)
|
||||
|
||||
def optional_balance_plugin(entries, options_map, config):
|
||||
try:
|
||||
match_enabled = re.compile(config)
|
||||
except Exception as e:
|
||||
print(f"exception {e}")
|
||||
return entries, [e]
|
||||
|
||||
errors = []
|
||||
new_entries = []
|
||||
for entry in entries:
|
||||
if isinstance(entry, data.Custom):
|
||||
if entry.type == "optional-balance":
|
||||
try:
|
||||
assert(len(entry.values) == 4)
|
||||
type, acc, units, curr = entry.values
|
||||
if not match_enabled.match(type.value):
|
||||
continue
|
||||
v = amount.Amount(number=D(units.value), currency=curr.value)
|
||||
entry = data.Balance(meta=entry.meta, date=entry.date, account=acc.value, amount=v, tolerance=None, diff_amount=None)
|
||||
except Exception as e:
|
||||
print(f"exception {e}")
|
||||
errors.append(e)
|
||||
|
||||
new_entries.append(entry)
|
||||
|
||||
return new_entries, errors
|
||||
Reference in New Issue
Block a user