Create sys operations framework , should prompt FromDate and ToDate Site and warehouse, print the purchase orders received but not invoiced

 step1 : Create a contract class


[DataContractAttribute]

class BAS_PurchOrderContract

{

    FromDate fromDate;


    ToDate toDate;


    InventSiteId inventSiteId;


    InventLocationId inventLocationId;




    [DataMemberAttribute("From Date"),

        AifCollectionTypeAttribute("_fromdate", Types::Date)]

        public FromDate parmPurchaccount(FromDate _fromdate = fromDate)

    {

        fromDate = _fromdate;

        return fromDate;

    }


    [DataMemberAttribute("To Date"),

        AifCollectionTypeAttribute("_todate", Types::Date)]

        public ToDate parmTodateaccount(ToDate _todate = toDate)

    {

        toDate = _todate;

        return toDate;

    }


    [DataMemberAttribute("Site Id"),

        AifCollectionTypeAttribute("_siteid", Types::String)]

        public InventSiteId parmsiteaccount(InventSiteId _siteid = inventSiteId)

    {

        inventSiteId = _siteid;

        return inventSiteId;

    }


    [DataMemberAttribute("Warehouse Id"),

        AifCollectionTypeAttribute("_warehouseid", Types::String)]

        public InventLocationId parmwarehouseaccount(InventLocationId _warehouseid = inventLocationId)

    {

        inventLocationId = _warehouseid;

        return inventLocationId;

    }


}


step2 : create the service class 


class BAS_PurchOrderService extends SysOperationServiceBase

{

    public void purchorderservice(BAS_PurchOrderContract _purchordercontract)

    {

        Query                   query;

        QueryBuildDataSource    queryBuildDataSource;

        QueryBuildRange         range1, range2,range3, range4;

        PurchTable purchTable;

        QueryRun queryRun;

        // Create a new query object

        query = new Query();

        // Add the data source for the table you want to query

        queryBuildDataSource = query.addDataSource(tableNum(PurchTable));

        // Create the first date range

        range1 = queryBuildDataSource.addRange(fieldNum(PurchTable, DeliveryDate));

        range1.value(strFmt('%1,%2', _purchordercontract.parmPurchaccount(), _purchordercontract.parmTodateaccount())); // Specify your first date range here

        range2 = queryBuildDataSource.addRange(fieldNum(PurchTable, PurchStatus));

        range2.value('Received');

        range3 = queryBuildDataSource.addRange(fieldNum(PurchTable, InventSiteId));

        range3.value(_purchordercontract.parmsiteaccount());

        range4 = queryBuildDataSource.addRange(fieldNum(PurchTable, InventLocationId));

        range4.value(_purchordercontract.parmwarehouseaccount());

        // Execute the query

        queryRun = new QueryRun(query);

        while (queryRun.next())

        {

            purchTable = queryRun.get(tableNum(PurchTable));


            info(strfmt("%1",purchTable.PurchId));

        }


    }


}


step3 : create the controller class

class BAS_PurchOrderController extends SysOperationServiceController

{

    protected void new()

    {

        super(classStr(BAS_PurchOrderService), methodStr(BAS_PurchOrderService, purchorderservice), SysOperationExecutionMode::Synchronous);

    }


    /// <summary>

    /// To construct LocationRecordsController class

    /// </summary>

    public static BAS_PurchOrderController construct(SysOperationExecutionMode _executionMode = SysOperationExecutionMode::Synchronous)

    {

        BAS_PurchOrderController controller;

        controller = new BAS_PurchOrderController();

        controller.parmExecutionMode(_executionMode);

        return controller;

    }


    /// <summary>

    /// Main method of LocationRecordsController class

    /// </summary>

    public static void main(Args _args)

    {

        BAS_PurchOrderController controller;

        controller = BAS_PurchOrderController::construct();

        controller.parmArgs(_args);

        controller.startOperation();

    }


    /// <summary>

    /// To set caption of a batch job

    /// </summary>

    public ClassDescription defaultCaption()

    {

        return "Location Records";

    }


}


Comments

Popular posts from this blog

How to Create a wizard in x++ d365

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

x++ code to submit and approve and reject the invent movement workflow in d365 F&O