Skip to content

Commit

Permalink
BB-22241 Product export file column names always use default locale 5…
Browse files Browse the repository at this point in the history
….1 (#35489)
  • Loading branch information
StevensonKuo committed Jun 2, 2023
1 parent 6c1fbf6 commit 76a1036
Show file tree
Hide file tree
Showing 40 changed files with 630 additions and 459 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
attributeFamily.code,sku,status,type,primaryUnitPrecision.unit.code,inventory_status.id,primaryUnitPrecision.precision,primaryUnitPrecision.conversionRate,primaryUnitPrecision.sell,names.default.fallback,names.default.value,names.English (United States).fallback,names.English (United States).value,shortDescriptions.default.fallback,shortDescriptions.default.value,shortDescriptions.English (United States).fallback,shortDescriptions.English (United States).value,descriptions.default.fallback,descriptions.default.value,descriptions.English (United States).fallback,descriptions.English (United States).value,variantFields,variantLinks.1.product.sku,variantLinks.1.visible,variantLinks.2.product.sku,variantLinks.2.visible,variantLinks.3.product.sku,variantLinks.3.visible,variantLinks.4.product.sku,variantLinks.4.visible,availability_date,dupl_2,dupl_1,featured,newArrival,backOrder.value,category.id,Color.name,decrementQuantity.value,highlightLowInventory.value,inventoryThreshold.value,lowInventoryThreshold.value,manageInventory.value,maximumQuantityToOrder.value,metaDescriptions.default.fallback,metaDescriptions.default.value,metaDescriptions.English (United States).fallback,metaDescriptions.English (United States).value,metaKeywords.default.fallback,metaKeywords.default.value,metaKeywords.English (United States).fallback,metaKeywords.English (United States).value,metaTitles.default.fallback,metaTitles.default.value,metaTitles.English (United States).fallback,metaTitles.English (United States).value,minimumQuantityToOrder.value,Size.name,isUpcoming.value,slugPrototypes.default.fallback,slugPrototypes.default.value,slugPrototypes.English (United States).fallback,slugPrototypes.English (United States).value,category.default.title
Product Family.Code,SKU,Status,Type,Unit of Quantity.Unit.Code,Inventory Status.Id,Unit of Quantity.Precision,Unit of Quantity.Conversion Rate,Unit of Quantity.Sell,Name.default.fallback,Name.default.value,Name.English (United States).fallback,Name.English (United States).value,Short Description.default.fallback,Short Description.default.value,Short Description.English (United States).fallback,Short Description.English (United States).value,Description.default.fallback,Description.default.value,Description.English (United States).fallback,Description.English (United States).value,Configurable Attributes,Product Variant Links.1.Product.SKU,Product Variant Links.1.Visible,Product Variant Links.2.Product.SKU,Product Variant Links.2.Visible,Product Variant Links.3.Product.SKU,Product Variant Links.3.Visible,Product Variant Links.4.Product.SKU,Product Variant Links.4.Visible,Availability Date,Dupl 2,Dupl 1,Is Featured,New Arrival,Backorders.value,Category.ID,Color.Name,Decrement Inventory.value,Highlight Low Inventory.value,Inventory Threshold.value,Low Inventory Threshold.value,Managed Inventory.value,Maximum Quantity To Order.value,Meta description.default.fallback,Meta description.default.value,Meta description.English (United States).fallback,Meta description.English (United States).value,Meta keywords.default.fallback,Meta keywords.default.value,Meta keywords.English (United States).fallback,Meta keywords.English (United States).value,Meta title.default.fallback,Meta title.default.value,Meta title.English (United States).fallback,Meta title.English (United States).value,Minimum Quantity To Order.value,Size.Name,Upcoming.value,URL Slug.default.fallback,URL Slug.default.value,URL Slug.English (United States).fallback,URL Slug.English (United States).value,category.default.title
tshirt_family,Black_Shirt_M_sku,enabled,simple,item,in_stock,0,1,1,,Black Shirt,system,,,,system,,,,system,,,,,,,,,,,,,,0,0,category,2,Black,category,category,category,category,category,category,,,system,,,,system,,,,system,,category,M,category,,black-shirt,system,,Shirts
tshirt_family,Black_Shirt_L_sku,enabled,simple,item,in_stock,0,1,1,,Black Shirt,system,,,,system,,,,system,,,,,,,,,,,,,,0,0,category,2,Black,category,category,category,category,category,category,,,system,,,,system,,,,system,,category,L,category,,black-shirt-1,system,,Shirts
tshirt_family,White_Shirt_M_sku,enabled,simple,item,in_stock,0,1,1,,White Shirt,system,,,,system,,,,system,,,,,,,,,,,,,,0,0,category,2,White,category,category,category,category,category,category,,,system,,,,system,,,,system,,category,M,category,,white-shirt,system,,Shirts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Feature: Import Products With WYSIWYG
And I open "Products" import tab
And I download "Products" Data Template file with processor "oro_product_product_export_template"
And fill template with data:
| attributeFamily.code | sku | status | type | primaryUnitPrecision.unit.code | inventory_status.id | primaryUnitPrecision.precision | primaryUnitPrecision.conversionRate | primaryUnitPrecision.sell | additionalUnitPrecisions:0:unit:code | additionalUnitPrecisions:0:precision | additionalUnitPrecisions:0:conversionRate | additionalUnitPrecisions:0:sell | names.default.fallback | names.default.value | names.English (United States).fallback | names.English (United States).value | shortDescriptions.default.fallback | shortDescriptions.default.value | shortDescriptions.English (United States).fallback | shortDescriptions.English (United States).value | descriptions.default.fallback | descriptions.default.value | descriptions.English (United States).fallback | descriptions.English (United States).value | variantFields | featured | newArrival | backOrder.value | category.id |
| default_family | PSKU1 | enabled | simple | item | in_stock | 0 | 1 | 1 | set | 0 | 10 | 1 | | Test Product 1 | system | | | Test Product Short Description | system | | | <div><p class="product-view-desc">Test product description 1</p><img id="wysiwyg_img" alt="about_320.jpg" src="{{ wysiwyg_image('1','5f352b84-fd53-4632-8527-132557b708f5') }}"></div> | system | | | 0 | 0 | systemConfig | 1 |
| Product Family.Code | SKU | Status | Type | Unit of Quantity.Unit.Code | Inventory Status.Id | Unit of Quantity.Precision | Unit of Quantity.Conversion Rate | Unit of Quantity.Sell | Additional Units:0:Unit:Code | Additional Units:0:Precision | Additional Units:0:Conversion Rate | Additional Units:0:Sell | Name.default.fallback | Name.default.value | Name.English (United States).fallback | Name.English (United States).value | Short Description.default.fallback | Short Description.default.value | Short Description.English (United States).fallback | Short Description.English (United States).value | Description.default.fallback | Description.default.value | Description.English (United States).fallback | Description.English (United States).value | Configurable Attributes | Is Featured | New Arrival | Backorders.value | Category.ID |
| default_family | PSKU1 | enabled | simple | item | in_stock | 0 | 1 | 1 | set | 0 | 10 | 1 | | Test Product 1 | system | | | Test Product Short Description | system | | | <div><p class="product-view-desc">Test product description 1</p><img id="wysiwyg_img" alt="about_320.jpg" src="{{ wysiwyg_image('1','5f352b84-fd53-4632-8527-132557b708f5') }}"></div> | system | | | 0 | 0 | systemConfig | 1 |
And I import file
Then Email should contains the following "Errors: 0 processed: 1, read: 1, added: 1, updated: 0, replaced: 0" text

Expand All @@ -30,8 +30,8 @@ Feature: Import Products With WYSIWYG
And I open "Products" import tab
And I download "Products" Data Template file with processor "oro_product_product_export_template"
And fill template with data:
| attributeFamily.code | sku | status | type | primaryUnitPrecision.unit.code | inventory_status.id | primaryUnitPrecision.precision | primaryUnitPrecision.conversionRate | primaryUnitPrecision.sell | additionalUnitPrecisions:0:unit:code | additionalUnitPrecisions:0:precision | additionalUnitPrecisions:0:conversionRate | additionalUnitPrecisions:0:sell | names.default.fallback | names.default.value | names.English (United States).fallback | names.English (United States).value | shortDescriptions.default.fallback | shortDescriptions.default.value | shortDescriptions.English (United States).fallback | shortDescriptions.English (United States).value | descriptions.default.fallback | descriptions.default.value | descriptions.English (United States).fallback | descriptions.English (United States).value | variantFields | featured | newArrival | backOrder.value | category.id |
| default_family | PSKU1 | enabled | simple | item | in_stock | 0 | 1 | 1 | set | 0 | 10 | 1 | | Test Product 2 | system | | | Test Product Short Description | system | | | <div><p class="product-view-desc">Test product description 1 updated</p><img id="wysiwyg_img" alt="about_320.jpg" src="{{ wysiwyg_image('1','5f352b84-fd53-4632-8527-132557b708f5') }}"></div> | system | | | 0 | 0 | systemConfig | 1 |
| Product Family.Code | SKU | Status | Type | Unit of Quantity.Unit.Code | Inventory Status.Id | Unit of Quantity.Precision | Unit of Quantity.Conversion Rate | Unit of Quantity.Sell | Additional Units:0:Unit:Code | Additional Units:0:Precision | Additional Units:0:Conversion Rate | Additional Units:0:Sell | Name.default.fallback | Name.default.value | Name.English (United States).fallback | Name.English (United States).value | Short Description.default.fallback | Short Description.default.value | Short Description.English (United States).fallback | Short Description.English (United States).value | Description.default.fallback | Description.default.value | Description.English (United States).fallback | Description.English (United States).value | Configurable Attributes | Is Featured | New Arrival | Backorders.value | Category.ID |
| default_family | PSKU1 | enabled | simple | item | in_stock | 0 | 1 | 1 | set | 0 | 10 | 1 | | Test Product 2 | system | | | Test Product Short Description | system | | | <div><p class="product-view-desc">Test product description 1 updated</p><img id="wysiwyg_img" alt="about_320.jpg" src="{{ wysiwyg_image('1','5f352b84-fd53-4632-8527-132557b708f5') }}"></div> | system | | | 0 | 0 | systemConfig | 1 |
And I import file
Then Email should contains the following "Errors: 0 processed: 1, read: 1, added: 0, updated: 0, replaced: 1" text

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

namespace Oro\Bundle\CatalogBundle\ImportExport\DataConverter;

use Oro\Bundle\CatalogBundle\Entity\Category;
use Oro\Bundle\LocaleBundle\ImportExport\DataConverter\LocalizedFallbackValueAwareDataConverter;
use Oro\Bundle\OrganizationBundle\Entity\Organization;

/**
* Data converter for Category.
Expand All @@ -14,17 +16,24 @@ class CategoryDataConverter extends LocalizedFallbackValueAwareDataConverter
/**
* {@inheritdoc}
*/
protected function receiveHeaderConversionRules()
protected function receiveHeaderConversionRules(): array
{
$conversionRules = parent::receiveHeaderConversionRules();

$categoryHeaders = $this->getCategoryFieldHeaders();
// Adds parentCategory title conversion rule.
$conversionRules[sprintf('parentCategory%stitle', $this->relationDelimiter)]
= sprintf('parentCategory%1$stitles%1$sdefault%1$sstring', $this->convertDelimiter);
$conversionRules[sprintf(
'%s%s%s',
$categoryHeaders['parentCategory'],
$this->relationDelimiter,
$categoryHeaders['titles']
)] = sprintf('parentCategory%1$stitles%1$sdefault%1$sstring', $this->convertDelimiter);

// Removes organization conversion rule if not allowed.
if (!$this->isOrganizationColumnAllowed()) {
unset($conversionRules[sprintf('organization%sname', $this->relationDelimiter)]);
$orgHeaders = $this->getOrganizationFieldHeaders();
$key = sprintf('%s%s%s', $orgHeaders['organization'], $this->relationDelimiter, $orgHeaders['name']);
unset($conversionRules[$key]);
}

return $conversionRules;
Expand All @@ -33,7 +42,7 @@ protected function receiveHeaderConversionRules()
/**
* {@inheritdoc}
*/
protected function getBackendHeader()
protected function getBackendHeader(): array
{
$header = parent::getBackendHeader();

Expand All @@ -56,4 +65,24 @@ protected function isOrganizationColumnAllowed(): bool
{
return false;
}

private function getCategoryFieldHeaders(): array
{
return [
'parentCategory' =>
$this->fieldHelper->getConfigValue(Category::class, 'parentCategory', 'header', 'parentCategory'),
'titles' =>
$this->fieldHelper->getConfigValue(Category::class, 'titles', 'header', 'titles')
];
}

private function getOrganizationFieldHeaders(): array
{
return [
'organization' =>
$this->fieldHelper->getConfigValue(Category::class, 'organization', 'header', 'organization'),
'name' =>
$this->fieldHelper->getConfigValue(Organization::class, 'name', 'header', 'name')
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,9 @@ protected function getCategoryOrganization(Category $category): ?Organization
protected function getCurrentParentCategoryPath(): string
{
$rawItemData = $this->context->getValue('rawItemData');
$key = $this->getParentCategoryHeader();

return $rawItemData['parentCategory.title'] ?? '';
return $rawItemData[$key] ?? '';
}

protected function findCategoryByPath(string $categoryPath, Organization $organization): ?Category
Expand Down Expand Up @@ -325,4 +326,13 @@ protected function getLeftOffset(): int

return $this->maxLeft + $this->strategyHelper->getCurrentRowNumber($this->context);
}

private function getParentCategoryHeader(): string
{
return sprintf(
'%s.%s',
$this->fieldHelper->getConfigValue(Category::class, 'parentCategory', 'header', 'parentCategory'),
$this->fieldHelper->getConfigValue(Category::class, 'titles', 'header', 'titles')
);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
titles.default.fallback,titles.default.value,titles.English (United States).fallback,titles.English (United States).value,parentCategory.title,slugPrototypes.default.fallback,slugPrototypes.default.value,slugPrototypes.English (United States).fallback,slugPrototypes.English (United States).value,shortDescriptions.default.fallback,shortDescriptions.default.value,shortDescriptions.English (United States).fallback,shortDescriptions.English (United States).value,longDescriptions.default.fallback,longDescriptions.default.value,longDescriptions.English (United States).fallback,longDescriptions.English (United States).value,metaTitles.default.fallback,metaTitles.default.value,metaTitles.English (United States).fallback,metaTitles.English (United States).value,metaDescriptions.default.fallback,metaDescriptions.default.value,metaDescriptions.English (United States).fallback,metaDescriptions.English (United States).value,metaKeywords.default.fallback,metaKeywords.default.value,metaKeywords.English (United States).fallback,metaKeywords.English (United States).value
Title.default.fallback,Title.default.value,Title.English (United States).fallback,Title.English (United States).value,Parent category.Title,URL Slug.default.fallback,URL Slug.default.value,URL Slug.English (United States).fallback,URL Slug.English (United States).value,Short Description.default.fallback,Short Description.default.value,Short Description.English (United States).fallback,Short Description.English (United States).value,Long Description.default.fallback,Long Description.default.value,Long Description.English (United States).fallback,Long Description.English (United States).value,Meta title.default.fallback,Meta title.default.value,Meta title.English (United States).fallback,Meta title.English (United States).value,Meta description.default.fallback,Meta description.default.value,Meta description.English (United States).fallback,Meta description.English (United States).value,Meta keywords.default.fallback,Meta keywords.default.value,Meta keywords.English (United States).fallback,Meta keywords.English (United States).value
,Accessories,system,,All Products,,accessories-category,system,,,,system,,,,system,,,,system,,,,system,,,,system,
,Accessories Subcategory,system,,All Products / Accessories,,accessories-subcategory,system,,,,system,,,,system,,,,system,,,,system,,,,system,
,Cabinets,system,,All Products,,cabinets-category,system,,,,system,,,,system,,,,system,,,,system,,,,system,
Expand Down
Loading

0 comments on commit 76a1036

Please sign in to comment.