From 099f54355b1a9a3940986f2f6dc4aef020965740 Mon Sep 17 00:00:00 2001 From: eileen Date: Fri, 25 Oct 2019 12:33:45 +1300 Subject: [PATCH] Extract code to update line items to paid --- CRM/Contribute/BAO/Contribution.php | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index e71e7fa4ab..e68194d405 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1171,7 +1171,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { $trxn = CRM_Core_BAO_FinancialTrxn::create($params['trxnParams']); // @todo we should stop passing $params by reference - splitting this out would be a step towards that. $params['entity_id'] = self::$_trxnIDs[] = $trxn->id; - $query = "UPDATE civicrm_financial_item SET status_id = %1 WHERE entity_id = %2 and entity_table = 'civicrm_line_item'"; + $sql = "SELECT id, amount FROM civicrm_financial_item WHERE entity_id = %1 and entity_table = 'civicrm_line_item'"; $entityParams = [ @@ -1179,14 +1179,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { ]; foreach ($params['line_item'] as $fieldId => $fields) { foreach ($fields as $fieldValueId => $lineItemDetails) { - $fparams = [ - 1 => [ - CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialItem', 'status_id', 'Paid'), - 'Integer', - ], - 2 => [$lineItemDetails['id'], 'Integer'], - ]; - CRM_Core_DAO::executeQuery($query, $fparams); + self::updateFinancialItemForLineItemToPaid($lineItemDetails['id']); $fparams = [ 1 => [$lineItemDetails['id'], 'Integer'], ]; @@ -1227,6 +1220,23 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { } } + /** + * Update all financial items related to the line item tto have a status of paid. + * + * @param int $lineItemID + */ + private static function updateFinancialItemForLineItemToPaid($lineItemID) { + $fparams = [ + 1 => [ + CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialItem', 'status_id', 'Paid'), + 'Integer', + ], + 2 => [$lineItemID, 'Integer'], + ]; + $query = "UPDATE civicrm_financial_item SET status_id = %1 WHERE entity_id = %2 and entity_table = 'civicrm_line_item'"; + CRM_Core_DAO::executeQuery($query, $fparams); + } + /** * @inheritDoc */ -- 2.25.1