]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1200.schema.debit_card_payment.sql
88ad356037070707403fd14269ffdfd235d20aca
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1200.schema.debit_card_payment.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1200', :eg_version);
4
5 CREATE TABLE money.debit_card_payment () INHERITS (money.bnm_desk_payment);
6 ALTER TABLE money.debit_card_payment ADD PRIMARY KEY (id);
7 CREATE INDEX money_debit_card_payment_xact_idx ON money.debit_card_payment (xact);
8 CREATE INDEX money_debit_card_id_idx ON money.debit_card_payment (id);
9 CREATE INDEX money_debit_card_payment_ts_idx ON money.debit_card_payment (payment_ts);
10 CREATE INDEX money_debit_card_payment_accepting_usr_idx ON money.debit_card_payment (accepting_usr);
11 CREATE INDEX money_debit_card_payment_cash_drawer_idx ON money.debit_card_payment (cash_drawer);
12
13 CREATE TRIGGER mat_summary_add_tgr AFTER INSERT ON money.debit_card_payment FOR EACH ROW EXECUTE PROCEDURE money.materialized_summary_payment_add ('debit_card_payment');
14 CREATE TRIGGER mat_summary_upd_tgr AFTER UPDATE ON money.debit_card_payment FOR EACH ROW EXECUTE PROCEDURE money.materialized_summary_payment_update ('debit_card_payment');
15 CREATE TRIGGER mat_summary_del_tgr BEFORE DELETE ON money.debit_card_payment FOR EACH ROW EXECUTE PROCEDURE money.materialized_summary_payment_del ('debit_card_payment');
16  
17 CREATE OR REPLACE VIEW money.non_drawer_payment_view AS
18        SELECT  p.*, c.relname AS payment_type
19          FROM  money.bnm_payment p         
20                        JOIN pg_class c ON p.tableoid = c.oid
21          WHERE c.relname NOT IN ('cash_payment','check_payment','credit_card_payment');
22          WHERE c.relname NOT IN ('cash_payment','check_payment','credit_card_payment','debit_card_payment');
23
24 UPDATE action_trigger.event_definition 
25     SET template = $$
26 [%- USE date -%]
27 [%- SET user = target.0.xact.usr -%]
28 To: [%- params.recipient_email || user.email %]
29 From: [%- params.sender_email || default_sender %]
30 Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %]
31 Subject: Payment Receipt
32 Auto-Submitted: auto-generated
33
34 [% date.format -%]
35 [%- SET xact_mp_hash = {} -%]
36 [%- FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions -%]
37     [%- SET xact_id = mp.xact.id -%]
38     [%- IF ! xact_mp_hash.defined( xact_id ) -%][%- xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } -%][%- END -%]
39     [%- xact_mp_hash.$xact_id.payments.push(mp) -%]
40 [%- END -%]
41 [%- FOR xact_id IN xact_mp_hash.keys.sort -%]
42     [%- SET xact = xact_mp_hash.$xact_id.xact %]
43 Transaction ID: [% xact_id %]
44     [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
45     [% ELSE %]Miscellaneous
46     [% END %]
47     Line item billings:
48         [%- SET mb_type_hash = {} -%]
49         [%- FOR mb IN xact.billings %][%# Group billings by their btype -%]
50             [%- IF mb.voided == 'f' -%]
51                 [%- SET mb_type = mb.btype.id -%]
52                 [%- IF ! mb_type_hash.defined( mb_type ) -%][%- mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } -%][%- END -%]
53                 [%- IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) -%][%- mb_type_hash.$mb_type.first_ts = mb.billing_ts -%][%- END -%]
54                 [%- mb_type_hash.$mb_type.last_ts = mb.billing_ts -%]
55                 [%- mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount -%]
56                 [%- mb_type_hash.$mb_type.billings.push( mb ) -%]
57             [%- END -%]
58         [%- END -%]
59         [%- FOR mb_type IN mb_type_hash.keys.sort -%]
60             [%- IF mb_type == 1 %][%-# Consolidated view of overdue billings -%]
61                 $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %] 
62                     on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
63             [%- ELSE -%][%# all other billings show individually %]
64                 [% FOR mb IN mb_type_hash.$mb_type.billings %]
65                     $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
66                 [% END %]
67             [% END %]
68         [% END %]
69     Line item payments:
70         [% FOR mp IN xact_mp_hash.$xact_id.payments %]
71             Payment ID: [% mp.id %]
72                 Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
73                     [% CASE "cash_payment" %]cash
74                     [% CASE "check_payment" %]check
75                     [% CASE "credit_card_payment" %]credit card
76                     [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
77                     [% CASE "debit_card_payment" %]debit card
78                     [% CASE "credit_payment" %]credit
79                     [% CASE "forgive_payment" %]forgiveness
80                     [% CASE "goods_payment" %]goods
81                     [% CASE "work_payment" %]work
82                 [%- END %] on [% mp.payment_ts %] [% mp.note %]
83         [% END %]
84 [% END %]
85 $$
86 WHERE id = 29 AND template = $$
87 [%- USE date -%]
88 [%- SET user = target.0.xact.usr -%]
89 To: [%- params.recipient_email || user.email %]
90 From: [%- params.sender_email || default_sender %]
91 Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %]
92 Subject: Payment Receipt
93 Auto-Submitted: auto-generated
94
95 [% date.format -%]
96 [%- SET xact_mp_hash = {} -%]
97 [%- FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions -%]
98     [%- SET xact_id = mp.xact.id -%]
99     [%- IF ! xact_mp_hash.defined( xact_id ) -%][%- xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } -%][%- END -%]
100     [%- xact_mp_hash.$xact_id.payments.push(mp) -%]
101 [%- END -%]
102 [%- FOR xact_id IN xact_mp_hash.keys.sort -%]
103     [%- SET xact = xact_mp_hash.$xact_id.xact %]
104 Transaction ID: [% xact_id %]
105     [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
106     [% ELSE %]Miscellaneous
107     [% END %]
108     Line item billings:
109         [%- SET mb_type_hash = {} -%]
110         [%- FOR mb IN xact.billings %][%# Group billings by their btype -%]
111             [%- IF mb.voided == 'f' -%]
112                 [%- SET mb_type = mb.btype.id -%]
113                 [%- IF ! mb_type_hash.defined( mb_type ) -%][%- mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } -%][%- END -%]
114                 [%- IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) -%][%- mb_type_hash.$mb_type.first_ts = mb.billing_ts -%][%- END -%]
115                 [%- mb_type_hash.$mb_type.last_ts = mb.billing_ts -%]
116                 [%- mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount -%]
117                 [%- mb_type_hash.$mb_type.billings.push( mb ) -%]
118             [%- END -%]
119         [%- END -%]
120         [%- FOR mb_type IN mb_type_hash.keys.sort -%]
121             [%- IF mb_type == 1 %][%-# Consolidated view of overdue billings -%]
122                 $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %] 
123                     on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
124             [%- ELSE -%][%# all other billings show individually %]
125                 [% FOR mb IN mb_type_hash.$mb_type.billings %]
126                     $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
127                 [% END %]
128             [% END %]
129         [% END %]
130     Line item payments:
131         [% FOR mp IN xact_mp_hash.$xact_id.payments %]
132             Payment ID: [% mp.id %]
133                 Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
134                     [% CASE "cash_payment" %]cash
135                     [% CASE "check_payment" %]check
136                     [% CASE "credit_card_payment" %]credit card
137                     [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
138                     [% CASE "credit_payment" %]credit
139                     [% CASE "forgive_payment" %]forgiveness
140                     [% CASE "goods_payment" %]goods
141                     [% CASE "work_payment" %]work
142                 [%- END %] on [% mp.payment_ts %] [% mp.note %]
143         [% END %]
144 [% END %]
145 $$;
146 COMMIT;
147