XO Communications is a dreadful company, with dreadful customer service at dreadful prices. I shall avoid doing business with that awful company whenever and wherever possible.
|
|
||
|
XO Communications is a dreadful company, with dreadful customer service at dreadful prices. I shall avoid doing business with that awful company whenever and wherever possible. For our file folders at the end of the year we would run a Crystal report that would find all the vendors who were issued payments over the year. These labels would only consist of the vendor name and number (and the fiscal year, but that was handled with a text and parameter field). However, after a large upgrade our Mas90 install (to version ~4.something), the report would duplicate some vendors, and not print others at all. Digging into it I discovered that the report was set to use a table that nominally tracked AP vendor payments per period and that in the past this table kept a cumulative total for each vendor over the course of a year. In the new version though, the new periods were broken out by months, essentially making the table a dupe of the AP check history table in Mas90. Now when the report was run, a label would be printed for every check issued to a vendor, and as a filter the report left payments out that were less than $100 (which was fine for a whole year, but bad for each month!). I poked around and after consulting a couple different websites I came up with the following fix:
What the last line does is it only picks out the first date that the vendor appears. This can still lead to duplicates if the vendor was issued more than one check on that same day, but it’s much better than getting twelve labels for many of the vendors! (By the way, there might be a better way to do this as I don’t know too much about Mas90, and even less when it comes to Crystal Reports; but I was given the evil eye for mentioning that I could do this up in .Net or, even worse, with an Excel/Word mail merge where the ‘remove duplicates’ function had been used in Excel). In the past I’ve had good luck ‘stacking’ Adobe Flash Player installs on top of each other in group policy. For some reason one of the newer versions (10.3.183.7) choked, leaving something along the lines of an ’FP_AX_MSI_INSTALLER’ error in the event viewer. That error led me to this post which stated, more or less, that a computer logon batch file is the best bet (so ’90s!). I implemented the batch file and had no issues getting everyone’s Flash updated (do note though that you’ll need to do a double detect if you have 64 bit systems in your environment as the version key is at “HKLM\SOFTWARE\Wow6432Node\Macromedia\FlashPlayer” on 64 bit systems). It was at this point that I moved on to Acrobat Reader. I was a little puzzled because I downloaded the latest version (10.1.1), but after installing it, it reported that it was only ’10.1.0′. It turns out the ‘.1′ is a standalone patch that is included with the distribution. Unfortunately, as I’d found with Office 2007, group policy does not do .msp files (msi patch files). Right away I thought of my Flash Player install batch file, but Acrobat Reader (as near as I can tell) does not have a version registry key like Flash Player. I hunted for an easy way out, but finally gave up and wrote a program to return the Acrobat Reader version (based on what’s reported by the installed executable file). You can download the excutable and the batch files that I used for Adobe Flash Player and Acrobat Reader here. (Note: if the computer does not have Acrobat Reader installed, the detector should return the string “NotInstalled”. I didn’t worry much about this detection as I have the batch file in the group policy that installs Acrobat Reader.) I notice that Blackbaud now has a utility out that handles Supervisor password resets without going through the faxing rigamarole, but when I had to do this I don’t know if that would have been a big help anyway as my customer A) Needed supervisor access to Raiser’s Edge right away and B) They had fired the one employee who had both supervisor access and was the Blackbaud support user. The two things I did have though was administrator access to the Raiser’s Edge MS SQL database and the SQL Server Management Studio. My quick and dirty fix was to open the database (re7), open ‘tables’ and then find the ‘USERS’ table (dbo.USERS). I then right-clicked the table and then chose ‘open table’. There is one other thing that’s needed for this procedure at this point: a password that is known. In this case I had the one’s below: I’ll point out that I put no energy into checking out the hashing code used (i.e., can the PASSWORD field be blank? Are the passwords hashed the same on every RE install?, etc.). In this case all I did was copied the PASSWORD hash field from an account whose password was known to the Supervisor PASSWORD field. (It goes without saying that I also backed the database up first (right click the database->tasks->Back Up…)) I had originally coded this project in VB and never got it into a distributable format. For example, I had all the file paths and database connection strings hard coded. After educating myself a bit on C# I recoded the application in that language, and have the program using LINQ instead of (oof!) OLE. I also now have it coded to accept values specific to a user’s environment via an XML settings file. What the program does at this point is that it reads the call detail recording logs that are stored in a directory and commits them to an MS SQL/SQLexpress database. For my own purposes I have all the default settings set on the BCM for recording the log files, so if you’ve changed any of these settings this program may not work. As well, I have my logs FTP’d every day to a server share that I can access via UNC (i.e. \\server\logfiles). I have a little setup menu within the program so that you can create the database, set the settings, and then write the settings out to an XML file for future use. Using the XML settings file the program can be scheduled to run if the XML settings file is given to the program as a variable (ex, NortelLogParser c:\settings.xml). In the future I hope to develop a web front end for the database, but for the time being you’ll have to use Excel or some other tool to query the database for the information that you want. UPDATE: I just noticed (12/14/2011) that the field detection is still a little buggy, and a feature that I added after the fact of associating a record with the file it came out of lags by a day. The program is still better than nothing, but I do have to patch it up a bit when I get some time. |
||
|
Copyright © 2012 StevenMcNutt.com - All Rights Reserved |
||