From f87ac194e031df53fe9b9a15107fef685d84af1b Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Tue, 14 Sep 2021 14:22:02 +0100 Subject: [PATCH] Fix editing and saving a template contribution via form --- CRM/Contribute/Form/Contribution.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CRM/Contribute/Form/Contribution.php b/CRM/Contribute/Form/Contribution.php index 2d42f8f6543b..baf9956dee50 100644 --- a/CRM/Contribute/Form/Contribution.php +++ b/CRM/Contribute/Form/Contribution.php @@ -434,6 +434,12 @@ public function setDefaultValues() { $defaults['refund_trxn_id'] = $defaults['trxn_id'] ?? NULL; } + if (!empty($defaults['contribution_status_id']) + && ('Template' === CRM_Contribute_PseudoConstant::contributionStatus($defaults['contribution_status_id'], 'name')) + ){ + $this->getElement('contribution_status_id')->freeze(); + } + if (!$this->_id && empty($defaults['receive_date'])) { $defaults['receive_date'] = date('Y-m-d H:i:s'); } @@ -701,7 +707,9 @@ public function buildQuickForm() { } // add various dates - $this->addField('receive_date', ['entity' => 'contribution'], !$this->_mode, FALSE); + $receiveDateRequired = !$this->_values['is_test'] + && ((int) $this->_values['is_template'] !== 1); + $this->addField('receive_date', ['entity' => 'contribution'], $receiveDateRequired, FALSE); $this->addField('receipt_date', ['entity' => 'contribution'], FALSE, FALSE); $this->addField('cancel_date', ['entity' => 'contribution', 'label' => ts('Cancelled / Refunded Date')], FALSE, FALSE); @@ -889,6 +897,7 @@ public static function formRule($fields, $files, $self) { if (($self->_action & CRM_Core_Action::UPDATE) && $self->_id && $self->_values['contribution_status_id'] != $fields['contribution_status_id'] + && $self->_values['contribution_status_id'] != CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Template') ) { CRM_Contribute_BAO_Contribution::checkStatusValidation($self->_values, $fields, $errors); }