Пример #1
0
    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))
Пример #2
0
    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))