Add attribute combinasions in export
modifié: core/lib/Thelia/ImportExport/Export/Type/ProductPricesExport.php
This commit is contained in:
@@ -12,18 +12,18 @@
|
||||
|
||||
namespace Thelia\ImportExport\Export\Type;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\Propel;
|
||||
use Thelia\Core\FileFormat\Formatting\FormatterData;
|
||||
use Thelia\Core\FileFormat\FormatType;
|
||||
use Thelia\ImportExport\Export\ExportHandler;
|
||||
use Thelia\Model\Base\ProductSaleElementsQuery;
|
||||
use Thelia\Model\Base\AttributeCombinationQuery;
|
||||
use Thelia\Model\Lang;
|
||||
use Thelia\Model\Map\AttributeAvI18nTableMap;
|
||||
use Thelia\Model\Map\AttributeAvTableMap;
|
||||
use Thelia\Model\Map\CurrencyTableMap;
|
||||
use Thelia\Model\Map\ProductI18nTableMap;
|
||||
use Thelia\Model\Map\ProductPriceTableMap;
|
||||
use Thelia\Model\Map\ProductSaleElementsTableMap;
|
||||
use Thelia\Model\ProductI18nQuery;
|
||||
use Thelia\Model\Tools\ModelCriteriaTools;
|
||||
use Thelia\Model\Map\ProductTableMap;
|
||||
|
||||
/**
|
||||
* Class ProductPricesExport
|
||||
@@ -64,18 +64,20 @@ class ProductPricesExport extends ExportHandler
|
||||
public function buildFormatterData(Lang $lang)
|
||||
{
|
||||
$aliases = [
|
||||
ProductSaleElementsTableMap::REF => "ref",
|
||||
ProductSaleElementsTableMap::EAN_CODE => "ean",
|
||||
"product_sale_elements_REF" => "ref",
|
||||
"product_sale_elements_EAN_CODE" => "ean",
|
||||
"price_PRICE" => "price",
|
||||
"price_PROMO_PRICE" => "promo_price",
|
||||
"currency_CODE" => "currency",
|
||||
"product_TITLE" => "title",
|
||||
"attribute_av_i18n_ATTRIBUTES" => "attributes",
|
||||
];
|
||||
|
||||
$locale = $this->real_escape($lang->getLocale());
|
||||
$defaultLocale = $this->real_escape(Lang::getDefaultLanguage()->getLocale());
|
||||
|
||||
$query = ProductSaleElementsQuery::create()
|
||||
$query = AttributeCombinationQuery::create()
|
||||
->useProductSaleElementsQuery()
|
||||
->useProductPriceQuery()
|
||||
->useCurrencyQuery()
|
||||
->addAsColumn("currency_CODE", CurrencyTableMap::CODE)
|
||||
@@ -84,25 +86,51 @@ class ProductPricesExport extends ExportHandler
|
||||
->addAsColumn("price_PROMO_PRICE", ProductPriceTableMap::PROMO_PRICE)
|
||||
->endUse()
|
||||
->useProductQuery()
|
||||
->useProductI18nQuery(null, Criteria::LEFT_JOIN)
|
||||
->useProductI18nQuery()
|
||||
->addAsColumn("product_TITLE", ProductI18nTableMap::TITLE)
|
||||
->endUse()
|
||||
->endUse()
|
||||
->addAsColumn("product_sale_elements_REF", ProductSaleElementsTableMap::REF)
|
||||
->addAsColumn("product_sale_elements_EAN_CODE", ProductSaleElementsTableMap::EAN_CODE)
|
||||
->endUse()
|
||||
->useAttributeAvQuery()
|
||||
->useAttributeAvI18nQuery(null, Criteria::INNER_JOIN)
|
||||
->addAsColumn(
|
||||
"attribute_av_i18n_ATTRIBUTES",
|
||||
"GROUP_CONCAT(DISTINCT ".AttributeAvI18nTableMap::TITLE.")"
|
||||
)
|
||||
->endUse()
|
||||
->endUse()
|
||||
->select([
|
||||
ProductSaleElementsTableMap::REF,
|
||||
ProductSaleElementsTableMap::EAN_CODE,
|
||||
"product_sale_elements_REF",
|
||||
"product_sale_elements_EAN_CODE",
|
||||
"price_PRICE",
|
||||
"price_PROMO_PRICE",
|
||||
"currency_CODE",
|
||||
"product_TITLE"
|
||||
"product_TITLE",
|
||||
"attribute_av_i18n_ATTRIBUTES",
|
||||
])
|
||||
->where(
|
||||
"CASE WHEN `product`.ID IN".
|
||||
"(SELECT DISTINCT id FROM product_i18n WHERE locale=$locale)".
|
||||
"THEN product_i18n.locale = $locale ".
|
||||
"ELSE product_i18n.locale = $defaultLocale ".
|
||||
"CASE WHEN ".ProductTableMap::ID." IN".
|
||||
"(SELECT DISTINCT ".ProductI18nTableMap::ID." ".
|
||||
"FROM `".ProductI18nTableMap::TABLE_NAME."` ".
|
||||
"WHERE locale=$locale) ".
|
||||
|
||||
"THEN ".ProductI18nTableMap::LOCALE." = $locale ".
|
||||
"ELSE ".ProductI18nTableMap::LOCALE." = $defaultLocale ".
|
||||
"END"
|
||||
)
|
||||
->_and()
|
||||
->where(
|
||||
"CASE WHEN ".AttributeAvTableMap::ID." IN".
|
||||
"(SELECT DISTINCT ".AttributeAvI18nTableMap::ID." ".
|
||||
"FROM `".AttributeAvI18nTableMap::TABLE_NAME."` ".
|
||||
"WHERE locale=$locale)".
|
||||
"THEN ".AttributeAvI18nTableMap::LOCALE." = $locale ".
|
||||
"ELSE ".AttributeAvI18nTableMap::LOCALE." = $defaultLocale ".
|
||||
"END"
|
||||
)
|
||||
->groupBy("product_sale_elements_REF")
|
||||
;
|
||||
|
||||
$data = new FormatterData($aliases);
|
||||
|
||||
Reference in New Issue
Block a user