aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_tr_out_of_order_avail_change
Parameters
Name
Type
Mode
Definition
DECLARE v_roomtype int; BEGIN IF (new.ooo_type = 'OOS') THEN return null; END IF; /* Add out of order */ IF (TG_OP = 'INSERT' and new.start_date <> new.end_date) THEN v_roomtype := (select r.roomtype_id from room r where r.id = new.room_id); PERFORM sp_update_avail (new.ooo_type, 'Add OOO', v_roomtype, new.start_date, new.end_date-1, 1, room_id := new.room_id); END IF; /* Update period */ IF (TG_OP = 'UPDATE' and (old.start_date <> new.start_date or old.end_date <> new.end_date)) THEN v_roomtype := (select r.roomtype_id from room r where r.id = new.room_id); if (old.start_date <> old.end_date) then PERFORM sp_update_avail (new.ooo_type,'Update OOO', v_roomtype, old.start_date, old.end_date-1, -1, room_id := old.room_id); end if; if (new.start_date <> new.end_date) then PERFORM sp_update_avail (new.ooo_type,'Update OOO', v_roomtype, new.start_date, new.end_date-1, 1, room_id := new.room_id); end if; END IF; /* Delete out of order */ IF (TG_OP = 'DELETE' and old.start_date <> old.end_date and old.ooo_type <> 'OOS') THEN v_roomtype := (select r.roomtype_id from room r where r.id = old.room_id); PERFORM sp_update_avail (old.ooo_type, 'Delete OOO', v_roomtype, old.start_date, old.end_date-1, -1, room_id := old.room_id); END IF; RETURN NULL; END