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

Popular posts from this blog

How to Create a wizard in x++ d365

how to post trade agreement journals automatically using x++ code

X++ code to CREATE AND POST A TRADE AGREEMENT IN MICROSOFT DYNAMICS 365 in D365 F & O