bmc_hub/migrations/134_subscription_billing_dates.sql

23 lines
975 B
MySQL
Raw Permalink Normal View History

-- Migration 134: Add billing period tracking to subscriptions
-- Adds next_invoice_date and period_start fields for tracking billing cycles
ALTER TABLE sag_subscriptions
ADD COLUMN IF NOT EXISTS next_invoice_date DATE,
ADD COLUMN IF NOT EXISTS period_start DATE;
-- Set default values for existing subscriptions
UPDATE sag_subscriptions
SET
next_invoice_date = start_date + INTERVAL '1 month',
period_start = start_date
WHERE next_invoice_date IS NULL AND status = 'active';
-- Create index for efficient querying of subscriptions due for invoicing
CREATE INDEX IF NOT EXISTS idx_sag_subscriptions_next_invoice
ON sag_subscriptions(next_invoice_date)
WHERE status = 'active';
COMMENT ON COLUMN sag_subscriptions.next_invoice_date IS 'Next date when an invoice should be generated for this subscription';
COMMENT ON COLUMN sag_subscriptions.period_start IS 'Start date of the current billing period - shifts to next period when invoice is generated';