def account(self, nmbr, act=None, parent=None): nmbr = number.fmt(nmbr) if act is not None: if act.is_vendor(): self.vendor_.append(act.name()) return None if act.number() != nmbr: raise ValueError("Account number mismatch: " + nmbr) if parent is not None: parent = number.fmt(parent) if act.parent() is not None and act.parent() != parent: raise ValueError("Parent already defined for " + nmbr) act.parent(parent) if act.is_income(): self.account_[parent].income(nmbr) elif act.is_expense(): self.account_[parent].expense(nmbr) else: self.account_[parent].children(nmbr) self.account_[nmbr] = act self.number(act.name(), nmbr) if nmbr is None: return None return self.account_[nmbr]
def load_subfunds(self, balance): for name, nmbr, children in balance.subfunds(): name = clean(name) nmbr = number.fmt(nmbr) act = account.Account("Fund", name, nmbr) for child in children: child = number.fmt(child) self.account_[child].parent(nmbr) act.children(child) self.account_[nmbr] = act self.number_[name] = nmbr
def expense(self, nmbr=None): expense = {} numbers = self.account_ if nmbr is not None: nmbr = number.fmt(nmbr) numbers = self.account_[nmbr].expense() for num in numbers: expense[num] = self.account_[num] return expense
def income(self, nmbr=None): income = {} numbers = self.account_ if nmbr is not None: nmbr = number.fmt(nmbr) numbers = self.account_[nmbr].income() for num in numbers: income[num] = self.account_[num] return income
def number(self, name, num=None): name = clean(name) if num is not None: self.number_[name] = number.fmt(num) try: return self.number_[name] except KeyError: if name in self.vendor_: return None raise
def set(self, key, val): if key is None: return None key = clean(key) if not key in KEYS: raise ValueError("Unknown entry key "+key) if val is None: return self.element.get(key) if key in ["number"]: self.element[key] = number.fmt(val) elif key in ["opening", "month", "month_prior", "month_diff", "ytd", "ytd_prior", "ytd_diff"]: self.element[key] = amount.fmt(val) else: self.element[key] = clean(val) return self.element.get(key)
def set(self, key, val): if key is None: return None key = clean(key) if not key in KEYS: raise ValueError("Unknown entry key "+key) if val is None: return self.element.get(key) if key in ["number"]: self.element[key] = number.fmt(val) elif key in ["credit", "debit"]: self.element[key] = amount.fmt(val) elif key in ["date", "posted", "date_due"]: self.element[key] = date.fmt(val) elif key in ["id", "check_number"]: self.element[key] = int(clean(val)) else: self.element[key] = clean(val) return self.element.get(key)
def expense(self, string=None): if string is not None: self.expense_.append(number.fmt(string)) return self.expense_
def income(self, string=None): if string is not None: self.income_.append(number.fmt(string)) return self.income_
def children(self, string=None): if string is not None: self.children_.append(number.fmt(string)) return self.children_
def parent(self, string=None): if string is not None: self.parent_ = number.fmt(string) return self.parent_
def number(self, string=None): if string is not None: self.number_ = number.fmt(string) return self.number_