Creating One-Time Address for the Sales order can be useful in Microsoft Dynamics AX 2012 R3 if you have to link the Postal Address only with the Sales Order and not with the customer. This Address will not be added in the Customer Address book.
F3ComAxPostalAddressDocument is the document class for postal address. First we have to map the values with LogisticsPostalAddress and create record in the table. Here is the code for that:
public RecId createOneTimeAddress(F3ComAxPostalAddressDocument f3PostalAddressDocument) { LogisticsPostalAddress logisticsPostalAddress; LogisticsPostalAddressEntity postalAddressEntity; LogisticsPostalAddressView addressView; DirPartyPostalAddressView partyAddressView; logisticsPostalAddress.Street = f3PostalAddressDocument.parmStreet(); logisticsPostalAddress.City = f3PostalAddressDocument.parmCity(); logisticsPostalAddress.ZipCode = f3PostalAddressDocument.parmZipCode(); logisticsPostalAddress.State = f3PostalAddressDocument.parmState(); logisticsPostalAddress.CountryRegionId = f3PostalAddressDocument.parmCountry(); partyAddressView.initFromPostalAddress(logisticsPostalAddress); partyAddressView.LocationName = f3PostalAddressDocument.parmName(); postalAddressEntity = LogisticsPostalAddressEntity::construct(); addressView.initFromPartyPostalAddressView(partyAddressView); logisticsPostalAddress = postalAddressEntity.createPostalAddress(addressView); return logisticsPostalAddress.RecId; }
This function will create records in the table and returns the RecId of LogisticsPostalAddress. Now you have to insert this id in the SalesTable, so it will create relation between SalesTable and LogisticsPostalAddress.
f3PostalAddressService = new F3ComAxPostalAddressService(); salesTable.DeliveryPostalAddress = f3PostalAddressService.createOneTimeAddress(f3PostalAddressDocument);
This will create the postal address for that specific sales order and this address will not be added in the address book of the customer.