One of the most useful collection of methods available to users of the API is IBBUtilityCode. This is an interface which means that it cannot be created by itself but is implemented by another class. That other class is REServices which itself contains many useful functions.
Continue reading The Bag of Tricks that is IBBUtilityCode
If you are using VB6 then you are possibly somewhat limited as to the way you can document your code and then have it published automatically. (I say that from complete ignorance and somebody is very welcome to show me otherwise). However in VB.NET and C# there is the built in XML documentation. In both languages you simply place the cursor the line above the field, property, method or class that you wish to document. In VB.NET you type: Continue reading Documenting VB.NET and C# Code
Strong words and the last thing I want to do is to upset too many people. I really do love Blackbaud applications and some of the people that I come across in that company are really talented and inspiring. However Blackbaud Hosting has to be the antithesis of that. Continue reading I love Blackbaud. I dislike Blackbaud hosting
I have always found attributes to be odd to work with in The Raiser’s Edge API. For some reason Blackbaud treat them somewhat differently than other child objects on a record. I have already spoken about that a few years ago but I wanted to elaborate on a couple of issues.
Continue reading Working some more with attributes
If you recognise the title of this post then I was inspired by a BlackbaudKnowHow article of a similar name. In that article the author describes the differences between the three terms and how they relate to Blackbaud Enterprise CRM. This is a good overview and works well for Blackbaud Enterprise CRM. However it breaks down when talking about The Raiser’s Edge 7.
Continue reading Customizations, SDKs and API’s, Oh RE
I have been working with different bank checking software. Blackbaud Europe have written a plug-in for The Raiser’s Edge to update the bank record data such as the name and branch of the bank as well as the address based on the sort code. We recently developed a plug-in that processed the direct debit returns and unpaids from BACS and update the recurring gifts accordingly. In some cases a new bank would need to be created. I was asked to integrate the plug-in with their Blackbaud written plug-in.
Continue reading Bank Checking Software Compared
Valid date to cannot be less than Valid date from
I got this error message the other day when developing with the membership module. In my opinion the membership module is the most complicated module to develop code for. Possibly because of this (and the fact that it is an optional module) there appears to be the least documentation about it. When I searched the knowledgebase for this error I did get a hit. It referred to NetSolutions. It suggested that the membership record did not have an expiry date.
This was not the case in my data. I had an activity date and an expiry date as required.
I worked out what the problem was. The issues happened when adding a membership card. I share this code between new memberships and a case where you may want to add a new membership card to an existing transaction. For a new membership card I was setting the card date as the same as the transaction date. The expiry date, by default was being set to the same as the membership’s expiry date. This worked fine for new memberships.
When I went to add a membership card to, say, a lapsed membership, (why this would happen in reality is uncertain but it was happening in my case), the start date was set to the transaction date i.e. today but the expiry date was in the past so the card’s expiry date was also in the past.
I checked for this scenario and set the membership card’s start date to one day before the expiry date if the expiry date was not after the start date.
A few days ago I put a question on both Blackbus and the official Blackbaud forums asking if anybody had written a plug-in in C#. I have written a number of customisations in C# (VB.NET is my most common programming language – although I do enjoy using C#) but I had never written a plug-in before. It has always been a web service of application of some kind. I managed to work out how to do it and thought that I would share my solution here. Continue reading A Raiser’s Edge C# Plugin
I am currently working on a project where I need to copy a gift record from one constituent to another. There are 213 fields on the regular gift object i.e. CGift. That is without looking at any of the other areas of the gift such as attributes, notepads, etc. It would take a lot of typeing to copy between each field so to do this I use the meta data that is supplied with each object. Continue reading Using meta data to copy records
I have been working on a new product which will hopefully be released soon. In this new product the user needs to be able to look up a constituent in as few key strokes as possible. The approach that I took was to use the same functionality as the Quick Find mechanism that you see on the records page in The Raiser’s Edge. This is dependant on your user settings so that you can either put in a constituent id, the first name followed by the surname or the surname comma the first name. While I was testing it on the sample database it worked perfectly. However when I tested it on a client’s very large database there were issues. Continue reading The Problem with Quick Find