CREATE TABLE materials ( id INTEGER NOT NULL, code VARCHAR(80) NOT NULL, spec VARCHAR(300), unit VARCHAR(20), price FLOAT, active BOOLEAN, PRIMARY KEY (id) ) ; CREATE TABLE suppliers ( id INTEGER NOT NULL, code VARCHAR(50), name VARCHAR(200) NOT NULL, contact VARCHAR(50), phone VARCHAR(50), tax_no VARCHAR(80), bank_name VARCHAR(120), bank_account VARCHAR(80), payment_terms VARCHAR(120), active BOOLEAN, PRIMARY KEY (id) ) ; CREATE TABLE users ( id INTEGER NOT NULL, username VARCHAR(50) NOT NULL, password_hash VARCHAR(200) NOT NULL, name VARCHAR(50) NOT NULL, role VARCHAR(20) NOT NULL, active BOOLEAN, created_at DATETIME, PRIMARY KEY (id), UNIQUE (username) ) ; CREATE TABLE orders ( id INTEGER NOT NULL, order_no VARCHAR(50) NOT NULL, doc_type VARCHAR(20) NOT NULL, supplier_name VARCHAR(200), supplier_contact VARCHAR(50), supplier_phone VARCHAR(50), supplier_tax_no VARCHAR(80), supplier_bank_name VARCHAR(120), supplier_bank_account VARCHAR(80), payment_terms VARCHAR(120), our_company VARCHAR(200), our_contact VARCHAR(50), our_phone VARCHAR(50), our_tax_no VARCHAR(80), tax_rate VARCHAR(30), order_date VARCHAR(20), delivery_place VARCHAR(300), note TEXT, total_amount FLOAT, status VARCHAR(20), created_by INTEGER, created_by_name VARCHAR(50), created_at DATETIME, submitted_at DATETIME, reviewed_by VARCHAR(50), reviewed_at DATETIME, approved_by VARCHAR(50), approved_at DATETIME, reject_reason TEXT, PRIMARY KEY (id), FOREIGN KEY(created_by) REFERENCES users (id) ) ; CREATE TABLE approval_logs ( id INTEGER NOT NULL, order_id INTEGER, action VARCHAR(50), user_name VARCHAR(50), comment TEXT, created_at DATETIME, PRIMARY KEY (id), FOREIGN KEY(order_id) REFERENCES orders (id) ) ; CREATE TABLE order_items ( id INTEGER NOT NULL, order_id INTEGER, seq INTEGER, material_code VARCHAR(80), material_spec VARCHAR(300), unit VARCHAR(20), qty FLOAT, price FLOAT, amount FLOAT, delivery_date VARCHAR(30), remark VARCHAR(200), PRIMARY KEY (id), FOREIGN KEY(order_id) REFERENCES orders (id) ) ;