Merge pull request #22992 from eileenmcnaughton/billingnot
[civicrm-core.git] / Civi / Api4 / Generic / BasicSaveAction.php
index f0e175e5faf7d39644685230c17a7a3da190af75..a312554d2fe06669c35dfe4f1a75b027f3a7e7dc 100644 (file)
@@ -13,6 +13,7 @@
 namespace Civi\Api4\Generic;
 
 use Civi\API\Exception\NotImplementedException;
+use Civi\Api4\Utils\CoreUtil;
 
 /**
  * @inheritDoc
@@ -51,9 +52,11 @@ class BasicSaveAction extends AbstractSaveAction {
    * @param \Civi\Api4\Generic\Result $result
    */
   public function _run(Result $result) {
+    $idField = CoreUtil::getIdFieldName($this->getEntityName());
     foreach ($this->records as &$record) {
       $record += $this->defaults;
       $this->formatWriteValues($record);
+      $this->matchExisting($record);
     }
     $this->validateValues();
     foreach ($this->records as $item) {
@@ -64,7 +67,7 @@ class BasicSaveAction extends AbstractSaveAction {
       $get = \Civi\API\Request::create($this->getEntityName(), 'get', ['version' => 4]);
       $get
         ->setCheckPermissions($this->getCheckPermissions())
-        ->addWhere($this->getIdField(), 'IN', (array) $result->column($this->getIdField()));
+        ->addWhere($idField, 'IN', (array) $result->column($idField));
       $result->exchangeArray((array) $get->execute());
     }
   }