In my endeavour of documenting the undocumented I would like to present this little nugget of an unwritten feature. I wanted to filter a constituent’s individual relationship based on a reciprocal type and on the to date not being populated i.e. the relationship was still valid. I’ll use the filter object I thought. Continue reading Filtering Individual Relationships
Tag Archives: Blackbaud
The Case of the Missing Tabs
Here is a strange problem that I encountered. I wanted to show the constituent form with constituent data. I also wanted to know if the user had saved and closed or just closed the form afterwards. If I had not been interested in knowing this information then I would have simply done the following: Continue reading The Case of the Missing Tabs
Gift Type IDs – A Reference
A while ago I wrote an article about filtering on gifts. I find myself regularly having to reference the knowledgebase link which itself links to an Access database file. Here is a snippet from that other article.
A word on the GiftTypes filter. Here you can filter on cash, pay-cash, pledge, etc. However this is not simply the text but rather an id that the type refers to. This too is not well documented. There is a link in the knowledgebase (http://www.blackbaud.com/esupport/es…r=0&id=BB17413) that gives this information or it can be derived by looking at the SQL or a query.
For example:
oFilter.GiftTypes.Add 1, "Cash" oFilter.GiftTypes.Add 2, "Pay-Cash"
I got somewhat tired of having to download that mdb file each time and some of the gift types stuck, many I forget. So here is the list (mainly for my own reference but for the benefit of anyone else who needs this list):
Gift Types ID | Description |
---|---|
1 | Cash |
2 | Pay-Cash |
3 | MG Pay-Cash |
4 | Covenant Payment |
8 | Pledge |
9 | Stock |
10 | Stock (Sold) |
11 | Pay-Stock |
12 | MG Pay-Stock |
13 | Pay-Stock (Sold) |
14 | MG Pay-Stock (Sold) |
15 | Gift In Kind |
16 | Pay-Gift In Kind |
17 | MG Pay-Gift In Kind |
18 | Other |
19 | Pay-Other |
20 | MG Pay-Other |
21 | Write Off |
22 | MG Write Off |
24 | Net Covenant |
25 | Gross Covenant |
26 | Deposited Convenant |
27 | MG Pledge |
28 | Adjustment |
29 | Covenant Write Off |
30 | Recurring Gift |
31 | Recurring Pay-Cash |
32 | GL Reversal |
33 | Amendment |
34 | Planned Gift |
Using the Batch API with Notepads or Attributes
I have started to use the Batch API in earnest now. I have said previously that it is a great long overdue piece of functionality but I am beginning to understand why it was never included earlier. As with much of the API the newly added Batch API is not well documented. A good example of how to use it was given and can be found on Blackbaud’s knowledgbase (BB418575) but it is somewhat limited. It does not explain for example how to add an attribute or a notepad to a gift batch. This was discussed on a Blackbus thread. Adding the items to the batch header was quite straight forward but adding the actual values proved more difficult. Here I try to shed some light on the process.
Continue reading Using the Batch API with Notepads or Attributes
Validating a Constituent Batch
Previously I have integrated Quick Address from QAS with The Raiser’s Edge. I implemented their pro API in order to validate the address on saving the constituent/relationship/participant and on demand using the VBA macro button. I created a plugin to update addresses en masse using their batch API. I implemented their pro API to create a “silent” validation during import. The one thing that I didn’t do at the time was to validate addresses in a constituent batch. At the time this was not a requirement.
Reflecting on the Meta world
One aspect of the API that is really well thought out is the whole Meta data structure. Back when RE7 was written, there was no reflection built into VB6. Java had it and there was some libraries that could do it but nothing was built in. Reflection (in coding terminology) is the ability to be aware of the classes and methods that are available to the code during run time.
Membership – Retrieving information
One very useful way of loading a collection of records is using the custom where clause. For example if you want to find a list of constituents who are born in a certain year you could write the following
Dim oRecords As New CRecords
oRecords.INIT SessionContext, tvf_record_CustomWhereClause, "BIRTH_DATE LIKE '1950%'"
This is the only really effective way of doing this without returning a list of all constituents filtering them in the code (much less efficient).
Adjust that tax claim at your peril
This is perhaps more of a rant than anything else but after being so pleased with the way Blackbaud introduced Batch into the RE:API I now found myself stuck with another piece of Raiser’s Edge functionality that I am less than pleased with.In the UK Gift Aid is big business. In the States (and possibly elsewhere) the donor can claim tax back from charitable donations. In the
Continue reading Adjust that tax claim at your peril
Filtering and Sorting Participants – Just not Together
This is being written in response to two hours of trying to get some code to work only to conclude that there was a bug in the API. I am not overly convinced it will be documented any time soon so let it be documented here!
I wanted to create a collection of participant registrations for a particular constituent. I also wanted to only really look at the most recent three registrations so I needed to both filter and sort. Sounds quite simple really until of course it did not work.
Continue reading Filtering and Sorting Participants – Just not Together
Top Plugins in November
Here are the most popular plugins for the month of November from the plugin directory. This is based on the click through for more information link.
- Audit Trail
- Action Reminder Updater
- Convio DataSync Connector RE
- Blackbaud NetCommunity Integration
- Constituent Document Linker
- Bank Checker Solution
- Create Preferred Address
- Alternate Address Deleter
- AFP
- Custom Reports
Cannot find the plugin that you are looking for? Get in contact with us and find out how we can make your Raiser’s Edge processes more efficient and make savings in both time and money.