78 lines
3.0 KiB
SQL
78 lines
3.0 KiB
SQL
-- 采购付款分离改造:数据库迁移脚本
|
|||
|
|
-- 创建时间:2026-03-25
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 表1:采购申请表 (purchase_requests)
|
||
|
|
-- ============================================
|
||
|
|
CREATE TABLE IF NOT EXISTS purchase_requests (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
request_code TEXT UNIQUE NOT NULL,
|
||
|
|
project_id INTEGER NOT NULL,
|
||
|
|
applicant TEXT NOT NULL,
|
||
|
|
request_date DATE NOT NULL,
|
||
|
|
supplier_id INTEGER,
|
||
|
|
supplier_name TEXT,
|
||
|
|
expense_category TEXT NOT NULL,
|
||
|
|
total_amount REAL NOT NULL DEFAULT 0,
|
||
|
|
currency TEXT DEFAULT 'CNY',
|
||
|
|
status TEXT DEFAULT 'pending',
|
||
|
|
remark TEXT,
|
||
|
|
attachments TEXT,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (project_id) REFERENCES projects(id),
|
||
|
|
FOREIGN KEY (supplier_id) REFERENCES suppliers(id)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 表2:采购明细表 (purchase_request_items)
|
||
|
|
-- ============================================
|
||
|
|
CREATE TABLE IF NOT EXISTS purchase_request_items (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
purchase_request_id INTEGER NOT NULL,
|
||
|
|
product_id INTEGER,
|
||
|
|
product_name TEXT NOT NULL,
|
||
|
|
specification TEXT,
|
||
|
|
unit TEXT,
|
||
|
|
quantity REAL NOT NULL DEFAULT 0,
|
||
|
|
unit_price REAL NOT NULL DEFAULT 0,
|
||
|
|
total_price REAL NOT NULL DEFAULT 0,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (purchase_request_id) REFERENCES purchase_requests(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (product_id) REFERENCES products(id)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 表3:库存记录表 (inventory_records)
|
||
|
|
-- ============================================
|
||
|
|
CREATE TABLE IF NOT EXISTS inventory_records (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
record_type TEXT NOT NULL,
|
||
|
|
project_id INTEGER,
|
||
|
|
purchase_request_id INTEGER,
|
||
|
|
product_id INTEGER NOT NULL,
|
||
|
|
quantity REAL NOT NULL DEFAULT 0,
|
||
|
|
unit_price REAL,
|
||
|
|
total_amount REAL,
|
||
|
|
record_date DATE NOT NULL,
|
||
|
|
operator TEXT,
|
||
|
|
remark TEXT,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
FOREIGN KEY (project_id) REFERENCES projects(id),
|
||
|
|
FOREIGN KEY (purchase_request_id) REFERENCES purchase_requests(id),
|
||
|
|
FOREIGN KEY (product_id) REFERENCES products(id)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- ============================================
|
||
|
|
-- 修改:为付款申请表添加采购单关联字段
|
||
|
|
-- ============================================
|
||
|
|
ALTER TABLE payment_requests ADD COLUMN purchase_request_id INTEGER;
|
||
|
|
ALTER TABLE payment_requests ADD COLUMN payment_type TEXT DEFAULT 'company';
|
||
|
|
|
||
|
|
-- 创建索引
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_requests_project ON purchase_requests(project_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_requests_status ON purchase_requests(status);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_request_items_request ON purchase_request_items(purchase_request_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_inventory_records_product ON inventory_records(product_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_inventory_records_project ON inventory_records(project_id);
|