CREATE TABLE expenses ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL REFERENCES organizations(id) ON DELETE CASCADE, outlet_id UUID NOT NULL REFERENCES outlets(id) ON DELETE CASCADE, receiver VARCHAR(255) NOT NULL, transaction_date DATE NOT NULL, code_number VARCHAR(50) NOT NULL, description TEXT, tax DECIMAL(15,2) NOT NULL DEFAULT 0, total DECIMAL(15,2) NOT NULL DEFAULT 0, reserved1 TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE INDEX idx_expenses_organization_id ON expenses(organization_id); CREATE INDEX idx_expenses_outlet_id ON expenses(outlet_id); CREATE INDEX idx_expenses_transaction_date ON expenses(transaction_date); CREATE INDEX idx_expenses_code_number ON expenses(code_number); CREATE INDEX idx_expenses_created_at ON expenses(created_at); CREATE TABLE expense_items ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), expense_id UUID NOT NULL REFERENCES expenses(id) ON DELETE CASCADE, chart_of_account_id UUID NOT NULL REFERENCES chart_of_accounts(id) ON DELETE RESTRICT, description TEXT, amount DECIMAL(15,2) NOT NULL DEFAULT 0, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE INDEX idx_expense_items_expense_id ON expense_items(expense_id); CREATE INDEX idx_expense_items_chart_of_account_id ON expense_items(chart_of_account_id);