diff --git a/shareholder_register.post_update.php b/shareholder_register.post_update.php index 4bde995dd5cd682308d79ea454475c9158837558..f663b0d43a39930d4a2ff854d96066c4d0bfd078 100644 --- a/shareholder_register.post_update.php +++ b/shareholder_register.post_update.php @@ -7,6 +7,7 @@ use Drupal\shareholder_register\Entity\Share; use Drupal\shareholder_register\Entity\ShareTransaction; +use Drupal\shareholder_register\Entity\ShareTransactionGroup; use Drupal\shareholder_register\Entity\Shareholder; use Drupal\shareholder_register\Entity\ShareIssue; use Drupal\shareholder_register\Entity\ShareType; @@ -182,3 +183,31 @@ function shareholder_register_post_update_load_request_shareholder_number_templa $config_storage->write('mail_template.template.mail_shareholder_number', $source->read('mail_template.template.mail_shareholder_number')); } } + +/** + * Create transaction groups for historical issue transactions without group. + */ +function shareholder_register_post_update_create_share_transaction_groups(&$sandbox) { + $invalid_transaction_ids = \Drupal::entityQuery('share_transaction') + ->condition('state', 'valid') + ->condition('transaction_group', FALSE, 'is null') + ->execute(); + $count = 0; + if (count($invalid_transaction_ids)) { + foreach (ShareTransaction::loadMultiple($invalid_transaction_ids) as $t) { + if ($t->getQuantity() > 0) { + $group = ShareTransactionGroup::create([ + 'type' => 'issue', + ]); + $group->save(); + $t->set('transaction_group', $group); + $t->save(); + + $count++; + } + } + } + if ($count) { + return "{$count} groups created"; + } +}