Skip to content

Commit

Permalink
dev/financial#109 Fix country/province assignation in the contributio…
Browse files Browse the repository at this point in the history
…n invoice
  • Loading branch information
mlutfy committed Nov 27, 2019
1 parent 209e301 commit ccf3af0
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 27 deletions.
45 changes: 20 additions & 25 deletions CRM/Contribute/Form/Task/Invoice.php
Original file line number Diff line number Diff line change
Expand Up @@ -245,26 +245,17 @@ public static function printPDF($contribIDs, &$params, $contactIds) {

$objects['contribution']->receive_date = CRM_Utils_Date::isoToMysql($objects['contribution']->receive_date);

$addressParams = ['contact_id' => $contribution->contact_id];
$addressDetails = CRM_Core_BAO_Address::getValues($addressParams);

// to get billing address if present
// Fetch the billing address. getValues should prioritize the billing
// address, otherwise will return the primary address.
$billingAddress = [];
foreach ($addressDetails as $address) {
if (($address['is_billing'] == 1) && ($address['is_primary'] == 1) && ($address['contact_id'] == $contribution->contact_id)) {
$billingAddress[$address['contact_id']] = $address;
break;
}
elseif (($address['is_billing'] == 0 && $address['is_primary'] == 1) || ($address['is_billing'] == 1) && ($address['contact_id'] == $contribution->contact_id)) {
$billingAddress[$address['contact_id']] = $address;
}
}

if (!empty($billingAddress[$contribution->contact_id]['state_province_id'])) {
$stateProvinceAbbreviation = CRM_Core_PseudoConstant::stateProvinceAbbreviation($billingAddress[$contribution->contact_id]['state_province_id']);
}
else {
$stateProvinceAbbreviation = '';
$addressDetails = CRM_Core_BAO_Address::getValues([
'contact_id' => $contribution->contact_id,
'is_billing' => 1,
]);

if (!empty($addressDetails)) {
$billingAddress = array_shift($addressDetails);
}

if ($contribution->contribution_status_id == $refundedStatusId || $contribution->contribution_status_id == $cancelledStatusId) {
Expand Down Expand Up @@ -405,13 +396,17 @@ public static function printPDF($contribIDs, &$params, $contactIds) {
'contribution_status_id' => $contribution->contribution_status_id,
'contributionStatusName' => CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution->contribution_status_id),
'subTotal' => $subTotal,
'street_address' => CRM_Utils_Array::value('street_address', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'supplemental_address_1' => CRM_Utils_Array::value('supplemental_address_1', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'supplemental_address_2' => CRM_Utils_Array::value('supplemental_address_2', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'supplemental_address_3' => CRM_Utils_Array::value('supplemental_address_3', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'city' => CRM_Utils_Array::value('city', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'stateProvinceAbbreviation' => $stateProvinceAbbreviation,
'postal_code' => CRM_Utils_Array::value('postal_code', CRM_Utils_Array::value($contribution->contact_id, $billingAddress)),
'street_address' => CRM_Utils_Array::value('street_address', $billingAddress),
'supplemental_address_1' => CRM_Utils_Array::value('supplemental_address_1', $billingAddress),
'supplemental_address_2' => CRM_Utils_Array::value('supplemental_address_2', $billingAddress),
'supplemental_address_3' => CRM_Utils_Array::value('supplemental_address_3', $billingAddress),
'city' => CRM_Utils_Array::value('city', $billingAddress),
'postal_code' => CRM_Utils_Array::value('postal_code', $billingAddress),
'state_province' => CRM_Utils_Array::value('state_province', $billingAddress),
'state_province_abbreviation' => CRM_Utils_Array::value('state_province_abbreviation', $billingAddress),
// Kept for backwards compatibility
'stateProvinceAbbreviation' => CRM_Utils_Array::value('state_province_abbreviation', $billingAddress),
'country' => CRM_Utils_Array::value('country', $billingAddress),
'is_pay_later' => $contribution->is_pay_later,
'organization_name' => $contribution->_relatedObjects['contact']->organization_name,
'domain_organization' => $domain->name,
Expand Down
6 changes: 4 additions & 2 deletions CRM/Core/BAO/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -495,15 +495,17 @@ public static function &getValues($entityBlock, $microformat = FALSE, $fieldName
if (!empty($address->state_province_id)) {
$address->state = CRM_Core_PseudoConstant::stateProvinceAbbreviation($address->state_province_id, FALSE);
$address->state_name = CRM_Core_PseudoConstant::stateProvince($address->state_province_id, FALSE);
$values['state_province_abbreviation'] = $address->state;
$values['state_province'] = $address->state_name;
}

if (!empty($address->country_id)) {
$address->country = CRM_Core_PseudoConstant::country($address->country_id);
$values['country'] = $address->country;

//get world region
$regionId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', $address->country_id, 'region_id');

$address->world_region = CRM_Core_PseudoConstant::worldregion($regionId);
$values['world_region'] = CRM_Core_PseudoConstant::worldregion($regionId);
}

$address->addDisplay($microformat);
Expand Down

0 comments on commit ccf3af0

Please sign in to comment.