Changes between Version 13 and Version 14 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
09/30/25 08:44:39 (2 weeks ago)
Author:
223270
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v13 v14  
    212212}}}
    213213
     2143. Комплетна резервација за пакет во трансакција
     215{{{
     216CREATE OR REPLACE PROCEDURE create_package_reservation(
     217    p_user INT,
     218    p_package INT,
     219    p_discount_amount NUMERIC DEFAULT 0
     220)
     221LANGUAGE plpgsql
     222AS $$
     223DECLARE
     224    package_price NUMERIC(12,2);
     225    new_reservation INT;
     226BEGIN
     227    SELECT price INTO package_price FROM package WHERE id_package = p_package;
     228
     229    IF package_price IS NULL THEN
     230        RAISE EXCEPTION 'Package % not found', p_package;
     231    END IF;
     232
     233    INSERT INTO reservation(id_user, time_point, premium_discount_applied, discount_amount, total_price)
     234    VALUES (p_user, now(), CASE WHEN p_discount_amount > 0 THEN TRUE ELSE FALSE END, p_discount_amount, GREATEST(package_price - p_discount_amount, 0))
     235    RETURNING id_reservation INTO new_reservation;
     236
     237    INSERT INTO package_reservation(id_package, id_reservation)
     238    VALUES (p_package, new_reservation);
     239END;
     240$$;
     241}}}
     242
    214243=== Линк до репозиториумот
    215244https://develop.finki.ukim.mk/git/travel_sage.git