money.debit_card_payment
|
Trigger Side Effects: Writing to this table automatically triggers writes to other tables:
|
Columns
| Column | Type | Nullable | Default | Notes |
|---|---|---|---|---|
id PK |
|
No |
nextval('money.payment_id_seq'::regclass) |
|
xact |
|
No |
||
payment_ts |
|
No |
now() |
|
voided |
|
No |
false |
|
amount |
|
No |
||
note |
|
Yes |
||
amount_collected |
|
No |
||
accepting_usr |
|
No |
||
cash_drawer |
|
Yes |
Indexes
| Index | Method | Definition |
|---|---|---|
|
btree |
|
|
btree |
|
|
btree |
|
|
btree |
|
|
btree |
|
|
btree |
|
Triggers
| Trigger | Timing | Event | Level | Function |
|---|---|---|---|---|
|
AFTER |
INSERT |
ROW |
|
|
BEFORE |
DELETE |
ROW |
|
|
AFTER |
UPDATE |
ROW |
Trigger Bodies
mat_summary_add_tgr
Function: money.materialized_summary_payment_add()
Timing: AFTER INSERT ROW
BEGIN
IF NOT NEW.voided THEN
UPDATE money.materialized_billable_xact_summary
SET total_paid = COALESCE(total_paid, 0.0::numeric) + NEW.amount,
last_payment_ts = NEW.payment_ts,
last_payment_note = NEW.note,
last_payment_type = TG_ARGV[0],
balance_owed = balance_owed - NEW.amount
WHERE id = NEW.xact;
END IF;
RETURN NEW;
END;
mat_summary_del_tgr
Function: money.materialized_summary_payment_del()
Timing: BEFORE DELETE ROW
DECLARE
prev_payment money.payment_view%ROWTYPE;
old_payment money.payment_view%ROWTYPE;
BEGIN
SELECT * INTO prev_payment FROM money.payment_view WHERE xact = OLD.xact AND NOT voided ORDER BY payment_ts DESC LIMIT 1 OFFSET 1;
SELECT * INTO old_payment FROM money.payment_view WHERE xact = OLD.xact AND NOT voided ORDER BY payment_ts DESC LIMIT 1;
IF OLD.id = old_payment.id THEN
UPDATE money.materialized_billable_xact_summary
SET last_payment_ts = prev_payment.payment_ts,
last_payment_note = prev_payment.note,
last_payment_type = prev_payment.payment_type
WHERE id = OLD.xact;
END IF;
IF NOT OLD.voided THEN
UPDATE money.materialized_billable_xact_summary
SET total_paid = total_paid - OLD.amount,
balance_owed = balance_owed + OLD.amount
WHERE id = OLD.xact;
END IF;
RETURN OLD;
END;
mat_summary_upd_tgr
Function: money.materialized_summary_payment_update()
Timing: AFTER UPDATE ROW
DECLARE
old_payment money.payment_view%ROWTYPE;
old_voided money.payment_view%ROWTYPE;
BEGIN
SELECT * INTO old_payment FROM money.payment_view WHERE xact = NEW.xact AND NOT voided ORDER BY payment_ts DESC LIMIT 1;
SELECT * INTO old_voided FROM money.payment_view WHERE xact = NEW.xact ORDER BY payment_ts DESC LIMIT 1;
IF NEW.voided AND NOT OLD.voided THEN
IF OLD.id = old_voided.id THEN
UPDATE money.materialized_billable_xact_summary
SET last_payment_ts = old_payment.payment_ts,
last_payment_note = old_payment.note,
last_payment_type = old_payment.payment_type
WHERE id = OLD.xact;
END IF;
UPDATE money.materialized_billable_xact_summary
SET total_paid = total_paid - NEW.amount,
balance_owed = balance_owed + NEW.amount
WHERE id = NEW.xact;
ELSIF NOT NEW.voided AND OLD.voided THEN
IF OLD.id = old_payment.id THEN
UPDATE money.materialized_billable_xact_summary
SET last_payment_ts = old_payment.payment_ts,
last_payment_note = old_payment.note,
last_payment_type = old_payment.payment_type
WHERE id = OLD.xact;
END IF;
UPDATE money.materialized_billable_xact_summary
SET total_paid = total_paid + NEW.amount,
balance_owed = balance_owed - NEW.amount
WHERE id = NEW.xact;
ELSE
UPDATE money.materialized_billable_xact_summary
SET total_paid = total_paid - (OLD.amount - NEW.amount),
balance_owed = balance_owed + (OLD.amount - NEW.amount)
WHERE id = NEW.xact;
END IF;
RETURN NEW;
END;