]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1036.function.config_update_hard_due_dates_ceiling_date_fix.sql
LP#1842940: Improve Alert
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1036.function.config_update_hard_due_dates_ceiling_date_fix.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1036', :eg_version);
4
5 CREATE OR REPLACE FUNCTION config.update_hard_due_dates () RETURNS INT AS $func$
6 DECLARE
7     temp_value  config.hard_due_date_values%ROWTYPE;
8     updated     INT := 0;
9 BEGIN
10     FOR temp_value IN
11       SELECT  DISTINCT ON (hard_due_date) *
12         FROM  config.hard_due_date_values
13         WHERE active_date <= NOW() -- We've passed (or are at) the rollover time
14         ORDER BY hard_due_date, active_date DESC -- Latest (nearest to us) active time
15    LOOP
16         UPDATE  config.hard_due_date
17           SET   ceiling_date = temp_value.ceiling_date
18           WHERE id = temp_value.hard_due_date
19                 AND ceiling_date <> temp_value.ceiling_date -- Time is equal if we've already updated the chdd
20                 AND temp_value.ceiling_date >= NOW(); -- Don't update ceiling dates to the past
21
22         IF FOUND THEN
23             updated := updated + 1;
24         END IF;
25     END LOOP;
26
27     RETURN updated;
28 END;
29 $func$ LANGUAGE plpgsql;
30
31 COMMIT;