List all product in assortment for a store
A customer wanted a functionality that needed the listing of all products in a stores assortment. The assortment for a store can be viewed in the online stores form.
To list these is quite cumbersome and involves quite a few tables. I got this query by debugging the init method of the called query. Rewrote it from standard MS SQL syntax to X++ select statement. The statement lists the same products as viewed in the View assortment products button.
private void onlineStoreProductListByOperatingUnitId(RefRecId _omOperatingUnit)
{
EcoResProduct
ecoResProduct;
EcoResProductMaster
ecoResProductMaster;
EcoResProductDimensionGroupProduct
ecoResProductDimensionGroupProduct;
EcoResProductDimensionGroup
ecoResProductDimensionGroup;
EcoResProductTranslation
ecoResProductTranslation;
InventTable
inventTable;
RetailChannelAssortedProductView
retailChannelAssortedProductView;
while select RecID,
DisplayProductNumber,InstanceRelationType
from
ecoResProduct
ORDER BY
EcoResProduct.DisplayProductNumber ASC
WHERE
((ecoResProduct.InstanceRelationType == 10812 ||
ecoResProduct.InstanceRelationType == 13678))
OUTER JOIN
ProductDimensionGroup
FROM
EcoResProductDimensionGroupProduct
where
EcoResProductMaster.RecId == EcoResProductDimensionGroupProduct.Product
OUTER JOIN Name
FROM
EcoResProductDimensionGroup
where
EcoResProductDimensionGroupProduct.ProductDimensionGroup ==
EcoResProductDimensionGroup.RecId
OUTER JOIN Name
FROM
ecoResProductTranslation
Where
ecoResProduct.RecId == ecoResProductTranslation.Product
&&
ecoResProductTranslation.LanguageId == 'en-us'
JOIN ItemId
from
inventTable
where
ecoResProduct.RecId == inventTable.Product
EXISTS JOIN
retailChannelAssortedProductView
WHERE
inventTable.Product == retailChannelAssortedProductView.ProductID
&&
inventTable.dataAreaId ==
retailChannelAssortedProductView.InventLocationDataAreaId
&&
retailChannelAssortedProductView.OMOperatingUnitId == _omOperatingUnit
{
//Product number,
Product Name, Currency, Price, Price Adjustment, Discount, Active Price,
Calculated discount
Info(strFmt('%1 -
%2 - %3', retailChannelAssortedProductView.ProductID, InventTable.ItemId,
InventTable.itemDescriptionOrName()));
}
}
Comments
Post a Comment