*/
protected $statusMessageTitle;
+ /**
+ * Explicitly declare the form context.
+ */
+ public function getDefaultContext() {
+ return 'create';
+ }
+
/**
* Set variables up before form is built.
*/
else {
$defaults['refund_trxn_id'] = isset($defaults['trxn_id']) ? $defaults['trxn_id'] : NULL;
}
- $dates = array(
- 'receive_date',
- 'receipt_date',
- 'cancel_date',
- 'thankyou_date',
- );
- foreach ($dates as $key) {
- if (!empty($defaults[$key])) {
- list($defaults[$key], $defaults[$key . '_time'])
- = CRM_Utils_Date::setDateDefaults(CRM_Utils_Array::value($key, $defaults), 'activityDateTime');
- }
- }
if (!$this->_id && empty($defaults['receive_date'])) {
- list($defaults['receive_date'],
- $defaults['receive_date_time']
- ) = CRM_Utils_Date::setDateDefaults(NULL, 'activityDateTime');
+ $defaults['receive_date'] = date('Y-m-d H:i:s');
}
- $this->assign('receive_date', CRM_Utils_Date::processDate(CRM_Utils_Array::value('receive_date', $defaults),
- CRM_Utils_Array::value('receive_date_time', $defaults)
- ));
$currency = CRM_Utils_Array::value('currency', $defaults);
$this->assign('currency', $currency);
// Hack to get currency info to the js layer. CRM-11440.
* Build the form object.
*/
public function buildQuickForm() {
+ if ($this->_action & CRM_Core_Action::DELETE) {
+ $this->addButtons(array(
+ array(
+ 'type' => 'next',
+ 'name' => ts('Delete'),
+ 'spacing' => ' ',
+ 'isDefault' => TRUE,
+ ),
+ array(
+ 'type' => 'cancel',
+ 'name' => ts('Cancel'),
+ ),
+ )
+ );
+ return;
+ }
+
// FIXME: This probably needs to be done in preprocess
if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()
&& $this->_action & CRM_Core_Action::UPDATE
}
if ($this->_noteID &&
- isset($this->_values['note'])
+ !CRM_Utils_System::isNull($this->_values['note'])
) {
$defaults['hidden_AdditionalDetail'] = 1;
}
$this->applyFilter('__ALL__', 'trim');
- if ($this->_action & CRM_Core_Action::DELETE) {
- $this->addButtons(array(
- array(
- 'type' => 'next',
- 'name' => ts('Delete'),
- 'spacing' => ' ',
- 'isDefault' => TRUE,
- ),
- array(
- 'type' => 'cancel',
- 'name' => ts('Cancel'),
- ),
- )
- );
- return;
- }
-
//need to assign custom data type and subtype to the template
$this->assign('customDataType', 'Contribution');
$this->assign('customDataSubType', $this->_contributionType);
}
// add various dates
- $this->addDateTime('receive_date', ts('Received'), FALSE, array('formatType' => 'activityDateTime'));
+ $this->addField('receive_date', array('entity' => 'contribution'), FALSE, FALSE);
+ $this->addField('receipt_date', array('entity' => 'contribution'), FALSE, FALSE);
+ $this->addField('cancel_date', array('entity' => 'contribution', 'label' => ts('Cancelled / Refunded Date')), FALSE, FALSE);
if ($this->_online) {
$this->assign('hideCalender', TRUE);
}
- $this->addDateTime('receipt_date', ts('Receipt Date'), FALSE, array('formatType' => 'activityDateTime'));
- $this->addDateTime('cancel_date', ts('Cancelled / Refunded Date'), FALSE, array('formatType' => 'activityDateTime'));
-
$this->add('textarea', 'cancel_reason', ts('Cancellation / Refund Reason'), $attributes['cancel_reason']);
$totalAmount = NULL;
CRM_Core_Config::singleton()->defaultCurrency
);
- if (!empty($this->_params['receive_date'])) {
- $this->_params['receive_date'] = CRM_Utils_Date::processDate($this->_params['receive_date'], $this->_params['receive_date_time']);
- }
- else {
- $this->_params['receive_date'] = $now;
- }
-
$this->_params['pcp_display_in_roll'] = CRM_Utils_Array::value('pcp_display_in_roll', $params);
$this->_params['pcp_roll_nickname'] = CRM_Utils_Array::value('pcp_roll_nickname', $params);
$this->_params['pcp_personal_note'] = CRM_Utils_Array::value('pcp_personal_note', $params);
if (!empty($this->_params['is_email_receipt'])) {
$this->_params['receipt_date'] = $now;
}
- else {
- $this->_params['receipt_date'] = CRM_Utils_Date::processDate($this->_params['receipt_date'],
- $params['receipt_date_time'], TRUE
- );
- }
$this->set('params', $this->_params);
public function testSubmit($params, $action, $creditCardMode = NULL) {
$defaults = array(
'soft_credit_contact_id' => array(),
+ 'receive_date' => date('Y-m-d H:i:s'),
'receipt_date' => '',
- 'receipt_date_time' => '',
'cancel_date' => '',
- 'cancel_date_time' => '',
'hidden_Premium' => 1,
);
$this->_bltID = 5;
));
$this->_id = $params['id'];
$this->_values = $existingContribution;
+ if (CRM_Contribute_BAO_Contribution::checkContributeSettings('invoicing')) {
+ $this->_values['tax_amount'] = civicrm_api3('contribution', 'getvalue', array(
+ 'id' => $params['id'],
+ 'return' => 'tax_amount',
+ ));
+ }
}
else {
$existingContribution = array();
// as a point of fragility rather than a logical 'if' clause.
if ($priceSetId) {
CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'],
- $submittedValues, $lineItem[$priceSetId]);
+ $submittedValues, $lineItem[$priceSetId], NULL, $priceSetId);
// Unset tax amount for offline 'is_quick_config' contribution.
// @todo WHY - quick config was conceived as a quick way to configure contribution forms.
// this is an example of 'other' functionality being hung off it.
// would cause breakage for negative values in some cases.
$submittedValues['total_amount'] = CRM_Utils_Array::value('amount', $submittedValues);
}
+
if ($this->_id) {
if ($this->_compId) {
if ($this->_context == 'participant') {
}
if (!isset($submittedValues['total_amount'])) {
- $submittedValues['total_amount'] = CRM_Utils_Array::value('total_amount', $this->_values) - CRM_Utils_Array::value('tax_amount', $this->_values);
+ $submittedValues['total_amount'] = CRM_Utils_Array::value('total_amount', $this->_values);
+ // Avoid tax amount deduction on edit form and keep it original, because this will lead to error described in CRM-20676
+ if (!$this->_id) {
+ $submittedValues['total_amount'] -= CRM_Utils_Array::value('tax_amount', $this->_values, 0);
+ }
}
$this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE);
// get the required field value only.
- $params = $ids = array();
-
- $params['contact_id'] = $this->_contactID;
- $params['currency'] = $this->getCurrency($submittedValues);
+ $params = [
+ 'contact_id' => $this->_contactID,
+ 'currency' => $this->getCurrency($submittedValues),
+ 'skipCleanMoney' => TRUE,
+ 'id' => $this->_id,
+ ];
//format soft-credit/pcp param first
CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($submittedValues, $this);
$params[$f] = CRM_Utils_Array::value($f, $formValues);
}
- // CRM-5740 if priceset is used, no need to cleanup money.
- if ($priceSetId) {
- $params['skipCleanMoney'] = 1;
- }
$params['revenue_recognition_date'] = NULL;
if (!empty($formValues['revenue_recognition_date'])
&& count(array_filter($formValues['revenue_recognition_date'])) == 2
'01-' . implode('-', $formValues['revenue_recognition_date'])
);
}
- $dates = array(
- 'receive_date',
- 'receipt_date',
- 'cancel_date',
- );
-
- foreach ($dates as $d) {
- if (isset($formValues[$d])) {
- $params[$d] = CRM_Utils_Date::processDate($formValues[$d], CRM_Utils_Array::value($d . '_time', $formValues), TRUE);
- }
- }
if (!empty($formValues['is_email_receipt'])) {
$params['receipt_date'] = date("Y-m-d");
$params['is_pay_later'] = 0;
}
- $ids['contribution'] = $params['id'] = $this->_id;
-
// Add Additional common information to formatted params.
CRM_Contribute_Form_AdditionalInfo::postProcessCommon($formValues, $params, $this);
if ($pId) {
if (!empty($params['note']) && !empty($submittedValues['note'])) {
unset($params['note']);
}
- $contribution = CRM_Contribute_BAO_Contribution::create($params, $ids);
+ $contribution = CRM_Contribute_BAO_Contribution::create($params);
// process associated membership / participant, CRM-4395
if ($contribution->id && $action & CRM_Core_Action::UPDATE) {
$formValues += CRM_Contribute_BAO_ContributionSoft::getSoftContribution($contribution->id);
// to get 'from email id' for send receipt
- $this->fromEmailId = $formValues['from_email_address'];
+ $this->fromEmailId = CRM_Utils_Array::value('from_email_address', $formValues);
if (CRM_Contribute_Form_AdditionalInfo::emailReceipt($this, $formValues)) {
$this->statusMessage[] = ts('A receipt has been emailed to the contributor.');
}
);
}
- if ($contribution->id && !empty($submittedValues['note'])) {
+ if ($contribution->id && array_key_exists('note', $submittedValues)) {
CRM_Contribute_Form_AdditionalInfo::processNote($submittedValues, $this->_contactID, $contribution->id, $this->_noteID);
}