aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_cancel_auto_post
Parameters
Name
Type
Mode
register_id
integer
IN
user_name
text
IN (DEFAULT NULL)
Definition
DECLARE trans int[]; v_folio_id int; shift varchar; void_result json; SYS_DATE date := fn_system_date(); BEGIN user_name := coalesce(user_name, fn_current_user()); shift := coalesce(shift, fn_work_shift(user_name), fn_online_shift()); v_folio_id := (SELECT r.folio_id FROM registration r WHERE r.id = $1); trans := ARRAY( SELECT t.id FROM transactions t WHERE t.folio_id = v_folio_id AND t.post_date = SYS_DATE AND t.post_flag IN ('R','A') AND t.active ); RAISE NOTICE 'Trans: %', trans; IF fn_length(trans) > 0 THEN void_result := sp_void_transactions(trans, 'Cancel auto-post', user_name, shift, force_void := true); IF void_result->>'result_code' = '4' THEN RETURN void_result; END IF; END IF; /* Always reset flags regardless of whether there were transactions to void. Handles complimentary rooms and other cases where flags may be set but no active AUTO transactions exist today. */ UPDATE registration_rates rr SET posted = FALSE, inclusive_posted = FALSE, tran_id = NULL WHERE rr.register_id = $1 AND rr.charge_date = SYS_DATE; UPDATE registration rg SET room_posted = FALSE WHERE rg.id = $1; UPDATE charge_schedule cs SET posted = FALSE WHERE cs.register_id = $1 AND cs.charge_date = SYS_DATE AND cs.posted = TRUE; IF fn_length(trans) > 0 THEN RETURN fn_result_success('00', '%s transactions voided', fn_length(trans)::text); ELSE RETURN fn_result_success('30502', 'No auto-post transaction'); END IF; END