You are here

private function InvoiceGenerator::getAdjustmentsFromEntity in Commerce Invoice 8.2

Return an array of adjustments from a given adjustable entity.

Parameters

\Drupal\commerce_order\EntityAdjustableInterface $entity: An adjustable entity object.

\Drupal\commerce_order\EntityAdjustableInterface[] $existing_items: (optional) An array of existing items that might contain adjustments which need to be subtracted from adjustable entity above. Defaults to an empty array.

Return value

\Drupal\commerce_order\Adjustment[] An array of adjustments.

2 calls to InvoiceGenerator::getAdjustmentsFromEntity()
InvoiceGenerator::doGenerate in src/InvoiceGenerator.php
InvoiceGenerator::getInvoiceItemsFromOrder in src/InvoiceGenerator.php
Return an array of invoice items from a given order.

File

src/InvoiceGenerator.php, line 165

Class

InvoiceGenerator

Namespace

Drupal\commerce_invoice

Code

private function getAdjustmentsFromEntity(EntityAdjustableInterface $entity, array $existing_items = []) {
  $adjustments = [];
  foreach ($entity
    ->getAdjustments() as $adjustment) {

    // Look through all the existing invoices for this order and subtract the
    // amount of their adjustments.
    foreach ($existing_items as $existing_item) {
      foreach ($existing_item
        ->getAdjustments() as $previous_adjustment) {
        if ($adjustment
          ->getType() === $previous_adjustment
          ->getType() && $adjustment
          ->getSourceId() === $previous_adjustment
          ->getSourceId()) {
          $adjustment = $adjustment
            ->subtract($previous_adjustment);
        }
      }
    }
    if (!$adjustment
      ->getAmount()
      ->isZero()) {
      $adjustments[] = $adjustment;
    }
  }
  return $adjustments;
}