def test_ReversalAdjustment(self): """ reversing incorrect accounting event """ #setUpLowPay() # what initially posted usage_event = Usage(Unit.KWH.amount(50), date(1999, 10, 1), self.acm) # must read http://martinfowler.com/eaaDev/AgreementDispatcher.html event_list = EventList() event_list.add(usage_event) event_list.process() self.assertReallyEqual(Money(500), self.acm.balance_for(ACCOUNT_TYPE.BASE_USAGE)) self.assertReallyEqual(Money(27.5), self.acm.balance_for(ACCOUNT_TYPE.TAX)) # adjust adjustment1 = Usage(Unit.KWH.amount(70), date(1999, 10, 1), adjusted_event=usage_event) #adjustment1 = ReversalAdjustment(usage_event.event_type, date(1999, 11, 1), # adjusted_event=usage_event) event_list.add(adjustment1) event_list.process() self.assertReallyEqual(Money(700), self.acm.balance_for(ACCOUNT_TYPE.BASE_USAGE)) self.assertReallyEqual(Money(38.50), self.acm.balance_for(ACCOUNT_TYPE.TAX))
def test_DifferenceAdjustment(self): usage1 = Usage(Unit.KWH.amount(20), date(1999, 10, 1), self.acm) usage2 = Usage(Unit.KWH.amount(20), date(1999, 10, 2), self.acm) usage3 = Usage(Unit.KWH.amount(30), date(1999, 10, 3), self.acm) event_list = EventList() event_list.add(usage1) event_list.add(usage2) event_list.add(usage3) event_list.process() # total 700kw, $700, $38.5 tax self.assertReallyEqual(Money(700), self.acm.balance_for(ACCOUNT_TYPE.BASE_USAGE)) self.assertReallyEqual(Money(38.50), self.acm.balance_for(ACCOUNT_TYPE.TAX)) # adjustment events new1 = Usage(Unit.KWH.amount(10), date(1999, 10, 1), self.acm) new2 = Usage(Unit.KWH.amount(10), date(1999, 10, 2), self.acm) new3 = Usage(Unit.KWH.amount(15), date(1999, 10, 3), self.acm) adj_date = date(2000, 1, 12) adj = DifferenceAdjustment(adj_date, self.acm) adj.add_old_event(usage1) adj.add_old_event(usage2) adj.add_old_event(usage3) adj.add_new_event(new1) adj.add_new_event(new2) adj.add_new_event(new3) event_list.add(adj) event_list.process() self.assertReallyEqual(Money(350), self.acm.balance_for(ACCOUNT_TYPE.BASE_USAGE)) self.assertReallyEqual(Money(19.25), self.acm.balance_for(ACCOUNT_TYPE.TAX))