Commit 377432d1 authored by Jonathan Sacksick's avatar Jonathan Sacksick Committed by Jonathan Sacksick
Browse files

Issue #3306669 by jsacksick: Order item adjustments should be nullified when...

Issue #3306669 by jsacksick: Order item adjustments should be nullified when the quantity is set to 0.
parent 1a0ad1b8
Loading
Loading
Loading
Loading
+4 −0
Changes for modules/order/src/Entity/OrderItem.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Drupal\commerce_order\Entity;

use Drupal\commerce\Entity\CommerceContentEntityBase;
use Drupal\commerce_order\Adjustment;
use Drupal\commerce_price\Calculator;
use Drupal\commerce_price\Price;
use Drupal\Core\Entity\EntityChangedTrait;
use Drupal\Core\Entity\EntityStorageInterface;
@@ -349,6 +350,9 @@ class OrderItem extends CommerceContentEntityBase implements OrderItemInterface
   */
  public function preSave(EntityStorageInterface $storage) {
    parent::preSave($storage);
    if (Calculator::compare($this->getQuantity(), '0') === 0) {
      $this->set('adjustments', NULL);
    }
    $this->recalculateTotalPrice();
  }

+4 −0
Changes for modules/order/tests/src/Kernel/Entity/OrderItemTest.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -114,6 +114,10 @@ class OrderItemTest extends OrderKernelTestBase {
    $this->assertTrue($order_item->isLocked());
    $order_item->unlock();
    $this->assertFalse($order_item->isLocked());

    $order_item->setQuantity('0');
    $order_item->save();
    $this->assertEmpty($order_item->getAdjustments());
  }

  /**