Add billing models and small alteration to billing tables

This commit is contained in:
venusbb
2018-03-12 18:19:26 +00:00
parent 32185fa587
commit 59898b7349
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)

View File

@@ -0,0 +1,24 @@
"""
Revision ID: 0176_alter_billing_columns
Revises: 0175_drop_job_statistics_table
Create Date: 2018-03-12 16:54:30.663897
"""
from alembic import op
import sqlalchemy as sa
revision = '0176_alter_billing_columns'
down_revision = '0175_drop_job_statistics_table'
def upgrade():
op.alter_column('dm_datetime', 'calendar_week', existing_type=sa.INTEGER(), nullable=False)
op.alter_column('dm_datetime', 'day', existing_type=sa.INTEGER(), nullable=False)
op.alter_column('dm_datetime', 'financial_year', existing_type=sa.INTEGER(), nullable=False)
def downgrade():
op.alter_column('dm_datetime', 'financial_year', existing_type=sa.INTEGER(), nullable=True)
op.alter_column('dm_datetime', 'day', existing_type=sa.INTEGER(), nullable=True)
op.alter_column('dm_datetime', 'calendar_week', existing_type=sa.INTEGER(), nullable=True)