diff --git a/app/api/schema/settings.py b/app/api/schema/settings.py index eb97e5acaa..1a61252fbf 100644 --- a/app/api/schema/settings.py +++ b/app/api/schema/settings.py @@ -200,10 +200,15 @@ class Meta: smtp_port = fields.Integer(allow_none=True) smtp_encryption = fields.Str(allow_none=True) # Can be tls, ssl, none + # Event Invoices settings + invoice_sending_day = fields.Integer(allow_none=False, default=1) + invoice_sending_timezone = fields.Str(allow_none=False, default="UTC") + # Admin Invoice Details admin_billing_contact_name = fields.Str(allow_none=True) admin_billing_phone = fields.Str(allow_none=True) admin_billing_email = fields.Email(allow_none=True) + admin_billing_state = fields.Str(allow_none=True) admin_billing_country = fields.Str(allow_none=True) admin_billing_tax_info = fields.Str(allow_none=True) admin_company = fields.Str(allow_none=True) diff --git a/app/api/schema/users.py b/app/api/schema/users.py index 80bf3b2da9..3ce250ec81 100644 --- a/app/api/schema/users.py +++ b/app/api/schema/users.py @@ -72,6 +72,7 @@ class Meta: contact = fields.Str(allow_none=True) billing_contact_name = fields.Str(allow_none=True) billing_phone = fields.Str(allow_none=True) + billing_state = fields.Str(allow_none=True) billing_country = fields.Str(allow_none=True) billing_tax_info = fields.Str(allow_none=True) company = fields.Str(allow_none=True) diff --git a/app/factories/setting.py b/app/factories/setting.py index 3d0b983b6b..de8b068e9b 100644 --- a/app/factories/setting.py +++ b/app/factories/setting.py @@ -104,6 +104,10 @@ class Meta: facebook_url = common.url_ youtube_url = common.url_ + # Event Invoices settings + invoice_sending_day = common.integer_ + invoice_sending_timezone = common.timezone_ + # # Generators # @@ -117,3 +121,16 @@ class Meta: # cookie_policy = common.string_ cookie_policy_link = common.url_ + + # Admin Invoice Details + admin_billing_contact_name = common.string_ + admin_billing_phone = common.string_ + admin_billing_email = common.email_ + admin_billing_state = common.string_ + admin_billing_country = common.string_ + admin_billing_tax_info = common.string_ + admin_company = common.string_ + admin_billing_address = common.string_ + admin_billing_city = common.string_ + admin_billing_zip = common.string_ + admin_billing_additional_info = common.string_ diff --git a/app/models/setting.py b/app/models/setting.py index bd88c73202..b84628f86e 100644 --- a/app/models/setting.py +++ b/app/models/setting.py @@ -131,6 +131,11 @@ class Setting(db.Model): facebook_url = db.Column(db.String) youtube_url = db.Column(db.String) + # + # Event Invoices settings + # + invoice_sending_day = db.Column(db.Integer, nullable=False, default=1) + invoice_sending_timezone = db.Column(db.String, nullable=False, default="UTC") # # Admin Invoice Details # @@ -138,6 +143,7 @@ class Setting(db.Model): admin_billing_phone = db.Column(db.String) admin_billing_email = db.Column(db.String) admin_billing_country = db.Column(db.String) + admin_billing_state = db.Column(db.String) admin_billing_tax_info = db.Column(db.String) admin_company = db.Column(db.String) admin_billing_address = db.Column(db.String) @@ -213,6 +219,8 @@ def __init__(self, omise_live_secret=None, alipay_publishable_key=None, alipay_secret_key=None, + invoice_sending_day=None, + invoice_sending_timezone=None, admin_billing_contact_name=None, admin_billing_phone=None, admin_billing_email=None, @@ -221,6 +229,7 @@ def __init__(self, admin_company=None, admin_billing_address=None, admin_billing_city=None, + admin_billing_state=None, admin_billing_zip=None, admin_billing_additional_info=None, order_expiry_time=None): @@ -294,9 +303,14 @@ def __init__(self, self.alipay_publishable_key = alipay_publishable_key self.alipay_secret_key = alipay_secret_key + # Event Invoice settings + self.invoice_sending_timezone = invoice_sending_timezone + self.invoice_sending_day = invoice_sending_day + # Admin Invoice Details self.admin_billing_contact_name = admin_billing_contact_name self.admin_billing_phone = admin_billing_phone + self.admin_billing_state = admin_billing_state self.admin_billing_country = admin_billing_country self.admin_billing_tax_info = admin_billing_tax_info self.admin_company = admin_company diff --git a/app/models/user.py b/app/models/user.py index 47e91e7e39..697f6a97f4 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -83,6 +83,7 @@ class User(SoftDeletionModel): # Event Invoice Details billing_contact_name = db.Column(db.String) billing_phone = db.Column(db.String) + billing_state = db.Column(db.String) billing_country = db.Column(db.String) billing_tax_info = db.Column(db.String) company = db.Column(db.String) diff --git a/migrations/versions/4bdb4809f519_.py b/migrations/versions/4bdb4809f519_.py new file mode 100644 index 0000000000..7a875476c5 --- /dev/null +++ b/migrations/versions/4bdb4809f519_.py @@ -0,0 +1,34 @@ +"""empty message + +Revision ID: 4bdb4809f519 +Revises: 4279c2ac565b +Create Date: 2019-07-02 12:58:07.279306 + +""" + +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utils + + +# revision identifiers, used by Alembic. +revision = '4bdb4809f519' +down_revision = '43e8c59337ag' + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('settings', sa.Column('admin_billing_state', sa.String(), nullable=True)) + op.add_column('settings', sa.Column('invoice_sending_day', sa.Integer(), server_default='1', nullable=False)) + op.add_column('settings', sa.Column('invoice_sending_timezone', sa.String(), server_default='UTC', nullable=False)) + op.add_column('users', sa.Column('billing_state', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'billing_state') + op.drop_column('settings', 'invoice_sending_day') + op.drop_column('settings', 'invoice_sending_timezone') + op.drop_column('settings', 'admin_billing_state') + # ### end Alembic commands ###