def test_get_billing_calendar_january_returns_correct_calendar(self):
     date = '2020-01-31'
     calendar = bc.get_billing_calendar(date)
     self.assertEqual(dt(2020, 1, 1), calendar.current_month_first_day)
     self.assertEqual(dt(2020, 1, 31), calendar.current_month_last_day)
     self.assertEqual(dt(2019, 12, 1), calendar.previous_month_first_day)
     self.assertEqual(dt(2019, 12, 31), calendar.previous_month_last_day)
     self.assertEqual(31, calendar.days_in_current_month)
 def test_get_billing_calendar_november_returns_correct_calendar(self):
     date = '2020-11-30'
     calendar = bc.get_billing_calendar(date)
     self.assertEqual(dt(2020, 11, 1), calendar.current_month_first_day)
     self.assertEqual(dt(2020, 11, 30), calendar.current_month_last_day)
     self.assertEqual(dt(2020, 10, 1), calendar.previous_month_first_day)
     self.assertEqual(dt(2020, 10, 31), calendar.previous_month_last_day)
     self.assertEqual(30, calendar.days_in_current_month)
 def test_get_billing_calendar_leap_year_feb_returns_correct_calendar(self):
     date = '2020-02-29'
     calendar = bc.get_billing_calendar(date)
     self.assertEqual(dt(2020, 2, 1), calendar.current_month_first_day)
     self.assertEqual(dt(2020, 2, 29), calendar.current_month_last_day)
     self.assertEqual(dt(2020, 1, 1), calendar.previous_month_first_day)
     self.assertEqual(dt(2020, 1, 31), calendar.previous_month_last_day)
     self.assertEqual(29, calendar.days_in_current_month)
 def test_get_billing_calendar_not_leap_year_march_returns_correct_calendar(
         self):
     date = '2019-03-31'
     calendar = bc.get_billing_calendar(date)
     self.assertEqual(dt(2019, 3, 1), calendar.current_month_first_day)
     self.assertEqual(dt(2019, 3, 31), calendar.current_month_last_day)
     self.assertEqual(dt(2019, 2, 1), calendar.previous_month_first_day)
     self.assertEqual(dt(2019, 2, 28), calendar.previous_month_last_day)
     self.assertEqual(31, calendar.days_in_current_month)
Exemplo n.º 5
0
def calculate_bill(member_id=None, account_id=None, bill_date=None):

    """
    calculates the bill for the given bill_date
    """
    billing_calendar = bc.get_billing_calendar(bill_date)
    data = get_readings()
    bills = []

    readings = list(get_readings_by_account_id(account_id, data[member_id]))

    for reading in readings:
        for energy_type in reading:
            bill = get_bill_by_energy_type(energy_type, billing_calendar, reading[energy_type])
            bills.append(bill)

    return (0, 0) if len(bills) == 0 else [sum(x) for x in zip(*bills)]