Quantcast
Channel: Axapta V/s Me
Viewing all articles
Browse latest Browse all 341

Create delivery address run time [Dynamics 365 FO]

$
0
0
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.

Viewing all articles
Browse latest Browse all 341

Trending Articles