]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0646.schema.lp854972_copy_counts_unshadow.sql
LP#1759238: stamping upgrade script
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0646.schema.lp854972_copy_counts_unshadow.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0646', :eg_version);
4
5 CREATE OR REPLACE FUNCTION asset.staff_ou_record_copy_count (org INT, rid BIGINT) RETURNS TABLE (depth INT, org_unit INT, visible BIGINT, available BIGINT, unshadow BIGINT, transcendant INT) AS $f$
6 DECLARE         
7     ans RECORD; 
8     trans INT;
9 BEGIN           
10     SELECT 1 INTO trans FROM biblio.record_entry b JOIN config.bib_source src ON (b.source = src.id) WHERE src.transcendant AND b.id = rid;
11
12     FOR ans IN SELECT u.id, t.depth FROM actor.org_unit_ancestors(org) AS u JOIN actor.org_unit_type t ON (u.ou_type = t.id) LOOP
13         RETURN QUERY
14         SELECT  ans.depth,
15                 ans.id,
16                 COUNT( cp.id ),
17                 SUM( CASE WHEN cp.status IN (0,7,12) THEN 1 ELSE 0 END ),
18                 SUM( CASE WHEN cl.opac_visible AND cp.opac_visible THEN 1 ELSE 0 END),
19                 trans
20           FROM
21                 actor.org_unit_descendants(ans.id) d
22                 JOIN asset.copy cp ON (cp.circ_lib = d.id AND NOT cp.deleted)
23                 JOIN asset.copy_location cl ON (cp.location = cl.id)
24                 JOIN asset.call_number cn ON (cn.record = rid AND cn.id = cp.call_number AND NOT cn.deleted)
25           GROUP BY 1,2,6;
26
27         IF NOT FOUND THEN
28             RETURN QUERY SELECT ans.depth, ans.id, 0::BIGINT, 0::BIGINT, 0::BIGINT, trans;
29         END IF;
30
31     END LOOP;
32
33     RETURN;
34 END;
35 $f$ LANGUAGE PLPGSQL;
36
37 CREATE OR REPLACE FUNCTION asset.staff_lasso_record_copy_count (i_lasso INT, rid BIGINT) RETURNS TABLE (depth INT, org_unit INT, visible BIGINT, available BIGINT, unshadow BIGINT, transcendant INT) AS $f$
38 DECLARE
39     ans RECORD;
40     trans INT;
41 BEGIN
42     SELECT 1 INTO trans FROM biblio.record_entry b JOIN config.bib_source src ON (b.source = src.id) WHERE src.transcendant AND b.id = rid;
43
44     FOR ans IN SELECT u.org_unit AS id FROM actor.org_lasso_map AS u WHERE lasso = i_lasso LOOP
45         RETURN QUERY
46         SELECT  -1,
47                 ans.id,
48                 COUNT( cp.id ),
49                 SUM( CASE WHEN cp.status IN (0,7,12) THEN 1 ELSE 0 END ),
50                 SUM( CASE WHEN cl.opac_visible AND cp.opac_visible THEN 1 ELSE 0 END),
51                 trans
52           FROM
53                 actor.org_unit_descendants(ans.id) d
54                 JOIN asset.copy cp ON (cp.circ_lib = d.id AND NOT cp.deleted)
55                 JOIN asset.copy_location cl ON (cp.location = cl.id)
56                 JOIN asset.call_number cn ON (cn.record = rid AND cn.id = cp.call_number AND NOT cn.deleted)
57           GROUP BY 1,2,6;
58
59         IF NOT FOUND THEN
60             RETURN QUERY SELECT ans.depth, ans.id, 0::BIGINT, 0::BIGINT, 0::BIGINT, trans;
61         END IF;
62
63     END LOOP;
64
65     RETURN;
66 END;
67 $f$ LANGUAGE PLPGSQL;
68
69 COMMIT;