-- ================================================================ -- Seed data — set the target company_id here before running -- Databases: wms (settings) + wms2 (operational) -- ================================================================ SET @cid = 12; -- ← change this to the target company_id SET FOREIGN_KEY_CHECKS = 0; -- ──────────────────────────────────────────────────────────────── -- wms: Company settings -- Keys match CompanySettingManager defaults -- ──────────────────────────────────────────────────────────────── INSERT INTO wms.company_setting (company_id, setting_key, value, updated_at) VALUES (@cid, 'advanced_location', '0', NOW()), (@cid, 'default_stock_status', '0', NOW()), (@cid, 'auto_invoice_and_credit_note', '0', NOW()), (@cid, 'auto_complete_on_ship', '0', NOW()), (@cid, 'location_label_rack', 'Location', NOW()), (@cid, 'location_label_zone', 'Zone', NOW()), (@cid, 'location_label_aisle', 'Aisle', NOW()); -- ──────────────────────────────────────────────────────────────── -- Warehouses (ids 1 & 2 match existing td_stock_1 / td_stock_2) -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_warehouse AUTO_INCREMENT = 1; INSERT INTO wms2.md_warehouse (id, company_id, warehouse_name, location, manager, description, status) VALUES (1, @cid, 'Main Warehouse', '123 Industrial Rd, Bangkok 10400', 0, 'Primary receiving and dispatch', 1), (2, @cid, 'Cold Storage', '456 Commerce St, Bangkok 10600', 0, 'Temperature-controlled items', 1); -- ──────────────────────────────────────────────────────────────── -- Product categories -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_product_category AUTO_INCREMENT = 1; INSERT INTO wms2.md_product_category (id, company_id, category, slug, description, status) VALUES (1, @cid, 'Electronics', 'electronics', 'Electronic devices and accessories', 1), (2, @cid, 'Packaging', 'packaging', 'Packaging and protective materials', 1), (3, @cid, 'Raw Materials', 'raw-materials', 'Components and raw materials', 1); -- ──────────────────────────────────────────────────────────────── -- Contact types -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_contact_type AUTO_INCREMENT = 1; INSERT INTO wms2.md_contact_type (id, company_id, contact_type, description, status) VALUES (1, @cid, 'Supplier', 'Product suppliers and vendors', 1), (2, @cid, 'Customer', 'End customers and buyers', 1); -- ──────────────────────────────────────────────────────────────── -- Contacts -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_contact AUTO_INCREMENT = 1; INSERT INTO wms2.md_contact (id, company_id, contact_name, tax_id, organization, branch, contact_type, billing_address, shipping_location, shipping_address, remark, contact_image, status) VALUES (1, @cid, 'Somchai Jaidee', '1234567890123', 'ABC Tech Supplies Co., Ltd.', 'Head Office', 1, '789 Supplier Lane, Bangrak, Bangkok 10500', 'Bangkok', '789 Supplier Lane, Bangrak, Bangkok 10500', 'Primary electronics supplier', '', 1), (2, @cid, 'Malee Srisakul', '9876543210123', 'Malee Trading Co., Ltd.', 'Head Office', 2, '321 Customer Ave, Sathon, Bangkok 10120', 'Bangkok', '321 Customer Ave, Sathon, Bangkok 10120', 'Retail customer', '', 1), (3, @cid, 'Wanchai Piyamas', '5678901234567', 'TechCore Solutions Co., Ltd.','Head Office', 2, '654 Tech Park, Pak Kret, Nonthaburi 11120','Nonthaburi', '654 Tech Park, Pak Kret, Nonthaburi 11120','Corporate B2B client', '', 1); -- ──────────────────────────────────────────────────────────────── -- Products -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_product AUTO_INCREMENT = 1; INSERT INTO wms2.md_product (id, company_id, product_name, sku, barcode, price, cost_price, uom, min_stock, reorder_point, category, description, status) VALUES (1, @cid, 'Laptop A14 Pro', 'LAP-001', '8851234567001', 35000.0000, 28000.00, 'pcs', 5.0000, 10.0000, 1, 'High-performance 14-inch laptop', 1), (2, @cid, 'USB Hub Pro 7-Port', 'USB-001', '8851234567002', 1200.0000, 800.00, 'pcs', 10.0000, 20.0000, 1, '7-port USB 3.0 hub with power adapter', 1), (3, @cid, 'Bubble Wrap Roll 50m', 'PKG-001', '8851234567003', 350.0000, 200.00, 'roll', 5.0000, 10.0000, 2, 'Protective bubble wrap 50-metre roll', 1), (4, @cid, 'PCB Module Type-A', 'RAW-001', '8851234567004', 850.0000, 620.00, 'pcs', 20.0000, 40.0000, 3, 'PCB module for electronic assembly', 1), (5, @cid, 'Wireless Mouse BT5', 'MOU-001', '8851234567005', 990.0000, 650.00, 'pcs', 10.0000, 20.0000, 1, 'Bluetooth 5.0 ergonomic wireless mouse', 1); -- ──────────────────────────────────────────────────────────────── -- Lots -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_lot AUTO_INCREMENT = 1; INSERT INTO wms2.md_lot (id, company_id, product_sku, lot_number, expiry_date, description) VALUES (1, @cid, 'LAP-001', 'LAP-LOT-001', '2027-12-31', 'Batch January 2026'), (2, @cid, 'USB-001', 'USB-LOT-001', '2028-06-30', 'Batch January 2026'), (3, @cid, 'PKG-001', 'PKG-LOT-001', '2027-03-31', 'Batch January 2026'), (4, @cid, 'RAW-001', 'RAW-LOT-001', '2026-12-31', 'Batch February 2026'), (5, @cid, 'MOU-001', 'MOU-LOT-001', '2028-12-31', 'Batch February 2026'); -- ──────────────────────────────────────────────────────────────── -- Storage configuration (simple mode: zone / aisle fields empty) -- md_storage.warehouse stores warehouse id as varchar -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_storage AUTO_INCREMENT = 1; INSERT INTO wms2.md_storage (id, company_id, warehouse, zone, aisle_from, aisle_to, rack_from, rack_to, description, status) VALUES (1, @cid, '1', '', '', '', 'A1', 'A5', 'Main shelf row A', 1), (2, @cid, '1', '', '', '', 'B1', 'B3', 'Main shelf row B', 1), (3, @cid, '2', '', '', '', 'C1', 'C3', 'Cold storage racks', 1); -- ──────────────────────────────────────────────────────────────── -- Racks (simple mode: zone = aisle = rack label) -- Mirrors PurchaseOrderManager::receivePo(): -- if ($zone === '' && $rack !== '') $zone = $aisle = $rack; -- td_stock_id = id of the occupying stock-in row in td_stock_{warehouse} -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.md_rack AUTO_INCREMENT = 1; INSERT INTO wms2.md_rack (id, company_id, td_stock_id, warehouse, storage_id, zone, aisle, rack, product_sku) VALUES -- Warehouse 1 — row A (A1–A5) ( 1, @cid, 1, 1, 1, 'A1','A1','A1', 'LAP-001'), -- td_stock_1 row 1 ( 2, @cid, 2, 1, 1, 'A2','A2','A2', 'USB-001'), -- td_stock_1 row 2 ( 3, @cid, 4, 1, 1, 'A3','A3','A3', 'MOU-001'), -- td_stock_1 row 4 ( 4, @cid, 0, 1, 1, 'A4','A4','A4', NULL), ( 5, @cid, 0, 1, 1, 'A5','A5','A5', NULL), -- Warehouse 1 — row B (B1–B3) ( 6, @cid, 3, 1, 2, 'B1','B1','B1', 'PKG-001'), -- td_stock_1 row 3 ( 7, @cid, 5, 1, 2, 'B2','B2','B2', 'RAW-001'), -- td_stock_1 row 5 ( 8, @cid, 0, 1, 2, 'B3','B3','B3', NULL), -- Warehouse 2 — cold storage (C1–C3) ( 9, @cid, 1, 2, 3, 'C1','C1','C1', 'RAW-001'), -- td_stock_2 row 1 (10, @cid, 2, 2, 3, 'C2','C2','C2', 'PKG-001'), -- td_stock_2 row 2 (11, @cid, 0, 2, 3, 'C3','C3','C3', NULL); -- ──────────────────────────────────────────────────────────────── -- Stock movements — Warehouse 1 (td_stock_1) -- status 1 = approved; balance already counted in warehouse_balance -- lot_number / serial_number are NOT NULL in schema → use '' not NULL -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.td_stock_1 AUTO_INCREMENT = 1; INSERT INTO wms2.td_stock_1 (id, ref_id, company_id, uuid, type, ref_warehouse, date, product_sku, lot_number, serial_number, source, source_id, `in`, `out`, price, zone, aisle, rack, contact_id, description, status, log) VALUES -- IN from PO-20260108-0001 (1, 0, @cid, 'SEED260110_01', 'in', '', '2026-01-10 09:00:00', 'LAP-001','LAP-LOT-001','', 'po', 1, 10.0000, 0.0000, 28000.0000, 'A1','A1','A1', 1, 'PO-20260108-0001', 1, '{}'), (2, 0, @cid, 'SEED260110_02', 'in', '', '2026-01-10 09:05:00', 'USB-001','USB-LOT-001','', 'po', 1, 50.0000, 0.0000, 800.0000, 'A2','A2','A2', 1, 'PO-20260108-0001', 1, '{}'), -- IN manual (3, 0, @cid, 'SEED260115_01', 'in', '', '2026-01-15 10:00:00', 'PKG-001','PKG-LOT-001','', '', 0, 30.0000, 0.0000, 200.0000, 'B1','B1','B1', 0, 'Manual stock-in', 1, '{}'), (4, 0, @cid, 'SEED260201_01', 'in', '', '2026-02-01 09:00:00', 'MOU-001','MOU-LOT-001','', '', 0, 25.0000, 0.0000, 650.0000, 'A3','A3','A3', 0, 'Manual stock-in', 1, '{}'), (5, 0, @cid, 'SEED260205_01', 'in', '', '2026-02-05 09:00:00', 'RAW-001','RAW-LOT-001','', '', 0, 100.0000, 0.0000, 620.0000, 'B2','B2','B2', 0, 'Manual stock-in', 1, '{}'), -- OUT for Sales Orders (ref_id = stock-in row consumed) (6, 1, @cid, 'SEED260305_01', 'out', '', '2026-03-05 14:00:00', 'LAP-001','LAP-LOT-001','', 'order', 1, 0.0000, 3.0000, 35000.0000, 'A1','A1','A1', 2, 'ORD-20260304-0001', 1, '{}'), (7, 2, @cid, 'SEED260310_01', 'out', '', '2026-03-10 14:00:00', 'USB-001','USB-LOT-001','', 'order', 2, 0.0000, 15.0000, 1200.0000, 'A2','A2','A2', 3, 'ORD-20260309-0001', 1, '{}'); -- ──────────────────────────────────────────────────────────────── -- Stock movements — Warehouse 2 (td_stock_2) -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.td_stock_2 AUTO_INCREMENT = 1; INSERT INTO wms2.td_stock_2 (id, ref_id, company_id, uuid, type, ref_warehouse, date, product_sku, lot_number, serial_number, source, source_id, `in`, `out`, price, zone, aisle, rack, contact_id, description, status, log) VALUES (1, 0, @cid, 'SEED260201_C1', 'in', '', '2026-02-01 10:00:00', 'RAW-001','RAW-LOT-001','', '', 0, 50.0000, 0.0000, 620.0000, 'C1','C1','C1', 0, 'Manual stock-in', 1, '{}'), (2, 0, @cid, 'SEED260215_C2', 'in', '', '2026-02-15 10:00:00', 'PKG-001','PKG-LOT-001','', '', 0, 20.0000, 0.0000, 200.0000, 'C2','C2','C2', 0, 'Manual stock-in', 1, '{}'); -- ──────────────────────────────────────────────────────────────── -- Warehouse balance (monthly summaries — approved movements only) -- ──────────────────────────────────────────────────────────────── INSERT INTO wms2.warehouse_balance (company_id, warehouse_id, product_sku, month, total_in, total_out) VALUES -- 2026-01 Warehouse 1 (@cid, 1, 'LAP-001', '2026-01', 10.0000, 0.0000), (@cid, 1, 'USB-001', '2026-01', 50.0000, 0.0000), (@cid, 1, 'PKG-001', '2026-01', 30.0000, 0.0000), -- 2026-02 Warehouse 1 (@cid, 1, 'MOU-001', '2026-02', 25.0000, 0.0000), (@cid, 1, 'RAW-001', '2026-02', 100.0000, 0.0000), -- 2026-02 Warehouse 2 (@cid, 2, 'RAW-001', '2026-02', 50.0000, 0.0000), (@cid, 2, 'PKG-001', '2026-02', 20.0000, 0.0000), -- 2026-03 Warehouse 1 (outbound) (@cid, 1, 'LAP-001', '2026-03', 0.0000, 3.0000), (@cid, 1, 'USB-001', '2026-03', 0.0000, 15.0000); -- ──────────────────────────────────────────────────────────────── -- Purchase Order (status 3 = fully received, payment 1 = paid) -- items JSON mirrors PurchaseOrderManager::receivePo() write-back -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.td_purchase_order AUTO_INCREMENT = 1; INSERT INTO wms2.td_purchase_order (id, company_id, uuid, po_number, contact_id, po_date, expected_date, warehouse_id, status, payment_status, subtotal, discount, tax, shipping_fee, grand_total, items, notes, log, created_at) VALUES (1, @cid, MD5('po-1-testco'), 'PO-20260108-0001', 1, '2026-01-08', '2026-01-10', 1, 3, 1, 320000.00, 0.00, 22400.00, 0.00, 342400.00, '[{"id":0,"product_sku":"LAP-001","product_name":"Laptop A14 Pro","quantity":10,"unit_price":28000,"total_price":280000,"received_qty":10,"stock_in_id":1,"receive_wh":1,"receive_zone":"A1","receive_aisle":"A1","receive_rack":"A1"},{"id":1,"product_sku":"USB-001","product_name":"USB Hub Pro 7-Port","quantity":50,"unit_price":800,"total_price":40000,"received_qty":50,"stock_in_id":2,"receive_wh":1,"receive_zone":"A2","receive_aisle":"A2","receive_rack":"A2"}]', 'Initial electronics stock', '[{"user_id":null,"dt":"2026-01-08 08:30:00","action":"create"},{"user_id":null,"dt":"2026-01-08 09:00:00","action":"confirm"},{"user_id":null,"dt":"2026-01-10 09:05:00","action":"receive","new_status":3}]', '2026-01-08 08:30:00'); -- ──────────────────────────────────────────────────────────────── -- Sales Orders (status 3 = completed, payment 1 = paid) -- items JSON mirrors OrderManager::confirmOrder() write-back -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.td_order AUTO_INCREMENT = 1; INSERT INTO wms2.td_order (id, company_id, uuid, order_number, contact_id, order_date, status, payment_status, subtotal, discount, tax, shipping_fee, shipping_tracking_number, grand_total, items, notes, log, created_at) VALUES (1, @cid, MD5('ord-1-testco'), 'ORD-20260304-0001', 2, '2026-03-04', 3, 1, 105000.0000, 0.0000, 7350.0000, 0.0000, 'TH123456789', 112350.0000, '[{"product_sku":"LAP-001","product_name":"Laptop A14 Pro","quantity":3,"price":35000,"warehouse_id":1,"zone":"A1","aisle":"A1","rack":"A1","lot_number":"LAP-LOT-001","serial_number":"","stock_out_id":6}]', '', '[{"user_id":null,"dt":"2026-03-04 10:00:00","action":"create"},{"user_id":null,"dt":"2026-03-04 10:30:00","action":"confirm"},{"user_id":null,"dt":"2026-03-05 14:00:00","action":"complete"}]', '2026-03-04 10:00:00'), (2, @cid, MD5('ord-2-testco'), 'ORD-20260309-0001', 3, '2026-03-09', 3, 1, 18000.0000, 0.0000, 1260.0000, 150.0000, 'TH987654321', 19410.0000, '[{"product_sku":"USB-001","product_name":"USB Hub Pro 7-Port","quantity":15,"price":1200,"warehouse_id":1,"zone":"A2","aisle":"A2","rack":"A2","lot_number":"USB-LOT-001","serial_number":"","stock_out_id":7}]', 'Urgent — priority dispatch', '[{"user_id":null,"dt":"2026-03-09 11:00:00","action":"create"},{"user_id":null,"dt":"2026-03-09 11:30:00","action":"confirm"},{"user_id":null,"dt":"2026-03-10 14:00:00","action":"complete"}]', '2026-03-09 11:00:00'); -- ──────────────────────────────────────────────────────────────── -- Invoices (doc_type invoice, status 2 = paid) -- ──────────────────────────────────────────────────────────────── ALTER TABLE wms2.td_invoice AUTO_INCREMENT = 1; INSERT INTO wms2.td_invoice (id, company_id, uuid, doc_type, invoice_number, ref_invoice_id, order_id, contact_id, issued_date, due_date, subtotal, discount, tax, shipping_fee, grand_total, items, status, notes, log) VALUES (1, @cid, MD5('inv-1-testco'), 'invoice', 'INV-20260305-0001', 0, 1, 2, '2026-03-05', '2026-03-19', 105000.0000, 0.0000, 7350.0000, 0.0000, 112350.0000, '[{"product_sku":"LAP-001","product_name":"Laptop A14 Pro","quantity":3,"price":35000,"subtotal":105000}]', 2, '', '[{"user_id":null,"dt":"2026-03-05 14:30:00","action":"issue"},{"user_id":null,"dt":"2026-03-12 10:00:00","action":"pay"}]'), (2, @cid, MD5('inv-2-testco'), 'invoice', 'INV-20260310-0001', 0, 2, 3, '2026-03-10', '2026-03-24', 18000.0000, 0.0000, 1260.0000, 150.0000, 19410.0000, '[{"product_sku":"USB-001","product_name":"USB Hub Pro 7-Port","quantity":15,"price":1200,"subtotal":18000}]', 2, '', '[{"user_id":null,"dt":"2026-03-10 14:30:00","action":"issue"},{"user_id":null,"dt":"2026-03-18 09:00:00","action":"pay"}]'); -- ──────────────────────────────────────────────────────────────── -- Barcodes -- SKU format : SKU|{sku}|{lot}|{serial} (serial blank = no tracking) -- LOC format : LOC|{warehouse_id}|{rack} (simple mode) -- ──────────────────────────────────────────────────────────────── INSERT INTO wms2.md_barcode (company_id, barcode_type, barcode, product_sku, lot_number, serial_number, warehouse_id, zone, aisle, rack, print_count, last_printed_dt, status) VALUES -- SKU labels (@cid,'sku','SKU|LAP-001|LAP-LOT-001|', 'LAP-001','LAP-LOT-001',NULL, NULL,NULL,NULL,NULL, 1,'2026-01-10 09:30:00',1), (@cid,'sku','SKU|USB-001|USB-LOT-001|', 'USB-001','USB-LOT-001',NULL, NULL,NULL,NULL,NULL, 1,'2026-01-10 09:30:00',1), (@cid,'sku','SKU|PKG-001|PKG-LOT-001|', 'PKG-001','PKG-LOT-001',NULL, NULL,NULL,NULL,NULL, 1,'2026-01-15 10:30:00',1), (@cid,'sku','SKU|RAW-001|RAW-LOT-001|', 'RAW-001','RAW-LOT-001',NULL, NULL,NULL,NULL,NULL, 1,'2026-02-01 09:30:00',1), (@cid,'sku','SKU|MOU-001|MOU-LOT-001|', 'MOU-001','MOU-LOT-001',NULL, NULL,NULL,NULL,NULL, 1,'2026-02-01 09:30:00',1), -- Location labels — Warehouse 1 (@cid,'loc','LOC|1|A1', NULL,NULL,NULL, 1,NULL,NULL,'A1', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|A2', NULL,NULL,NULL, 1,NULL,NULL,'A2', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|A3', NULL,NULL,NULL, 1,NULL,NULL,'A3', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|A4', NULL,NULL,NULL, 1,NULL,NULL,'A4', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|A5', NULL,NULL,NULL, 1,NULL,NULL,'A5', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|B1', NULL,NULL,NULL, 1,NULL,NULL,'B1', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|B2', NULL,NULL,NULL, 1,NULL,NULL,'B2', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|1|B3', NULL,NULL,NULL, 1,NULL,NULL,'B3', 1,'2026-01-05 08:00:00',1), -- Location labels — Warehouse 2 (@cid,'loc','LOC|2|C1', NULL,NULL,NULL, 2,NULL,NULL,'C1', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|2|C2', NULL,NULL,NULL, 2,NULL,NULL,'C2', 1,'2026-01-05 08:00:00',1), (@cid,'loc','LOC|2|C3', NULL,NULL,NULL, 2,NULL,NULL,'C3', 1,'2026-01-05 08:00:00',1); -- ──────────────────────────────────────────────────────────────── -- Rack log (occupy events matching each occupied rack above) -- md_rack_id references explicit ids 1–11 set above -- ──────────────────────────────────────────────────────────────── INSERT INTO wms2.md_rack_log (company_id, md_rack_id, user_id, dt, login, action, product_sku, td_stock_id) VALUES -- Warehouse 1 (@cid, 1, NULL, '2026-01-10 09:00:00', '2026-01-10 09:00:00', 'occupy', 'LAP-001', 1), (@cid, 2, NULL, '2026-01-10 09:05:00', '2026-01-10 09:05:00', 'occupy', 'USB-001', 2), (@cid, 6, NULL, '2026-01-15 10:00:00', '2026-01-15 10:00:00', 'occupy', 'PKG-001', 3), (@cid, 3, NULL, '2026-02-01 09:00:00', '2026-02-01 09:00:00', 'occupy', 'MOU-001', 4), (@cid, 7, NULL, '2026-02-05 09:00:00', '2026-02-05 09:00:00', 'occupy', 'RAW-001', 5), -- Warehouse 2 (@cid, 9, NULL, '2026-02-01 10:00:00', '2026-02-01 10:00:00', 'occupy', 'RAW-001', 1), (@cid, 10, NULL, '2026-02-15 10:00:00', '2026-02-15 10:00:00', 'occupy', 'PKG-001', 2); SET FOREIGN_KEY_CHECKS = 1;