Move batch-form support code back to the form
authoreileen <emcnaughton@wikimedia.org>
Mon, 27 Apr 2020 22:34:21 +0000 (10:34 +1200)
committereileen <emcnaughton@wikimedia.org>
Mon, 27 Apr 2020 22:34:21 +0000 (10:34 +1200)
I've dug around onn this and there is no reason for this code to be in the BAO - it is only
relevant to support this form & should live there. Longer term the form should call
api v4....

CRM/Batch/Form/Entry.php
CRM/Contribute/BAO/Contribution.php

index c8ccc6719ddd845057dfa7a9756e51d64086e255..e60ababdb45cb910fe6a7ee20aa794e54c5e4d70 100644 (file)
@@ -565,9 +565,27 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
           }
         }
         $value['line_item'] = $lineItem;
-        $value['skipCleanMoney'] = TRUE;
+
         //finally call contribution create for all the magic
         $contribution = CRM_Contribute_BAO_Contribution::create($value);
+        // This code to retrieve the contribution has been moved here from the contribution create
+        // api. It may not be required.
+        $titleFields = [
+          'contact_id',
+          'total_amount',
+          'currency',
+          'financial_type_id',
+        ];
+        $retrieveRequired = 0;
+        foreach ($titleFields as $titleField) {
+          if (!isset($contribution->$titleField)) {
+            $retrieveRequired = 1;
+            break;
+          }
+        }
+        if ($retrieveRequired == 1) {
+          $contribution->find(TRUE);
+        }
         $batchTypes = CRM_Core_PseudoConstant::get('CRM_Batch_DAO_Batch', 'type_id', ['flip' => 1], 'validate');
         if (!empty($this->_batchInfo['type_id']) && ($this->_batchInfo['type_id'] == $batchTypes['Pledge Payment'])) {
           $adjustTotalAmount = FALSE;
index 3f2d17d9205830e0492114513d83acaef0a79f43..d2c99595fbd176cc40935223ac10cd722ba5d2d5 100644 (file)
@@ -508,27 +508,6 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution {
       CRM_Core_BAO_Note::add($noteParams);
     }
 
-    // make entry in batch entity batch table
-    if (!empty($params['batch_id'])) {
-      // in some update cases we need to get extra fields - ie an update that doesn't pass in all these params
-      $titleFields = [
-        'contact_id',
-        'total_amount',
-        'currency',
-        'financial_type_id',
-      ];
-      $retrieveRequired = 0;
-      foreach ($titleFields as $titleField) {
-        if (!isset($contribution->$titleField)) {
-          $retrieveRequired = 1;
-          break;
-        }
-      }
-      if ($retrieveRequired == 1) {
-        $contribution->find(TRUE);
-      }
-    }
-
     CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution);
 
     $transaction->commit();