You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

948 line
38 KiB

  1. -- Rewrite identifying values in fpsms_demo. Does not delete rows.
  2. -- Ids, foreign keys, statuses, quantities, and dates stay.
  3. --
  4. -- Run only against a disposable full copy of production:
  5. -- mysql -h127.0.0.1 -P3306 -uroot -p fpsms_demo < scripts/anonymize_demo_copy.sql
  6. --
  7. -- Refuses to run unless the current database is fpsms_demo.
  8. -- Refuses to run again once settings.name = DEMO.anonymized.v1 exists.
  9. -- Password for every user, including demo / demo.stock / demo.prod, is Demo2026!.
  10. --
  11. -- MySQL Workbench stops a query after 30 seconds and reports error 2013.
  12. -- Before running: Preferences, SQL Editor, DBMS connection read timeout = 3600.
  13. -- Reconnect, select fpsms_demo, then run this whole file.
  14. SET NAMES utf8mb4;
  15. SET SESSION sql_safe_updates = 0;
  16. SET SESSION group_concat_max_len = 1000000;
  17. DROP PROCEDURE IF EXISTS demo_exec_if_table;
  18. DROP PROCEDURE IF EXISTS demo_apply_map;
  19. DROP PROCEDURE IF EXISTS demo_apply_pair;
  20. DROP PROCEDURE IF EXISTS demo_add_missing;
  21. DROP PROCEDURE IF EXISTS demo_blank_columns;
  22. DROP PROCEDURE IF EXISTS demo_replace_floors;
  23. DROP PROCEDURE IF EXISTS demo_remap_shop_csv;
  24. DROP PROCEDURE IF EXISTS demo_drop_maps;
  25. DROP PROCEDURE IF EXISTS anonymize_demo_copy;
  26. DELIMITER $$
  27. CREATE PROCEDURE demo_drop_maps()
  28. BEGIN
  29. DROP TABLE IF EXISTS _demo_map_item;
  30. DROP TABLE IF EXISTS _demo_map_shop;
  31. DROP TABLE IF EXISTS _demo_map_lot;
  32. DROP TABLE IF EXISTS _demo_map_loc;
  33. DROP TABLE IF EXISTS _demo_map_truck;
  34. DROP TABLE IF EXISTS _demo_map_do;
  35. DROP TABLE IF EXISTS _demo_map_po;
  36. DROP TABLE IF EXISTS _demo_map_jo;
  37. DROP TABLE IF EXISTS _demo_map_pk;
  38. DROP TABLE IF EXISTS _demo_map_si;
  39. DROP TABLE IF EXISTS _demo_map_st;
  40. DROP TABLE IF EXISTS _demo_map_pp;
  41. DROP TABLE IF EXISTS _demo_map_user;
  42. DROP TABLE IF EXISTS _demo_map_username;
  43. DROP TABLE IF EXISTS _demo_map_person;
  44. DROP TABLE IF EXISTS _demo_map_equip;
  45. DROP TABLE IF EXISTS _demo_map_stage;
  46. END$$
  47. CREATE PROCEDURE demo_exec_if_table(IN p_table VARCHAR(64), IN p_sql TEXT)
  48. BEGIN
  49. DECLARE n INT DEFAULT 0;
  50. SELECT COUNT(*) INTO n
  51. FROM information_schema.tables
  52. WHERE table_schema = DATABASE() AND table_name = p_table;
  53. IF n > 0 THEN
  54. SET @demo_sql = p_sql;
  55. PREPARE demo_stmt FROM @demo_sql;
  56. EXECUTE demo_stmt;
  57. DEALLOCATE PREPARE demo_stmt;
  58. END IF;
  59. END$$
  60. CREATE PROCEDURE demo_apply_map(IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_map VARCHAR(64))
  61. BEGIN
  62. DECLARE n INT DEFAULT 0;
  63. SELECT COUNT(*) INTO n
  64. FROM information_schema.columns
  65. WHERE table_schema = DATABASE()
  66. AND table_name = p_table
  67. AND column_name = p_column;
  68. IF n > 0 THEN
  69. SET @demo_sql = CONCAT(
  70. 'UPDATE `', p_table, '` t INNER JOIN `', p_map, '` m ',
  71. 'ON t.`', p_column, '` COLLATE utf8mb4_unicode_ci = m.old_value ',
  72. 'SET t.`', p_column, '` = m.new_value'
  73. );
  74. PREPARE demo_stmt FROM @demo_sql;
  75. EXECUTE demo_stmt;
  76. DEALLOCATE PREPARE demo_stmt;
  77. END IF;
  78. END$$
  79. CREATE PROCEDURE demo_apply_pair(
  80. IN p_table VARCHAR(64),
  81. IN p_code VARCHAR(64),
  82. IN p_name VARCHAR(64),
  83. IN p_map VARCHAR(64)
  84. )
  85. BEGIN
  86. DECLARE ncode INT DEFAULT 0;
  87. DECLARE nname INT DEFAULT 0;
  88. SELECT COUNT(*) INTO ncode
  89. FROM information_schema.columns
  90. WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_code;
  91. SELECT COUNT(*) INTO nname
  92. FROM information_schema.columns
  93. WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_name;
  94. IF ncode > 0 AND nname > 0 THEN
  95. SET @demo_sql = CONCAT(
  96. 'UPDATE `', p_table, '` t INNER JOIN `', p_map, '` m ',
  97. 'ON t.`', p_code, '` COLLATE utf8mb4_unicode_ci = m.old_value ',
  98. 'SET t.`', p_code, '` = m.new_value, t.`', p_name, '` = m.new_name'
  99. );
  100. PREPARE demo_stmt FROM @demo_sql;
  101. EXECUTE demo_stmt;
  102. DEALLOCATE PREPARE demo_stmt;
  103. ELSEIF ncode > 0 THEN
  104. CALL demo_apply_map(p_table, p_code, p_map);
  105. END IF;
  106. END$$
  107. CREATE PROCEDURE demo_add_missing(
  108. IN p_map VARCHAR(64),
  109. IN p_table VARCHAR(64),
  110. IN p_column VARCHAR(64),
  111. IN p_prefix VARCHAR(24)
  112. )
  113. demo_add_missing_body: BEGIN
  114. DECLARE n INT DEFAULT 0;
  115. SELECT COUNT(*) INTO n
  116. FROM information_schema.columns
  117. WHERE table_schema = DATABASE()
  118. AND table_name = p_table
  119. AND column_name = p_column;
  120. IF n = 0 THEN
  121. LEAVE demo_add_missing_body;
  122. END IF;
  123. DELETE FROM _demo_map_stage;
  124. SET @demo_sql = CONCAT(
  125. 'INSERT IGNORE INTO _demo_map_stage (old_value) ',
  126. 'SELECT DISTINCT `', p_column, '` FROM `', p_table, '` ',
  127. 'WHERE `', p_column, '` IS NOT NULL AND `', p_column, '` <> '''''
  128. );
  129. PREPARE demo_stmt FROM @demo_sql;
  130. EXECUTE demo_stmt;
  131. DEALLOCATE PREPARE demo_stmt;
  132. SET @demo_sql = CONCAT(
  133. 'DELETE s FROM _demo_map_stage s INNER JOIN `', p_map, '` m ',
  134. 'ON m.old_value = s.old_value'
  135. );
  136. PREPARE demo_stmt FROM @demo_sql;
  137. EXECUTE demo_stmt;
  138. DEALLOCATE PREPARE demo_stmt;
  139. SET @demo_sql = CONCAT(
  140. 'INSERT INTO `', p_map, '` (old_value, new_value) ',
  141. 'SELECT old_value, CONCAT(''', p_prefix, ''', rn) FROM (',
  142. ' SELECT old_value, ROW_NUMBER() OVER (ORDER BY old_value) AS rn FROM _demo_map_stage',
  143. ') numbered'
  144. );
  145. PREPARE demo_stmt FROM @demo_sql;
  146. EXECUTE demo_stmt;
  147. DEALLOCATE PREPARE demo_stmt;
  148. END$$
  149. CREATE PROCEDURE demo_blank_columns()
  150. BEGIN
  151. DECLARE done INT DEFAULT 0;
  152. DECLARE tname VARCHAR(64);
  153. DECLARE cname VARCHAR(64);
  154. DECLARE cur CURSOR FOR
  155. SELECT table_name, column_name
  156. FROM information_schema.columns
  157. WHERE table_schema = DATABASE()
  158. AND data_type IN ('varchar', 'char', 'text', 'tinytext', 'mediumtext', 'longtext')
  159. AND table_name NOT LIKE '\_demo\_map\_%'
  160. AND table_name NOT IN ('settings', 'DATABASECHANGELOG', 'DATABASECHANGELOGLOCK', 'authority', 'uom_conversion', 'currency')
  161. AND LOWER(column_name) IN (
  162. 'remarks', 'remark', 'reason', 'issue_remark', 'errormessage',
  163. 'addr1', 'addr2', 'addr3', 'addr4',
  164. 'contactno', 'contactemail', 'contactname', 'brno', 'district',
  165. 'phone1', 'phone2', 'staffno', 'department', 'title',
  166. 'sendermail', 'tomail', 'subject', 'content',
  167. 'districtreference', 'countryoforigin',
  168. 'dnno', 'invoiceno',
  169. 'subjectcht', 'subjecteng', 'contentcht', 'contenteng'
  170. );
  171. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  172. OPEN cur;
  173. blank_loop: LOOP
  174. FETCH cur INTO tname, cname;
  175. IF done = 1 THEN
  176. LEAVE blank_loop;
  177. END IF;
  178. SET @demo_sql = CONCAT(
  179. 'UPDATE `', tname, '` SET `', cname, '` = '''' WHERE `', cname, '` IS NOT NULL AND `', cname, '` <> '''''
  180. );
  181. PREPARE demo_stmt FROM @demo_sql;
  182. EXECUTE demo_stmt;
  183. DEALLOCATE PREPARE demo_stmt;
  184. END LOOP;
  185. CLOSE cur;
  186. END$$
  187. CREATE PROCEDURE demo_replace_floors()
  188. BEGIN
  189. DECLARE done INT DEFAULT 0;
  190. DECLARE tname VARCHAR(64);
  191. DECLARE cname VARCHAR(64);
  192. DECLARE cset VARCHAR(64);
  193. DECLARE bincol VARCHAR(64);
  194. DECLARE cur CURSOR FOR
  195. SELECT table_name, column_name, character_set_name
  196. FROM information_schema.columns
  197. WHERE table_schema = DATABASE()
  198. AND data_type IN ('varchar', 'char', 'text', 'tinytext', 'mediumtext', 'longtext')
  199. AND table_name NOT LIKE '\_demo\_map\_%'
  200. AND table_name NOT IN ('DATABASECHANGELOG', 'DATABASECHANGELOGLOCK', 'authority');
  201. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  202. OPEN cur;
  203. floor_loop: LOOP
  204. FETCH cur INTO tname, cname, cset;
  205. IF done = 1 THEN
  206. LEAVE floor_loop;
  207. END IF;
  208. SET bincol = IF(cset = 'utf8mb4', 'utf8mb4_bin', 'utf8mb3_bin');
  209. SET @demo_sql = CONCAT(
  210. 'UPDATE `', tname, '` SET `', cname, '` = CASE ',
  211. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''2/F'' THEN ''A/F'' ',
  212. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''4/F'' THEN ''B/F'' ',
  213. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''1/F'' THEN ''C/F'' ',
  214. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''3/F'' THEN ''D/F'' ',
  215. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''2F'' THEN ''AF'' ',
  216. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''4F'' THEN ''BF'' ',
  217. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''1F'' THEN ''CF'' ',
  218. 'WHEN UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' = ''3F'' THEN ''DF'' ',
  219. 'ELSE `', cname, '` END ',
  220. 'WHERE UPPER(TRIM(`', cname, '`)) COLLATE ', bincol, ' IN (''2/F'',''4/F'',''1/F'',''3/F'',''2F'',''4F'',''1F'',''3F'')'
  221. );
  222. PREPARE demo_stmt FROM @demo_sql;
  223. EXECUTE demo_stmt;
  224. DEALLOCATE PREPARE demo_stmt;
  225. SET @demo_sql = CONCAT(
  226. 'UPDATE `', tname, '` SET `', cname, '` = ',
  227. 'REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`', cname, '`, ',
  228. '''-2F-'', ''-AF-''), ''-4F-'', ''-BF-''), ''-1F-'', ''-CF-''), ''-3F-'', ''-DF-''), ',
  229. '''-2/F-'', ''-A/F-''), ''-4/F-'', ''-B/F-''), ''-1/F-'', ''-C/F-''), ''-3/F-'', ''-D/F-'') ',
  230. 'WHERE `', cname, '` COLLATE ', bincol, ' LIKE ''%-2F-%'' OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-4F-%'' ',
  231. 'OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-1F-%'' OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-3F-%'' ',
  232. 'OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-2/F-%'' OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-4/F-%'' ',
  233. 'OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-1/F-%'' OR `', cname, '` COLLATE ', bincol, ' LIKE ''%-3/F-%'''
  234. );
  235. PREPARE demo_stmt FROM @demo_sql;
  236. EXECUTE demo_stmt;
  237. DEALLOCATE PREPARE demo_stmt;
  238. END LOOP;
  239. CLOSE cur;
  240. END$$
  241. CREATE PROCEDURE demo_remap_shop_csv(IN p_setting VARCHAR(255))
  242. demo_remap_shop_csv_body: BEGIN
  243. DECLARE done INT DEFAULT 0;
  244. DECLARE v LONGTEXT;
  245. DECLARE oldv VARCHAR(255);
  246. DECLARE newv VARCHAR(255);
  247. DECLARE setting_rows INT DEFAULT 0;
  248. DECLARE cur CURSOR FOR
  249. SELECT old_value, new_value
  250. FROM _demo_map_shop
  251. ORDER BY CHAR_LENGTH(old_value) DESC, old_value;
  252. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  253. SELECT COUNT(*) INTO setting_rows
  254. FROM settings
  255. WHERE name = p_setting COLLATE utf8mb4_0900_ai_ci;
  256. IF setting_rows = 0 THEN
  257. LEAVE demo_remap_shop_csv_body;
  258. END IF;
  259. SELECT IFNULL(value, '') INTO v
  260. FROM settings
  261. WHERE name = p_setting COLLATE utf8mb4_0900_ai_ci
  262. LIMIT 1;
  263. IF v IS NULL OR v COLLATE utf8mb4_0900_ai_ci = '' THEN
  264. LEAVE demo_remap_shop_csv_body;
  265. END IF;
  266. SET v = CONCAT(',', REPLACE(v, ' ', ''), ',');
  267. OPEN cur;
  268. shop_csv_loop: LOOP
  269. FETCH cur INTO oldv, newv;
  270. IF done = 1 THEN
  271. LEAVE shop_csv_loop;
  272. END IF;
  273. SET v = REPLACE(
  274. v COLLATE utf8mb4_bin,
  275. CONCAT(',', oldv COLLATE utf8mb4_bin, ','),
  276. CONCAT(',', newv COLLATE utf8mb4_bin, ',')
  277. );
  278. END LOOP;
  279. CLOSE cur;
  280. SET v = TRIM(BOTH ',' FROM v);
  281. UPDATE settings
  282. SET value = IFNULL(v, '')
  283. WHERE name = p_setting COLLATE utf8mb4_0900_ai_ci;
  284. END$$
  285. CREATE PROCEDURE anonymize_demo_copy()
  286. BEGIN
  287. DECLARE marker_count INT DEFAULT 0;
  288. DECLARE demo_id BIGINT DEFAULT NULL;
  289. DECLARE stock_id BIGINT DEFAULT NULL;
  290. DECLARE prod_id BIGINT DEFAULT NULL;
  291. DECLARE pwd_hash VARCHAR(80) DEFAULT '$2a$10$9eqxnNGtxFADAW9AbbjRIevr8YWgBqkLr//23U6qYOWs5U9figE2u';
  292. DECLARE CONTINUE HANDLER FOR NOT FOUND SET demo_id = demo_id;
  293. DECLARE EXIT HANDLER FOR SQLEXCEPTION
  294. BEGIN
  295. ROLLBACK;
  296. CALL demo_drop_maps();
  297. RESIGNAL;
  298. END;
  299. IF DATABASE() IS NULL OR DATABASE() <> 'fpsms_demo' THEN
  300. SIGNAL SQLSTATE '45000'
  301. SET MESSAGE_TEXT = 'Refusing to anonymize: current database is not fpsms_demo';
  302. END IF;
  303. SELECT COUNT(*) INTO marker_count FROM settings WHERE name = 'DEMO.anonymized.v1';
  304. IF marker_count > 0 THEN
  305. SIGNAL SQLSTATE '45000'
  306. SET MESSAGE_TEXT = 'Refusing to anonymize: DEMO.anonymized.v1 already exists';
  307. END IF;
  308. CALL demo_drop_maps();
  309. CREATE TABLE _demo_map_stage (
  310. old_value VARCHAR(512) NOT NULL,
  311. PRIMARY KEY (old_value)
  312. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  313. CREATE TABLE _demo_map_item (
  314. old_value VARCHAR(255) NOT NULL,
  315. new_value VARCHAR(255) NOT NULL,
  316. new_name VARCHAR(255) NOT NULL,
  317. PRIMARY KEY (old_value)
  318. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  319. CREATE TABLE _demo_map_shop (
  320. old_value VARCHAR(255) NOT NULL,
  321. new_value VARCHAR(255) NOT NULL,
  322. new_name VARCHAR(255) NOT NULL,
  323. PRIMARY KEY (old_value)
  324. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  325. CREATE TABLE _demo_map_lot (
  326. old_value VARCHAR(512) NOT NULL,
  327. new_value VARCHAR(64) NOT NULL,
  328. PRIMARY KEY (old_value)
  329. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  330. CREATE TABLE _demo_map_loc (
  331. old_value VARCHAR(512) NOT NULL,
  332. new_value VARCHAR(64) NOT NULL,
  333. PRIMARY KEY (old_value)
  334. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  335. CREATE TABLE _demo_map_truck (
  336. old_value VARCHAR(255) NOT NULL,
  337. new_value VARCHAR(64) NOT NULL,
  338. PRIMARY KEY (old_value)
  339. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  340. CREATE TABLE _demo_map_do (
  341. old_value VARCHAR(255) NOT NULL,
  342. new_value VARCHAR(64) NOT NULL,
  343. PRIMARY KEY (old_value)
  344. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  345. CREATE TABLE _demo_map_po (
  346. old_value VARCHAR(255) NOT NULL,
  347. new_value VARCHAR(64) NOT NULL,
  348. PRIMARY KEY (old_value)
  349. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  350. CREATE TABLE _demo_map_jo (
  351. old_value VARCHAR(255) NOT NULL,
  352. new_value VARCHAR(64) NOT NULL,
  353. PRIMARY KEY (old_value)
  354. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  355. CREATE TABLE _demo_map_pk (
  356. old_value VARCHAR(255) NOT NULL,
  357. new_value VARCHAR(64) NOT NULL,
  358. PRIMARY KEY (old_value)
  359. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  360. CREATE TABLE _demo_map_si (
  361. old_value VARCHAR(255) NOT NULL,
  362. new_value VARCHAR(64) NOT NULL,
  363. PRIMARY KEY (old_value)
  364. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  365. CREATE TABLE _demo_map_st (
  366. old_value VARCHAR(255) NOT NULL,
  367. new_value VARCHAR(64) NOT NULL,
  368. PRIMARY KEY (old_value)
  369. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  370. CREATE TABLE _demo_map_pp (
  371. old_value VARCHAR(255) NOT NULL,
  372. new_value VARCHAR(64) NOT NULL,
  373. PRIMARY KEY (old_value)
  374. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  375. CREATE TABLE _demo_map_equip (
  376. old_value VARCHAR(255) NOT NULL,
  377. new_value VARCHAR(64) NOT NULL,
  378. PRIMARY KEY (old_value)
  379. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  380. CREATE TABLE _demo_map_user (
  381. user_id BIGINT NOT NULL,
  382. old_username VARCHAR(255) NULL,
  383. new_username VARCHAR(255) NOT NULL,
  384. old_name VARCHAR(255) NULL,
  385. new_name VARCHAR(255) NOT NULL,
  386. PRIMARY KEY (user_id)
  387. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  388. CREATE TABLE _demo_map_username (
  389. old_value VARCHAR(255) NOT NULL,
  390. new_value VARCHAR(255) NOT NULL,
  391. PRIMARY KEY (old_value)
  392. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  393. CREATE TABLE _demo_map_person (
  394. old_value VARCHAR(255) NOT NULL,
  395. new_value VARCHAR(255) NOT NULL,
  396. PRIMARY KEY (old_value)
  397. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  398. SELECT u.id INTO demo_id
  399. FROM `user` u
  400. JOIN user_authority ua ON ua.userId = u.id
  401. JOIN authority a ON a.id = ua.authId
  402. WHERE a.authority = 'ADMIN'
  403. ORDER BY u.deleted, u.id
  404. LIMIT 1;
  405. IF demo_id IS NULL THEN
  406. SELECT id INTO demo_id FROM `user` ORDER BY deleted, id LIMIT 1;
  407. END IF;
  408. SELECT u.id INTO stock_id
  409. FROM `user` u
  410. WHERE u.id <> IFNULL(demo_id, -1)
  411. AND EXISTS (
  412. SELECT 1 FROM user_authority ua
  413. JOIN authority a ON a.id = ua.authId
  414. WHERE ua.userId = u.id AND a.authority = 'STOCK'
  415. )
  416. AND NOT EXISTS (
  417. SELECT 1 FROM user_authority ua
  418. JOIN authority a ON a.id = ua.authId
  419. WHERE ua.userId = u.id AND a.authority = 'ADMIN'
  420. )
  421. ORDER BY u.deleted, u.id
  422. LIMIT 1;
  423. SELECT u.id INTO prod_id
  424. FROM `user` u
  425. WHERE u.id <> IFNULL(demo_id, -1)
  426. AND u.id <> IFNULL(stock_id, -1)
  427. AND EXISTS (
  428. SELECT 1 FROM user_authority ua
  429. JOIN authority a ON a.id = ua.authId
  430. WHERE ua.userId = u.id AND a.authority = 'PROD'
  431. )
  432. AND NOT EXISTS (
  433. SELECT 1 FROM user_authority ua
  434. JOIN authority a ON a.id = ua.authId
  435. WHERE ua.userId = u.id AND a.authority = 'ADMIN'
  436. )
  437. ORDER BY u.deleted, u.id
  438. LIMIT 1;
  439. INSERT INTO _demo_map_user (user_id, old_username, new_username, old_name, new_name)
  440. SELECT id,
  441. NULLIF(username, ''),
  442. CASE
  443. WHEN id = demo_id THEN 'demo'
  444. WHEN id = stock_id THEN 'demo.stock'
  445. WHEN id = prod_id THEN 'demo.prod'
  446. ELSE CONCAT('USER-', id)
  447. END,
  448. NULLIF(name, ''),
  449. CASE
  450. WHEN id = demo_id THEN 'Demo'
  451. WHEN id = stock_id THEN 'Demo Stock'
  452. WHEN id = prod_id THEN 'Demo Prod'
  453. ELSE CONCAT('User ', id)
  454. END
  455. FROM `user`;
  456. INSERT INTO _demo_map_username (old_value, new_value)
  457. SELECT old_username, MIN(new_username)
  458. FROM _demo_map_user
  459. WHERE old_username IS NOT NULL
  460. GROUP BY old_username;
  461. INSERT INTO _demo_map_person (old_value, new_value)
  462. SELECT old_name, MIN(new_name)
  463. FROM _demo_map_user
  464. WHERE old_name IS NOT NULL
  465. GROUP BY old_name;
  466. INSERT INTO _demo_map_item (old_value, new_value, new_name)
  467. SELECT code, CONCAT('ITEM-', MIN(id)), CONCAT('Item ', MIN(id))
  468. FROM items
  469. WHERE code IS NOT NULL AND code <> ''
  470. GROUP BY code;
  471. INSERT INTO _demo_map_shop (old_value, new_value, new_name)
  472. SELECT code, CONCAT('SHOP-', MIN(id)), CONCAT('Shop ', MIN(id))
  473. FROM shop
  474. WHERE code IS NOT NULL AND code <> ''
  475. GROUP BY code;
  476. INSERT INTO _demo_map_lot (old_value, new_value)
  477. SELECT lotNo, CONCAT('LOT-', MIN(id))
  478. FROM inventory_lot
  479. WHERE lotNo IS NOT NULL AND lotNo <> ''
  480. GROUP BY lotNo;
  481. CALL demo_add_missing('_demo_map_lot', 'stock_in_line', 'lotNo', 'LOT-S');
  482. CALL demo_add_missing('_demo_map_lot', 'stock_in_line', 'productLotNo', 'LOT-P');
  483. CALL demo_add_missing('_demo_map_lot', 'delivery_order_line', 'm18Lot', 'LOT-M');
  484. CALL demo_add_missing('_demo_map_lot', 'stocktakerecord', 'lotNo', 'LOT-T');
  485. CALL demo_add_missing('_demo_map_lot', 'stock_adjustment_record', 'lotNo', 'LOT-A');
  486. CALL demo_add_missing('_demo_map_lot', 'stock_transfer_record', 'lotNo', 'LOT-R');
  487. CALL demo_add_missing('_demo_map_lot', 'item_lot_trace_log', 'lotNo', 'LOT-L');
  488. CALL demo_add_missing('_demo_map_lot', 'bag_lot_line', 'lotNo', 'LOT-B');
  489. CALL demo_add_missing('_demo_map_lot', 'pick_execution_issue', 'lot_no', 'LOT-I');
  490. INSERT INTO _demo_map_loc (old_value, new_value)
  491. SELECT code,
  492. CASE code
  493. WHEN '2F-W202-01-00' THEN 'LOC-HOLD'
  494. WHEN '2F-W200-#A-00' THEN 'LOC-WIP'
  495. ELSE CONCAT('LOC-', MIN(id))
  496. END
  497. FROM warehouse
  498. WHERE code IS NOT NULL AND code <> ''
  499. AND UPPER(REPLACE(code, ' ', '')) NOT IN ('2/F', '2F', '4/F', '4F', '1/F', '1F', '3/F', '3F')
  500. GROUP BY code;
  501. CALL demo_add_missing('_demo_map_loc', 'items', 'LocationCode', 'LOC-I');
  502. CALL demo_add_missing('_demo_map_loc', 'stock_transfer_record', 'startLocation', 'LOC-S');
  503. CALL demo_add_missing('_demo_map_loc', 'stock_transfer_record', 'targetLocation', 'LOC-T');
  504. CALL demo_add_missing('_demo_map_loc', 'pick_execution_issue', 'store_location', 'LOC-P');
  505. DELETE FROM _demo_map_loc
  506. WHERE UPPER(REPLACE(old_value, ' ', '')) IN ('2/F', '2F', '4/F', '4F', '1/F', '1F', '3/F', '3F');
  507. INSERT INTO _demo_map_loc (old_value, new_value) VALUES
  508. ('2F-W202-01-00', 'LOC-HOLD'),
  509. ('2F-W200-#A-00', 'LOC-WIP'),
  510. ('4F-W402-01-00', 'LOC-X01'),
  511. ('4F-W402-02-00', 'LOC-X02'),
  512. ('4F-W402-03-00', 'LOC-X03'),
  513. ('4F-W402-04-00', 'LOC-X04'),
  514. ('4F-W402-05-00', 'LOC-X05'),
  515. ('4F-W402-#A-00', 'LOC-X06'),
  516. ('4F-W402-#B-00', 'LOC-X07'),
  517. ('4F-W402-#C-00', 'LOC-X08'),
  518. ('4F-W402-#D-00', 'LOC-X09'),
  519. ('4F-W402-#E-00', 'LOC-X10'),
  520. ('4F-W402-#F-00', 'LOC-X11'),
  521. ('4F-W402-#G-00', 'LOC-X12'),
  522. ('4F-W402-#H-00', 'LOC-X13'),
  523. ('4F-W402-#I-00', 'LOC-X14'),
  524. ('4F-W402-#J-00', 'LOC-X15'),
  525. ('4F-W402-#K-00', 'LOC-X16'),
  526. ('4F-W402-#L-00', 'LOC-X17'),
  527. ('4F-W402-#M-00', 'LOC-X18'),
  528. ('4F-W402-#N-00', 'LOC-X19'),
  529. ('4F-W402-#O-00', 'LOC-X20'),
  530. ('4F-W402-#P-00', 'LOC-X21'),
  531. ('4F-W402-#Q-00', 'LOC-X22'),
  532. ('4F-W402-#R-00', 'LOC-X23'),
  533. ('4F-W402-#S-00', 'LOC-X24')
  534. ON DUPLICATE KEY UPDATE new_value = VALUES(new_value);
  535. INSERT INTO _demo_map_truck (old_value, new_value)
  536. SELECT TruckLanceCode, CONCAT('TRUCK-', MIN(id))
  537. FROM truck
  538. WHERE TruckLanceCode IS NOT NULL AND TruckLanceCode <> ''
  539. GROUP BY TruckLanceCode;
  540. CALL demo_add_missing('_demo_map_truck', 'truck_lane_version', 'truckLanceCode', 'TRUCK-V');
  541. CALL demo_add_missing('_demo_map_truck', 'truck_lane_version_line', 'truckLanceCode', 'TRUCK-L');
  542. CALL demo_add_missing('_demo_map_truck', 'truck_lane_schedule_line', 'fromTruckLanceCode', 'TRUCK-F');
  543. CALL demo_add_missing('_demo_map_truck', 'truck_lane_schedule_line', 'toTruckLanceCode', 'TRUCK-T');
  544. CALL demo_add_missing('_demo_map_truck', 'delivery_order_pick_order', 'truckLanceCode', 'TRUCK-D');
  545. CALL demo_add_missing('_demo_map_truck', 'do_pick_order', 'TruckLanceCode', 'TRUCK-O');
  546. CALL demo_add_missing('_demo_map_truck', 'do_pick_order_record', 'TruckLanceCode', 'TRUCK-R');
  547. CALL demo_add_missing('_demo_map_truck', 'do_replenishment', 'truckLaneCode', 'TRUCK-P');
  548. INSERT INTO _demo_map_do (old_value, new_value)
  549. SELECT code, CONCAT('DO-', MIN(id)) FROM delivery_order
  550. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  551. INSERT INTO _demo_map_po (old_value, new_value)
  552. SELECT code, CONCAT('PO-', MIN(id)) FROM purchase_order
  553. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  554. INSERT INTO _demo_map_jo (old_value, new_value)
  555. SELECT code, CONCAT('JO-', MIN(id)) FROM job_order
  556. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  557. INSERT INTO _demo_map_pk (old_value, new_value)
  558. SELECT code, CONCAT('PK-', MIN(id)) FROM pick_order
  559. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  560. INSERT INTO _demo_map_si (old_value, new_value)
  561. SELECT code, CONCAT('SI-', MIN(id)) FROM stock_in
  562. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  563. INSERT INTO _demo_map_st (old_value, new_value)
  564. SELECT code, CONCAT('ST-', MIN(id)) FROM stock_take
  565. WHERE code IS NOT NULL AND code <> '' GROUP BY code;
  566. INSERT INTO _demo_map_pp (old_value, new_value)
  567. SELECT productprocesscode, CONCAT('PP-', MIN(id)) FROM productprocess
  568. WHERE productprocesscode IS NOT NULL AND productprocesscode <> ''
  569. GROUP BY productprocesscode;
  570. INSERT INTO _demo_map_equip (old_value, new_value)
  571. SELECT code, CONCAT('EQ-', MIN(id)) FROM equipment
  572. WHERE code IS NOT NULL AND code <> ''
  573. GROUP BY code;
  574. START TRANSACTION;
  575. UPDATE items i
  576. LEFT JOIN _demo_map_item m ON i.code COLLATE utf8mb4_unicode_ci = m.old_value
  577. SET i.code = COALESCE(m.new_value, CONCAT('ITEM-', i.id)),
  578. i.name = COALESCE(m.new_name, CONCAT('Item ', i.id)),
  579. i.description = COALESCE(m.new_name, CONCAT('Item ', i.id)),
  580. i.remarks = '',
  581. i.countryOfOrigin = '';
  582. UPDATE shop s
  583. JOIN _demo_map_shop m ON s.code COLLATE utf8mb4_unicode_ci = m.old_value
  584. SET s.code = m.new_value,
  585. s.name = m.new_name,
  586. s.brNo = '',
  587. s.contactNo = '',
  588. s.contactEmail = '',
  589. s.contactName = '',
  590. s.addr1 = '',
  591. s.addr2 = '',
  592. s.addr3 = '',
  593. s.addr4 = '',
  594. s.district = '';
  595. UPDATE shop
  596. SET code = CONCAT('SHOP-', id),
  597. name = CONCAT('Shop ', id),
  598. brNo = '',
  599. contactNo = '',
  600. contactEmail = '',
  601. contactName = '',
  602. addr1 = '',
  603. addr2 = '',
  604. addr3 = '',
  605. addr4 = '',
  606. district = ''
  607. WHERE code IS NULL OR code = '';
  608. CALL demo_apply_pair('truck', 'ShopCode', 'ShopName', '_demo_map_shop');
  609. CALL demo_apply_pair('truck_lane_schedule_line', 'shopCode', 'shopName', '_demo_map_shop');
  610. CALL demo_apply_pair('delivery_order_pick_order', 'shopCode', 'shopName', '_demo_map_shop');
  611. CALL demo_apply_pair('do_pick_order', 'ShopCode', 'ShopName', '_demo_map_shop');
  612. CALL demo_apply_pair('do_pick_order_record', 'ShopCode', 'ShopName', '_demo_map_shop');
  613. CALL demo_apply_pair('do_replenishment', 'shopCode', 'shopName', '_demo_map_shop');
  614. CALL demo_apply_pair('truck_lane_version_line', 'shopCode', 'branchName', '_demo_map_shop');
  615. CALL demo_apply_map('truck', 'ShopCode', '_demo_map_shop');
  616. CALL demo_apply_map('do_replenishment', 'shopCode', '_demo_map_shop');
  617. CALL demo_apply_pair('do_replenishment', 'itemNo', 'itemName', '_demo_map_item');
  618. CALL demo_apply_pair('stock_transfer_record', 'itemCode', 'itemName', '_demo_map_item');
  619. CALL demo_apply_pair('stocktakerecord', 'itemCode', 'itemName', '_demo_map_item');
  620. CALL demo_apply_pair('bag', 'itemCode', 'itemName', '_demo_map_item');
  621. CALL demo_apply_map('purchase_order_line', 'itemNo', '_demo_map_item');
  622. CALL demo_apply_map('delivery_order_line', 'itemNo', '_demo_map_item');
  623. CALL demo_apply_map('stock_in_line', 'itemNo', '_demo_map_item');
  624. CALL demo_apply_map('do_replenishment', 'itemNo', '_demo_map_item');
  625. CALL demo_apply_map('stock_ledger', 'itemCode', '_demo_map_item');
  626. CALL demo_apply_map('stocktakerecord', 'itemCode', '_demo_map_item');
  627. CALL demo_apply_map('stock_adjustment_record', 'itemCode', '_demo_map_item');
  628. CALL demo_apply_map('stock_transfer_record', 'itemCode', '_demo_map_item');
  629. CALL demo_apply_map('item_lot_trace_log', 'itemCode', '_demo_map_item');
  630. CALL demo_apply_map('item_default_shelf_life', 'itemCode', '_demo_map_item');
  631. CALL demo_apply_map('coffee_or_tea', 'itemCode', '_demo_map_item');
  632. CALL demo_apply_map('onpack_template_file', 'itemCode', '_demo_map_item');
  633. CALL demo_apply_map('onpack_expiry_item_code', 'itemCode', '_demo_map_item');
  634. CALL demo_apply_map('bag', 'itemCode', '_demo_map_item');
  635. CALL demo_apply_map('jo_pick_order', 'itemCode', '_demo_map_item');
  636. CALL demo_apply_map('jo_pick_order_record', 'itemCode', '_demo_map_item');
  637. CALL demo_apply_map('pick_execution_issue', 'item_code', '_demo_map_item');
  638. CALL demo_apply_map('m18_cunit', 'itemNo', '_demo_map_item');
  639. CALL demo_apply_map('inventory_lot', 'lotNo', '_demo_map_lot');
  640. CALL demo_apply_map('stock_in_line', 'lotNo', '_demo_map_lot');
  641. CALL demo_apply_map('stock_in_line', 'productLotNo', '_demo_map_lot');
  642. CALL demo_apply_map('delivery_order_line', 'm18Lot', '_demo_map_lot');
  643. CALL demo_apply_map('stocktakerecord', 'lotNo', '_demo_map_lot');
  644. CALL demo_apply_map('stock_adjustment_record', 'lotNo', '_demo_map_lot');
  645. CALL demo_apply_map('stock_transfer_record', 'lotNo', '_demo_map_lot');
  646. CALL demo_apply_map('item_lot_trace_log', 'lotNo', '_demo_map_lot');
  647. CALL demo_apply_map('bag_lot_line', 'lotNo', '_demo_map_lot');
  648. CALL demo_apply_map('pick_execution_issue', 'lot_no', '_demo_map_lot');
  649. UPDATE warehouse w
  650. LEFT JOIN _demo_map_loc m ON w.code COLLATE utf8mb4_unicode_ci = m.old_value
  651. SET w.code = COALESCE(m.new_value, CONCAT('LOC-', w.id)),
  652. w.name = LEFT(COALESCE(m.new_value, CONCAT('LOC-', w.id)), 30),
  653. w.description = LEFT(COALESCE(m.new_value, CONCAT('LOC-', w.id)), 30),
  654. w.warehouse = NULL,
  655. w.area = NULL,
  656. w.slot = NULL,
  657. w.stockTakeSection = NULL,
  658. w.stockTakeSectionDescription = NULL;
  659. CALL demo_apply_map('items', 'LocationCode', '_demo_map_loc');
  660. CALL demo_apply_map('stock_transfer_record', 'startLocation', '_demo_map_loc');
  661. CALL demo_apply_map('stock_transfer_record', 'targetLocation', '_demo_map_loc');
  662. CALL demo_apply_map('pick_execution_issue', 'store_location', '_demo_map_loc');
  663. UPDATE items
  664. SET warehouse = NULL, area = NULL, slot = NULL;
  665. UPDATE warehouse
  666. SET `order` = CASE
  667. WHEN `order` REGEXP '^2F-[0-9]+$' THEN CONCAT('AF-', SUBSTRING(`order`, 4))
  668. WHEN `order` REGEXP '^4F-[0-9]+$' THEN CONCAT('BF-', SUBSTRING(`order`, 4))
  669. WHEN `order` REGEXP '^1F-[0-9]+$' THEN CONCAT('CF-', SUBSTRING(`order`, 4))
  670. WHEN `order` REGEXP '^3F-[0-9]+$' THEN CONCAT('DF-', SUBSTRING(`order`, 4))
  671. ELSE `order`
  672. END;
  673. CALL demo_apply_map('truck', 'TruckLanceCode', '_demo_map_truck');
  674. CALL demo_apply_map('truck_lane_version', 'truckLanceCode', '_demo_map_truck');
  675. CALL demo_apply_map('truck_lane_version_line', 'truckLanceCode', '_demo_map_truck');
  676. CALL demo_apply_map('truck_lane_schedule_line', 'fromTruckLanceCode', '_demo_map_truck');
  677. CALL demo_apply_map('truck_lane_schedule_line', 'toTruckLanceCode', '_demo_map_truck');
  678. CALL demo_apply_map('delivery_order_pick_order', 'truckLanceCode', '_demo_map_truck');
  679. CALL demo_apply_map('do_pick_order', 'TruckLanceCode', '_demo_map_truck');
  680. CALL demo_apply_map('do_pick_order_record', 'TruckLanceCode', '_demo_map_truck');
  681. CALL demo_apply_map('do_replenishment', 'truckLaneCode', '_demo_map_truck');
  682. CALL demo_apply_map('delivery_order', 'code', '_demo_map_do');
  683. CALL demo_apply_map('do_pick_order', 'delivery_order_code', '_demo_map_do');
  684. CALL demo_apply_map('do_pick_order_record', 'delivery_order_code', '_demo_map_do');
  685. CALL demo_apply_map('do_pick_order_line', 'delivery_order_code', '_demo_map_do');
  686. CALL demo_apply_map('do_pick_order_line_record', 'delivery_order_code', '_demo_map_do');
  687. CALL demo_apply_map('stock_out', 'deliveryOrderCode', '_demo_map_do');
  688. CALL demo_apply_map('do_replenishment', 'sourceDoCode', '_demo_map_do');
  689. CALL demo_apply_map('do_replenishment', 'targetDoCode', '_demo_map_do');
  690. CALL demo_apply_map('purchase_order', 'code', '_demo_map_po');
  691. CALL demo_apply_map('job_order', 'code', '_demo_map_jo');
  692. CALL demo_apply_map('jo_pick_order', 'jobOrderCode', '_demo_map_jo');
  693. CALL demo_apply_map('jo_pick_order_record', 'jobOrderCode', '_demo_map_jo');
  694. CALL demo_apply_map('jo_bag_consumption', 'jobOrderCode', '_demo_map_jo');
  695. CALL demo_apply_map('pick_order', 'code', '_demo_map_pk');
  696. CALL demo_apply_map('do_pick_order', 'pick_order_code', '_demo_map_pk');
  697. CALL demo_apply_map('do_pick_order_record', 'pick_order_code', '_demo_map_pk');
  698. CALL demo_apply_map('do_pick_order_line', 'pick_order_code', '_demo_map_pk');
  699. CALL demo_apply_map('do_pick_order_line_record', 'pick_order_code', '_demo_map_pk');
  700. CALL demo_apply_map('jo_pick_order', 'pickOrderCode', '_demo_map_pk');
  701. CALL demo_apply_map('jo_pick_order_record', 'pickOrderCode', '_demo_map_pk');
  702. CALL demo_apply_map('pick_execution_issue', 'pick_order_code', '_demo_map_pk');
  703. CALL demo_apply_map('stock_out', 'consoPickOrderCode', '_demo_map_pk');
  704. CALL demo_apply_map('stock_in', 'code', '_demo_map_si');
  705. CALL demo_apply_map('stock_take', 'code', '_demo_map_st');
  706. CALL demo_apply_map('productprocess', 'productprocesscode', '_demo_map_pp');
  707. UPDATE pick_order
  708. SET consoCode = CONCAT('CS-', id)
  709. WHERE consoCode IS NOT NULL AND consoCode <> '';
  710. UPDATE do_replenishment
  711. SET code = CONCAT('DR-', id)
  712. WHERE code IS NOT NULL AND code <> '';
  713. UPDATE do_pick_order_record
  714. SET deliveryNoteCode = CONCAT('DN-', id)
  715. WHERE deliveryNoteCode IS NOT NULL AND deliveryNoteCode <> '';
  716. UPDATE delivery_order_pick_order
  717. SET deliveryNoteCode = CONCAT('DN-P', id)
  718. WHERE deliveryNoteCode IS NOT NULL AND deliveryNoteCode <> '';
  719. CALL demo_exec_if_table('purchase_quotation',
  720. 'UPDATE purchase_quotation SET code = CONCAT(''PQ-'', id) WHERE code IS NOT NULL');
  721. CALL demo_exec_if_table('purchase_quotation_line',
  722. 'UPDATE purchase_quotation_line SET code = CONCAT(''PQL-'', id) WHERE code IS NOT NULL');
  723. UPDATE bom
  724. SET code = CONCAT('BOM-', id),
  725. name = CONCAT('Bom ', id),
  726. description = CONCAT('Bom ', id);
  727. CALL demo_exec_if_table('company',
  728. 'UPDATE company SET code = CONCAT(''CO-'', id), name = CONCAT(''Company '', id), brNo = '''', contactNo = '''', email = '''', addr1 = '''', addr2 = '''', addr3 = '''', addr4 = ''''');
  729. CALL demo_exec_if_table('process',
  730. 'UPDATE `process` SET code = CONCAT(''PROC-'', id), name = LEFT(CONCAT(''Process '', id), 30), description = LEFT(CONCAT(''Process '', id), 30), remarks = ''''');
  731. CALL demo_exec_if_table('equipment',
  732. 'UPDATE equipment SET code = CONCAT(''EQ-'', id), name = LEFT(CONCAT(''Equip '', id), 30), description = CONCAT(''Equip '', id)');
  733. CALL demo_apply_map('equipment_detail', 'equipmentCode', '_demo_map_equip');
  734. CALL demo_exec_if_table('equipment_detail',
  735. 'UPDATE equipment_detail SET code = CONCAT(''EQD-'', id), name = CONCAT(''Equip '', id), repairAndMaintenanceRemarks = ''''');
  736. CALL demo_exec_if_table('item_category',
  737. 'UPDATE item_category SET code = CONCAT(''CAT-'', id), parent = '''', sub = ''''');
  738. CALL demo_exec_if_table('qc_item',
  739. 'UPDATE qc_item SET code = CONCAT(''QC-'', id), name = CONCAT(''Qc '', id), description = ''''');
  740. CALL demo_exec_if_table('qc_category',
  741. 'UPDATE qc_category SET code = CONCAT(''QCC-'', id), name = CONCAT(''Qc '', id), description = CONCAT(''Qc '', id)');
  742. CALL demo_exec_if_table('pick_order_group',
  743. 'UPDATE pick_order_group SET name = CONCAT(''POG-'', id)');
  744. CALL demo_exec_if_table('printer',
  745. 'UPDATE printer SET code = CONCAT(''PRINTER-'', id), name = CASE name WHEN ''Label機 2F A+B'' THEN ''LABEL-A'' WHEN ''Label機 4F 乾貨 C, D'' THEN ''LABEL-B'' ELSE CONCAT(''Printer '', id) END, description = '''', brand = '''', ip = ''''');
  746. CALL demo_exec_if_table('logistic',
  747. 'UPDATE logistic SET logisticName = CONCAT(''Logistic '', id), carPlate = CONCAT(''PLATE-'', id), driverName = CONCAT(''Driver '', id), driverNumber = id');
  748. CALL demo_exec_if_table('group',
  749. 'UPDATE `group` SET name = CONCAT(''~g'', id)');
  750. CALL demo_exec_if_table('group',
  751. 'UPDATE `group` SET name = CONCAT(''GROUP-'', id), description = ''''');
  752. CALL demo_exec_if_table('onpack_template_file',
  753. 'UPDATE onpack_template_file SET fileName = CONCAT(''file-'', id)');
  754. CALL demo_exec_if_table('onpack_expiry_item_code',
  755. 'UPDATE onpack_expiry_item_code SET printName = itemCode');
  756. CALL demo_exec_if_table('m18_data_log',
  757. 'UPDATE m18_data_log SET dataLog = JSON_OBJECT()');
  758. CALL demo_exec_if_table('grn_send_log',
  759. 'UPDATE grn_send_log SET data = JSON_OBJECT()');
  760. CALL demo_exec_if_table('m18_goods_receipt_note_log',
  761. 'UPDATE m18_goods_receipt_note_log SET grn_code = CONCAT(''GRN-'', id)');
  762. CALL demo_exec_if_table('mail_template',
  763. 'UPDATE mail_template SET `to` = '''', cc = '''', description = CONCAT(''Template '', id), subjectCht = '''', subjectEng = '''', contentCht = '''', contentEng = ''''');
  764. CALL demo_exec_if_table('mail_send_log',
  765. 'UPDATE mail_send_log SET senderMail = '''', subject = '''', content = '''', tempDesc = ''Mail'', errorMessage = ''''');
  766. CALL demo_exec_if_table('mail_send_log_line',
  767. 'UPDATE mail_send_log_line SET toMail = '''', errorMessage = ''''');
  768. CALL demo_apply_map('item_lot_trace_log', 'username', '_demo_map_username');
  769. CALL demo_apply_map('stocktakerecord', 'createdBy', '_demo_map_username');
  770. CALL demo_apply_map('pick_execution_issue', 'createdBy', '_demo_map_username');
  771. CALL demo_apply_map('pick_execution_issue', 'modifiedBy', '_demo_map_username');
  772. CALL demo_apply_map('pick_execution_issue', 'handled_by', '_demo_map_username');
  773. CALL demo_apply_map('do_pick_order', 'createdBy', '_demo_map_username');
  774. CALL demo_apply_map('do_pick_order', 'modifiedBy', '_demo_map_username');
  775. CALL demo_apply_map('do_pick_order_record', 'createdBy', '_demo_map_username');
  776. CALL demo_apply_map('do_pick_order_record', 'modifiedBy', '_demo_map_username');
  777. CALL demo_apply_map('delivery_order_pick_order', 'createdBy', '_demo_map_username');
  778. CALL demo_apply_map('delivery_order_pick_order', 'modifiedBy', '_demo_map_username');
  779. CALL demo_apply_map('stocktakerecord', 'approverName', '_demo_map_person');
  780. CALL demo_apply_map('stocktakerecord', 'stockTakerName', '_demo_map_person');
  781. CALL demo_apply_map('do_pick_order', 'handler_name', '_demo_map_person');
  782. CALL demo_apply_map('do_pick_order_record', 'handler_name', '_demo_map_person');
  783. CALL demo_apply_map('delivery_order_pick_order', 'handlerName', '_demo_map_person');
  784. CALL demo_apply_map('pick_execution_issue', 'picker_name', '_demo_map_person');
  785. CALL demo_exec_if_table('pick_execution_issue',
  786. 'UPDATE pick_execution_issue SET item_description = ''''');
  787. UPDATE `user` u
  788. JOIN _demo_map_user m ON m.user_id = u.id
  789. SET u.username = CONCAT('~u', u.id);
  790. UPDATE `user` u
  791. JOIN _demo_map_user m ON m.user_id = u.id
  792. SET u.username = m.new_username,
  793. u.password = pwd_hash,
  794. u.name = m.new_name,
  795. u.fullname = m.new_name,
  796. u.firstname = 'User',
  797. u.lastname = CAST(u.id AS CHAR),
  798. u.email = CASE m.new_username
  799. WHEN 'demo' THEN '[email protected]'
  800. WHEN 'demo.stock' THEN '[email protected]'
  801. WHEN 'demo.prod' THEN '[email protected]'
  802. ELSE CONCAT('user', u.id, '@example.com')
  803. END,
  804. u.phone1 = '',
  805. u.phone2 = '',
  806. u.department = '',
  807. u.title = '',
  808. u.remarks = '',
  809. u.staffNo = '';
  810. CALL demo_blank_columns();
  811. UPDATE settings SET name = 'DO.floor.suppliers.AF' WHERE name = 'DO.floor.suppliers.2F';
  812. UPDATE settings SET name = 'DO.floor.suppliers.BF' WHERE name = 'DO.floor.suppliers.4F';
  813. CALL demo_remap_shop_csv('DO.floor.suppliers.AF');
  814. CALL demo_remap_shop_csv('DO.floor.suppliers.BF');
  815. UPDATE settings
  816. SET value = ''
  817. WHERE name IN (
  818. 'LASER_PRINT.host',
  819. 'LASER_PRINT.itemCodes',
  820. 'LASER_PRINT.lastReceiveSuccess'
  821. )
  822. OR name LIKE 'MAIL.smtp.%'
  823. OR name LIKE 'REPORT.dailyMaint.recipients%';
  824. CALL demo_replace_floors();
  825. INSERT INTO settings (name, value, category, type)
  826. VALUES ('DEMO.anonymized.v1', '1', 'DEMO', 'string');
  827. COMMIT;
  828. CALL demo_drop_maps();
  829. END$$
  830. DELIMITER ;
  831. CALL anonymize_demo_copy();
  832. DROP PROCEDURE IF EXISTS demo_exec_if_table;
  833. DROP PROCEDURE IF EXISTS demo_apply_map;
  834. DROP PROCEDURE IF EXISTS demo_apply_pair;
  835. DROP PROCEDURE IF EXISTS demo_add_missing;
  836. DROP PROCEDURE IF EXISTS demo_blank_columns;
  837. DROP PROCEDURE IF EXISTS demo_replace_floors;
  838. DROP PROCEDURE IF EXISTS demo_remap_shop_csv;
  839. DROP PROCEDURE IF EXISTS demo_drop_maps;
  840. DROP PROCEDURE IF EXISTS anonymize_demo_copy;
  841. SELECT name, value FROM settings WHERE name = 'DEMO.anonymized.v1';