From 448259d4187d0792dccf5c3e76442027c5dc3fd3 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 15 Feb 2022 12:03:54 +1300 Subject: [PATCH] Fix submit handling of thousands when creating data entry batch --- CRM/Batch/Form/Batch.php | 46 +++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/CRM/Batch/Form/Batch.php b/CRM/Batch/Form/Batch.php index e59c23b391..2c8ad45e7b 100644 --- a/CRM/Batch/Form/Batch.php +++ b/CRM/Batch/Form/Batch.php @@ -9,11 +9,15 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Batch; + /** * This class generates form components for batch entry. */ class CRM_Batch_Form_Batch extends CRM_Admin_Form { + protected $submittableMoneyFields = ['total']; + /** * PreProcess function. */ @@ -26,6 +30,8 @@ class CRM_Batch_Form_Batch extends CRM_Admin_Form { /** * Build the form object. + * + * @throws \CRM_Core_Exception */ public function buildQuickForm() { parent::buildQuickForm(); @@ -69,35 +75,35 @@ class CRM_Batch_Form_Batch extends CRM_Admin_Form { /** * Process the form submission. + * + * @throws \API_Exception */ - public function postProcess() { - $params = $this->controller->exportValues($this->_name); + public function postProcess(): void { if ($this->_action & CRM_Core_Action::DELETE) { - CRM_Core_Session::setStatus("", ts("Batch Deleted"), "success"); + CRM_Core_Session::setStatus('', ts('Batch Deleted'), 'success'); CRM_Batch_BAO_Batch::deleteBatch($this->_id); return; } - if ($this->_id) { - $params['id'] = $this->_id; - } - else { - $session = CRM_Core_Session::singleton(); - $params['created_id'] = $session->get('userID'); - $params['created_date'] = CRM_Utils_Date::processDate(date("Y-m-d"), date("H:i:s")); - } - - // always create with data entry status - $params['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Batch_BAO_Batch', 'status_id', 'Data Entry'); - $batch = CRM_Batch_BAO_Batch::create($params); - - // redirect to batch entry page. - $session = CRM_Core_Session::singleton(); + $batchID = Batch::save(FALSE)->setRecords([ + [ + // Always create with data entry status. + 'status_id:name' => 'Data Entry', + 'id' => $this->_id, + 'title' => $this->getSubmittedValue('title'), + 'description' => $this->getSubmittedValue('description'), + 'type_id' => $this->getSubmittedValue('type_id'), + 'total' => $this->getSubmittedValue('total'), + 'item_count' => $this->getSubmittedValue('item_count'), + ], + ])->execute()->first()['id']; + + // Redirect to batch entry page. if ($this->_action & CRM_Core_Action::ADD) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/batch/entry', "id={$batch->id}&reset=1&action=add")); + CRM_Core_Session::singleton()->replaceUserContext(CRM_Utils_System::url('civicrm/batch/entry', "id={$batchID}&reset=1&action=add")); } else { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/batch/entry', "id={$batch->id}&reset=1")); + CRM_Core_Session::singleton()->replaceUserContext(CRM_Utils_System::url('civicrm/batch/entry', "id={$batchID}&reset=1")); } } -- 2.25.1