This week I am going to talk about how to find the primary contact person and their phone number for a specific warehouse. This information in Dynamics AX is defined in Warehouse management >> Setup >> Warehouse setup >> Warehouses. You locate the warehouse in question and go to the Address fast tab. I had to click the Edit button as the demo data does not have this defined for the address I was wanting. On the New address form, you can enter in the contact information in the Contact information fast tab.
Once this is done, the following job will find the contact information for the warehouse tied to a specific shipment.
static void testContactLogic(Args _args)
WHSShipmentTable shipmentTable = WHSShipmentTable::find('USMF-000002');
inventLocation = inventLocation::find(ShipmentTable.InventLocationId);
select firstonly postalAddressView
where postalAddressView.Entity == inventLocation.RecId
&& postalAddressView.EntityType == LogisticsLocationEntityType::Warehouse
&& postalAddressView.isPrimary == NoYes::Yes;
select firstOnly electronicAddress where electronicAddress.Type == LogisticsElectronicAddressMethodType::Phone
join contactLocation where contactLocation.ParentLocation == postalAddressView.Location
&& contactLocation.RecId == electronicAddress.Location;
info(strFmt("Primary contact name: %1 Primary contact phone: %2",electronicAddress.Description, electronicAddress.Locator));
Please note this code could be optimized with more joins. I intentionally created the job above in this manner to more clearly demonstrate the relations needed, AND make it easier to step through via the debugger if so desired.
Oh, of course, I should show the output of this job as well:
The above code could easily the modified for email, all contacts, etc. This just demonstrates retrieving specific desired information for a specific warehouse based on shipment information.