Bojensen Blogs

Adding an Address to an Existing Customer via the Customer Service in AX 2012

 

It isn’t obvious but to add an address to an existing customer via a service call in AX 2012, call the update operation on the Customer service. 

The code below demonstrates how to change a field on the customer record and add a new address to the customer using a console application:

static void Main(string[] args) { string customer =123456?; AxdCustomer foundCustomer = null; CallContext context = new CallContext(); context.Company = “xyz”; CustomerServiceClient proxy = new CustomerServiceClient(); try { foundCustomer = proxy.read(context, Program.readCritera(customer)); AxdEntity_DirParty_DirPartyTable returnedPartyTable = foundCustomer.CustTable[0].DirParty[0]; Program.addAddressToExistingCustomer(foundCustomer); } catch (Exception e) { Console.WriteLine(e.Message); } }

 

private static void addAddressToExistingCustomer(AxdCustomer customer) { CustomerServiceClient proxy = new CustomerServiceClient(); CallContext context = new CallContext(); context.Company = “xyz”; AxdEntity_CustTable custTable = customer.CustTable[0]; AxdCustomer axdCustomer2 = new AxdCustomer(); axdCustomer2.ValidTimeStateType = customer.ValidTimeStateType; axdCustomer2.ValidTimeStateTypeSpecified = true; axdCustomer2.ValidAsOfDateTime = customer.ValidAsOfDateTime; axdCustomer2.ValidFromDateTime = customer.ValidFromDateTime; axdCustomer2.ValidToDateTime = customer.ValidToDateTime; AxdEntity_CustTable custTableNew = new AxdEntity_CustTable(); custTableNew._DocumentHash = custTable._DocumentHash; custTableNew.RecId = custTable.RecId; custTableNew.RecVersion = custTable.RecVersion; custTableNew.action = AxdEnum_AxdEntityAction.update; custTableNew.actionSpecified = true; custTableNew.CreditMax = custTable.CreditMax + 10; custTableNew.CreditMaxSpecified = true; custTableNew.CustGroup = custTable.CustGroup; //Update the postal addresses AxdEntity_DirParty_DirOrganization dirPartyTable = (AxdEntity_DirParty_DirOrganization)custTable.DirParty[0]; AxdEntity_DirParty_DirOrganization organizationNew = new AxdEntity_DirParty_DirOrganization(); organizationNew.RecId = dirPartyTable.RecId; organizationNew.RecIdSpecified = true; organizationNew.RecVersion = dirPartyTable.RecVersion; organizationNew.RecVersionSpecified = true; organizationNew.action = AxdEnum_AxdEntityAction.update; organizationNew.actionSpecified = true; AxdEntity_DirPartyPostalAddressView newAddress = new AxdEntity_DirPartyPostalAddressView(); newAddress.LocationName = “New Location Name”; newAddress.Street =9999 NE 5th St”; newAddress.City = “Beverly Hills”; newAddress.State = “CA”; newAddress.CountryRegionId = “USA”; newAddress.ZipCode =90210?; newAddress.Roles = “Delivery”; newAddress.action = AxdEnum_AxdEntityAction.create; newAddress.actionSpecified = true; organizationNew.DirPartyPostalAddressView = new AxdEntity_DirPartyPostalAddressView[1] { newAddress }; custTableNew.DirParty = new AxdEntity_DirParty_DirPartyTable[1] { organizationNew }; axdCustomer2.CustTable = new AxdEntity_CustTable[1] { custTableNew }; try { proxy.update(context, Program.readCritera(“123456?), axdCustomer2); Console.Write(“Worked”); Console.ReadLine(); } catch (Exception e) { Console.WriteLine(“Failed”); Console.ReadLine(); } }

 

private static EntityKey[] readCritera(string customerAccount) { AxdEntity_CustTable custTable = new AxdEntity_CustTable(); EntityKey[] entityKeyList = new EntityKey[1]; EntityKey key = new EntityKey(); KeyField[] keyFields = new KeyField[1]; KeyField keyField = new KeyField(); keyField.Field = “AccountNum”; keyField.Value = customerAccount; keyFields[0] = keyField; key.KeyData = keyFields; entityKeyList[0] = key; return entityKeyList; }

 

Adding an Address to an Existing Customer via the Customer Service in AX 2012 | Stoneridge Software Inc

Comments are closed.