LP#1155771 Copy location sample data additions
[working/Evergreen.git] / Open-ILS / tests / datasets / sql / assets_extras.sql
1 -- copy locations
2 -- copy location groups
3 -- copy stat cats
4 -- ...
5
6 INSERT INTO asset.copy_location (owning_lib, name) VALUES
7 (2, 'Fiction'),
8 (3, 'Fiction'),
9 (2, 'Non-Fiction'),
10 (3, 'Non-Fiction'),
11 (2, 'Young Adult Fiction'),
12 (4, 'Young Adult Fiction'),
13 (5, 'Young Adult Fiction'),
14 (6, 'Young Adult Fiction'),
15 (2, 'Children''s Fiction'),
16 (3, 'Children''s Fiction'),
17 (4, 'Audio/Video'),
18 (5, 'Audio/Video'),
19 (5, 'Music'),
20 (6, 'Music'),
21 (6, 'Audio/Video'),
22 (4, 'Science Fiction'),
23 (7, 'Science Fiction'),
24 (5, 'Genealogy'),
25 (6, 'Genealogy'),
26 (4, 'Biography'),
27 (5, 'Biography'),
28 (6, 'Local History'),
29 (7, 'Local History');
30
31
32 -- different settings per org level
33 INSERT INTO asset.copy_location
34     (owning_lib, name, holdable, opac_visible, circulate) VALUES
35 (2, 'Display', FALSE, FALSE, TRUE),
36 (4, 'Display', FALSE, FALSE, FALSE),
37 (5, 'Display', TRUE, FALSE, FALSE),
38 (6, 'Display', TRUE, FALSE, FALSE),
39 (7, 'Display', FALSE, FALSE, FALSE),
40 (1, 'New Arrivals', TRUE, TRUE, TRUE),
41 (2, 'New Arrivals', FALSE, TRUE, TRUE),
42 (4, 'New Arrivals', TRUE, TRUE, FALSE),
43 (5, 'New Arrivals', TRUE, TRUE, TRUE);
44
45 -- copy location groups
46
47 INSERT INTO asset.copy_location_group (name, owner) VALUES ('Sys1 Fiction', 2);
48
49 INSERT INTO asset.copy_location_group_map (lgroup, location)
50     SELECT CURRVAL('asset.copy_location_group_id_seq'), id
51         FROM asset.copy_location 
52         WHERE owning_lib in (2, 4, 5) AND opac_visible;
53
54 INSERT INTO asset.copy_location_group (name, owner) VALUES ('Sys2 Fiction', 2);
55
56 INSERT INTO asset.copy_location_group_map (lgroup, location)
57     SELECT CURRVAL('asset.copy_location_group_id_seq'), id
58         FROM asset.copy_location 
59         WHERE owning_lib in (3, 6, 7) AND opac_visible;
60
61 -- Distribute copies evenly across copy locations whose owning_lib
62 -- matches the copy circ lib.  To provide some level of repeatable
63 -- outcome, we loop instead of applying locations at randon within
64 -- a given owning_lib.
65 DO $$
66     DECLARE cur_loc INTEGER;
67     DECLARE cur_copy asset.copy%ROWTYPE;
68 BEGIN
69     cur_loc := 0;
70
71     FOR cur_copy IN SELECT * FROM asset.copy 
72             WHERE location = 1 ORDER BY circ_lib, id LOOP
73
74         -- find the next location for the current copy's circ lib
75         SELECT INTO cur_loc id FROM asset.copy_location 
76             WHERE owning_lib = cur_copy.circ_lib AND id > cur_loc 
77             ORDER BY id LIMIT 1;
78
79         IF NOT FOUND THEN
80             -- start back over at the front of the list
81             cur_loc := 0;
82             SELECT INTO cur_loc id FROM asset.copy_location 
83                 WHERE owning_lib = cur_copy.circ_lib AND id > cur_loc 
84                 ORDER BY id LIMIT 1;
85         END IF;
86
87         IF NOT FOUND THEN
88             -- no copy location at this circ lib, leave the default (1)
89             CONTINUE;
90         END IF;
91
92         UPDATE asset.copy SET location = cur_loc WHERE id = cur_copy.id;
93     END LOOP;
94 END $$;
95