Contribution fails mid-donation with geocoding, "on behalf of", and no state/province
Overview
The "On Behalf of Organization" code causes a bug in geocoding when a state is not submitted, but other address info is present.
Reproduction steps
- Create a contribution page that allows giving "on behalf of an organization". The Organization profile should include state/province and at least one other address field. The state/province must not be required.
- Submit the form with an organization. Provide at least one part of the address but leave the state blank.
Current behaviour
Crashes in geocoding.
Expected behaviour
Submits successfully.
Comments
This wouldn't be such a big deal but for #2929.
A partial backtrace is below, though there are other ways to reach this code path (e.g. if confirm pages are present/absent).
#0 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(1419): strtolower()
#1 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Utils/Geocode/Google.php(76): CRM_Core_DAO::getFieldValue()
#2 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/BAO/Address.php(1287): CRM_Utils_Geocode_Google::format()
#3 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/BAO/Address.php(276): CRM_Core_BAO_Address::addGeocoderData()
#4 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/BAO/Address.php(1365): CRM_Core_BAO_Address::fixAddress()
#5 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/BAO/Location.php(52): CRM_Core_BAO_Address::legacyCreate()
#6 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contact/BAO/Contact.php(327): CRM_Core_BAO_Location::create()
#7 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contact/BAO/Contact.php(1921): CRM_Contact_BAO_Contact::create()
#8 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Confirm.php(1296): CRM_Contact_BAO_Contact::createProfileContact()
#9 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Confirm.php(2312): CRM_Contribute_Form_Contribution_Confirm::processOnBehalfOrganization()
#10 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Confirm.php(836): CRM_Contribute_Form_Contribution_Confirm->processFormSubmission()
#11 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Form.php(617): CRM_Contribute_Form_Contribution_Confirm->postProcess()
#12 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Main.php(1318): CRM_Core_Form->mainProcess()
#13 /var/www/connect.mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Main.php(1076): CRM_Contribute_Form_Contribution_Main->skipToThankYouPage()