fixtures = Bootstrap::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage(); } /** * Tests that multiple credit memos can be created for zero total order if not all items are refunded yet */ #[ Config('carriers/freeshipping/active', '1', 'store', 'default'), Config('payment/free/active', '1', 'store', 'default'), DataFixture(ProductFixture::class, as: 'product'), DataFixture(GuestCartFixture::class, as: 'cart'), DataFixture( RuleFixture::class, [ 'simple_action' => Rule::BY_PERCENT_ACTION, 'discount_amount' => 100, 'apply_to_shipping' => 0, 'stop_rules_processing' => 0, 'sort_order' => 1, ] ), DataFixture( AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 2] ), DataFixture(SetBillingAddressFixture::class, ['cart_id' => '$cart.id$']), DataFixture(SetShippingAddressFixture::class, ['cart_id' => '$cart.id$']), DataFixture(SetGuestEmailFixture::class, ['cart_id' => '$cart.id$']), DataFixture( SetDeliveryMethodFixture::class, ['cart_id' => '$cart.id$', 'carrier_code' => 'freeshipping', 'method_code' => 'freeshipping'] ), DataFixture(SetPaymentMethodFixture::class, ['cart_id' => '$cart.id$', 'method' => 'free']), DataFixture(PlaceOrderFixture::class, ['cart_id' => '$cart.id$'], 'order'), DataFixture(InvoiceFixture::class, ['order_id' => '$order.id$'], 'invoice'), DataFixture( CreditmemoFixture::class, ['order_id' => '$order.id$', 'items' => [['qty' => 1, 'product_id' => '$product.id$']]], 'creditmemo' ), ] public function testMultipleCreditmemosForZeroTotalOrder() { $order = $this->fixtures->get('order'); $this->assertEquals(0, $order->getGrandTotal()); $order->unsetData('forced_can_creditmemo'); $this->assertTrue( $order->canCreditmemo(), 'Should be possible to create second credit memo for zero total order if not all items are refunded yet' ); } }