fix(erp): enable erp pages and menu items
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
-- Migration: 025_create_erp_tables.sql
|
||||
-- Description: Create tables for Finance, Inventory, and Order management
|
||||
|
||||
-- Financial Categories
|
||||
CREATE TABLE IF NOT EXISTS erp_financial_categories (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(20) NOT NULL CHECK (type IN ('income', 'expense')),
|
||||
color VARCHAR(20),
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Bank Accounts
|
||||
CREATE TABLE IF NOT EXISTS erp_bank_accounts (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
bank_name VARCHAR(255),
|
||||
initial_balance DECIMAL(15,2) DEFAULT 0.00,
|
||||
current_balance DECIMAL(15,2) DEFAULT 0.00,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Financial Transactions
|
||||
CREATE TABLE IF NOT EXISTS erp_financial_transactions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
||||
account_id UUID REFERENCES erp_bank_accounts(id),
|
||||
category_id UUID REFERENCES erp_financial_categories(id),
|
||||
description TEXT,
|
||||
amount DECIMAL(15,2) NOT NULL,
|
||||
type VARCHAR(20) NOT NULL CHECK (type IN ('income', 'expense')),
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'paid', 'cancelled')),
|
||||
due_date DATE,
|
||||
payment_date TIMESTAMP WITH TIME ZONE,
|
||||
attachments TEXT[], -- URLs for proofs
|
||||
created_by UUID REFERENCES users(id),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Products & Services
|
||||
CREATE TABLE IF NOT EXISTS erp_products (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
sku VARCHAR(100),
|
||||
description TEXT,
|
||||
price DECIMAL(15,2) NOT NULL,
|
||||
cost_price DECIMAL(15,2),
|
||||
type VARCHAR(20) DEFAULT 'product' CHECK (type IN ('product', 'service')),
|
||||
stock_quantity INT DEFAULT 0,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Orders
|
||||
CREATE TABLE IF NOT EXISTS erp_orders (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
||||
customer_id UUID REFERENCES companies(id), -- Linked to CRM (companies)
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'confirmed', 'completed', 'cancelled')),
|
||||
total_amount DECIMAL(15,2) DEFAULT 0.00,
|
||||
notes TEXT,
|
||||
created_by UUID REFERENCES users(id),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Order Items
|
||||
CREATE TABLE IF NOT EXISTS erp_order_items (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
order_id UUID NOT NULL REFERENCES erp_orders(id) ON DELETE CASCADE,
|
||||
product_id UUID NOT NULL REFERENCES erp_products(id),
|
||||
quantity INT NOT NULL DEFAULT 1,
|
||||
unit_price DECIMAL(15,2) NOT NULL,
|
||||
total_price DECIMAL(15,2) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Indexes for performance and multi-tenancy
|
||||
CREATE INDEX idx_erp_fin_cat_tenant ON erp_financial_categories(tenant_id);
|
||||
CREATE INDEX idx_erp_bank_acc_tenant ON erp_bank_accounts(tenant_id);
|
||||
CREATE INDEX idx_erp_fin_trans_tenant ON erp_financial_transactions(tenant_id);
|
||||
CREATE INDEX idx_erp_products_tenant ON erp_products(tenant_id);
|
||||
CREATE INDEX idx_erp_orders_tenant ON erp_orders(tenant_id);
|
||||
CREATE INDEX idx_erp_order_items_order ON erp_order_items(order_id);
|
||||
Reference in New Issue
Block a user