+class transaction(data.transaction):
+ def __init__(self, account, data):
+ self.account = account
+ self._data = data
+
+ _datefmt = "%Y-%m-%d"
+
+ @property
+ def value(self): return currency.currency.get(resolve(self._data, ("currency",))).parse(resolve(self._data, ("amount",)))
+ @property
+ def message(self): return resolve(self._data, ("description",))
+ @property
+ def date(self):
+ p = time.strptime(resolve(self._data, ("accountingDate",)), self._datefmt)
+ return datetime.date(p.tm_year, p.tm_mon, p.tm_mday)
+
+class txnaccount(data.txnaccount):
+ def __init__(self, sess, id, idata):
+ self.sess = sess
+ self.id = id
+ self._data = None
+ self._idata = idata
+
+ @property
+ def data(self):
+ if self._data is None:
+ self._data = self.sess._jreq("v5/engagement/account/" + self.id)
+ return self._data
+
+ @property
+ def number(self): return resolve(self.data, ("accountNumber",))
+ @property
+ def clearing(self): return resolve(self.data, ("clearingNumber",))
+ @property
+ def fullnumber(self): return resolve(self.data, ("fullyFormattedNumber",))
+ @property
+ def balance(self): return currency.currency.get(resolve(self.data, ("balance", "currencyCode"))).parse(resolve(self.data, ("balance", "amount")))
+ @property
+ def name(self): return resolve(self._idata, ("name",))
+
+ def transactions(self):
+ pagesz = 50
+ page = 1
+ while True:
+ data = self.sess._jreq("v5/engagement/transactions/" + self.id, transactionsPerPage=pagesz, page=page)
+ txlist = resolve(data, ("transactions",))
+ if len(txlist) < 1:
+ break
+ for tx in txlist:
+ yield transaction(self, tx)
+ page += 1
+
+class cardtransaction(data.transaction):
+ def __init__(self, account, data):
+ self.account = account
+ self._data = data
+
+ _datefmt = "%Y-%m-%d"
+
+ @property
+ def value(self):
+ am = resolve(self._data, ("localAmount",))
+ return currency.currency.get(resolve(am, ("currencyCode",))).parse(resolve(am, ("amount",)))
+ @property
+ def message(self): return resolve(self._data, ("description",))
+ @property
+ def date(self):
+ p = time.strptime(resolve(self._data, ("date",)), self._datefmt)
+ return datetime.date(p.tm_year, p.tm_mon, p.tm_mday)
+
+class cardaccount(data.cardaccount):
+ def __init__(self, sess, id, idata):
+ self.sess = sess
+ self.id = id
+ self._data = None
+ self._idata = idata
+
+ @property
+ def data(self):
+ if self._data is None:
+ self._data = self.sess._jreq("v5/engagement/cardaccount/" + self.id)
+ return self._data
+
+ @property
+ def number(self): return resolve(self.data, ("cardAccount", "cardNumber"))
+ @property
+ def balance(self):
+ cc = resolve(self.data, ("transactions", 0, "localAmount", "currencyCode"))
+ return currency.currency.get(cc).parse(resolve(self.data, ("cardAccount", "currentBalance")))
+ @property
+ def name(self): return resolve(self._idata, ("name",))
+
+ def transactions(self):
+ pagesz = 50
+ page = 1
+ while True:
+ data = self.sess._jreq("v5/engagement/cardaccount/" + self.id, transactionsPerPage=pagesz, page=page)
+ txlist = resolve(data, ("transactions",))
+ if len(txlist) < 1:
+ break
+ for tx in txlist:
+ yield cardtransaction(self, tx)
+ page += 1
+