From 44a3b315c1359c213bda98f59c5f3f125e6b2d44 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Wed, 14 Dec 2022 09:58:48 +0000
Subject: [PATCH 1/8] imp: i7426 add share number and type to dividend details
 csv export

---
 .../src/Plugin/DividendAllocation/ProRata.php             | 8 ++++++++
 .../src/Plugin/DividendProcess/ExportDetailsCsv.php       | 2 ++
 2 files changed, 10 insertions(+)

diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
index 088144c3..09827c1a 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\shareholder_register_dividend\Plugin\DividendAllocation;
 
+use Drupal\shareholder_register\Entity\Share;
 use Drupal\shareholder_register_dividend\Plugin\DividendAllocationDefinitionBase;
 use Drupal\shareholder_register_dividend\Exception\ShareholderRegisterDividendException;
 
@@ -57,12 +58,16 @@ class ProRata extends DividendAllocationDefinitionBase {
             if ($transaction->getTransactionDate($use_payment_date) == $start_date) {
               continue;
             }
+            error_log("share: " . $share->id());
+            error_log("shareholder: " . $shareholder->id());            
             throw new ShareholderRegisterDividendException(
               "Internal error: Share not found in previous transactions!");
           }
 
           $dividend = new \stdClass();
           $dividend->share_id = $share->id();
+          $dividend->share_number = $share->getname();
+          $dividend->share_type_id = $share->get('share_type_id')->target_id;
           $dividend->shareholder_id = $shareholder->id();
           $dividend->start_date = $current_shares[$share->id()]['start_date'];
           $dividend->end_date = $transaction->getTransactionDate($use_payment_date);
@@ -78,7 +83,10 @@ class ProRata extends DividendAllocationDefinitionBase {
 
     foreach ($current_shares as $share_id => $share_data) {
       $dividend = new \stdClass();
+      $share = Share::load($share_id);
       $dividend->share_id = $share_id;
+      $dividend->share_number = $share->getname();
+      $dividend->share_type_id = $share->get('share_type_id')->target_id;      
       $dividend->shareholder_id = $shareholder->id();
       $dividend->start_date = $share_data['start_date'];
       $dividend->end_date = $share_data['end_date'] ?? $end_date;
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
index b33ca410..32312285 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
@@ -45,6 +45,8 @@ class ExportDetailsCsv extends DividendProcessPluginBase {
         $shareholder->getNumber(),
         $shareholder->getName(),
         $dividend->share_id,
+        $dividend->share_number,
+        $dividend->share_type_id,
         $dividend->fraction,
         $dividend->tax,
         $dividend->taxcode,
-- 
GitLab


From ef9277e1ba7608526fc56d024e4e723aeeeda1c6 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Fri, 17 Mar 2023 07:37:25 +0100
Subject: [PATCH 2/8] imp: i7426 add share number and type to dividend export

---
 .../src/DividendService.php                   |  28 ++---
 .../src/Form/DividendSimulationForm.php       |  24 ++--
 .../Plugin/DividendAllocation/AtEndDate.php   |  16 +--
 .../src/Plugin/DividendAllocation/ProRata.php |  53 +++++----
 .../DividendAllocation/ProRataMonth.php       |  35 +++---
 .../DividendProcess/ExportDetailsCsv.php      |  18 +--
 .../DividendProcess/ExportTotalsCsv.php       |   2 +-
 .../src/Plugin/DividendTax/BE2018.php         |   4 +-
 .../src/Plugin/DividendTax/BE2018VVPR.php     |  28 ++---
 .../src/ShareDividendLine.php                 | 106 ++++++++++++++++++
 .../tests/src/Kernel/AtEndDateTest.php        |  18 +--
 .../tests/src/Kernel/DividendTest.php         |  18 +--
 .../tests/src/Kernel/ProrataMonthExclTest.php |  42 +++----
 .../tests/src/Kernel/ProrataMonthTest.php     |  48 ++++----
 .../tests/src/Kernel/RegisterDividendTest.php |   4 +-
 .../tests/src/Kernel/VVPRTest.php             |   4 +-
 src/ShareholderSharesLine.php                 |   9 ++
 17 files changed, 287 insertions(+), 170 deletions(-)
 create mode 100644 modules/shareholder_register_dividend/src/ShareDividendLine.php

diff --git a/modules/shareholder_register_dividend/src/DividendService.php b/modules/shareholder_register_dividend/src/DividendService.php
index a3aa20c7..175bdcb7 100644
--- a/modules/shareholder_register_dividend/src/DividendService.php
+++ b/modules/shareholder_register_dividend/src/DividendService.php
@@ -95,29 +95,29 @@ class DividendService implements DividendServiceInterface {
       $hash = call_user_func($dividend_config['total_hash'], $details);
       if (!array_key_exists($hash, $results['totals'])) {
         $results['totals'][$hash] = [
-          'fraction' => $details->fraction,
-          'shareholder_id' => $details->shareholder_id,
+          'fraction' => $details->getFraction(),
+          'shareholder_id' => $details->getShareholderId(),
           'grouped' => [],
         ];
       }
       else {
-        $results['totals'][$hash]['fraction'] += $details->fraction;
+        $results['totals'][$hash]['fraction'] += $details->getFraction();
       }
 
-      if (!isset($results['totals'][$hash]['grouped'][$details->tax])) {
-        $results['totals'][$hash]['grouped'][$details->tax] = [
-          'fraction' => $details->fraction,
-          'tax' => $details->tax,
-          'taxcode' => [$details->taxcode],
+      if (!isset($results['totals'][$hash]['grouped'][$details->getTax()])) {
+        $results['totals'][$hash]['grouped'][$details->getTax()] = [
+          'fraction' => $details->getFraction(),
+          'tax' => $details->getTax(),
+          'taxcode' => [$details->getTaxCode()],
           'details' => [(array) $details],
         ];
       }
       else {
-        if (!in_array($details->taxcode, $results['totals'][$hash]['grouped'][$details->tax]['taxcode'])) {
-          $results['totals'][$hash]['grouped'][$details->tax]['taxcode'][] = $details->taxcode;
+        if (!in_array($details->getTaxCode(), $results['totals'][$hash]['grouped'][$details->getTax()]['taxcode'])) {
+          $results['totals'][$hash]['grouped'][$details->getTax()]['taxcode'][] = $details->getTaxCode();
         }
-        $results['totals'][$hash]['grouped'][$details->tax]['fraction'] += $details->fraction;
-        $results['totals'][$hash]['grouped'][$details->tax]['details'][] = (array) $details;
+        $results['totals'][$hash]['grouped'][$details->getTax()]['fraction'] += $details->getFraction();
+        $results['totals'][$hash]['grouped'][$details->getTax()]['details'][] = (array) $details;
       }
     }
     return $results;
@@ -171,14 +171,14 @@ class DividendService implements DividendServiceInterface {
    * {@inheritdoc}
    */
   public static function dividendTotalHashWithTaxDetails($details) {
-    return "{$details->shareholder_id}-{$details->tax}";
+    return "{$details->getShareholderId()}-{$details->getTax()}";
   }
 
   /**
    * {@inheritdoc}
    */
   public static function dividendTotalHash($details) {
-    return "{$details->shareholder_id}";
+    return "{$details->getShareholderId()}";
   }
 
   /**
diff --git a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
index 1cdcb222..67732af8 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
@@ -71,6 +71,7 @@ class DividendSimulationForm extends DividendForm {
 
     $csv_file = Reader::createFromString(
         $context['results']['csv_details']);
+    $csv_file->setHeaderOffset(0);
 
     if (!isset($context['sandbox']['current_row'])) {
       $config = $context['results']['config'];
@@ -94,7 +95,8 @@ class DividendSimulationForm extends DividendForm {
       $sheet->setCellValue("E6", t('Gross'));
       $sheet->setCellValue("F6", t('Tax Amount'));
       $sheet->setCellValue("G6", t('Dividend'));
-      $sheet->setCellValue("H6", t('Details'));
+      $sheet->setCellValue("H6", t('Hash'));
+      $sheet->setCellValue("I6", t('Details'));
 
       $context['sandbox']['row'] = 7;
       $context['sandbox']['current_row'] = 0;
@@ -124,14 +126,15 @@ class DividendSimulationForm extends DividendForm {
       $line = $csv_rows->current();
       $csv_rows->next();
 
-      $sheet->setCellValue("A{$row}", $line[0]);
-      $sheet->setCellValue("B{$row}", $line[1]);
-      $sheet->setCellValue("C{$row}", $line[3]);
-      $sheet->setCellValue("D{$row}", $line[4]);
+      $sheet->setCellValue("A{$row}", $line['shareholder_number']);
+      $sheet->setCellValue("B{$row}", $line['shareholder_name']);
+      $sheet->setCellValue("C{$row}", $line['fraction']);
+      $sheet->setCellValue("D{$row}", $line['tax']);
       $sheet->setCellValue("E{$row}", "=ROUND(C{$row}*B3/C3, 2)");
       $sheet->setCellValue("F{$row}", "=ROUND(E{$row}*(D{$row}/100), 2)");
       $sheet->setCellValue("G{$row}", "=E{$row}-F{$row}");
-      $sheet->setCellValue("H{$row}", "#{$line[3]}: {$line[6]} - {$line[7]}");
+      $sheet->setCellValue("H{$row}", $line['hash']);
+      $sheet->setCellValue("I{$row}", "#{$line['name']}: {$line['start']} - {$line['end']}");
 
       $sheet->setCellValue("B4", "=SUM(E7:E{$row})");
 
@@ -163,6 +166,7 @@ class DividendSimulationForm extends DividendForm {
 
     $csv_file = Reader::createFromString(
         $context['results']['csv_totals']);
+    $csv_file->setHeaderOffset(0);
 
     $max_execution_time = ini_get('max_execution_time');
     if (!$max_execution_time) {
@@ -221,10 +225,10 @@ class DividendSimulationForm extends DividendForm {
       $line = $csv_rows->current();
       $csv_rows->next();
 
-      $sheet->setCellValue("A{$row}", $line[0]);
-      $sheet->setCellValue("B{$row}", $line[1]);
-      $sheet->setCellValue("C{$row}", $line[2]);
-      $sheet->setCellValue("D{$row}", $line[3]);
+      $sheet->setCellValue("A{$row}", $line['shareholder_number']);
+      $sheet->setCellValue("B{$row}", $line['shareholder_name']);
+      $sheet->setCellValue("C{$row}", $line['fraction']);
+      $sheet->setCellValue("D{$row}", $line['tax']);
       $sheet->setCellValue("E{$row}", "=ROUND(C{$row}*B3/C3, 2)");
       $sheet->setCellValue("F{$row}", "=ROUND(E{$row}*(D{$row}/100), 2)");
       $sheet->setCellValue("G{$row}", "=E{$row}-F{$row}");
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/AtEndDate.php b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/AtEndDate.php
index a79efde5..cc052dca 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/AtEndDate.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/AtEndDate.php
@@ -3,6 +3,7 @@
 namespace Drupal\shareholder_register_dividend\Plugin\DividendAllocation;
 
 use Drupal\shareholder_register_dividend\Plugin\DividendAllocationDefinitionBase;
+use Drupal\shareholder_register_dividend\ShareDividendLine;
 
 /**
  * Prorata.
@@ -32,14 +33,13 @@ class AtEndDate extends DividendAllocationDefinitionBase {
 
     $shares = $shareholder->getSharesAtDate($end_date);
     foreach ($shares as $share) {
-      $dividend = new \stdClass();
-      $dividend->share_id = $share->id();
-      $dividend->shareholder_id = $shareholder->id();
-      $dividend->start_date = $start_date;
-      $dividend->end_date = $end_date;
-      $dividend->tax = 0;
-      $dividend->fraction = 1;
-
+      $dividend = new ShareDividendLine(
+        $start_date,
+        $end_date,
+        $shareholder->id(),
+        $share,
+        1
+      );
       $result[] = $dividend;
     }
     return $result;
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
index 09827c1a..3fe38347 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
@@ -3,6 +3,7 @@
 namespace Drupal\shareholder_register_dividend\Plugin\DividendAllocation;
 
 use Drupal\shareholder_register\Entity\Share;
+use Drupal\shareholder_register_dividend\ShareDividendLine;
 use Drupal\shareholder_register_dividend\Plugin\DividendAllocationDefinitionBase;
 use Drupal\shareholder_register_dividend\Exception\ShareholderRegisterDividendException;
 
@@ -36,10 +37,11 @@ class ProRata extends DividendAllocationDefinitionBase {
     $end_date = $dividend_config['end_date'];
     $use_payment_date = $dividend_config['use_payment_date'] ?? FALSE;
 
-    $share_ids = $shareholder->getShareIdsAtDate($start_date, NULL, $use_payment_date);
+    $shares = $shareholder->getSharesAtDate($start_date, NULL, $use_payment_date);
     $current_shares = [];
-    foreach ($share_ids as $share_id) {
-      $current_shares[$share_id] = [
+    foreach ($shares as $share) {
+      $current_shares[$share->id()] = [
+        'share' => $share,
         'start_date' => $start_date,
       ];
     }
@@ -48,6 +50,7 @@ class ProRata extends DividendAllocationDefinitionBase {
       if ($transaction->getQuantity() > 0) {
         foreach ($transaction->getShares() as $share) {
           $current_shares[$share->id()] = [
+            'share' => $share,
             'start_date' => $transaction->getTransactionDate($use_payment_date),
           ];
         }
@@ -58,23 +61,20 @@ class ProRata extends DividendAllocationDefinitionBase {
             if ($transaction->getTransactionDate($use_payment_date) == $start_date) {
               continue;
             }
-            error_log("share: " . $share->id());
-            error_log("shareholder: " . $shareholder->id());            
             throw new ShareholderRegisterDividendException(
               "Internal error: Share not found in previous transactions!");
           }
 
-          $dividend = new \stdClass();
-          $dividend->share_id = $share->id();
-          $dividend->share_number = $share->getname();
-          $dividend->share_type_id = $share->get('share_type_id')->target_id;
-          $dividend->shareholder_id = $shareholder->id();
-          $dividend->start_date = $current_shares[$share->id()]['start_date'];
-          $dividend->end_date = $transaction->getTransactionDate($use_payment_date);
-          $dividend->tax = 0;
-          $dividend->fraction = date_diff(
-            date_create($current_shares[$share->id()]['start_date']),
-            date_create($transaction->getTransactionDate($use_payment_date)))->format('%a');
+          $dividend = new ShareDividendLine(
+            $current_shares[$share->id()]['start_date'],
+            $transaction->getTransactionDate($use_payment_date),
+            $shareholder->id(),
+            $share,
+            date_diff(
+              date_create($current_shares[$share->id()]['start_date']),
+              date_create($transaction->getTransactionDate($use_payment_date)))->format('%a')
+          );
+
           $result[] = $dividend;
           unset($current_shares[$share->id()]);
         }
@@ -82,18 +82,15 @@ class ProRata extends DividendAllocationDefinitionBase {
     }
 
     foreach ($current_shares as $share_id => $share_data) {
-      $dividend = new \stdClass();
-      $share = Share::load($share_id);
-      $dividend->share_id = $share_id;
-      $dividend->share_number = $share->getname();
-      $dividend->share_type_id = $share->get('share_type_id')->target_id;      
-      $dividend->shareholder_id = $shareholder->id();
-      $dividend->start_date = $share_data['start_date'];
-      $dividend->end_date = $share_data['end_date'] ?? $end_date;
-      $dividend->tax = 0;
-      $dividend->fraction = date_diff(
-        date_create($share_data['start_date']),
-        date_create($share_data['end_date'] ?? $end_date))->format('%a');
+      $dividend = new ShareDividendLine(
+        $share_data['start_date'],
+        $share_data['end_date'] ?? $end_date,
+        $shareholder->id(),
+        $share_data['share'],
+        date_diff(
+          date_create($share_data['start_date']),
+          date_create($share_data['end_date'] ?? $end_date))->format('%a'),
+      );
       $result[] = $dividend;
     }
     return $result;
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRataMonth.php b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRataMonth.php
index e57268de..e9f12934 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRataMonth.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRataMonth.php
@@ -4,6 +4,7 @@ namespace Drupal\shareholder_register_dividend\Plugin\DividendAllocation;
 
 use Drupal\shareholder_register_dividend\Exception\ShareholderRegisterDividendException;
 use Drupal\shareholder_register_dividend\Plugin\DividendAllocationDefinitionBase;
+use Drupal\shareholder_register_dividend\ShareDividendLine;
 use Drupal\shareholder_register_dividend\Utils\DateDiff;
 
 /**
@@ -102,16 +103,15 @@ class ProRataMonth extends DividendAllocationDefinitionBase {
             throw new ShareholderRegisterDividendException(
               "Internal error: Share not found in previous transactions!");
           }
-
-          $dividend = new \stdClass();
-          $dividend->share_id = $share->id();
-          $dividend->shareholder_id = $shareholder->id();
-          $dividend->start_date = $current_shares[$share->id()]['start_date'];
-          $dividend->end_date = $transaction->getTransactionDate($use_payment_date);
-          $dividend->tax = 0;
-          $dividend->fraction = DateDiff::diffMonths(
+          $dividend = new ShareDividendLine(
             $current_shares[$share->id()]['start_date'],
-            static::endOfPeriod($transaction->getTransactionDate($use_payment_date)));
+            $transaction->getTransactionDate($use_payment_date),
+            $shareholder->id(),
+            $share,
+            DateDiff::diffMonths(
+                $current_shares[$share->id()]['start_date'],
+                static::endOfPeriod($transaction->getTransactionDate($use_payment_date)))
+          );
           $result[] = $dividend;
           unset($current_shares[$share->id()]);
         }
@@ -119,15 +119,16 @@ class ProRataMonth extends DividendAllocationDefinitionBase {
     }
 
     foreach ($current_shares as $share_data) {
-      $dividend = new \stdClass();
-      $dividend->share_id = $share_data['share']->id();
-      $dividend->shareholder_id = $shareholder->id();
-      $dividend->start_date = $share_data['start_date'];
-      $dividend->end_date = $share_data['end_date'] ?? static::endOfPeriod($end_date);
-      $dividend->tax = 0;
-      $dividend->fraction = DateDiff::diffMonths(
+
+      $dividend = new ShareDividendLine(
         $share_data['start_date'],
-        static::endOfPeriod($share_data['end_date'] ?? $end_date));
+        $share_data['end_date'] ?? static::endOfPeriod($end_date),
+        $shareholder->id(),
+        $share_data['share'],
+        DateDiff::diffMonths(
+            $share_data['start_date'],
+            static::endOfPeriod($share_data['end_date'] ?? $end_date))
+      );
       $result[] = $dividend;
     }
     return $result;
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
index 32312285..cbf1f371 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportDetailsCsv.php
@@ -30,7 +30,7 @@ class ExportDetailsCsv extends DividendProcessPluginBase {
    */
   public function init(&$context, array $dividend_config) {
     if (!isset($context['results']['csv_details'])) {
-      $context['results']['csv_details'] = "";
+      $context['results']['csv_details'] = "shareholder_number,shareholder_name,id,name,hash,fraction,tax,taxcode,start,end\n";
     }
     $this->csvWriter = Writer::createFromString(
       $context['results']['csv_details']);
@@ -44,14 +44,14 @@ class ExportDetailsCsv extends DividendProcessPluginBase {
       $this->csvWriter->insertOne([
         $shareholder->getNumber(),
         $shareholder->getName(),
-        $dividend->share_id,
-        $dividend->share_number,
-        $dividend->share_type_id,
-        $dividend->fraction,
-        $dividend->tax,
-        $dividend->taxcode,
-        $dividend->start_date,
-        $dividend->end_date,
+        $dividend->getShareId(),
+        $dividend->getShareNameRange(),
+        $dividend->getShareHash(),
+        $dividend->getFraction(),
+        $dividend->getTax(),
+        $dividend->getTaxCode(),
+        $dividend->getStartDate(),
+        $dividend->getEndDate(),
       ]);
     }
   }
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
index 0d1b1d0f..b9fcd4e5 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
@@ -30,7 +30,7 @@ class ExportTotalsCsv extends DividendProcessPluginBase {
    */
   public function init(&$context, array $dividend_config) {
     if (!isset($context['results']['csv_totals'])) {
-      $context['results']['csv_totals'] = "";
+      $context['results']['csv_totals'] = "shareholder_number,shareholder_name,fraction,tax,taxcode,shareholder_id\n";
     }
     $this->csvWriter = Writer::createFromString(
       $context['results']['csv_totals']);
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018.php b/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018.php
index 62d50720..9fd0a7b8 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018.php
@@ -19,8 +19,8 @@ class BE2018 extends DividendTaxDefinitionBase {
    */
   public function computeDividendTaxRate($shareholder, $dividends, $dividend_config) {
     foreach ($dividends as $dividend) {
-      $dividend->tax = 30;
-      $dividend->taxcode = '30';
+      $dividend->setTax(30);
+      $dividend->setTaxCode('30');
     }
   }
 
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018VVPR.php b/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018VVPR.php
index a4539aad..02568a8d 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018VVPR.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendTax/BE2018VVPR.php
@@ -54,7 +54,7 @@ class BE2018VVPR extends DividendTaxDefinitionBase {
 
     $share_ids = array_map(
         function ($dividend) {
-            return $dividend->share_id;
+            return $dividend->getShareId();
         },
         $dividends
     );
@@ -73,7 +73,7 @@ class BE2018VVPR extends DividendTaxDefinitionBase {
     $share_data = $query->execute()->fetchAllAssoc('id');
 
     foreach ($dividends as $dividend) {
-      $share = $share_data[$dividend->share_id];
+      $share = $share_data[$dividend->getShareId()];
       if ($use_payment_date) {
         $issue_date = $share->payment_date ? $share->payment_date : $share->date;
       }
@@ -81,13 +81,13 @@ class BE2018VVPR extends DividendTaxDefinitionBase {
         $issue_date = $share->date;
       }
       if ($issue_date < '2013-07-01') {
-        $dividend->tax = 30;
-        $dividend->taxcode = 'vvpr-pre2013';
+        $dividend->setTax(30);
+        $dividend->setTaxCode('vvpr-pre2013');
         continue;
       }
       if ($shareholder->bundle() != 'natural_person') {
-        $dividend->tax = 30;
-        $dividend->taxcode = 'vvpr-na';
+        $dividend->setTax(30);
+        $dividend->setTaxCode('vvpr-na');
         continue;
       }
 
@@ -99,24 +99,24 @@ class BE2018VVPR extends DividendTaxDefinitionBase {
             $share->issue_premium,
             2),
           2);
-        $dividend->tax = 30;
-        $dividend->taxcode = 'vvpr-abuse';
+        $dividend->setTax(30);
+        $dividend->setTaxCode('vvpr-abuse');
         continue;
       }
 
       $issue_year = substr($issue_date, 0, 4);
       $dividend_year = substr($dividend_config['start_date'], 0, 4);
       if (($dividend_year - $issue_year) > 2) {
-        $dividend->tax = 15;
-        $dividend->taxcode = 'vvpr-year-2';
+        $dividend->setTax(15);
+        $dividend->setTaxCode('vvpr-year-2');
       }
       elseif (($dividend_year - $issue_year) > 1) {
-        $dividend->tax = 20;
-        $dividend->taxcode = 'vvpr-year-1';
+        $dividend->setTax(20);
+        $dividend->setTaxCode('vvpr-year-1');
       }
       else {
-        $dividend->tax = 30;
-        $dividend->taxcode = 'vvpr-year-0';
+        $dividend->setTax(30);
+        $dividend->setTaxCode('vvpr-year-0');
       }
     }
   }
diff --git a/modules/shareholder_register_dividend/src/ShareDividendLine.php b/modules/shareholder_register_dividend/src/ShareDividendLine.php
new file mode 100644
index 00000000..0a0e0aa5
--- /dev/null
+++ b/modules/shareholder_register_dividend/src/ShareDividendLine.php
@@ -0,0 +1,106 @@
+<?php
+
+namespace Drupal\shareholder_register_dividend;
+
+use Drupal\shareholder_register\ShareholderSharesLine;
+use Drupal\shareholder_register\Entity\ShareInterface;
+
+/**
+ * Line describing a dividend allocation.
+ */
+class ShareDividendLine extends ShareholderSharesLine {
+
+  /**
+   * The end date.
+   *
+   * @var string
+   */
+  protected $end_date;
+
+  /**
+   * The fraction.
+   *
+   * @var int
+   */
+  protected $fraction;
+
+  /**
+   * The tax rate.
+   *
+   * @var int
+   */
+  protected $tax_rate;
+
+  /**
+   * The tax code.
+   *
+   * @var string
+   */
+  protected $tax_code;
+
+  /**
+   * Constructs a new ShareDividendLine object.
+   */
+  public function __construct(string $start_date, string $end_date, int $shareholder_id, ShareInterface $share, int $fraction) {
+    parent::__construct(FALSE, $start_date, $shareholder_id, 1, [$share->id()], $share->get('share_type_id')->target_id);
+    $this->end_date = $end_date;
+    $this->fraction = $fraction;
+    $this->tax_rate = 0;
+  }
+
+  /**
+   * Get start date.
+   */
+  public function getStartDate() {
+    return $this->date;
+  }
+
+  /**
+   * Get end date.
+   */
+  public function getEndDate() {
+    return $this->end_date;
+  }
+
+  /**
+   * Get fraction.
+   */
+  public function getFraction() {
+    return $this->fraction;
+  }
+
+  /**
+   * Get tax rate.
+   */
+  public function getTax() {
+    return $this->tax_rate;
+  }
+
+  /**
+   * Set tax rate.
+   */
+  public function setTax(int $rate) {
+    $this->tax_rate = $rate;
+  }
+
+  /**
+   * Get tax code.
+   */
+  public function getTaxCode() {
+    return $this->tax_code;
+  }
+
+  /**
+   * Set tax code.
+   */
+  public function setTaxCode(string $code) {
+    $this->tax_code = $code;
+  }
+
+  /**
+   * Get share id.
+   */
+  public function getShareId() {
+    return reset($this->shareIds);
+  }
+}
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/AtEndDateTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/AtEndDateTest.php
index b81aa5ad..b1ef5cf8 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/AtEndDateTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/AtEndDateTest.php
@@ -79,9 +79,9 @@ class AtEndDateTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 1);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 1);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
   /**
@@ -164,9 +164,9 @@ class AtEndDateTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 1);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 1);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
 
     // Test payment date computation.
     $dividend_config['use_payment_date'] = 1;
@@ -175,9 +175,9 @@ class AtEndDateTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 1);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 1);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
 }
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/DividendTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/DividendTest.php
index 2d5f06b4..dc8df0f4 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/DividendTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/DividendTest.php
@@ -86,9 +86,9 @@ class DividendTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 333);
-    $this->assertEquals($result[0]->start_date, '2017-02-02');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 333);
+    $this->assertEquals($result[0]->getStartDate(), '2017-02-02');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
 
     // Test payment date computation.
     $dividend_config['use_payment_date'] = 1;
@@ -97,9 +97,9 @@ class DividendTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 364);
-    $this->assertEquals($result[0]->start_date, '2017-01-02');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 364);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-02');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
   /**
@@ -201,9 +201,9 @@ class DividendTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 331);
-    $this->assertEquals($result[0]->start_date, '2017-02-02');
-    $this->assertEquals($result[0]->end_date, '2017-12-30');
+    $this->assertEquals($result[0]->getFraction(), 331);
+    $this->assertEquals($result[0]->getStartDate(), '2017-02-02');
+    $this->assertEquals($result[0]->getEndDate(), '2017-12-30');
 
     $plugin = DividendService::getDividendTaxDefinition($dividend_config['tax']);
     $plugin->computeDividendTaxRate(
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthExclTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthExclTest.php
index e49c20e1..2475ad5c 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthExclTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthExclTest.php
@@ -79,9 +79,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 12);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 12);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
   /**
@@ -125,9 +125,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 9);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2017-10-05');
+    $this->assertEquals($result[0]->getFraction(), 9);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2017-10-05');
   }
 
   /**
@@ -171,9 +171,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 9);
-    $this->assertEquals($result[0]->start_date, '2017-01-01');
-    $this->assertEquals($result[0]->end_date, '2017-10-01');
+    $this->assertEquals($result[0]->getFraction(), 9);
+    $this->assertEquals($result[0]->getStartDate(), '2017-01-01');
+    $this->assertEquals($result[0]->getEndDate(), '2017-10-01');
   }
 
   /**
@@ -212,9 +212,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 10);
-    $this->assertEquals($result[0]->start_date, '2017-03-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 10);
+    $this->assertEquals($result[0]->getStartDate(), '2017-03-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
   /**
@@ -254,9 +254,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 10);
-    $this->assertEquals($result[0]->start_date, '2017-03-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 10);
+    $this->assertEquals($result[0]->getStartDate(), '2017-03-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
 
     // Test payment date computation.
     $dividend_config['use_payment_date'] = 1;
@@ -265,9 +265,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 11);
-    $this->assertEquals($result[0]->start_date, '2017-02-01');
-    $this->assertEquals($result[0]->end_date, '2018-01-01');
+    $this->assertEquals($result[0]->getFraction(), 11);
+    $this->assertEquals($result[0]->getStartDate(), '2017-02-01');
+    $this->assertEquals($result[0]->getEndDate(), '2018-01-01');
   }
 
   /**
@@ -312,9 +312,9 @@ class ProrataMonthExclTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(count($result), 5);
-    $this->assertEquals($result[0]->fraction, 9);
-    $this->assertEquals($result[0]->start_date, '2017-03-01');
-    $this->assertEquals($result[0]->end_date, '2017-12-30');
+    $this->assertEquals($result[0]->getFraction(), 9);
+    $this->assertEquals($result[0]->getStartDate(), '2017-03-01');
+    $this->assertEquals($result[0]->getEndDate(), '2017-12-30');
   }
 
 }
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthTest.php
index 776b8ee4..ab84dfc1 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/ProrataMonthTest.php
@@ -79,9 +79,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(12, $result[0]->fraction);
-    $this->assertEquals('2017-01-01', $result[0]->start_date);
-    $this->assertEquals('2018-01-01', $result[0]->end_date);
+    $this->assertEquals(12, $result[0]->getFraction());
+    $this->assertEquals('2017-01-01', $result[0]->getStartDate());
+    $this->assertEquals('2018-01-01', $result[0]->getEndDate());
   }
 
   /**
@@ -120,9 +120,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(11, $result[0]->fraction);
-    $this->assertEquals('2017-02-01', $result[0]->start_date);
-    $this->assertEquals('2018-01-01', $result[0]->end_date);
+    $this->assertEquals(11, $result[0]->getFraction());
+    $this->assertEquals('2017-02-01', $result[0]->getStartDate());
+    $this->assertEquals('2018-01-01', $result[0]->getEndDate());
   }
 
   /**
@@ -166,9 +166,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(9, $result[0]->fraction);
-    $this->assertEquals('2017-01-01', $result[0]->start_date);
-    $this->assertEquals('2017-10-05', $result[0]->end_date);
+    $this->assertEquals(9, $result[0]->getFraction());
+    $this->assertEquals('2017-01-01', $result[0]->getStartDate());
+    $this->assertEquals('2017-10-05', $result[0]->getEndDate());
   }
 
   /**
@@ -212,9 +212,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(9, $result[0]->fraction);
-    $this->assertEquals('2017-01-01', $result[0]->start_date);
-    $this->assertEquals('2017-10-01', $result[0]->end_date);
+    $this->assertEquals(9, $result[0]->getFraction());
+    $this->assertEquals('2017-01-01', $result[0]->getStartDate());
+    $this->assertEquals('2017-10-01', $result[0]->getEndDate());
   }
 
   /**
@@ -254,9 +254,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(10, $result[0]->fraction);
-    $this->assertEquals('2017-03-01', $result[0]->start_date);
-    $this->assertEquals('2018-01-01', $result[0]->end_date);
+    $this->assertEquals(10, $result[0]->getFraction());
+    $this->assertEquals('2017-03-01', $result[0]->getStartDate());
+    $this->assertEquals('2018-01-01', $result[0]->getEndDate());
 
     // Test payment date computation.
     $dividend_config['use_payment_date'] = 1;
@@ -265,9 +265,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(11, $result[0]->fraction);
-    $this->assertEquals('2017-02-01', $result[0]->start_date);
-    $this->assertEquals('2018-01-01', $result[0]->end_date);
+    $this->assertEquals(11, $result[0]->getFraction());
+    $this->assertEquals('2017-02-01', $result[0]->getStartDate());
+    $this->assertEquals('2018-01-01', $result[0]->getEndDate());
   }
 
   /**
@@ -312,9 +312,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(9, $result[0]->fraction);
-    $this->assertEquals('2017-03-01', $result[0]->start_date);
-    $this->assertEquals('2017-12-30', $result[0]->end_date);
+    $this->assertEquals(9, $result[0]->getFraction());
+    $this->assertEquals('2017-03-01', $result[0]->getStartDate());
+    $this->assertEquals('2017-12-30', $result[0]->getEndDate());
   }
 
   /**
@@ -362,9 +362,9 @@ class ProrataMonthTest extends KernelTestBase {
     $result = $plugin->computeDividend($shareholder, $dividend_config);
 
     $this->assertEquals(5, count($result));
-    $this->assertEquals(4, $result[0]->fraction);
-    $this->assertEquals('2017-01-01', $result[0]->start_date);
-    $this->assertEquals('2017-05-01', $result[0]->end_date);
+    $this->assertEquals(4, $result[0]->getFraction());
+    $this->assertEquals('2017-01-01', $result[0]->getStartDate());
+    $this->assertEquals('2017-05-01', $result[0]->getEndDate());
 
     date_default_timezone_set($backup_tz);
   }
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/RegisterDividendTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/RegisterDividendTest.php
index bda048df..731ffdf3 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/RegisterDividendTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/RegisterDividendTest.php
@@ -85,8 +85,8 @@ class RegisterDividendTest extends KernelTestBase {
 
     // Validate registered totals.
     $d = ShareholderDividend::load(1);
-    $this->assertEquals($d->gross->value, "68.42");
-    $this->assertEquals($d->net->value, "47.89", "assert 68.42 - (68.42 * 0.3) rounded = 47.89");
+    $this->assertEquals("68.42", $d->gross->value);
+    $this->assertEquals("47.89", $d->net->value, "assert 68.42 - (68.42 * 0.3) rounded = 47.89");
   }
 
 }
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
index c5cf753a..335bc893 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
@@ -104,8 +104,8 @@ class VVPRTest extends KernelTestBase {
    */
   protected function getTaxCodeForShareId($details, $share_id) {
     foreach ($details as $detail) {
-      if ($detail->share_id == $share_id) {
-        return $detail->taxcode;
+      if ($detail->getShareId() == $share_id) {
+        return $detail->getTaxCode();
       }
     }
     return FALSE;
diff --git a/src/ShareholderSharesLine.php b/src/ShareholderSharesLine.php
index c4288c7c..561ef14e 100644
--- a/src/ShareholderSharesLine.php
+++ b/src/ShareholderSharesLine.php
@@ -112,4 +112,13 @@ class ShareholderSharesLine {
     return $this->shareHash;
   }
 
+  /**
+   * Get share name range.
+   */
+  public function getShareNameRange() {
+    $formatter = \Drupal::service('shareholder_register.formatter');
+    return $formatter->shareIdsToRanges($this->shareIds);
+  }
+
+
 }
-- 
GitLab


From 671157024a39f9aaa72d0503926f2ac25769a365 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sat, 18 Mar 2023 05:42:05 +0000
Subject: [PATCH 3/8] cleanup

---
 .../src/DividendService.php                   |   7 -
 .../src/Form/DividendForm.php                 | 124 ------------------
 2 files changed, 131 deletions(-)

diff --git a/modules/shareholder_register_dividend/src/DividendService.php b/modules/shareholder_register_dividend/src/DividendService.php
index 175bdcb7..8afd211b 100644
--- a/modules/shareholder_register_dividend/src/DividendService.php
+++ b/modules/shareholder_register_dividend/src/DividendService.php
@@ -201,13 +201,6 @@ class DividendService implements DividendServiceInterface {
     return $batch;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function registerDividend($shareholder_number, $gross, $net, $distribution) {
-
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/modules/shareholder_register_dividend/src/Form/DividendForm.php b/modules/shareholder_register_dividend/src/Form/DividendForm.php
index dee84740..1d00dc26 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendForm.php
@@ -12,130 +12,6 @@ use League\Csv\Reader;
  */
 class DividendForm extends FormBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  public static function registerDividend($distribution, &$context) {
-    $internal_precision = 4;
-
-    $config = $context['results']['config'];
-    if (!isset($context['sandbox']['current_row'])) {
-      $dist = DividendDistribution::create([
-        'name' => $distribution,
-      ]);
-      $dist->save();
-      $context['sandbox']['distribution'] = $dist;
-
-      $csv_file = Reader::createFromPath(
-          \Drupal::service('file_system')->realpath($context['results']['totals']->getFileUri()),
-          'r'
-      );
-      $context['sandbox']['current_row'] = 0;
-      $context['sandbox']['max_row'] = count($csv_file);
-    }
-
-    $formatterService = \Drupal::service('shareholder_register.formatter');
-
-    $csv_file = Reader::createFromPath(
-      \Drupal::service('file_system')->realpath($context['results']['totals']->getFileUri()),
-      'r'
-    );
-
-    for ($i = 0; $i < 100; $i++) {
-      if ($context['sandbox']['current_row'] >= $context['sandbox']['max_row']) {
-        continue;
-      }
-      $gross = '0.0';
-      $tax = '0.0';
-
-      $line = $new_line = $csv_file->fetchOne($context['sandbox']['current_row']);
-      $shareholder_id = $line[6];
-      $details = [
-        'shareholder_id' => $shareholder_id,
-        'fraction' => 0,
-        'grouped' => [],
-      ];
-
-      do {
-        $line = $new_line;
-
-        $fraction = $line[2];
-        $tax_rate = $line[3];
-        $record = [
-          'fraction' => $fraction,
-          'taxcode' => [],
-          'details' => unserialize($line[5]),
-        ];
-        $details['fraction'] += $fraction;
-
-        $sub_gross = $formatterService->round(
-          bcdiv(
-            bcmul(
-              $fraction,
-              $config['dividend'],
-              $internal_precision
-            ),
-            $context['results']['base'],
-            $internal_precision + 1
-          ),
-          2
-        );
-
-        $gross = bcadd(
-          $gross,
-          $sub_gross,
-          2
-        );
-
-        $sub_tax = $formatterService->round(
-          bcdiv(
-            bcmul(
-              $sub_gross,
-              $tax_rate,
-              2),
-            100,
-            2 + 1
-          ),
-          2
-        );
-
-        $tax = bcadd(
-          $tax,
-          $sub_tax,
-          2
-        );
-
-        $record['gross'] = $sub_gross;
-        $record['tax'] = $sub_tax;
-        $record['net'] = bcsub(
-          $sub_gross,
-          $sub_tax,
-          2
-        );
-
-        $details['grouped'][$tax_rate] = $record;
-        $context['sandbox']['current_row']++;
-        $new_line = $csv_file->fetchOne($context['sandbox']['current_row']);
-      } while ($context['sandbox']['current_row'] < $context['sandbox']['max_row'] && $new_line[6] == $shareholder_id);
-
-      $div = ShareholderDividend::create([
-        'distribution_id' => $context['sandbox']['distribution']->id(),
-        'shareholder_id' => $line[6],
-        'gross' => $gross,
-        'net' => bcsub($gross, $tax, 2),
-      ]);
-      $div->setData('details', $details);
-      $div->save();
-    }
-
-    if ($context['sandbox']['max_row'] > 0) {
-      $context['finished'] = $context['sandbox']['current_row'] / $context['sandbox']['max_row'];
-    }
-    else {
-      $context['finished'] = 1;
-    }
-  }
-
   /**
    * {@inheritdoc}
    */
-- 
GitLab


From caba77e8382c1d8c8af9283f15d2d9c5207a2d2d Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sat, 18 Mar 2023 05:42:23 +0000
Subject: [PATCH 4/8] phpcs

---
 .../shareholder_register_api.services.yml                   | 2 +-
 modules/shareholder_register_api/src/JsonRequestPolicy.php  | 2 +-
 .../src/DividendDistributionAccessControlHandler.php        | 6 +++---
 .../shareholder_register_dividend/src/Form/DividendForm.php | 2 --
 .../src/Plugin/DividendAllocation/ProRata.php               | 1 -
 .../shareholder_register_dividend/src/ShareDividendLine.php | 1 +
 modules/shareholder_register_webform/src/MappingService.php | 2 +-
 src/Commands/ShareholderRegisterCommands.php                | 4 +---
 src/ShareIssueListBuilder.php                               | 2 +-
 src/ShareholderRegisterDrushService.php                     | 4 ++--
 src/ShareholderSharesLine.php                               | 1 -
 11 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/modules/shareholder_register_api/shareholder_register_api.services.yml b/modules/shareholder_register_api/shareholder_register_api.services.yml
index 84e1d2e6..2a059de6 100644
--- a/modules/shareholder_register_api/shareholder_register_api.services.yml
+++ b/modules/shareholder_register_api/shareholder_register_api.services.yml
@@ -7,4 +7,4 @@ services:
     class: 'Drupal\shareholder_register_api\JsonRequestPolicy'
     arguments: ['@logger.channel.shareholder_register_api', '@current_route_match']
     tags:
-      - { name: dynamic_page_cache_request_policy }
\ No newline at end of file
+      - { name: dynamic_page_cache_request_policy }
diff --git a/modules/shareholder_register_api/src/JsonRequestPolicy.php b/modules/shareholder_register_api/src/JsonRequestPolicy.php
index 6ca6e753..0d5d5e79 100644
--- a/modules/shareholder_register_api/src/JsonRequestPolicy.php
+++ b/modules/shareholder_register_api/src/JsonRequestPolicy.php
@@ -39,7 +39,7 @@ class JsonRequestPolicy implements RequestPolicyInterface {
    * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
    *   The current route match.
    */
-    public function __construct(LoggerInterface $logger, RouteMatchInterface $route_match) {
+  public function __construct(LoggerInterface $logger, RouteMatchInterface $route_match) {
     $this->logger = $logger;
     $this->routeMatch = $route_match;
   }
diff --git a/modules/shareholder_register_dividend/src/DividendDistributionAccessControlHandler.php b/modules/shareholder_register_dividend/src/DividendDistributionAccessControlHandler.php
index eb78c734..9eb43109 100644
--- a/modules/shareholder_register_dividend/src/DividendDistributionAccessControlHandler.php
+++ b/modules/shareholder_register_dividend/src/DividendDistributionAccessControlHandler.php
@@ -19,8 +19,8 @@ class DividendDistributionAccessControlHandler extends EntityAccessControlHandle
    *
    * @var bool
    */
-  protected $viewLabelOperation = TRUE;    
-    
+  protected $viewLabelOperation = TRUE;
+
   /**
    * {@inheritdoc}
    */
@@ -31,7 +31,7 @@ class DividendDistributionAccessControlHandler extends EntityAccessControlHandle
     if ($operation === 'view label') {
       return AccessResult::allowed();
     }
-      
+
     /** @var \Drupal\shareholder_register_dividend\Entity\DividendDistributionInterface $entity */
     switch ($operation) {
       case 'view':
diff --git a/modules/shareholder_register_dividend/src/Form/DividendForm.php b/modules/shareholder_register_dividend/src/Form/DividendForm.php
index 1d00dc26..2a7a3264 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendForm.php
@@ -5,8 +5,6 @@ namespace Drupal\shareholder_register_dividend\Form;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 
-use League\Csv\Reader;
-
 /**
  * Class for the Dividend Form.
  */
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
index 3fe38347..a049db13 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendAllocation/ProRata.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\shareholder_register_dividend\Plugin\DividendAllocation;
 
-use Drupal\shareholder_register\Entity\Share;
 use Drupal\shareholder_register_dividend\ShareDividendLine;
 use Drupal\shareholder_register_dividend\Plugin\DividendAllocationDefinitionBase;
 use Drupal\shareholder_register_dividend\Exception\ShareholderRegisterDividendException;
diff --git a/modules/shareholder_register_dividend/src/ShareDividendLine.php b/modules/shareholder_register_dividend/src/ShareDividendLine.php
index 0a0e0aa5..b87ff5c4 100644
--- a/modules/shareholder_register_dividend/src/ShareDividendLine.php
+++ b/modules/shareholder_register_dividend/src/ShareDividendLine.php
@@ -103,4 +103,5 @@ class ShareDividendLine extends ShareholderSharesLine {
   public function getShareId() {
     return reset($this->shareIds);
   }
+
 }
diff --git a/modules/shareholder_register_webform/src/MappingService.php b/modules/shareholder_register_webform/src/MappingService.php
index 8e57106c..6d996c9b 100644
--- a/modules/shareholder_register_webform/src/MappingService.php
+++ b/modules/shareholder_register_webform/src/MappingService.php
@@ -146,7 +146,7 @@ class MappingService {
 
     if (count($property) == 1) {
       if (!$entity->get(trim($property[0]))->first()) {
-          return NULL;
+        return NULL;
       }
       $value_array = $entity->get(trim($property[0]))->first()->getValue();
       if (count($value_array) == 1 && array_key_exists('value', $value_array)) {
diff --git a/src/Commands/ShareholderRegisterCommands.php b/src/Commands/ShareholderRegisterCommands.php
index 205154c8..d75a4e2b 100644
--- a/src/Commands/ShareholderRegisterCommands.php
+++ b/src/Commands/ShareholderRegisterCommands.php
@@ -4,10 +4,8 @@ namespace Drupal\shareholder_register\Commands;
 
 use Drush\Commands\DrushCommands;
 
-use Drupal\shareholder_register\Entity\Shareholder;
 use Drupal\shareholder_register\Entity\ShareTransaction;
 
-
 /**
  * A Drush commandfile.
  *
@@ -88,7 +86,7 @@ class ShareholderRegisterCommands extends DrushCommands {
     if (!$this->io()->confirm("Are you sure you want to cancel transaction {$transaction->getName()} ({$transaction->id()}) for shareholder '{$shareholder->getNumber()}' ?")) {
       return;
     }
-      
+
     \Drupal::service('shareholder_register.drush')
       ->cancelValidatedTransaction($id);
   }
diff --git a/src/ShareIssueListBuilder.php b/src/ShareIssueListBuilder.php
index d1cbf7e7..6d83b476 100644
--- a/src/ShareIssueListBuilder.php
+++ b/src/ShareIssueListBuilder.php
@@ -18,7 +18,7 @@ class ShareIssueListBuilder extends EntityListBuilder {
    */
   public function buildHeader() {
     $header = [];
-    $header['id'] = $this->t('ID');    
+    $header['id'] = $this->t('ID');
     $header['name'] = $this->t('Name');
     $header['type'] = $this->t('Type');
     $header['reserved'] = $this->t('Total reserved');
diff --git a/src/ShareholderRegisterDrushService.php b/src/ShareholderRegisterDrushService.php
index 99df9cfa..e0a030db 100644
--- a/src/ShareholderRegisterDrushService.php
+++ b/src/ShareholderRegisterDrushService.php
@@ -129,7 +129,7 @@ class ShareholderRegisterDrushService implements ShareholderRegisterDrushService
    * {@inheritdoc}
    */
   public function cancelValidatedTransaction($id) {
-    // TODO: add check that this is the last transaction for each share.
+    // @todo add check that this is the last transaction for each share.
     $transaction = ShareTransaction::load($id);
     $shareholder = $transaction->getShareholder();
 
@@ -156,7 +156,7 @@ class ShareholderRegisterDrushService implements ShareholderRegisterDrushService
         $share->save();
       }
     }
-    
+
     foreach ($group->getTransactions() as $t) {
       $t->getShareholder()->save();
     }
diff --git a/src/ShareholderSharesLine.php b/src/ShareholderSharesLine.php
index 561ef14e..5ec54d6f 100644
--- a/src/ShareholderSharesLine.php
+++ b/src/ShareholderSharesLine.php
@@ -120,5 +120,4 @@ class ShareholderSharesLine {
     return $formatter->shareIdsToRanges($this->shareIds);
   }
 
-
 }
-- 
GitLab


From f4753f67755c16a7afe57c10f90a572cb480b480 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sat, 18 Mar 2023 07:52:46 +0100
Subject: [PATCH 5/8] phpcs

---
 .../src/Form/DividendSimulationForm.php          |  2 +-
 .../src/Form/ImportDividendForm.php              | 16 +++++++++++++---
 .../tests/src/Kernel/VVPRTest.php                |  4 ++--
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
index 67732af8..086c96ed 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
@@ -258,7 +258,7 @@ class DividendSimulationForm extends DividendForm {
    */
   public function finishExportDividend($success, $results, $operations) {
     if (isset($results['output'])) {
-      \Drupal::service('messenger')->addMessage(t(
+      $this->messenger()->addMessage($this->t(
           'Exported @number dividend lines download: @url',
           [
             '@number' => $results['result_count'],
diff --git a/modules/shareholder_register_dividend/src/Form/ImportDividendForm.php b/modules/shareholder_register_dividend/src/Form/ImportDividendForm.php
index 478ac0d5..5f358323 100644
--- a/modules/shareholder_register_dividend/src/Form/ImportDividendForm.php
+++ b/modules/shareholder_register_dividend/src/Form/ImportDividendForm.php
@@ -6,6 +6,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\File\FileSystemInterface;
 
 use Drupal\file\Entity\File;
 use Drupal\shareholder_register\Entity\Shareholder;
@@ -25,11 +26,19 @@ class ImportDividendForm extends FormBase {
    */
   protected $account;
 
+  /**
+   * The filesystem service.
+   *
+   * @var \Drupal\Core\File\FileSystemInterface;
+   */
+  protected $fileSystem;
+
   /**
    * Class constructor.
    */
-  public function __construct(DividendServiceInterface $account) {
+  public function __construct(DividendServiceInterface $account, DividendServiceInterface $fileSystem) {
     $this->account = $account;
+    $this->fileSystem = $fileSystem;
   }
 
   /**
@@ -37,7 +46,8 @@ class ImportDividendForm extends FormBase {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('shareholder_register_dividend.default')
+      $container->get('shareholder_register_dividend.default'),
+      $container->get('file_system')
     );
   }
 
@@ -157,7 +167,7 @@ class ImportDividendForm extends FormBase {
     $distribution->save();
 
     $csv_file = File::Load(reset($form_state->getValue('dividend_csv_file')));
-    if (($handle = fopen(\Drupal::service('file_system')->realpath($csv_file->GetFileUri()), "r")) !== FALSE) {
+    if (($handle = fopen($this->fileSystem->realpath($csv_file->GetFileUri()), "r")) !== FALSE) {
       while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
         if (!is_numeric($data[$form_state->getValue('gross_amount_column')])) {
           continue;
diff --git a/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php b/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
index 335bc893..a950e72e 100644
--- a/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
+++ b/modules/shareholder_register_dividend/tests/src/Kernel/VVPRTest.php
@@ -100,7 +100,7 @@ class VVPRTest extends KernelTestBase {
   }
 
   /**
-   *
+   * Get Taxcode for shareholder.
    */
   protected function getTaxCodeForShareId($details, $share_id) {
     foreach ($details as $detail) {
@@ -112,7 +112,7 @@ class VVPRTest extends KernelTestBase {
   }
 
   /**
-   *
+   * Test VVPR tax codes.
    */
   public function testVvprCodes() {
     $register = $this->loadBasicRegister(
-- 
GitLab


From 13dff26a58f6bf57bbb90eebe555a21366a86cdc Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sat, 18 Mar 2023 08:49:40 +0100
Subject: [PATCH 6/8] imp: dividend simulation with hash selection

---
 .../src/DividendService.php                       | 11 +++++++++--
 .../src/Form/DividendSimulationForm.php           | 15 ++++++++++++---
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/modules/shareholder_register_dividend/src/DividendService.php b/modules/shareholder_register_dividend/src/DividendService.php
index 8afd211b..c756634c 100644
--- a/modules/shareholder_register_dividend/src/DividendService.php
+++ b/modules/shareholder_register_dividend/src/DividendService.php
@@ -167,6 +167,13 @@ class DividendService implements DividendServiceInterface {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function dividendTotalHash($details) {
+    return "{$details->getShareholderId()}";
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -177,8 +184,8 @@ class DividendService implements DividendServiceInterface {
   /**
    * {@inheritdoc}
    */
-  public static function dividendTotalHash($details) {
-    return "{$details->getShareholderId()}";
+  public static function dividendTotalHashWithShareHash($details) {
+    return "{$details->getShareholderId()}-{$details->getShareHash()}";
   }
 
   /**
diff --git a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
index 086c96ed..49dabc90 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
@@ -331,6 +331,17 @@ class DividendSimulationForm extends DividendForm {
       '#weight' => '90',
     ];
 
+    $form['hash'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Group hash'),
+      '#options' => [
+        '\Drupal\shareholder_register_dividend\DividendService::dividendTotalHash' => 'default',
+        '\Drupal\shareholder_register_dividend\DividendService::dividendTotalHashWithTaxDetails' => 'taxcode',
+        '\Drupal\shareholder_register_dividend\DividendService::dividendTotalHashWithShareHash' => 'share hash',
+      ],
+      '#weight' => '90',
+    ];
+
     return $form;
   }
 
@@ -339,9 +350,7 @@ class DividendSimulationForm extends DividendForm {
    */
   protected function getDividendConfig(FormStateInterface $form_state) {
     $dividend_config = parent::getDividendConfig($form_state);
-    if ($form_state->getValue('action') == '1') {
-      $dividend_config['total_hash'] = "\Drupal\shareholder_register_dividend\DividendService::dividendTotalHashWithTaxDetails";
-    }
+    $dividend_config['total_hash'] = $form_state->getValue('hash');
     $dividend_config['process'] = $form_state->getValue('type');
     return $dividend_config;
   }
-- 
GitLab


From dbe2ce5042629cd472534bb587fc707b36bdbebf Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sat, 18 Mar 2023 09:30:01 +0100
Subject: [PATCH 7/8] imp: I-7426 include hash in totals export

---
 .../src/Form/DividendSimulationForm.php                      | 4 +++-
 .../src/Plugin/DividendProcess/ExportTotalsCsv.php           | 5 +++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
index 49dabc90..cb9a2a42 100644
--- a/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
+++ b/modules/shareholder_register_dividend/src/Form/DividendSimulationForm.php
@@ -196,6 +196,7 @@ class DividendSimulationForm extends DividendForm {
       $sheet->setCellValue("F6", t('Tax Amount'));
       $sheet->setCellValue("G6", t('Dividend'));
       $sheet->setCellValue("H6", t('Tax code'));
+      $sheet->setCellValue("I6", t('Hash'));
 
       $context['sandbox']['row'] = 7;
 
@@ -232,7 +233,8 @@ class DividendSimulationForm extends DividendForm {
       $sheet->setCellValue("E{$row}", "=ROUND(C{$row}*B3/C3, 2)");
       $sheet->setCellValue("F{$row}", "=ROUND(E{$row}*(D{$row}/100), 2)");
       $sheet->setCellValue("G{$row}", "=E{$row}-F{$row}");
-      $sheet->setCellValue("H{$row}", $line[4]);
+      $sheet->setCellValue("H{$row}", $line['taxcode']);
+      $sheet->setCellValue("I{$row}", $line['hash']);
 
       $sheet->setCellValue("B4", "=SUM(E7:E{$row})");
 
diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
index b9fcd4e5..4f3dbabf 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendProcess/ExportTotalsCsv.php
@@ -30,7 +30,7 @@ class ExportTotalsCsv extends DividendProcessPluginBase {
    */
   public function init(&$context, array $dividend_config) {
     if (!isset($context['results']['csv_totals'])) {
-      $context['results']['csv_totals'] = "shareholder_number,shareholder_name,fraction,tax,taxcode,shareholder_id\n";
+      $context['results']['csv_totals'] = "shareholder_number,shareholder_name,fraction,tax,taxcode,shareholder_id,hash\n";
     }
     $this->csvWriter = Writer::createFromString(
       $context['results']['csv_totals']);
@@ -40,7 +40,7 @@ class ExportTotalsCsv extends DividendProcessPluginBase {
    * {@inheritdoc}
    */
   public function process(Shareholder $shareholder, array $results) {
-    foreach ($results['totals'] as $group) {
+    foreach ($results['totals'] as $hash => $group) {
       foreach ($group['grouped'] as $line) {
         $this->csvWriter->insertOne([
           $shareholder->getNumber(),
@@ -49,6 +49,7 @@ class ExportTotalsCsv extends DividendProcessPluginBase {
           $line['tax'],
           implode(", ", $line['taxcode']),
           $shareholder->id(),
+          $hash,
         ]);
       }
     }
-- 
GitLab


From cbb11dd625175438997071dfc44d499ba3706771 Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Sun, 19 Mar 2023 08:25:59 +0100
Subject: [PATCH 8/8] phpcs

---
 .../src/Plugin/DividendProcessInterface.php   |  4 ++--
 .../src/ShareDividendLine.php                 | 20 +++++++++----------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/modules/shareholder_register_dividend/src/Plugin/DividendProcessInterface.php b/modules/shareholder_register_dividend/src/Plugin/DividendProcessInterface.php
index 51073f92..ed515cb4 100644
--- a/modules/shareholder_register_dividend/src/Plugin/DividendProcessInterface.php
+++ b/modules/shareholder_register_dividend/src/Plugin/DividendProcessInterface.php
@@ -22,10 +22,10 @@ interface DividendProcessInterface {
    *
    * @param array $context
    *   The batch context.
-   * @param mixed $dividend_config
+   * @param array $dividend_config
    *   The Dividend configuration.
    */
-  public function init(&$context, array $dividend_config);
+  public function init(array &$context, array $dividend_config);
 
   /**
    * Process the result of one shareholder.
diff --git a/modules/shareholder_register_dividend/src/ShareDividendLine.php b/modules/shareholder_register_dividend/src/ShareDividendLine.php
index b87ff5c4..dd455f2d 100644
--- a/modules/shareholder_register_dividend/src/ShareDividendLine.php
+++ b/modules/shareholder_register_dividend/src/ShareDividendLine.php
@@ -15,7 +15,7 @@ class ShareDividendLine extends ShareholderSharesLine {
    *
    * @var string
    */
-  protected $end_date;
+  protected $endDate;
 
   /**
    * The fraction.
@@ -29,23 +29,23 @@ class ShareDividendLine extends ShareholderSharesLine {
    *
    * @var int
    */
-  protected $tax_rate;
+  protected $taxRate;
 
   /**
    * The tax code.
    *
    * @var string
    */
-  protected $tax_code;
+  protected $taxCode;
 
   /**
    * Constructs a new ShareDividendLine object.
    */
   public function __construct(string $start_date, string $end_date, int $shareholder_id, ShareInterface $share, int $fraction) {
     parent::__construct(FALSE, $start_date, $shareholder_id, 1, [$share->id()], $share->get('share_type_id')->target_id);
-    $this->end_date = $end_date;
+    $this->endDate = $end_date;
     $this->fraction = $fraction;
-    $this->tax_rate = 0;
+    $this->taxRate = 0;
   }
 
   /**
@@ -59,7 +59,7 @@ class ShareDividendLine extends ShareholderSharesLine {
    * Get end date.
    */
   public function getEndDate() {
-    return $this->end_date;
+    return $this->endDate;
   }
 
   /**
@@ -73,28 +73,28 @@ class ShareDividendLine extends ShareholderSharesLine {
    * Get tax rate.
    */
   public function getTax() {
-    return $this->tax_rate;
+    return $this->taxRate;
   }
 
   /**
    * Set tax rate.
    */
   public function setTax(int $rate) {
-    $this->tax_rate = $rate;
+    $this->taxRate = $rate;
   }
 
   /**
    * Get tax code.
    */
   public function getTaxCode() {
-    return $this->tax_code;
+    return $this->taxCode;
   }
 
   /**
    * Set tax code.
    */
   public function setTaxCode(string $code) {
-    $this->tax_code = $code;
+    $this->taxCode = $code;
   }
 
   /**
-- 
GitLab