Fix saving of invoicing.
authoreileen <emcnaughton@wikimedia.org>
Tue, 20 Nov 2018 03:15:44 +0000 (16:15 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 20 Nov 2018 03:15:44 +0000 (16:15 +1300)
Invoicing has setting metadata but this setting is ignored in various places in core in favour of using a hacky method. Don't break when
hackiness ensues

CRM/Admin/Form/Preferences/Contribute.php

index 7efb2d2e1ef841d2752680a8f0c5ff4d7415d87c..111111d5145cc4199f88c31e74a13b56199338c0 100644 (file)
@@ -187,6 +187,11 @@ class CRM_Admin_Form_Preferences_Contribute extends CRM_Admin_Form_Preferences {
     // store the submitted values in an array
     $params = $this->controller->exportValues($this->_name);
     $invoiceParams = array_intersect_key($params, $this->invoiceSettings);
+    // This is a hack - invoicing is it's own setting but it is being used from invoice params
+    // too. This means that saving from api will not have the desired core effect.
+    // but we should fix that elsewhere - ie. stop abusing the settings
+    // and fix the code repetition associated with invoicing
+    $invoiceParams['invoicing'] = CRM_Utils_Array::value('invoicing', $params, 0);
     Civi::settings()->set('contribution_invoice_settings', $invoiceParams);
     parent::postProcess();