Merge pull request #1764 from alphagov/vb_billing_model

Add billing models and small alteration to billing tables (Pivotal #155511547)
This commit is contained in:
Venus Bailey
2018-03-13 10:16:43 +00:00
committed by GitHub
2 changed files with 66 additions and 1 deletions

View File

@@ -11,7 +11,7 @@ from sqlalchemy.dialects.postgresql import (
UUID,
JSON
)
from sqlalchemy import UniqueConstraint, CheckConstraint
from sqlalchemy import UniqueConstraint, CheckConstraint, Index
from notifications_utils.columns import Columns
from notifications_utils.recipients import (
validate_email_address,
@@ -1725,3 +1725,44 @@ class DailySortedLetter(db.Model):
unsorted_count = db.Column(db.Integer, nullable=False, default=0)
sorted_count = db.Column(db.Integer, nullable=False, default=0)
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
class FactBilling(db.Model):
__tablename__ = "ft_billing"
bst_date = db.Column(db.Date, nullable=False, primary_key=True, index=True)
template_id = db.Column(UUID(as_uuid=True), nullable=True, primary_key=True, index=True)
service_id = db.Column(UUID(as_uuid=True), nullable=True, index=True)
organisation_id = db.Column(UUID(as_uuid=True), nullable=True)
annual_billing_id = db.Column(UUID(as_uuid=True), nullable=True)
notification_type = db.Column(db.Text, nullable=True)
provider = db.Column(db.Text, nullable=True)
crown = db.Column(db.Text, nullable=True)
rate_multiplier = db.Column(db.Numeric(), nullable=True)
international = db.Column(db.Boolean, nullable=True)
rate = db.Column(db.Numeric(), nullable=True)
billable_units = db.Column(db.Numeric(), nullable=True)
notifications_sent = db.Column(db.Integer(), nullable=True)
class DateTimeDimension(db.Model):
__tablename__ = "dm_datetime"
bst_date = db.Column(db.Date, nullable=False, primary_key=True, index=True)
year = db.Column(db.Integer(), nullable=False)
month = db.Column(db.Integer(), nullable=False)
month_name = db.Column(db.Text(), nullable=False)
day = db.Column(db.Integer(), nullable=False)
bst_day = db.Column(db.Integer(), nullable=False)
day_of_year = db.Column(db.Integer(), nullable=False)
week_day_name = db.Column(db.Text(), nullable=False)
calendar_week = db.Column(db.Integer(), nullable=False)
quartal = db.Column(db.Text(), nullable=False)
year_quartal = db.Column(db.Text(), nullable=False)
year_month = db.Column(db.Text(), nullable=False)
year_calendar_week = db.Column(db.Text(), nullable=False)
financial_year = db.Column(db.Integer(), nullable=False)
utc_daytime_start = db.Column(db.DateTime, nullable=False)
utc_daytime_end = db.Column(db.DateTime, nullable=False)
Index('ix_dm_datetime_yearmonth', DateTimeDimension.year, DateTimeDimension.month)