diff --git a/modules/commerce/migrations/commerce1_order_item.yml b/modules/commerce/migrations/commerce1_order_item.yml index 3cf5139..16d57d4 100644 --- a/modules/commerce/migrations/commerce1_order_item.yml +++ b/modules/commerce/migrations/commerce1_order_item.yml @@ -7,11 +7,8 @@ migration_tags: - Content source: plugin: commerce1_line_item + line_item_type: product process: - skip_duplicate: - plugin: skip_on_empty - source: duplicate - method: row order_item_id: line_item_id revision_id: revision_id type: diff --git a/modules/commerce/src/Plugin/migrate/OrderItemDeriver.php b/modules/commerce/src/Plugin/migrate/OrderItemDeriver.php index 03f064a..908b535 100644 --- a/modules/commerce/src/Plugin/migrate/OrderItemDeriver.php +++ b/modules/commerce/src/Plugin/migrate/OrderItemDeriver.php @@ -104,7 +104,7 @@ class OrderItemDeriver extends DeriverBase implements ContainerDeriverInterface foreach ($order_item_types as $row) { $line_item_type = $row->getSourceProperty('type'); // Ignore shipping line items because they become order adjustments. - if ($line_item_type !== 'shipping') { + if (($line_item_type !== 'shipping') && ($line_item_type !== 'commerce_discount')) { $values = $base_plugin_definition; $values['label'] = t('@label (@type)', [ diff --git a/modules/commerce/src/Plugin/migrate/source/commerce1/LineItem.php b/modules/commerce/src/Plugin/migrate/source/commerce1/LineItem.php index ea9012f..2e05ce9 100644 --- a/modules/commerce/src/Plugin/migrate/source/commerce1/LineItem.php +++ b/modules/commerce/src/Plugin/migrate/source/commerce1/LineItem.php @@ -27,6 +27,7 @@ class LineItem extends FieldableEntity { $query->condition('li.type', $this->configuration['line_item_type']); } + $a = $query->execute()->fetchAll(); return $query; } @@ -51,23 +52,6 @@ class LineItem extends FieldableEntity { * {@inheritdoc} */ public function prepareRow(Row $row) { - // An order can have multiple commerce_discount line items so only process - // the latest, the one with the maximum line_item_id, and skip the others. - $row->setSourceProperty('duplicate', TRUE); - if ($row->getSourceProperty('type') === 'commerce_discount') { - $query = $this->select('commerce_line_item', 'li') - ->condition('order_id', $row->getSourceProperty('order_id')) - ->condition('type', $row->getSourceProperty('type')) - ->condition('quantity', $row->getSourceProperty('quantity')) - ->condition('data', $row->getSourceProperty('data')); - $query->addExpression('MAX(line_item_id)'); - $max_line_item = $query->execute()->fetchField(); - - if ($max_line_item != $row->getSourceProperty('line_item_id')) { - $row->setSourceProperty('duplicate', FALSE); - } - } - $row->setSourceProperty('data', unserialize($row->getSourceProperty('data'))); $row->setSourceProperty('title', $row->getSourceProperty('line_item_label')); diff --git a/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemDeriverTest.php b/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemDeriverTest.php index 8381747..79d7f4b 100644 --- a/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemDeriverTest.php +++ b/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemDeriverTest.php @@ -51,8 +51,8 @@ class OrderItemDeriverTest extends Commerce1TestBase { $this->assertArrayHasKey('unit_price', $process, "Commerce order does not have a unit price field."); $this->assertArrayHasKey('total_price', $process, "Commerce order does not have a total price field."); - // Test that the line item for shipping does not exist. - $this->assertArrayNotHasKey('commerce1_order_item:shipping', $migrations, "Commerce product migrations exist after commerce_product installed"); + // Test that the line item for shipping exists. + $this->assertArrayHasKey('commerce1_order_item:shipping', $migrations, "Commerce product migrations exist after commerce_product installed"); } diff --git a/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemTest.php b/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemTest.php index 4707909..52441c4 100644 --- a/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemTest.php +++ b/modules/commerce/tests/src/Kernel/Migrate/commerce1/OrderItemTest.php @@ -104,33 +104,10 @@ class OrderItemTest extends Commerce1TestBase { ]; $this->assertOrderItem($order_item); - // Duplicate commerce_discount is not an order item. + // Discounts are not order items. $this->assertNULL(OrderItem::load(18)); + $this->assertNULL(OrderItem::load(27)); - $order_item = [ - 'id' => 27, - 'order_id' => NULL, - 'purchased_entity_id' => NULL, - 'quantity' => '1.00', - 'title' => '', - 'unit_price' => '0.000000', - 'unit_price_currency_code' => 'USD', - 'total_price' => '0.000000', - 'total_price_currency_code' => 'USD', - 'uses_legacy_adjustments' => '0', - 'adjustments' => [ - new Adjustment([ - 'type' => 'promotion', - 'label' => 'Peace day discount', - 'amount' => new Price('-24.00', 'USD'), - 'percentage' => NULL, - 'source_id' => 'custom', - 'included' => FALSE, - 'locked' => TRUE, - ]), - ], - ]; - $this->assertOrderItem($order_item); $order_item = [ 'id' => 28,