CRM-21311 Credit card type is unset on submission if labels are customised.
authoreileen <emcnaughton@wikimedia.org>
Thu, 2 Aug 2018 11:13:37 +0000 (23:13 +1200)
committereileen <emcnaughton@wikimedia.org>
Thu, 2 Aug 2018 11:33:45 +0000 (23:33 +1200)
commitce895597e56bcd6b94e99e58ee126bfa6ff1fc97
tree6d1e53b0919dbec64118118a4864f81fd2db6e8f
parent05d2edfd2c1be94577491a4e802d2c0ccb11f5e0
CRM-21311 Credit card type is unset on submission if labels are customised.

We have been following a strange pattern where we take the label of a credit card field and munge it into
a css compatible string and then expect that to be a match with an array based on lcasing the
name field for the credit card. This means that if label !== name the house of cards falls.

This is particularly a problem for Amex which needs to be set correctly for the
4 digit cvv not to trigger a validation fail. Notably Amex is probably also the most likely for
people to want to rename it since Amex is an abbreviation.

This PR backs out of all of that and assigns an array of data to js - including the pattern itself
and then updates the js script to refer to the right variable name for each purpose and to stop munging
CRM/Core/Payment/Form.php
CRM/Financial/Form/Payment.php
templates/CRM/Core/BillingBlock.js
tests/phpunit/CRM/Financial/BAO/PaymentProcessorTest.php