Функции, процедури и тригери
Функции
fn_available_rooms
SELECT * FROM fn_available_rooms(hotel_name, p_check_in, p_check_out);
- Цел: Ги враќа сите слободни соби во даден хотел за даден временски период.
fn_estimate_cost
SELECT * FROM fn_estimate_cost(p_room_id, p_check_in, p_check_out);
- Цел: Пресметува проценета цена на престој (соба * ноќи), без притоа да создава резервација.
Процедури
pr_book_pet_stay
CALL pr_book_pet_stay(p_pet_id, p_employee_id, p_room_id, p_check_in, p_check_out);
- Цел: Креира резервација и истовремено ѝ доделува соба.
- Валидации: Датумот на заминување мора да е по датумот на пристигнување и собата мора да е слободна за бараниот период (се исфрлаат
cancelled/no-showрезервации). Статусот автоматски се поставува наconfirmed.
sp_complete_finished_reservations
CALL sp_complete_finished_reservations();
- Цел: Batch-задача која ги обележува како
completedсите резервации чијcheck_out_dateвеќе поминал, а сè уште не сеcompleted/cancelled/no-show. - Забелешка: Процедурата не се активира автоматски со промена на податок, туку мора да биде повикана рачно или од некој сервис.
pr_cancel_reservation
CALL pr_cancel_reservation(p_reservation_id);
- Цел: Ја откажува резервацијата и сите нејзини закажани услуги во едно повикување.
pr_add_service_to_reservation
CALL pr_add_service_to_reservation(p_reservation_id, p_service_id, p_date, p_time);
- Цел: Додава услуга на постоечка резервација.
- Валидации: Резервацијата мора да постои и да не е
cancelled/no-showи датумот на услугата не смее да е во минатото.
pr_extend_reservation
CALL pr_extend_reservation(p_reservation_id, p_new_check_out);
- Цел: Продолжува постоечки престој со нов, подоцнежен
check_out_date. - Валидации: Резервацијата не смее да е
cancelled/no-show/completed, новиот датум мора да е подоцна од стариот, собата мора да е слободна за додадените ноќи (сопствениот опсег на резервацијата се исклучува од проверката). - Забелешка: Преку
UPDATE RoomReservationавтоматски ги активираtrg_sync_date_statusиtrg_update_cost_on_roomreservation.
Тригери
trg_sync_date_status
- Функција:
fn_sync_date_status() - Се активира:
AFTER INSERT OR UPDATE OR DELETE ON RoomReservation - Цел: Ја одржува табелата
Dateсинхронизирана со реалните резервации, така штоvw_available_roomsсекогаш прикажува точни, живи податоци. При бришење или промена го ослободува стариот опсег на датуми (status_id = 2, available), при внес или промена го означува новиот опсег како зафатен (status_id = 1, occupied).
trg_reservation_status_guard
- Функција:
fn_reservation_status_guard() - Се активира:
BEFORE UPDATE ON Reservation - Цел: Спречува невалидни промини на статус на резервација (пр. од
completedназад воpending). Дозволени промини:pending -> confirmed | cancelled,confirmed -> completed | cancelled | no-show. Останатите статуси се терминални и не можат да се променуваат. Невалиден обид фрлаEXCEPTION.
trg_update_cost_on_roomreservation / trg_update_cost_on_servicereservation
- Функција:
fn_update_reservation_cost() - Се активираат:
AFTER INSERT OR UPDATE OR DELETEнаRoomReservationиServiceReservation - Цел: Автоматски го прекалкулира
Reservation.total_costсекогаш кога ќе се промени собата, или ќе се додаде или отстрани услуга. Откажаните услуги (status = cancelled) не влегуваат во сметката.
Last modified
4 days ago
Last modified on 07/02/26 01:22:48
Note:
See TracWiki
for help on using the wiki.
