class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version %>
def change create_table :accountability_accounts do |t| t.belongs_to :billable, null: true, polymorphic: true t.integer :statement_schedule, default: 0, null: false # end_of_month bi_weekly t.datetime :last_balanced_at, default: nil, null: true t.timestamps end create_table :accountability_statements do |t| t.belongs_to :account, null: false, index: { name: :index_account_on_statement } t.datetime :end_date, default: nil, null: false t.timestamps end create_table :accountability_debits do |t| t.belongs_to :account, null: false, index: { name: :index_account_on_debit } t.belongs_to :payment, null: true, index: { name: :index_payment_on_debit } t.decimal :amount, default: 0.00, precision: 8, scale: 2, null: false t.timestamps end create_table :accountability_credits do |t| t.belongs_to :account, null: false, index: { name: :index_account_on_credit } t.belongs_to :order_item, null: false, index: { name: :index_order_item_on_credit } t.belongs_to :statement, null: false, index: { name: :index_statement_on_credit } t.decimal :amount, default: 0.00, precision: 8, scale: 2, null: false t.decimal :taxes, default: 0.00, precision: 8, scale: 2, null: false t.timestamps end create_table :accountability_payments do |t| t.belongs_to :account, null: false, index: { name: :index_account_on_payment } t.belongs_to :billing_configuration, null: false, index: { name: :index_billing_configuration_on_payment } t.decimal :amount, default: 0.00, precision: 8, scale: 2, null: false t.integer :status, default: 0, null: false # Pending, Processing, Complete, Failed t.timestamps end create_table :accountability_order_groups do |t| t.belongs_to :account, null: true, index: { name: :index_account_on_order_group } t.integer :status, default: 0, null: false # Pending, Complete, Abandoned t.text :notes, default: nil, null: true, limit: 10_000 t.timestamps end create_table :accountability_order_items do |t| t.belongs_to :order_group, null: false, index: { name: :index_order_group_on_order_iem } t.belongs_to :product, null: false, index: { name: :index_product_on_order_iem } t.text :source_scope, default: nil, null: true, limit: 1_000 t.datetime :termination_date, default: nil, null: true t.timestamps end create_table :accountability_deductions do |t| t.belongs_to :credit, null: false, index: { name: :index_credit_on_deduction } t.belongs_to :discount, null: false, index: { name: :index_discount_on_deduction } t.decimal :amount, default: 0.00, precision: 8, scale: 2, null: false t.timestamps end create_table :accountability_discounts do |t| t.belongs_to :order_item, null: false, index: { name: :index_order_item_on_discount } t.belongs_to :coupon, null: false, index: { name: :index_coupon_on_discount } t.timestamps end create_table :accountability_products do |t| t.boolean :public, default: true, null: false t.boolean :tax_exempt, default: false, null: false t.decimal :price, default: 0.00, precision: 8, scale: 2, null: false t.integer :quantity, default: 1, null: false t.string :name, default: nil, null: false t.string :sku, default: nil, null: true t.text :description, default: nil, null: true, limit: 10_000 t.integer :schedule, default: 0, null: false # OneTime, Weekly, Monthly, Annually t.string :offerable_category, default: nil, null: false t.text :source_scope, default: nil, null: true, limit: 1_000 t.text :billing_configuration, default: nil, null: true, limit: 1_000 t.datetime :activation_date, default: nil, null: true t.datetime :expiration_date, default: nil, null: true t.datetime :termination_date, default: nil, null: true t.timestamps end create_table :accountability_coupons do |t| t.decimal :amount, default: 0.00, precision: 8, scale: 2, null: false t.boolean :public, default: true, null: false t.integer :limit, default: nil, null: true t.string :name, default: nil, null: false t.string :code, default: nil, null: true t.integer :usage_cap, default: 1, null: false t.datetime :activation_date, default: nil, null: true t.datetime :expiration_date, default: nil, null: true t.datetime :termination_date, default: nil, null: true t.timestamps end # rubocop:disable Rails/CreateTableWithTimestamps create_table :accountability_coupons_products, id: false do |t| t.belongs_to :product, index: { name: :index_product_on_product_coupon } t.belongs_to :coupon, index: { name: :index_coupon_on_product_coupon } end # rubocop:enable Rails/CreateTableWithTimestamps # rubocop:disable Rails/CreateTableWithTimestamps create_table :accountability_identities do |t| t.belongs_to :identifiable, polymorphic: true, index: { name: :index_identifiable_on_identity } end # rubocop:enable Rails/CreateTableWithTimestamps create_table :accountability_billing_configurations do |t| t.belongs_to :account, null: false, index: { name: :index_account_on_billing_configuration } t.boolean :primary, default: false, null: false t.text :billing_address, default: nil, null: true # JSON serialized value object t.text :active_merchant_data, default: nil, null: true # JSON serialized data for ActiveMerchant t.integer :provider, default: 0, null: false # [unselected, stripe] t.string :token, default: nil, null: true # A token used to retrieve & charge the payment method from the provider t.string :configuration_name, default: nil, null: true # A name for the payment method t.string :contact_email, default: nil, null: true t.string :contact_first_name, default: nil, null: true t.string :contact_last_name, default: nil, null: true t.timestamps end create_table :accountability_price_overrides do |t| t.belongs_to :product, index: { name: :index_product_on_price_override } t.belongs_to :offerable_source, null: false, polymorphic: true, index: { name: :index_offerable_source_on_price_override } t.decimal :price, default: 0.00, precision: 8, scale: 2, null: false # The inventory item's new price t.text :description, default: nil, null: true, limit: 10_000 # Optional field for describing adjustment rationale t.timestamps end end
end