# 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)