Alfasith AX

Alfasith AX
اللَّهُمَّ انْفَعْنِي بِمَا عَلَّمْتَنِي، وَعَلِّمْنِي مَا يَنْفَعُنِي، وَزِدْنِي عِلْمًا

Wednesday, January 25, 2017

Code to get WBS and Summary cost and sales estimates of an smmActivity

public static void SummarySalesPriceEstimates()
{

    ProjWBSUpdateController                 controllerLoc;
    HierarchyIdBase                         hierarchyIdLoc;
    HierarchyTreeTable                      hierarchyTreeTableLoc;
    str                                           recordWBSId;
    smmActivities                           smmActivitiesLoc;
    ProjTable                               projTableLoc;
    CalendarId                              calendarIdLoc;
    PSAActivityEstimates                    localPSAActivityEstimates;
    HierarchyTreeTable                      localHierarchyTreeTable;
    smmActivities                           localSmmActivities;
    HierarchyPath                           descendantsRangeValue;
    SalesPrice                              summarySalesPriceLoc;
    CostPrice                               summaryCostPriceLoc;

    #Characters

    descendantsRangeValue = hierarchyTreeTable.Path + hierarchyTreeTable.ElementNumber + #sharp + "*";

    smmActivities = smmActivities::find("CDC-008005");
    hierarchyTreeTableLoc = hierarchyTreeTable::findRefRecId(smmActivities.RecId);

    calendarId = ProjTable::find(smmActivities.projId()).PSASchedCalendarId;

    hierarchyId = hierarchyTreeTable.HierarchyId;

    controller = new ProjWBSUpdateController(hierarchyId,calendarId);
    controller.updateOutlineNumbersAndPublishInPreOrder();
    recordWBSId = controller.outlineNumberFor(hierarchyTreeTable.ElementNumber);
    if (!controller.hasChildren(hierarchyTreeTable))
    {
        // Get sum for the task itself.
        select sum(TotalSalesPrice), sum(TotalCostPrice) from localPSAActivityEstimates
            where localPSAActivityEstimates.ActivityNumber == smmActivities.ActivityNumber;

        summarySalesPrice = localPSAActivityEstimates.TotalSalesPrice;
        summaryCostPrice = localPSAActivityEstimates.TotalCostPrice;
    }
    else
    {
        // Include sum for the selected summary task's descendents.
        select sum(TotalSalesPrice), sum(TotalCostPrice) from localPSAActivityEstimates
            join RecId from localSmmActivities
                where localSmmActivities.ActivityNumber == localPSAActivityEstimates.ActivityNumber
                join RecId from localHierarchyTreeTable
                    where localHierarchyTreeTable.RefRecId == localSmmActivities.RecId
                          && localHierarchyTreeTable.Path like descendantsRangeValue;

        summarySalesPrice = localPSAActivityEstimates.TotalSalesPrice;
        summaryCostPrice = localPSAActivityEstimates.TotalCostPrice;
    }
    info(recordWBSId);
    info(strFmt("%1-%2",summarySalesPrice,summaryCostPrice));

}

How find size of recordsortedlist in D365/AX 2012

Hi, This is the continuity of the previous article where we are now getting the size of recordsortedlist . if(recordsortedlist.len() >1) ...