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