Update: 2026-05-15 04:35:25

This commit is contained in:
Hamza-Ayed
2026-05-15 04:35:25 +03:00
parent 1ca7e01ce0
commit 2f1ecca593
14 changed files with 858 additions and 10 deletions

View File

@@ -0,0 +1,41 @@
-- ══════════════════════════════════════════════════
-- Migration 008: Enhance invoice_lines for tax classification
-- Adds tax_amount, discount_amount, net_total, tax_category
-- ══════════════════════════════════════════════════
-- Add tax_amount column (calculated from tax_rate × line_total)
ALTER TABLE invoice_lines
ADD COLUMN IF NOT EXISTS tax_amount DECIMAL(12,3) DEFAULT 0 AFTER tax_rate;
-- Add discount_amount column
ALTER TABLE invoice_lines
ADD COLUMN IF NOT EXISTS discount_amount DECIMAL(12,3) DEFAULT 0 AFTER tax_amount;
-- Add net_total column (subtotal + tax - discount)
ALTER TABLE invoice_lines
ADD COLUMN IF NOT EXISTS net_total DECIMAL(12,3) DEFAULT 0 AFTER discount_amount;
-- Add tax_category for classification
-- standard = 16%, zero_rated = 0%, exempt = no tax, special = variable rate
ALTER TABLE invoice_lines
ADD COLUMN IF NOT EXISTS tax_category VARCHAR(20) DEFAULT 'standard' AFTER net_total;
-- Backfill existing data: calculate tax_amount from line_total * tax_rate
UPDATE invoice_lines
SET tax_amount = ROUND(line_total * tax_rate, 3)
WHERE tax_amount = 0 AND line_total > 0;
-- Backfill: net_total = line_total + tax_amount - discount
UPDATE invoice_lines
SET net_total = ROUND(line_total + tax_amount - discount_amount, 3)
WHERE net_total = 0 AND line_total > 0;
-- Classify zero-rated items
UPDATE invoice_lines
SET tax_category = 'zero_rated'
WHERE tax_rate = 0 OR tax_rate IS NULL;
-- Classify standard rate items
UPDATE invoice_lines
SET tax_category = 'standard'
WHERE tax_rate = 0.16;