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