# Program to check out some transaction stuff. # This should accumulate balances at particular data points by adjusting # the current balance by the amounts in the various date ranges. import time def doit(accountName, datestr, dates): print 'account name ', accountName print 'datestr', datestr print 'dates', dates rootAccount = moneydance.getRootAccount() acct = rootAccount.getAccountByName(accountName) txnEnum = rootAccount.getTransactionSet().getTransactionsForAccount(acct) txns = txnEnum.getAllTxns() deltas = [] retval = [] for i in dates: deltas.append(0L) retval.append(0L) indexes = range(len(dates)) indexes.reverse() for txn in txns: date = txn.getDate() if date < dates[0]: print 'skipping', date continue print repr(txn) for dateIndex in indexes: if date > dates[dateIndex]: break deltas[dateIndex] = deltas[dateIndex] + txn.getValue() print 'txn counted in', date, dateIndex, deltas[dateIndex] retval[indexes[0]] = acct.getBalance() - deltas[indexes[0]] for dateIndex in indexes[1:]: retval[dateIndex] = retval[dateIndex + 1] - deltas[dateIndex] print 'deltas:', deltas, 'retval', retval for dateIndex in indexes: print 'Balance for', datestr[dateIndex], 'is', retval[dateIndex] datestr = ['2005-3-31', '2005-6-31', '2005-9-30', '2005-10-31'] dates = [] td = time.localtime(time.time()) for date in datestr: tmp = date.split('-') td = (int(tmp[0]), int(tmp[1]), int(tmp[2]), 12, 0, 0, 0, 0, 0) dates.append(long(time.mktime(td)) * 1000L) # print 'datestr', datestr # print 'dates', dates doit('DCU Checking', datestr, dates)