]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0604.schema.lp790329_staff_opac_lasso_counts.sql
LP#1643709: Stamping upgrade scripts
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0604.schema.lp790329_staff_opac_lasso_counts.sql
1 -- Evergreen DB patch XXXX.lp790329_staff_opac_lasso_counts.sql
2 --
3 -- Staff record copy counts also triggered an SQL error for org lassos
4 -- Per LP790329
5 --
6 BEGIN;
7
8 -- check whether patch can be applied
9 SELECT evergreen.upgrade_deps_block_check('0604', :eg_version);
10
11 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$
12 DECLARE
13     ans RECORD;
14     trans INT;
15 BEGIN
16     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;
17
18     FOR ans IN SELECT u.org_unit AS id FROM actor.org_lasso_map AS u WHERE lasso = i_lasso LOOP
19         RETURN QUERY
20         SELECT  -1,
21                 ans.id,
22                 COUNT( cp.id ),
23                 SUM( CASE WHEN cp.status IN (0,7,12) THEN 1 ELSE 0 END ),
24                 COUNT( cp.id ),
25                 trans
26           FROM
27                 actor.org_unit_descendants(ans.id) d
28                 JOIN asset.copy cp ON (cp.circ_lib = d.id AND NOT cp.deleted)
29                 JOIN asset.call_number cn ON (cn.record = rid AND cn.id = cp.call_number AND NOT cn.deleted)
30           GROUP BY 1,2,6;
31
32         IF NOT FOUND THEN
33             RETURN QUERY SELECT -1, ans.id, 0::BIGINT, 0::BIGINT, 0::BIGINT, trans;
34         END IF;
35
36     END LOOP;
37
38     RETURN;
39 END;
40 $f$ LANGUAGE PLPGSQL;
41
42 COMMIT;