web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / Dynamics 365 Vs Me / Create delivery address run...

Create delivery address run time [Dynamics 365 FO]

Deepak Agarwal Profile Picture Deepak Agarwal 8,624

Folk,

Here is quick code to create the delivery address on runtime. You can use this on Purchase Requisition, Purchase order or a person.
So we are going to use LogisticsPostalAddressEntity to get the right address with a new one or an existing one. This code should also handle if there is any update in any existing record by updating effective date stamp.

Have a look on below code,

Public static LogisticsPostalAddressRecId createAddress(tmpNewAddress  _tmpNewAddress)
     {
         LogisticsPostalAddress          deliveryAddress;
         LogisticsPostalAddressEntity    postalAddressEntity;
         LogisticsPostalAddressView      addressView;
         DirPartyPostalAddressView       partyAddressView;

       // get location from current user setup
        LogisticsLocation           logisticsLocation = LogisticsLocation::find(HcmWorkerTitle::findByWorker(curUserId()).Location);
    
        //Address type default to delivery
         LogisticsLocationRole       logisticsLocationRole = LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Delivery);
         CompanyInfo                 companyInfo = CompanyInfo::findRecId(‘USMF’); //you may need to get if from current logged in user.

       //if current user doesn't have setup for location try to get it from LogisticsLocationDefault class
        if (!logisticsLocation)
         {
             HcmWorker hcmWorker = HcmWorker::find(HcmWorker::userId2Worker(curUserId()));
             logisticsLocation = LogisticsLocationDefault::findSimpleDefault(hcmWorker, logisticsLocationRole);
         }

       //if location is still empty get it from companyInfo
        if (!logisticsLocation)
         {
             logisticsLocation = LogisticsLocationDefault::findSimpleDefault(companyInfo, logisticsLocationRole);
         }

       //Below code to set buffer with the new address values
        deliveryAddress.clear();
         deliveryAddress.initValue();
         deliveryAddress.CountryRegionId = SysUserInfo::find().DefaultCountryRegion;
         deliveryAddress.Street = _tmpNewAddress.streetAddress;
//add other fields in same way
        partyAddressView.initFromPostalAddress(deliveryAddress);
         partyAddressView.LocationName = logisticsLocation.Description;
         
         postalAddressEntity = LogisticsPostalAddressEntity::construct();
         addressView.initFromPartyPostalAddressView(partyAddressView);
         deliveryAddress = postalAddressEntity.createPostalAddress(addressView);
        return deliveryAddress.RecId; //return the LogisticsPostalAddress table recId which directly can flow in respective table. 
     }



Give a try and share your feedback.

Cheers!!!
Harry.


This was originally posted here.

Comments

*This post is locked for comments