Hi Mike,
It only took me about an hour or so to put it together it was a glorified exercise in cut and paste as I would say I had over 90% of the code already, it was one of the "perfect storm" moments, for instance the look ups for the reports and stored procedures just involved cut and paste and changing the names of the system setting fields in the if statements.
The calling of your reporting service again was a cut and paste of production code from an extension of the rest api that I sent you a copy of to test the work on caching against that you were doing at the end of last year. It's used by a customer's web store to get the statement and invoice. It's also mentioned on the forums before see
viewtopic.php?f=32&t=993 although the using clause is necessary to stop any memory leak.
The testing of the api key for the debtor is in an export to file plugin that is at present being tested for production.
The only new bit is getting the Invoice History ID from the Invoice Number, History Number and Debtor ID and that pretty well fell out of your ORM Lite statement in the custom route plugin.
The ORM Lite stuff is thanks to the T4 templates and the response classes based upon a script that will turn a table into a c# class, so I just made the temporary tables real tables in the database for a couple of minutes to get that.
If I'd had to do it from scratch it wouldn't exist I'm happy to be generous but not that generous as I'd say from scratch you'd probably be looking at about six hours work
I also probably wouldn't of done it for a one off issue but I figure there is probably multiple sites that could use it.