# unless/until determined by payment processor API
- my ($approval_code, $cc_processor, $cc_type, $cc_order_number) = (undef,undef,undef, undef);
+ my ($approval_code, $cc_processor, $cc_order_number) = (undef,undef,undef, undef);
my $patron = $e->retrieve_actor_user($user_id) or return $e->die_event;
if ($payobj->has_field('accepting_usr')) { $payobj->accepting_usr($e->requestor->id); }
if ($payobj->has_field('cash_drawer')) { $payobj->cash_drawer($drawer); }
- if ($payobj->has_field('cc_type')) { $payobj->cc_type($cc_args->{type}); }
if ($payobj->has_field('check_number')) { $payobj->check_number($check_number); }
# Store the last 4 digits of the CC number
if ($payobj->has_field('cc_number')) {
$payobj->cc_number(substr($cc_args->{number}, -4));
}
- if ($payobj->has_field('expire_month')) { $payobj->expire_month($cc_args->{expire_month}); $logger->info("LFW XXX expire_month is $cc_args->{expire_month}"); }
- if ($payobj->has_field('expire_year')) { $payobj->expire_year($cc_args->{expire_year}); }
-
+
# Note: It is important not to set approval_code
# on the fieldmapper object yet.
{
no warnings 'uninitialized';
- $cc_type = $cc_payload->{card_type};
$approval_code = $cc_payload->{authorization} ||
$cc_payload->{id};
$cc_processor = $cc_payload->{processor} ||
# Urgh, clean up this mega-function one day.
if ($cc_processor eq 'Stripe' and $approval_code and $cc_payload) {
- $payment->expire_month($cc_payload->{card}{exp_month});
- $payment->expire_year($cc_payload->{card}{exp_year});
$payment->cc_number($cc_payload->{card}{last4});
}
$payment->approval_code($approval_code) if $approval_code;
$payment->cc_order_number($cc_order_number) if $cc_order_number;
- $payment->cc_type($cc_type) if $cc_type;
$payment->cc_processor($cc_processor) if $cc_processor;
- $payment->cc_first_name($cc_args->{'billing_first'}) if $cc_args->{'billing_first'};
- $payment->cc_last_name($cc_args->{'billing_last'}) if $cc_args->{'billing_last'};
if (!$e->$create_money_method($payment)) {
return _recording_failure(
$e, "$create_money_method failed", $payment, $cc_payload
--- /dev/null
+
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+-- Remove references to dropped CC payment columns in the print/email
+-- payment receipt templates, but only if the in-db template matches
+-- the stock template.
+-- The actual diff here is only about 8 lines.
+
+UPDATE action_trigger.event_definition SET template =
+$$
+[%- USE date -%]
+[%- SET user = target.0.xact.usr -%]
+To: [%- params.recipient_email || user.email %]
+From: [%- params.sender_email || default_sender %]
+Subject: Payment Receipt
+
+[% date.format -%]
+[%- SET xact_mp_hash = {} -%]
+[%- FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions -%]
+ [%- SET xact_id = mp.xact.id -%]
+ [%- IF ! xact_mp_hash.defined( xact_id ) -%][%- xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } -%][%- END -%]
+ [%- xact_mp_hash.$xact_id.payments.push(mp) -%]
+[%- END -%]
+[%- FOR xact_id IN xact_mp_hash.keys.sort -%]
+ [%- SET xact = xact_mp_hash.$xact_id.xact %]
+Transaction ID: [% xact_id %]
+ [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
+ [% ELSE %]Miscellaneous
+ [% END %]
+ Line item billings:
+ [%- SET mb_type_hash = {} -%]
+ [%- FOR mb IN xact.billings %][%# Group billings by their btype -%]
+ [%- IF mb.voided == 'f' -%]
+ [%- SET mb_type = mb.btype.id -%]
+ [%- IF ! mb_type_hash.defined( mb_type ) -%][%- mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } -%][%- END -%]
+ [%- IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) -%][%- mb_type_hash.$mb_type.first_ts = mb.billing_ts -%][%- END -%]
+ [%- mb_type_hash.$mb_type.last_ts = mb.billing_ts -%]
+ [%- mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount -%]
+ [%- mb_type_hash.$mb_type.billings.push( mb ) -%]
+ [%- END -%]
+ [%- END -%]
+ [%- FOR mb_type IN mb_type_hash.keys.sort -%]
+ [%- IF mb_type == 1 %][%-# Consolidated view of overdue billings -%]
+ $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %]
+ on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
+ [%- ELSE -%][%# all other billings show individually %]
+ [% FOR mb IN mb_type_hash.$mb_type.billings %]
+ $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
+ [% END %]
+ [% END %]
+ [% END %]
+ Line item payments:
+ [% FOR mp IN xact_mp_hash.$xact_id.payments %]
+ Payment ID: [% mp.id %]
+ Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
+ [% CASE "cash_payment" %]cash
+ [% CASE "check_payment" %]check
+ [% CASE "credit_card_payment" %]credit card
+ [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
+ [% CASE "credit_payment" %]credit
+ [% CASE "forgive_payment" %]forgiveness
+ [% CASE "goods_payment" %]goods
+ [% CASE "work_payment" %]work
+ [%- END %] on [% mp.payment_ts %] [% mp.note %]
+ [% END %]
+[% END %]
+$$
+
+WHERE id = 29 AND template =
+
+$$
+[%- USE date -%]
+[%- SET user = target.0.xact.usr -%]
+To: [%- params.recipient_email || user.email %]
+From: [%- params.sender_email || default_sender %]
+Subject: Payment Receipt
+
+[% date.format -%]
+[%- SET xact_mp_hash = {} -%]
+[%- FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions -%]
+ [%- SET xact_id = mp.xact.id -%]
+ [%- IF ! xact_mp_hash.defined( xact_id ) -%][%- xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } -%][%- END -%]
+ [%- xact_mp_hash.$xact_id.payments.push(mp) -%]
+[%- END -%]
+[%- FOR xact_id IN xact_mp_hash.keys.sort -%]
+ [%- SET xact = xact_mp_hash.$xact_id.xact %]
+Transaction ID: [% xact_id %]
+ [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
+ [% ELSE %]Miscellaneous
+ [% END %]
+ Line item billings:
+ [%- SET mb_type_hash = {} -%]
+ [%- FOR mb IN xact.billings %][%# Group billings by their btype -%]
+ [%- IF mb.voided == 'f' -%]
+ [%- SET mb_type = mb.btype.id -%]
+ [%- IF ! mb_type_hash.defined( mb_type ) -%][%- mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } -%][%- END -%]
+ [%- IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) -%][%- mb_type_hash.$mb_type.first_ts = mb.billing_ts -%][%- END -%]
+ [%- mb_type_hash.$mb_type.last_ts = mb.billing_ts -%]
+ [%- mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount -%]
+ [%- mb_type_hash.$mb_type.billings.push( mb ) -%]
+ [%- END -%]
+ [%- END -%]
+ [%- FOR mb_type IN mb_type_hash.keys.sort -%]
+ [%- IF mb_type == 1 %][%-# Consolidated view of overdue billings -%]
+ $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %]
+ on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
+ [%- ELSE -%][%# all other billings show individually %]
+ [% FOR mb IN mb_type_hash.$mb_type.billings %]
+ $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
+ [% END %]
+ [% END %]
+ [% END %]
+ Line item payments:
+ [% FOR mp IN xact_mp_hash.$xact_id.payments %]
+ Payment ID: [% mp.id %]
+ Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
+ [% CASE "cash_payment" %]cash
+ [% CASE "check_payment" %]check
+ [% CASE "credit_card_payment" %]credit card (
+ [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
+ [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%]
+ [% cc_chunks.last -%]
+ exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
+ )
+ [% CASE "credit_payment" %]credit
+ [% CASE "forgive_payment" %]forgiveness
+ [% CASE "goods_payment" %]goods
+ [% CASE "work_payment" %]work
+ [%- END %] on [% mp.payment_ts %] [% mp.note %]
+ [% END %]
+[% END %]
+$$;
+
+
+UPDATE action_trigger.event_definition SET template =
+$$
+[%- USE date -%][%- SET user = target.0.xact.usr -%]
+<div style="li { padding: 8px; margin 5px; }">
+ <div>[% date.format %]</div><br/>
+ <ol>
+ [% SET xact_mp_hash = {} %]
+ [% FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions %]
+ [% SET xact_id = mp.xact.id %]
+ [% IF ! xact_mp_hash.defined( xact_id ) %][% xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } %][% END %]
+ [% xact_mp_hash.$xact_id.payments.push(mp) %]
+ [% END %]
+ [% FOR xact_id IN xact_mp_hash.keys.sort %]
+ [% SET xact = xact_mp_hash.$xact_id.xact %]
+ <li>Transaction ID: [% xact_id %]
+ [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
+ [% ELSE %]Miscellaneous
+ [% END %]
+ Line item billings:<ol>
+ [% SET mb_type_hash = {} %]
+ [% FOR mb IN xact.billings %][%# Group billings by their btype %]
+ [% IF mb.voided == 'f' %]
+ [% SET mb_type = mb.btype.id %]
+ [% IF ! mb_type_hash.defined( mb_type ) %][% mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } %][% END %]
+ [% IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) %][% mb_type_hash.$mb_type.first_ts = mb.billing_ts %][% END %]
+ [% mb_type_hash.$mb_type.last_ts = mb.billing_ts %]
+ [% mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount %]
+ [% mb_type_hash.$mb_type.billings.push( mb ) %]
+ [% END %]
+ [% END %]
+ [% FOR mb_type IN mb_type_hash.keys.sort %]
+ <li>[% IF mb_type == 1 %][%# Consolidated view of overdue billings %]
+ $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %]
+ on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
+ [% ELSE %][%# all other billings show individually %]
+ [% FOR mb IN mb_type_hash.$mb_type.billings %]
+ $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
+ [% END %]
+ [% END %]</li>
+ [% END %]
+ </ol>
+ Line item payments:<ol>
+ [% FOR mp IN xact_mp_hash.$xact_id.payments %]
+ <li>Payment ID: [% mp.id %]
+ Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
+ [% CASE "cash_payment" %]cash
+ [% CASE "check_payment" %]check
+ [% CASE "credit_card_payment" %]credit card
+ [%- IF mp.credit_card_payment.cc_number %] ([% mp.credit_card_payment.cc_number %])[% END %]
+ [% CASE "credit_payment" %]credit
+ [% CASE "forgive_payment" %]forgiveness
+ [% CASE "goods_payment" %]goods
+ [% CASE "work_payment" %]work
+ [%- END %] on [% mp.payment_ts %] [% mp.note %]
+ </li>
+ [% END %]
+ </ol>
+ </li>
+ [% END %]
+ </ol>
+</div>
+$$
+
+WHERE id = 30 AND template =
+
+$$
+[%- USE date -%][%- SET user = target.0.xact.usr -%]
+<div style="li { padding: 8px; margin 5px; }">
+ <div>[% date.format %]</div><br/>
+ <ol>
+ [% SET xact_mp_hash = {} %]
+ [% FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions %]
+ [% SET xact_id = mp.xact.id %]
+ [% IF ! xact_mp_hash.defined( xact_id ) %][% xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } %][% END %]
+ [% xact_mp_hash.$xact_id.payments.push(mp) %]
+ [% END %]
+ [% FOR xact_id IN xact_mp_hash.keys.sort %]
+ [% SET xact = xact_mp_hash.$xact_id.xact %]
+ <li>Transaction ID: [% xact_id %]
+ [% IF xact.circulation %][% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
+ [% ELSE %]Miscellaneous
+ [% END %]
+ Line item billings:<ol>
+ [% SET mb_type_hash = {} %]
+ [% FOR mb IN xact.billings %][%# Group billings by their btype %]
+ [% IF mb.voided == 'f' %]
+ [% SET mb_type = mb.btype.id %]
+ [% IF ! mb_type_hash.defined( mb_type ) %][% mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } %][% END %]
+ [% IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) %][% mb_type_hash.$mb_type.first_ts = mb.billing_ts %][% END %]
+ [% mb_type_hash.$mb_type.last_ts = mb.billing_ts %]
+ [% mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount %]
+ [% mb_type_hash.$mb_type.billings.push( mb ) %]
+ [% END %]
+ [% END %]
+ [% FOR mb_type IN mb_type_hash.keys.sort %]
+ <li>[% IF mb_type == 1 %][%# Consolidated view of overdue billings %]
+ $[% mb_type_hash.$mb_type.sum %] for [% mb_type_hash.$mb_type.billings.0.btype.name %]
+ on [% mb_type_hash.$mb_type.first_ts %] through [% mb_type_hash.$mb_type.last_ts %]
+ [% ELSE %][%# all other billings show individually %]
+ [% FOR mb IN mb_type_hash.$mb_type.billings %]
+ $[% mb.amount %] for [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
+ [% END %]
+ [% END %]</li>
+ [% END %]
+ </ol>
+ Line item payments:<ol>
+ [% FOR mp IN xact_mp_hash.$xact_id.payments %]
+ <li>Payment ID: [% mp.id %]
+ Paid [% mp.amount %] via [% SWITCH mp.payment_type -%]
+ [% CASE "cash_payment" %]cash
+ [% CASE "check_payment" %]check
+ [% CASE "credit_card_payment" %]credit card (
+ [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
+ [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%]
+ [% cc_chunks.last -%]
+ exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
+ )
+ [% CASE "credit_payment" %]credit
+ [% CASE "forgive_payment" %]forgiveness
+ [% CASE "goods_payment" %]goods
+ [% CASE "work_payment" %]work
+ [%- END %] on [% mp.payment_ts %] [% mp.note %]
+ </li>
+ [% END %]
+ </ol>
+ </li>
+ [% END %]
+ </ol>
+</div>
+$$;
+
+
+--ROLLBACK;
+COMMIT;