X++ code to filter the items based on categoryID
This code will help you to filter items based on categoryId, the categoryId you will get from the category lookUp and the find the available inventory for all items
Code :-
class BASProductCategoryService extends SysOperationServiceBase
{
public void process(BASProductCategoryContract _contract)
{
// getting CategoryId
EcoResCategoryId category = _contract.parmCategory();
EcoResCategory ecoResCategory,ecoResCategoryInfo,ecoResCategoryChild;
EcoResProductCategory ecoResProductCategory;
EcoResProduct ecoResProduct;
InventSum inventSum;
QueryRun qRun;
QueryBuildDataSource qDS;
#EcoResCategoryDefaults
select * from ecoResCategory where ecoResCategory.RecId == category;
qRun = new QueryRun(new Query());
qDS = qRun.query().addDataSource(tableNum(ecoResCategory));
qDS.addRange(fieldNum(EcoResCategory, CategoryHierarchy))
.value(queryValue(ecoResCategory.CategoryHierarchy));
qDS.addRange(fieldNum(EcoResCategory, NestedSetLeft))
.value(Global::queryRange(ecoResCategory.NestedSetLeft, ecoResCategory.NestedSetRight));
qDS.addRange(fieldNum(EcoResCategory, NestedSetRight))
.value(Global::queryRange(ecoResCategory.NestedSetLeft, ecoResCategory.NestedSetRight));
while (qRun.next())
{
ecoResCategoryInfo = qRun.get(tableNum(EcoResCategory));
//Getting the items based on respective categoryId
while select * from ecoResProduct
join ecoResProductCategory
where ecoResProductCategory.Product == ecoResProduct.RecId
join ecoResCategoryChild
where ecoResCategoryChild.RecId == ecoResProductCategory.Category
&& ecoResCategoryChild.RecId == ecoResCategoryInfo.RecId
{
//Checking inventory availability
select sum(PhysicalInvent) from inventSum
where inventSum.ItemId == ecoResProduct.DisplayProductNumber;
Info(strFmt("Total stock for item %1 is %2 ",ecoResProduct.DisplayProductNumber,inventSum.PhysicalInvent));
}
}
}
}
Comments
Post a Comment