Populate from Contact formula
This formula is called from the button in Call Center. It searches for all addresses related to the contact.
Dim theRes As Result
dim oAddress as IAddress=ServerApplication.NewComponent ("Hansen.Property.Address",oContact.UserInfo)
'Where clause
Dim oWhere As New DBOperativeCollection
Dim myAddresses As New ArrayList
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.Contact",
ComparisonOperator.Equal, oContact.ContactKey))
'Create link collection
dim oLinks as IAddressContactLinkCollection=ServerApplication.NewComponent
("Hansen.Property.AddressContactLinkCollection",oContact.UserInfo)
'Where clause for tenants ------------------------------------
oWhere = New DBOperativeCollection
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.Contact",
ComparisonOperator.Equal, oContact.ContactKey))
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.IsOwner",
ComparisonOperator.Equal, "N"))
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.IsOccupant",
ComparisonOperator.Equal, "Y"))
'Load tenant links
theRes = CType(oLinks, IComponent).Load(oWhere)
if
oLinks.Count<1
then
'Where clause for owners ------------------------------------
oWhere = New DBOperativeCollection
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.Contact",
ComparisonOperator.Equal, oContact.ContactKey))
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.IsOwner",
ComparisonOperator.Equal, "Y"))
'Load owner links
theRes = CType(oLinks, IComponent).Load(oWhere)
end if
if
oLinks.Count<1
then
'Where clause for everyone ------------------------------------
oWhere = New DBOperativeCollection
oWhere.Add(New IDOperativeByCommonID("Property", "AddressContactLink.Contact",
ComparisonOperator.Equal, oContact.ContactKey))
'Load everyone links
theRes = CType(oLinks, IComponent).Load(oWhere)
end if
'Add all the returned addresses to return arraylist
dim oLink as IAddressContactLink
for each oLink in oLinks
myAddresses.Add(oLink.Address)
next
Dim data As New DataSet
Dim dt As DataTable = data.Tables.Add()
dt.Columns.Add("AddressKey", System.Type.GetType("System.Int32"))
dt.Columns.Add("StreetNumber", System.Type.GetType("System.String"))
dt.Columns.Add("StreetName", System.Type.GetType("System.String"))
dt.Columns.Add("Suffix", System.Type.GetType("System.String"))
dt.Columns.Add("City", System.Type.GetType("System.String"))
dt.Columns.Add("State", System.Type.GetType("System.String"))
dt.Columns.Add("ZIP", System.Type.GetType("System.String"))
Dim i As Integer
Dim oAddress As IAddress
for i=0 To myAddresses.Count-1
oAddress = CType(myAddresses(i), IAddress)
Dim dr As DataRow = dt.NewRow()
dr("AddressKey") = oAddress.GetProperty("AddressKey")
dr("StreetNumber") = oAddress.GetProperty("StreetNumber")
dr("StreetName") = oAddress.GetProperty("StreetName")
dr("Suffix") = oAddress.GetProperty("Suffix")
dr("City") = oAddress.GetProperty("City")
dr("State") = oAddress.GetProperty("State")
dr("ZIP") = oAddress.GetProperty("ZIP")
dt.Rows.Add(dr)
next
colAddresses.Add(data)
return theRes