Changes between Version 26 and Version 27 of DatabaseProgramming


Ignore:
Timestamp:
05/13/26 16:18:21 (2 weeks ago)
Author:
231027
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v26 v27  
    9797   
    9898    COMMIT;
     99END;
     100$$ LANGUAGE plpgsql;
     101
     102}}}
     103
     104=== `cancel_ticket`
     105
     106Оваа процедура го менаџира процесот на откажување на купен билет и иницирање рефундација на средствата. Таа автоматски ја пресметува сумата за поврат (со вклучени пенали), го евидентира откажувањето во базата и го ослободува седиштето за нов купувач.
     107
     108{{{
     109
     110CREATE OR REPLACE PROCEDURE cancel_ticket(
     111    p_purchase_id BIGINT,
     112    p_reason TEXT
     113)
     114AS $$
     115DECLARE
     116    v_refund_amount FLOAT4;
     117    v_ticket_id BIGINT;
     118BEGIN
     119    v_refund_amount := calculate_refund_amount(p_purchase_id);
     120
     121    SELECT ticket_id INTO v_ticket_id
     122    FROM "Ticket_Purchase"
     123    WHERE purchase_id = p_purchase_id;
     124
     125    INSERT INTO "Ticket_Refund" (purchase_id, refund_amount, reason)
     126    VALUES (p_purchase_id, v_refund_amount, p_reason);
     127
     128    UPDATE "Ticket" SET is_available = TRUE WHERE ticket_id = v_ticket_id;
     129
     130    RAISE NOTICE 'Ticket cancelled. Refund amount: %', v_refund_amount;
    99131END;
    100132$$ LANGUAGE plpgsql;