I'm having the same problem but don't have an earlier version to fall back to. However, you posting which files you changed helped me find the problem.
Looking through the code in com_virtuemart.php, there is a section where it looks up the product info from the database. The logic always assumes that the table '#__virtuemart_products_en_gb' exists. In my case, I'm using the language en_US, and the table I mentioned does NOT exist in the database.
if ($table == '#__virtuemart_products_en_gb') {
// This is EN
$query = "SELECT `p`.`product_sku`, `l`.`product_name`, `l`.`slug`, `l`.`{$descrow}`";
$query .= " FROM `#__virtuemart_products` AS `p`";
$query .= " INNER JOIN `{$table}` AS `l` ON `p`.`virtuemart_product_id` = `l`.`virtuemart_product_id`";
$query .= " WHERE `p`.`virtuemart_product_id` = '{$productId}'";
}
else {
// Join also EN table for fallback
$query = "SELECT `p`.`product_sku`, COALESCE(`l`.`product_name`, `le`.`product_name`) AS `product_name`,";
$query .= " COALESCE(`l`.`slug`, `le`.`slug`) AS `slug`, COALESCE(`l`.`{$descrow}`, `le`.`{$descrow}`) AS `{$descrow}`";
$query .= " FROM `#__virtuemart_products` AS `p`";
$query .= " LEFT JOIN `#__virtuemart_products_en_gb` AS `le` ON `p`.`virtuemart_product_id` = `le`.`virtuemart_product_id`";
$query .= " LEFT JOIN `{$table}` AS `l` ON `p`.`virtuemart_product_id` = `l`.`virtuemart_product_id`";
$query .= " WHERE `p`.`virtuemart_product_id` = '{$productId}'";
}
This is the logic in the code. My language is not en_US, so it's going to skip the first block and fall to the 'else' block which tries to run a query that joins with the non-existent '#__virtuemart_products_en_gb' table. The query fails and so never returns any information and therefore the error log message that it cannot find the Product ID.
I changed the first line above to read:
if ($table == '#__virtuemart_products_en_gb' || $table == '#__virtuemart_products_en_us') {
This makes it work for me, but it is not the proper solution.
I'm posting my finding here to help others with the same problem, and so ArtIO can put a fix in the next release.