Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

500 linhas
18 KiB

  1. -- Rewrite identifying values in fpsms_demo. Does not delete rows.
  2. -- Ids, foreign keys, statuses, quantities stay.
  3. -- Item codes, lot numbers, warehouse codes, and floors (1/F–4/F) stay.
  4. -- Shop codes, delivery-order codes, and purchase-order codes are rewritten
  5. -- and the same old string is updated everywhere it was copied.
  6. -- The three most recent delivery and purchase arrival dates move to
  7. -- today, tomorrow, and the day after. Today is the real calendar day
  8. -- in UTC+8. Lot expiry dates move forward by the same number of days
  9. -- as the newest delivery arrival day, so usable stock stays usable.
  10. -- settings DEMO.dateAnchor stores that day. Line prices become 1.
  11. -- Opening the backend does not move dates. On a later demo day, run
  12. -- scripts/refresh_demo_dates.sql.
  13. --
  14. -- Run only against a disposable full copy of production:
  15. -- mysql -h127.0.0.1 -P3306 -uroot -p fpsms_demo < scripts/anonymize_demo_copy.sql
  16. --
  17. -- Refuses to run unless the current database is fpsms_demo.
  18. -- Refuses to run again once settings.name = DEMO.anonymized.v1 exists.
  19. -- Password for every user, including demo / demo.stock / demo.prod, is Demo2026!.
  20. --
  21. -- MySQL Workbench stops a query after 30 seconds and reports error 2013.
  22. -- Before running: Preferences, SQL Editor, DBMS connection read timeout = 3600.
  23. -- Reconnect, select fpsms_demo, then run this whole file.
  24. SET NAMES utf8mb4;
  25. SET SESSION time_zone = '+08:00';
  26. SET SESSION sql_safe_updates = 0;
  27. SET SESSION group_concat_max_len = 1000000;
  28. SET SESSION net_read_timeout = 7200;
  29. SET SESSION net_write_timeout = 7200;
  30. SET SESSION wait_timeout = 28800;
  31. DROP PROCEDURE IF EXISTS demo_exec_if_table;
  32. DROP PROCEDURE IF EXISTS demo_apply_map;
  33. DROP PROCEDURE IF EXISTS demo_apply_pair;
  34. DROP PROCEDURE IF EXISTS demo_add_missing;
  35. DROP PROCEDURE IF EXISTS demo_blank_columns;
  36. DROP PROCEDURE IF EXISTS demo_replace_floors;
  37. DROP PROCEDURE IF EXISTS demo_remap_shop_csv;
  38. DROP PROCEDURE IF EXISTS demo_drop_maps;
  39. DROP PROCEDURE IF EXISTS anonymize_demo_copy;
  40. DELIMITER $$
  41. CREATE PROCEDURE demo_drop_maps()
  42. BEGIN
  43. DROP TABLE IF EXISTS _demo_map_shop;
  44. DROP TABLE IF EXISTS _demo_map_do;
  45. DROP TABLE IF EXISTS _demo_map_po;
  46. DROP TABLE IF EXISTS _demo_map_user;
  47. DROP TABLE IF EXISTS _demo_map_username;
  48. DROP TABLE IF EXISTS _demo_map_person;
  49. END$$
  50. CREATE PROCEDURE demo_exec_if_table(IN p_table VARCHAR(64), IN p_sql TEXT)
  51. BEGIN
  52. DECLARE n INT DEFAULT 0;
  53. SELECT COUNT(*) INTO n
  54. FROM information_schema.tables
  55. WHERE table_schema = DATABASE() AND table_name = p_table;
  56. IF n > 0 THEN
  57. SET @demo_sql = p_sql;
  58. PREPARE demo_stmt FROM @demo_sql;
  59. EXECUTE demo_stmt;
  60. DEALLOCATE PREPARE demo_stmt;
  61. END IF;
  62. END$$
  63. CREATE PROCEDURE demo_apply_map(IN p_table VARCHAR(64), IN p_column VARCHAR(64), IN p_map VARCHAR(64))
  64. BEGIN
  65. DECLARE n INT DEFAULT 0;
  66. SELECT COUNT(*) INTO n
  67. FROM information_schema.columns
  68. WHERE table_schema = DATABASE()
  69. AND table_name = p_table
  70. AND column_name = p_column;
  71. IF n > 0 THEN
  72. SET @demo_sql = CONCAT(
  73. 'UPDATE `', p_table, '` t INNER JOIN `', p_map, '` m ',
  74. 'ON t.`', p_column, '` COLLATE utf8mb4_unicode_ci = m.old_value ',
  75. 'SET t.`', p_column, '` = m.new_value'
  76. );
  77. PREPARE demo_stmt FROM @demo_sql;
  78. EXECUTE demo_stmt;
  79. DEALLOCATE PREPARE demo_stmt;
  80. END IF;
  81. END$$
  82. CREATE PROCEDURE demo_apply_pair(
  83. IN p_table VARCHAR(64),
  84. IN p_code VARCHAR(64),
  85. IN p_name VARCHAR(64),
  86. IN p_map VARCHAR(64)
  87. )
  88. BEGIN
  89. DECLARE ncode INT DEFAULT 0;
  90. DECLARE nname INT DEFAULT 0;
  91. SELECT COUNT(*) INTO ncode
  92. FROM information_schema.columns
  93. WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_code;
  94. SELECT COUNT(*) INTO nname
  95. FROM information_schema.columns
  96. WHERE table_schema = DATABASE() AND table_name = p_table AND column_name = p_name;
  97. IF ncode > 0 AND nname > 0 THEN
  98. SET @demo_sql = CONCAT(
  99. 'UPDATE `', p_table, '` t INNER JOIN `', p_map, '` m ',
  100. 'ON t.`', p_code, '` COLLATE utf8mb4_unicode_ci = m.old_value ',
  101. 'SET t.`', p_code, '` = m.new_value, t.`', p_name, '` = m.new_name'
  102. );
  103. PREPARE demo_stmt FROM @demo_sql;
  104. EXECUTE demo_stmt;
  105. DEALLOCATE PREPARE demo_stmt;
  106. ELSEIF ncode > 0 THEN
  107. CALL demo_apply_map(p_table, p_code, p_map);
  108. END IF;
  109. END$$
  110. CREATE PROCEDURE anonymize_demo_copy()
  111. BEGIN
  112. DECLARE marker_count INT DEFAULT 0;
  113. DECLARE demo_id BIGINT DEFAULT NULL;
  114. DECLARE stock_id BIGINT DEFAULT NULL;
  115. DECLARE prod_id BIGINT DEFAULT NULL;
  116. DECLARE pwd_hash VARCHAR(80) DEFAULT '$2a$10$9eqxnNGtxFADAW9AbbjRIevr8YWgBqkLr//23U6qYOWs5U9figE2u';
  117. DECLARE expiry_delta INT DEFAULT NULL;
  118. DECLARE CONTINUE HANDLER FOR NOT FOUND SET demo_id = demo_id;
  119. DECLARE EXIT HANDLER FOR SQLEXCEPTION
  120. BEGIN
  121. ROLLBACK;
  122. CALL demo_drop_maps();
  123. RESIGNAL;
  124. END;
  125. IF DATABASE() IS NULL OR DATABASE() <> 'fpsms_demo' THEN
  126. SIGNAL SQLSTATE '45000'
  127. SET MESSAGE_TEXT = 'Refusing to anonymize: current database is not fpsms_demo';
  128. END IF;
  129. SELECT COUNT(*) INTO marker_count FROM settings WHERE name = 'DEMO.anonymized.v1';
  130. IF marker_count > 0 THEN
  131. SIGNAL SQLSTATE '45000'
  132. SET MESSAGE_TEXT = 'Refusing to anonymize: DEMO.anonymized.v1 already exists';
  133. END IF;
  134. CALL demo_drop_maps();
  135. CREATE TABLE _demo_map_shop (
  136. old_value VARCHAR(255) NOT NULL,
  137. new_value VARCHAR(255) NOT NULL,
  138. new_name VARCHAR(255) NOT NULL,
  139. PRIMARY KEY (old_value)
  140. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  141. CREATE TABLE _demo_map_do (
  142. old_value VARCHAR(255) NOT NULL,
  143. new_value VARCHAR(255) NOT NULL,
  144. PRIMARY KEY (old_value)
  145. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  146. CREATE TABLE _demo_map_po (
  147. old_value VARCHAR(255) NOT NULL,
  148. new_value VARCHAR(255) NOT NULL,
  149. PRIMARY KEY (old_value)
  150. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  151. CREATE TABLE _demo_map_user (
  152. user_id BIGINT NOT NULL,
  153. old_username VARCHAR(255) NULL,
  154. new_username VARCHAR(255) NOT NULL,
  155. old_name VARCHAR(255) NULL,
  156. new_name VARCHAR(255) NOT NULL,
  157. PRIMARY KEY (user_id)
  158. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  159. CREATE TABLE _demo_map_username (
  160. old_value VARCHAR(255) NOT NULL,
  161. new_value VARCHAR(255) NOT NULL,
  162. PRIMARY KEY (old_value)
  163. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  164. CREATE TABLE _demo_map_person (
  165. old_value VARCHAR(255) NOT NULL,
  166. new_value VARCHAR(255) NOT NULL,
  167. PRIMARY KEY (old_value)
  168. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  169. SELECT u.id INTO demo_id
  170. FROM `user` u
  171. JOIN user_authority ua ON ua.userId = u.id
  172. JOIN authority a ON a.id = ua.authId
  173. WHERE a.authority = 'ADMIN'
  174. ORDER BY u.deleted, u.id
  175. LIMIT 1;
  176. IF demo_id IS NULL THEN
  177. SELECT id INTO demo_id FROM `user` ORDER BY deleted, id LIMIT 1;
  178. END IF;
  179. SELECT u.id INTO stock_id
  180. FROM `user` u
  181. WHERE u.id <> IFNULL(demo_id, -1)
  182. AND EXISTS (
  183. SELECT 1 FROM user_authority ua
  184. JOIN authority a ON a.id = ua.authId
  185. WHERE ua.userId = u.id AND a.authority = 'STOCK'
  186. )
  187. AND NOT EXISTS (
  188. SELECT 1 FROM user_authority ua
  189. JOIN authority a ON a.id = ua.authId
  190. WHERE ua.userId = u.id AND a.authority = 'ADMIN'
  191. )
  192. ORDER BY u.deleted, u.id
  193. LIMIT 1;
  194. SELECT u.id INTO prod_id
  195. FROM `user` u
  196. WHERE u.id <> IFNULL(demo_id, -1)
  197. AND u.id <> IFNULL(stock_id, -1)
  198. AND EXISTS (
  199. SELECT 1 FROM user_authority ua
  200. JOIN authority a ON a.id = ua.authId
  201. WHERE ua.userId = u.id AND a.authority = 'PROD'
  202. )
  203. AND NOT EXISTS (
  204. SELECT 1 FROM user_authority ua
  205. JOIN authority a ON a.id = ua.authId
  206. WHERE ua.userId = u.id AND a.authority = 'ADMIN'
  207. )
  208. ORDER BY u.deleted, u.id
  209. LIMIT 1;
  210. INSERT INTO _demo_map_user (user_id, old_username, new_username, old_name, new_name)
  211. SELECT id,
  212. NULLIF(username, ''),
  213. CASE
  214. WHEN id = demo_id THEN 'demo'
  215. WHEN id = stock_id THEN 'demo.stock'
  216. WHEN id = prod_id THEN 'demo.prod'
  217. ELSE CONCAT('USER-', id)
  218. END,
  219. NULLIF(name, ''),
  220. CASE
  221. WHEN id = demo_id THEN 'Demo'
  222. WHEN id = stock_id THEN 'Demo Stock'
  223. WHEN id = prod_id THEN 'Demo Prod'
  224. ELSE CONCAT('User ', id)
  225. END
  226. FROM `user`;
  227. INSERT INTO _demo_map_username (old_value, new_value)
  228. SELECT old_username, MIN(new_username)
  229. FROM _demo_map_user
  230. WHERE old_username IS NOT NULL
  231. GROUP BY old_username;
  232. INSERT INTO _demo_map_person (old_value, new_value)
  233. SELECT old_name, MIN(new_name)
  234. FROM _demo_map_user
  235. WHERE old_name IS NOT NULL
  236. GROUP BY old_name;
  237. INSERT INTO _demo_map_shop (old_value, new_value, new_name)
  238. SELECT code, CONCAT('S', MIN(id)), CONCAT('Shop ', MIN(id))
  239. FROM shop
  240. WHERE code IS NOT NULL AND code <> ''
  241. GROUP BY code;
  242. INSERT INTO _demo_map_do (old_value, new_value)
  243. SELECT code,
  244. CASE
  245. WHEN stripped = '' THEN CONCAT('DO-', min_id)
  246. WHEN dup_count > 1 THEN CONCAT(stripped, '-', min_id)
  247. ELSE stripped
  248. END
  249. FROM (
  250. SELECT g.code,
  251. g.stripped,
  252. g.min_id,
  253. COUNT(*) OVER (PARTITION BY g.stripped) AS dup_count
  254. FROM (
  255. SELECT code,
  256. REPLACE(code, 'TO', '') AS stripped,
  257. MIN(id) AS min_id
  258. FROM delivery_order
  259. WHERE code IS NOT NULL AND code <> ''
  260. GROUP BY code
  261. ) g
  262. ) numbered;
  263. INSERT INTO _demo_map_po (old_value, new_value)
  264. SELECT code,
  265. CASE
  266. WHEN stripped = '' THEN CONCAT('PO-', min_id)
  267. WHEN dup_count > 1 THEN CONCAT(stripped, '-', min_id)
  268. ELSE stripped
  269. END
  270. FROM (
  271. SELECT g.code,
  272. g.stripped,
  273. g.min_id,
  274. COUNT(*) OVER (PARTITION BY g.stripped) AS dup_count
  275. FROM (
  276. SELECT code,
  277. REPLACE(REPLACE(code, 'PF', ''), 'PP', '') AS stripped,
  278. MIN(id) AS min_id
  279. FROM purchase_order
  280. WHERE code IS NOT NULL AND code <> ''
  281. GROUP BY code
  282. ) g
  283. ) numbered;
  284. START TRANSACTION;
  285. UPDATE `user` u
  286. JOIN _demo_map_user m ON m.user_id = u.id
  287. SET u.username = CONCAT('~u', u.id);
  288. UPDATE `user` u
  289. JOIN _demo_map_user m ON m.user_id = u.id
  290. SET u.username = m.new_username,
  291. u.password = pwd_hash,
  292. u.name = m.new_name,
  293. u.fullname = m.new_name,
  294. u.firstname = 'User',
  295. u.lastname = CAST(u.id AS CHAR),
  296. u.email = CASE m.new_username
  297. WHEN 'demo' THEN '[email protected]'
  298. WHEN 'demo.stock' THEN '[email protected]'
  299. WHEN 'demo.prod' THEN '[email protected]'
  300. ELSE CONCAT('user', u.id, '@example.com')
  301. END,
  302. u.phone1 = '',
  303. u.phone2 = '',
  304. u.department = '',
  305. u.title = '',
  306. u.remarks = '',
  307. u.staffNo = '';
  308. CALL demo_apply_map('item_lot_trace_log', 'username', '_demo_map_username');
  309. CALL demo_apply_map('stocktakerecord', 'createdBy', '_demo_map_username');
  310. CALL demo_apply_map('pick_execution_issue', 'createdBy', '_demo_map_username');
  311. CALL demo_apply_map('pick_execution_issue', 'modifiedBy', '_demo_map_username');
  312. CALL demo_apply_map('pick_execution_issue', 'handled_by', '_demo_map_username');
  313. CALL demo_apply_map('do_pick_order', 'createdBy', '_demo_map_username');
  314. CALL demo_apply_map('do_pick_order', 'modifiedBy', '_demo_map_username');
  315. CALL demo_apply_map('do_pick_order_record', 'createdBy', '_demo_map_username');
  316. CALL demo_apply_map('do_pick_order_record', 'modifiedBy', '_demo_map_username');
  317. CALL demo_apply_map('delivery_order_pick_order', 'createdBy', '_demo_map_username');
  318. CALL demo_apply_map('delivery_order_pick_order', 'modifiedBy', '_demo_map_username');
  319. CALL demo_apply_map('stocktakerecord', 'approverName', '_demo_map_person');
  320. CALL demo_apply_map('stocktakerecord', 'stockTakerName', '_demo_map_person');
  321. CALL demo_apply_map('do_pick_order', 'handler_name', '_demo_map_person');
  322. CALL demo_apply_map('do_pick_order_record', 'handler_name', '_demo_map_person');
  323. CALL demo_apply_map('delivery_order_pick_order', 'handlerName', '_demo_map_person');
  324. CALL demo_apply_map('pick_execution_issue', 'picker_name', '_demo_map_person');
  325. UPDATE items
  326. SET name = REPLACE(REPLACE(IFNULL(name, ''), 'TOA', ''), '平記', ''),
  327. description = REPLACE(REPLACE(IFNULL(description, ''), 'TOA', ''), '平記', '');
  328. UPDATE shop
  329. SET code = CONCAT('S', id),
  330. name = CONCAT('Shop ', id),
  331. contactNo = '88888888',
  332. addr1 = CONCAT('Addr row 1 ', id),
  333. addr2 = CONCAT('Addr row 2 ', id),
  334. addr3 = '香港';
  335. CALL demo_apply_pair('truck', 'ShopCode', 'ShopName', '_demo_map_shop');
  336. CALL demo_apply_pair('truck_lane_schedule_line', 'shopCode', 'shopName', '_demo_map_shop');
  337. CALL demo_apply_pair('delivery_order_pick_order', 'shopCode', 'shopName', '_demo_map_shop');
  338. CALL demo_apply_pair('do_pick_order', 'ShopCode', 'ShopName', '_demo_map_shop');
  339. CALL demo_apply_pair('do_pick_order_record', 'ShopCode', 'ShopName', '_demo_map_shop');
  340. CALL demo_apply_pair('do_replenishment', 'shopCode', 'shopName', '_demo_map_shop');
  341. CALL demo_apply_pair('truck_lane_version_line', 'shopCode', 'branchName', '_demo_map_shop');
  342. CALL demo_apply_map('truck', 'ShopCode', '_demo_map_shop');
  343. CALL demo_apply_map('do_replenishment', 'shopCode', '_demo_map_shop');
  344. CALL demo_apply_map('delivery_order', 'code', '_demo_map_do');
  345. CALL demo_apply_map('do_pick_order', 'delivery_order_code', '_demo_map_do');
  346. CALL demo_apply_map('do_pick_order_record', 'delivery_order_code', '_demo_map_do');
  347. CALL demo_apply_map('do_pick_order_line', 'delivery_order_code', '_demo_map_do');
  348. CALL demo_apply_map('do_pick_order_line_record', 'delivery_order_code', '_demo_map_do');
  349. CALL demo_apply_map('stock_out', 'deliveryOrderCode', '_demo_map_do');
  350. CALL demo_apply_map('do_replenishment', 'sourceDoCode', '_demo_map_do');
  351. CALL demo_apply_map('do_replenishment', 'targetDoCode', '_demo_map_do');
  352. CALL demo_apply_map('purchase_order', 'code', '_demo_map_po');
  353. UPDATE truck
  354. SET TruckLanceCode = REPLACE(TruckLanceCode, 'P06B', 'AA'),
  355. remark = REPLACE(remark, 'P06B', 'AA');
  356. CALL demo_exec_if_table('truck_lane_version',
  357. 'UPDATE truck_lane_version SET truckLanceCode = REPLACE(truckLanceCode, ''P06B'', ''AA'')');
  358. CALL demo_exec_if_table('truck_lane_version_line',
  359. 'UPDATE truck_lane_version_line SET truckLanceCode = REPLACE(truckLanceCode, ''P06B'', ''AA'')');
  360. CALL demo_exec_if_table('truck_lane_schedule_line',
  361. 'UPDATE truck_lane_schedule_line SET fromTruckLanceCode = REPLACE(fromTruckLanceCode, ''P06B'', ''AA''), toTruckLanceCode = REPLACE(toTruckLanceCode, ''P06B'', ''AA'')');
  362. CALL demo_exec_if_table('delivery_order_pick_order',
  363. 'UPDATE delivery_order_pick_order SET truckLanceCode = REPLACE(truckLanceCode, ''P06B'', ''AA'')');
  364. CALL demo_exec_if_table('do_pick_order',
  365. 'UPDATE do_pick_order SET TruckLanceCode = REPLACE(TruckLanceCode, ''P06B'', ''AA'')');
  366. CALL demo_exec_if_table('do_pick_order_record',
  367. 'UPDATE do_pick_order_record SET TruckLanceCode = REPLACE(TruckLanceCode, ''P06B'', ''AA'')');
  368. CALL demo_exec_if_table('do_replenishment',
  369. 'UPDATE do_replenishment SET truckLaneCode = REPLACE(truckLaneCode, ''P06B'', ''AA'')');
  370. UPDATE purchase_order_line SET price = 1, up = 1;
  371. UPDATE delivery_order_line SET price = 1, up = 1;
  372. SELECT DATEDIFF(CURDATE(), MAX(DATE(estimatedArrivalDate)))
  373. INTO expiry_delta
  374. FROM delivery_order
  375. WHERE deleted = 0 AND estimatedArrivalDate IS NOT NULL;
  376. IF expiry_delta IS NOT NULL AND expiry_delta > 0 THEN
  377. -- Clamp at DATE max so sentinel 9999-12-31 lots do not Error 1441.
  378. UPDATE inventory_lot
  379. SET expiryDate = IF(
  380. expiryDate > DATE_SUB('9999-12-31', INTERVAL expiry_delta DAY),
  381. '9999-12-31',
  382. DATE_ADD(expiryDate, INTERVAL expiry_delta DAY)
  383. )
  384. WHERE expiryDate IS NOT NULL;
  385. END IF;
  386. UPDATE delivery_order d
  387. JOIN (
  388. SELECT eta_day, rn
  389. FROM (
  390. SELECT
  391. DATE(estimatedArrivalDate) AS eta_day,
  392. ROW_NUMBER() OVER (ORDER BY DATE(estimatedArrivalDate) DESC) AS rn
  393. FROM delivery_order
  394. WHERE deleted = 0 AND estimatedArrivalDate IS NOT NULL
  395. GROUP BY DATE(estimatedArrivalDate)
  396. ) t
  397. WHERE rn <= 3
  398. ) m ON DATE(d.estimatedArrivalDate) = m.eta_day
  399. SET d.estimatedArrivalDate = TIMESTAMP(
  400. DATE_ADD(CURDATE(), INTERVAL (m.rn - 1) DAY),
  401. TIME(d.estimatedArrivalDate)
  402. )
  403. WHERE d.deleted = 0;
  404. UPDATE purchase_order p
  405. JOIN (
  406. SELECT eta_day, rn
  407. FROM (
  408. SELECT
  409. DATE(estimatedArrivalDate) AS eta_day,
  410. ROW_NUMBER() OVER (ORDER BY DATE(estimatedArrivalDate) DESC) AS rn
  411. FROM purchase_order
  412. WHERE deleted = 0 AND estimatedArrivalDate IS NOT NULL
  413. GROUP BY DATE(estimatedArrivalDate)
  414. ) t
  415. WHERE rn <= 3
  416. ) m ON DATE(p.estimatedArrivalDate) = m.eta_day
  417. SET p.estimatedArrivalDate = TIMESTAMP(
  418. DATE_ADD(CURDATE(), INTERVAL (m.rn - 1) DAY),
  419. TIME(p.estimatedArrivalDate)
  420. )
  421. WHERE p.deleted = 0;
  422. UPDATE settings
  423. SET value = (
  424. SELECT GROUP_CONCAT(DISTINCT s.code ORDER BY s.code SEPARATOR ',')
  425. FROM delivery_order d
  426. JOIN shop s ON s.id = d.supplierId AND s.deleted = 0
  427. WHERE d.deleted = 0
  428. AND d.estimatedArrivalDate IS NOT NULL
  429. AND DATE(d.estimatedArrivalDate) BETWEEN CURDATE()
  430. AND DATE_ADD(CURDATE(), INTERVAL 2 DAY)
  431. )
  432. WHERE name IN ('DO.floor.suppliers.2F', 'DO.floor.suppliers.4F');
  433. INSERT INTO settings (name, value, category, type)
  434. VALUES ('DEMO.anonymized.v1', '1', 'DEMO', 'string');
  435. INSERT INTO settings (name, value, category, type)
  436. VALUES ('DEMO.dateAnchor', DATE_FORMAT(CURDATE(), '%Y-%m-%d'), 'DEMO', 'string');
  437. COMMIT;
  438. CALL demo_drop_maps();
  439. END$$
  440. DELIMITER ;
  441. CALL anonymize_demo_copy();
  442. DROP PROCEDURE IF EXISTS demo_exec_if_table;
  443. DROP PROCEDURE IF EXISTS demo_apply_map;
  444. DROP PROCEDURE IF EXISTS demo_apply_pair;
  445. DROP PROCEDURE IF EXISTS demo_drop_maps;
  446. DROP PROCEDURE IF EXISTS anonymize_demo_copy;
  447. SELECT name, value FROM settings WHERE name IN ('DEMO.anonymized.v1', 'DEMO.dateAnchor');