$submittedFields = implode(', ', $submittedFieldId);
$submittedFieldValues = implode(', ', $submittedFieldValueIds);
}
+ $financialItemsArray = array();
if (!empty($submittedFields) && !empty($submittedFieldValues)) {
$updateLineItem = "UPDATE civicrm_line_item li
INNER JOIN civicrm_financial_item fi
$invoiceSettings = Civi::settings()->get('contribution_invoice_settings');
$taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
$updateFinancialItemInfoValues = array();
- $financialItemsArray = array();
while ($updateFinancialItemInfoDAO->fetch()) {
$updateFinancialItemInfoValues = (array) $updateFinancialItemInfoDAO;
$updateFinancialItemInfoValues['transaction_date'] = date('YmdHis');
FROM civicrm_line_item
WHERE (entity_table = 'civicrm_participant' AND entity_id = {$participantId} AND qty > 0)";
$getUpdatedLineItemsDAO = CRM_Core_DAO::executeQuery($getUpdatedLineItems);
+ $line = array();
while ($getUpdatedLineItemsDAO->fetch()) {
$line[$getUpdatedLineItemsDAO->price_field_value_id] = $getUpdatedLineItemsDAO->label . ' - ' . (float) $getUpdatedLineItemsDAO->qty;
}
'civicrm_line_item',
'civicrm_financial_item',
'civicrm_financial_trxn',
+ 'civicrm_price_set',
'civicrm_entity_financial_trxn',
),
TRUE
$priceSet = CRM_Utils_Array::value($priceSetId, $priceSet);
$feeBlock = CRM_Utils_Array::value('fields', $priceSet);
$params['price_2'] = $feeTotal;
+ $tempParams = $params;
+ $templineItems = $lineItem;
CRM_Price_BAO_PriceSet::processAmount($feeBlock,
$params, $lineItem
);
$lineItemVal[$priceSetId] = $lineItem;
CRM_Price_BAO_LineItem::processPriceSet($participant['id'], $lineItemVal, $contribution, 'civicrm_participant');
- return array($participant, $contribution);
+
+ return array(
+ 'participant' => $participant,
+ 'contribution' => $contribution,
+ 'lineItem' => $templineItems,
+ 'params' => $tempParams,
+ 'feeBlock' => $feeBlock,
+ 'priceSetId' => $priceSetId,
+ );
}
/**
$feeAmt = 100;
$amtPaid = 60;
$balance = $feeAmt - $amtPaid;
- list($participant, $contribution) = $this->addParticipantWithPayment($feeAmt, $amtPaid);
+ $result = $this->addParticipantWithPayment($feeAmt, $amtPaid);
+ extract($result);
$paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($participant['id'], 'event');
// amount checking
$this->assertEquals($contribution->contribution_status_id, 8, 'Status record is not proper for contribution');
}
+ /**
+ * Test owed/refund info is listed on view payments.
+ */
+ public function testTransactionInfo() {
+ $feeAmt = 100;
+ $amtPaid = 80;
+ $result = $this->addParticipantWithPayment($feeAmt, $amtPaid);
+ extract($result);
+
+ //Complete the partial payment.
+ $submittedValues = array(
+ 'total_amount' => 20,
+ 'payment_instrument_id' => 3,
+ );
+ CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contribution->id, $submittedValues, 'owed', $participant['id']);
+
+ //Change selection to a lower amount.
+ $params['price_2'] = 50;
+ CRM_Event_BAO_Participant::changeFeeSelections($params, $participant['id'], $contribution->id, $feeBlock, $lineItem, $feeAmt, $priceSetId);
+
+ //Record a refund of the remaining amount.
+ $submittedValues['total_amount'] = 50;
+ CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contribution->id, $submittedValues, 'refund', $participant['id']);
+ $paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($participant['id'], 'event', TRUE);
+ $transaction = $paymentInfo['transaction'];
+
+ //Assert all transaction(owed and refund) are listed on view payments.
+ $this->assertEquals(count($transaction), 3, 'Transaction Details is not proper');
+ $this->assertEquals($transaction[0]['total_amount'], 80.00);
+ $this->assertEquals($transaction[0]['status'], 'Completed');
+
+ $this->assertEquals($transaction[1]['total_amount'], 20.00);
+ $this->assertEquals($transaction[1]['status'], 'Completed');
+
+ $this->assertEquals($transaction[2]['total_amount'], -50.00);
+ $this->assertEquals($transaction[2]['status'], 'Refunded');
+ }
+
}