Calling the Update Operation on the SalesOrderService

The code is an example of how to call the update method on  sales order in AX 2012 using the SalesOrderService.

 

static void Main(string[] args)

        {

            //First find the order

            AxdSalesOrder salesOrder = Program.FindOrder();

            //Now update it

            Program.UpdateOrder(salesOrder);

        }

 

        static AxdSalesOrder FindOrder()

        {

            CallContext context = new CallContext();
            context.Company = “ceu”;

 

            string salesId = “SO-101244”;

            AxdSalesOrder foundSalesOrder = null;

 

            //Instantiate an instance of the service client class

            SalesOrderServiceClient proxy = new SalesOrderServiceClient();

            try

            {

               
                 foundSalesOrder = proxy.find(context, Program.createQueryCriteria(salesId));

               
                 Console.WriteLine(“The sales order was found.”);

            }

            catch (Exception e)

            {

               
                  Console.WriteLine(“The sales order was not found.”);

            }

 

            return foundSalesOrder;

        }

 

        private static QueryCriteria createQueryCriteria(string salesIdValue)

        {

            CriteriaElement[] criteriaElements = new CriteriaElement[1];

           
criteriaElements[0] = new CriteriaElement();

           
criteriaElements[0].DataSourceName = “SalesTable”;

           
criteriaElements[0].FieldName = “SalesId”;

           
criteriaElements[0].Value1 = salesIdValue;

            QueryCriteria queryCriteria = new QueryCriteria();

           
queryCriteria.CriteriaElement = criteriaElements;

            return queryCriteria;

        }

 

        static void UpdateOrder(AxdSalesOrder salesOrder)

        {

            CallContext context = new CallContext();

           
context.Company = “ceu”;

 

            SalesOrderServiceClient proxy = new SalesOrderServiceClient();

            foreach (AxdEntity_SalesTable salesTable in salesOrder.SalesTable)

            {

               
foreach (AxdEntity_SalesLine salesLine in salesTable.SalesLine)

               
{

                        salesLine.SalesQty = salesLine.SalesQty + 1;

                        salesLine.SalesPrice = salesLine.SalesPrice + 2;

                       
salesLine.SalesPriceSpecified = true;

               
}

            }

 

            try

            {

               
proxy.update(context, Program.createEntityKeyList(), salesOrder);

               
Console.WriteLine(“The sales order was successfully updated”);

            }

            catch (Exception e)

            {

               
Console.WriteLine(“The sales order was not updated.”);

            }

        }

 

        private static EntityKey[] createEntityKeyList()

        {

            EntityKey[] entityKeyList = new EntityKey[1];

            EntityKey entityKey = new EntityKey();

            KeyField[] keyDataList = new KeyField[1];

            KeyField keyField = new KeyField();

           
keyField.Field = “SalesId”;

            keyField.Value = “SO-101244”;

           
keyDataList[0] = keyField;

           
entityKey.KeyData = keyDataList;

           
entityKeyList[0] = entityKey;

            return entityKeyList;

        }