template-saas-database-v2/ddl/schemas/commissions/01-enums.sql
Adrian Flores Cortes 8915b7ce71 [SAAS-020] feat: Add Commissions DDL schema
- Add 01-schema.sql: Create commissions schema
- Add 02-tables.sql: commission_schemes, commission_assignments, commission_entries, commission_periods
- Add 03-functions.sql: calculate_commission(), close_period()
- Add 04-triggers.sql: Auto-calculate on insert, prevent double-counting
- Add 05-indexes.sql: Performance indexes for queries
- Add 06-seed.sql: Sample commission schemes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 22:51:06 -06:00

37 lines
1.2 KiB
SQL

-- ============================================
-- TEMPLATE-SAAS: Commissions Enums
-- Version: 1.0.0
-- Module: SAAS-020
-- ============================================
-- Scheme type enum (how commission is calculated)
CREATE TYPE commissions.scheme_type AS ENUM (
'percentage', -- Percentage of sale amount
'fixed', -- Fixed amount per sale
'tiered' -- Tiered rates based on amount ranges
);
-- Applies to enum (what the commission applies to)
CREATE TYPE commissions.applies_to AS ENUM (
'all', -- All sales
'products', -- Specific products only
'categories' -- Specific categories only
);
-- Entry status enum (commission entry lifecycle)
CREATE TYPE commissions.entry_status AS ENUM (
'pending', -- Awaiting approval
'approved', -- Approved, pending payment
'rejected', -- Rejected by admin
'paid', -- Commission has been paid
'cancelled' -- Cancelled (e.g., sale reversed)
);
-- Period status enum (payment period lifecycle)
CREATE TYPE commissions.period_status AS ENUM (
'open', -- Currently accepting entries
'closed', -- Closed, pending processing
'processing', -- Being processed for payment
'paid' -- All commissions paid out
);