It turns out that the manual installation instructions that came in the zip for this contribution were wrong, and it was this that was creating the error.
Check out the instructions for manually editing \catalog\includes\classes\shopping_cart.php
Find (around line 110 [around line 119 in edited file]):
if ($this->in_cart($products_id_string)) { $this->update_quantity($products_id_string, $qty, $attributes); } else { $this->contents[$products_id_string] = array('qty' => (int)$qty);
Replace with:
// BOF qpbpp if ($this->in_cart($products_id_string)) { $this->update_quantity($products_id_string, $qty, $attributes, $product_info['discount_categories_id']); } else { $this->contents[$products_id_string] = array('qty' => (int)$qty, 'discount_categories_id' => $product_info['discount_categories_id']); // EOF qpbpp
I decided to take a look at the \catalog\includes\classes\shopping_cart.php that came with the zip, and noticed that this file was different in respect to this code replacement. This is the way it should be:
// BOF qpbpp
if ($this->in_cart($products_id_string)) {
$this->update_quantity($products_id_string, $qty, $attributes, $discount_category);
} else {
$this->contents[$products_id_string] = array('qty' => (int)$qty, 'discount_categories_id' => $discount_category);
// EOF qpbpp
Once I made this switch, everything works perfectly.