Earlier quoted context omitted.
Why the general incompetency added on? Ad the other commenter wrote: The 25% is assumed - this has nothing to do with competence but to what level an assumption is true. Everybody can point fingers at 25 year old code and call the developers incompetent because surrounding requirements have changed.
Considering that's 25 year old code I'd expect at least a #define VAT 0.25 and not hardcoded values all around the source code. However I don't expect a table (db table, array, etc) of product categories with their own VAT code or a user defined exception list. That extra code would inevitably add bugs that are not worth the trouble. Adding an exception for books probably requires an update of the apps.
The code missing is that for per-product type variation in VAT rate, which sounds complicated enough that Iawould expect a good engineer to shrug and say YAGNI until it's actually necessary.