populate test data

This commit is contained in:
Thanakorn S
2026-05-13 09:28:06 +07:00
parent 79e66bd354
commit 3614b72924
+339
View File
@@ -0,0 +1,339 @@
-- ================================================================
-- 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;