wiki:DatabaseProgramming

Процедури, функции и тригери

proceduri_funkcii_trigeri.sql

Кратко објаснување на процедурите, функциите и тригерите

  • activate_deactivate_service: Служи за промена на статусот (is_active) на одредена услуга во базата. Нејзината цел е брзо активирање или деактивирање на услугите во салонот, со вградена проверка која фрла исклучок доколку услугата со даденото ID не постои.
  • confirm_appointment: Ја менува состојбата на терминот од 'pending' во 'confirmed'. Се користи од страна на менаџментот или рецепцијата за потврда на новозакажаните термини од клиентите, оневозможувајќи потврда на непостоечки или веќе обработени термини.
  • complete_appointment: Го ажурира статусот на терминот во 'completed' откако истиот успешно ќе заврши. Оваа процедура е клучна бидејќи означува дека услугата е извршена и дека терминот е подготвен за процесот на фактурирање (генерирање сметка).
  • add_staff_to_service: Го поврзува вработениот со одредена услуга која тој може да ја извршува. Процедурата содржи бизнис логика која гарантира дека вработениот и услугата припаѓаат на истата компанија пред да го направи записот.
  • remove_staff_from_service: Ја брише врската помеѓу вработениот и одредена услуга. Нејзината цел е менаџирање на каталогот на услуги за секој вработен, во случаи кога тие веќе нема да ја нудат таа активност.
  • get_appointment_total: Функција која ја пресметува и враќа вкупната сума за одреден термин врз основа на цените на сите снимени услуги во тој момент. Обезбедува брз увид во финансиската вредност на резервацијата пред да се издаде финалната фактура.
  • staff_add_blocked_time: Овозможува внесување на блокирано време (паузи, одмори, приватни обврски) во календарот на вработениот. Процедурата автоматски проверува дали периодот се преклопува со постоечки блок или веќе закажан термин кај клиентите, и доколку сè е во ред, ги брише слободните термини (staff_time_slot) во тој временски опсег.
  • client_book_appointment: Ја содржи централната бизнис логика за реално закажување на термин од страна на клиент. Врши низа комплексни проверки: дали датумот е во иднината, дали вработениот работи на таа локација, дали локацијата е отворена и дали времето се преклопува со други термини или блокирано време, по што го запишува терминот и ги зафаќа соодветните временски слотови.
  • client_cancel_appointment: Овозможува откажување на веќе закажан или потврден термин од страна на клиентот. Процедурата проверува дали терминот навистина му припаѓа на тој клиент, го менува статусот во 'cancelled' и автоматски ги ослободува временските слотови за да бидат достапни за нови резервации.
  • generate_invoice: Автоматски ја генерира финалната сметка (фактура) за комплетиран термин. Врши пресметка на сумата, ги применува валидните промотивни кодови во рамките на компанијата (внимавајќи попустот да не ја надмине главната сума), додава данок и го евидентира начинот на плаќање.
  • generate_staff_time_slots_from_to: Силна процедура која генерира временски слотови од по 15 минути за вработен во одреден дефиниран период. Ги зема предвид само деновите и часовите кога вработениот е достапен според неговиот работен распоред, истовремено прескокнувајќи ги веќе дефинираните блокирани времиња.
  • trg_check_appointment_conflicts (Функција) / trg_appointment_conflicts (Тригер): Овој безбедносен тригер се активира автоматски пред секое внесување или ажурирање на клучните полиња во табелата appointment. Неговата цел е на ниво на база да спречи дуплирање на термини за ист вработен, како и временски преклопувања (overlapping) на резервациите кај еден ист клиент на даден датум, исфрлајќи грешка за нарушување на уникатност доколку се детектира конфликт.
Last modified 5 days ago Last modified on 05/20/26 17:15:46

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.