//This method tries to get the primary address (Ex: customer address).
//If not found, tries get the address based on the address Type (Ex: delivery address),
//else tries to find the first available address.
Private Address address(DirPartyId _partyId, AddressType _addressType)
{
Address address;
DirPartyTable dirPartyTable;
DirParty party;
;
while select address
join dirPartyTable
where dirPartyTable.RecId == address.AddrRecId
&& dirPartyTable.TableId == address.AddrTableId
&& dirPartyTable.PartyId == _partyId
{
party = DirParty::constructFromCommon(dirPartyTable);
party.initializeAddressInfo(DateTimeUtil::getSystemDateTime());
if (party)
{
if (party.getDirPartyAddress().getAddressRecId()==address.RecId)
return address;
}
}
if (!address)
{
select firstonly address where address.type == _addressType
join recId from dirPartyTable
where dirPartyTable.RecId == address.AddrRecId
&& dirPartyTable.TableId == address.AddrTableId
&& dirPartyTable.PartyId == _partyId;
}
if (!address)
select firstonly address
join recId from dirPartyTable
where dirPartyTable.RecId == address.AddrRecId
&& dirPartyTable.TableId == address.AddrTableId
&& dirPartyTable.PartyId == _partyId;
return address;
}