aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_check_in_group
Parameters
Name
Type
Mode
i_booking_id
integer
IN
i_checkin_user
text
IN (DEFAULT NULL)
Definition
DECLARE _state TEXT; _message TEXT; _detail TEXT; _hint TEXT; _context TEXT; _status CHAR(1); _book_type CHAR(1); _arrival DATE; _folio_id INT; BEGIN i_checkin_user := COALESCE(i_checkin_user, fn_current_user()); SELECT status, book_type, arrival, folio_id INTO _status, _book_type, _arrival, _folio_id FROM booking WHERE id = i_booking_id; IF NOT FOUND THEN RETURN fn_result_error('10003', sys_msg('10003', 'Booking not found')); END IF; IF _book_type <> 'G' THEN RETURN fn_result_error('10901', sys_msg('10901', 'Not a group booking')); END IF; IF _status NOT IN ('R', 'C') THEN RETURN fn_result_error('20010', sys_msg('20010', 'Booking status is not valid for check-in')); END IF; IF _arrival <> fn_system_date() THEN RETURN fn_result_error('20011', sys_msg('20011', 'Arrival date is not today')); END IF; CALL sp_check_endday_process(); CALL sp_check_record_lock(i_checkin_user, booking_id := i_booking_id); UPDATE booking SET status = 'I' WHERE id = i_booking_id; IF _folio_id IS NOT NULL THEN UPDATE folio SET folio_type = 'R' WHERE id = _folio_id AND folio_type = 'B'; END IF; UPDATE deposit SET status = 'C', clearing_date = fn_system_date() WHERE booking_id = i_booking_id AND status IN ('R', 'H'); PERFORM sp_log_booking(i_booking_id, NULL, 'Check in', 'Group check in', i_checkin_user); PERFORM sp_unlock_booking_record_lock(i_booking_id, i_checkin_user); RETURN fn_result_success(jsonb_build_object('booking_id', i_booking_id)); EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS _state = RETURNED_SQLSTATE, _message = MESSAGE_TEXT, _detail = PG_EXCEPTION_DETAIL, _hint = PG_EXCEPTION_HINT, _context = PG_EXCEPTION_CONTEXT; RETURN fn_handle_error(_state, _message, _detail, _hint, _context, 'sp_check_in_group', jsonb_build_object('booking_id', i_booking_id, 'checkin_user', i_checkin_user)); END