Files
wms-app/seed_company.sql
T
2026-05-13 09:28:06 +07:00

340 lines
23 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ================================================================
-- 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;