- 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>
37 lines
1.2 KiB
SQL
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
|
|
);
|