27 lines
1.1 KiB
SQL
27 lines
1.1 KiB
SQL
CREATE TABLE IF NOT EXISTS invoices (
|
|
id CHAR(36) NOT NULL PRIMARY KEY,
|
|
student_id CHAR(36) NOT NULL,
|
|
invoice_number VARCHAR(50) NOT NULL UNIQUE,
|
|
invoice_date DATE NOT NULL,
|
|
due_date DATE NOT NULL,
|
|
total_amount DECIMAL(10, 2) NOT NULL,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'Draft' CHECK (status IN ('Draft', 'Posted', 'Paid', 'Void')),
|
|
journal_entry_id CHAR(36) DEFAULT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
FOREIGN KEY (student_id) REFERENCES students(id),
|
|
FOREIGN KEY (journal_entry_id) REFERENCES journal_entries(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS invoice_lines (
|
|
id CHAR(36) NOT NULL PRIMARY KEY,
|
|
invoice_id CHAR(36) NOT NULL,
|
|
description VARCHAR(255) NOT NULL,
|
|
amount DECIMAL(10, 2) NOT NULL,
|
|
revenue_account_id CHAR(36) NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (revenue_account_id) REFERENCES accounts(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|