x++ code to create Service class and helper in x++ through postman

 step1 : Create a Contract class


code: 


[DataContractAttribute("BAS_SalesOrderContract")]

class BAS_SalesOrderContract

{

// these are the two parameters we will pass in the request body of the postman

    str             salesStatus;  

    str             dataAreaId;


    [DataMemberAttribute("salesStatus")]

    public str parmSalesStatus(str _salesStatus = salesStatus)

    {

        salesStatus = _salesStatus;

        return salesStatus;

    }


    [DataMemberAttribute("dataAreaId")]

    public str parmdataAreaId(str _dataAreaId = dataAreaId)

    {

        dataAreaId = _dataAreaId;

        return dataAreaId;

    }


}



Step2: Create a Response Contract class


// In this class we will write what is the response we want from the postman for the requested fields in the contract class


code : 


[DataContractAttribute("BAS_SalesOrderContractResponse")]

class BAS_SalesOrderContractResponse

{

    SalesId                     salesId;

    SalesName                   custName;

    str                         salesStatus;


    [DataMember('SalesId')]

    public SalesId parmSalesId(SalesId _salesId = salesId)

    {

        salesId = _salesId;

        return salesId;

    }


    [DataMember('SalesName')]

    public SalesName parmcustName(SalesName _custName = custName)

    {

        custName = _custName;

        return custName;

    }


    [DataMember('salesStatus')]

    public str parmsalesStatus(str _salesStatus = salesStatus)

    {

        salesStatus = _salesStatus;

        return salesStatus;

    }


    private static BAS_SalesOrderContractResponse construct()

    {

        return new BAS_SalesOrderContractResponse();

    }


    public static BAS_SalesOrderContractResponse newFromTableRecord(SalesTable   _salesTable)

    {

        BAS_SalesOrderContractResponse  contract = BAS_SalesOrderContractResponse::construct();


        contract.parmSalesId(_salesTable.SalesId);

        contract.parmCustName(_salesTable.SalesName);

        contract.parmSalesStatus(enum2Str(_salesTable.SalesStatus));

        return contract;

    }

 

}



Step3 : Create a helper class with helper method


Helper class is used to write the business logic


 [AifCollectionTypeAttribute('return', Types::Class, classStr(BAS_SalesOrderContractResponse))]

    public List getallsalesordersbystatus(str _salesstatus , str _dataAreaId)

    {

        str salesStatus      = _salesstatus;

        str dataAreaId   = _dataAreaId;

        

        List            salesOrderList  = new List(Types::Class);



    


        changecompany(dataAreaId)

        {

            SalesTable salesOrderTable;

            while select * From salesOrderTable where salesOrderTable.SalesStatus==str2Enum(salesOrderTable.SalesStatus,salesStatus)

            {

                BAS_SalesOrderContractResponse salesOrderData = new BAS_SalesOrderContractResponse();

                salesOrderData = BAS_SalesOrderContractResponse::newFromTableRecord(salesOrderTable);

                salesOrderList.addEnd(salesOrderData);

            }

            return salesOrderList;

        }

    }



 
step4:  create a service class that extends with sysoperationservicebase with service method 


//method to get the sales orders for the data contract

    [AifCollectionTypeAttribute('return', Types::Class, classStr(BAS_SalesOrderContractResponse))]  // name of the response contract class

// service method

    public List getallsalesorders(BAS_SalesOrderContract _contract) // name of the contract class
    {

        BASMSSalesOrderReadHelperClass salesOrderData = new BASMSSalesOrderReadHelperClass();
     
        str             salesStatus = _contract.parmSalesStatus();
        
        str             dataAreaId  = _contract.parmDataAreaId();
        
        List            salesOrderList = new List(Types::Class);
     
        salesOrderList = salesOrderData.getallsalesordersbystatus(salesStatus,dataAreaId);

        return salesOrderList;
     
    }



Comments

Popular posts from this blog

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

How to Create a wizard in x++ d365

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