31 lines
1.3 KiB
SQL
31 lines
1.3 KiB
SQL
-- Supplier Purchase Orders
|
|
CREATE TABLE IF NOT EXISTS supplier_pos (
|
|
id SERIAL PRIMARY KEY,
|
|
po_number VARCHAR(30) NOT NULL UNIQUE,
|
|
supplier_id INTEGER NOT NULL REFERENCES suppliers(id) ON DELETE CASCADE,
|
|
planning_id INTEGER REFERENCES planning_history(id) ON DELETE SET NULL,
|
|
order_date DATE NOT NULL DEFAULT CURRENT_DATE,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
|
notes TEXT,
|
|
total_value NUMERIC(12,2) NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Supplier Purchase Order line items
|
|
CREATE TABLE IF NOT EXISTS supplier_po_items (
|
|
id SERIAL PRIMARY KEY,
|
|
supplier_po_id INTEGER NOT NULL REFERENCES supplier_pos(id) ON DELETE CASCADE,
|
|
component_id INTEGER REFERENCES components(id) ON DELETE SET NULL,
|
|
part_number VARCHAR(100),
|
|
component_name VARCHAR(255),
|
|
supplier_part_number VARCHAR(100),
|
|
quantity INTEGER NOT NULL DEFAULT 0,
|
|
unit_price NUMERIC(12,4) NOT NULL DEFAULT 0,
|
|
line_total NUMERIC(12,2) NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_pos_supplier ON supplier_pos(supplier_id);
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_pos_planning ON supplier_pos(planning_id);
|
|
CREATE INDEX IF NOT EXISTS idx_supplier_po_items_po ON supplier_po_items(supplier_po_id);
|