LP1773452: Repeating copy alerts
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.function.asset.copy_state-update.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 CREATE OR REPLACE FUNCTION asset.copy_state (cid BIGINT) RETURNS TEXT AS $$
6 DECLARE
7     last_circ_stop      TEXT;
8     the_copy        asset.copy%ROWTYPE;
9 BEGIN
10
11     SELECT * INTO the_copy FROM asset.copy WHERE id = cid;
12     IF NOT FOUND THEN RETURN NULL; END IF;
13
14     IF the_copy.status = 3 THEN -- Lost
15         RETURN 'LOST';
16     ELSIF the_copy.status = 4 THEN -- Missing
17         RETURN 'MISSING';
18     ELSIF the_copy.status = 14 THEN -- Damaged
19         RETURN 'DAMAGED';
20     ELSIF the_copy.status = 17 THEN -- Lost and paid
21         RETURN 'LOST_AND_PAID';
22     END IF;
23
24     SELECT stop_fines INTO last_circ_stop
25       FROM  action.circulation
26       WHERE target_copy = cid AND checkin_time IS NULL
27       ORDER BY xact_start DESC LIMIT 1;
28
29     IF FOUND THEN
30         IF last_circ_stop IN (
31             'CLAIMSNEVERCHECKEDOUT',
32             'CLAIMSRETURNED',
33             'LONGOVERDUE'
34         ) THEN
35             RETURN last_circ_stop;
36         END IF;
37     END IF;
38
39     RETURN 'NORMAL';
40 END;
41 $$ LANGUAGE PLPGSQL;
42
43 COMMIT;
44