class AccountReport: def __init__(self, account, startdate, enddate, title=None): self.account = account self.title = title or self.account.get_full_name() self.startdate = startdate self.enddate = enddate self._get_splits() self._make_report() def _get_splits(self): self.splits = self.account.GetSplitList() def f(x): txn = x.GetParent() txn_date = date.fromtimestamp(txn.GetDate()) return txn_date >= self.startdate and txn_date <= self.enddate self.splits = filter(f, self.splits) def _make_report(self): self.total = GncNumeric() self.entries = [] for split in self.splits: txn = split.GetParent() desc = txn.GetDescription() memo = split.GetMemo() txn_date = date.fromtimestamp(txn.GetDate()) amount = split.GetValue() self.total = self.total.add_fixed(amount) self.entries.append({ 'date': txn_date, 'owner': desc, 'desc': memo, 'amount': amount, }) (self.report_total,self.report_rest) = gncn_round_with_rest(self.total) def write(self,io): w = csv.writer(io) w.writerow([]) w.writerow(['Name',self.title]) w.writerow(['Total',self.total]) w.writerow(['Report Total',str(self.report_total)]) w.writerow(['Report Rest',str(self.report_rest)]) w.writerow(['Transactions','Date','Owner','Description','Amount']) for entry in self.entries: w.writerow(['',entry['date'],entry['owner'],entry['desc'],str(entry['amount'])]) w.writerow([])