Mike,
I think that saying the customer has ripped John off is a little harsh.
After all, John admitted to all concerned that he had caused damage to the suite (Good on you John). Though 'nicer' people might have accepted that since they intended to get the suite recovered at a later date, they would overlook the damage, since they were paying to have it cleaned, they were expecting a bit more use out of it first.
John was unfortunate in that this could easily happen to just about any cleaner. By keeping his cool and behaving in a reasonable manner he has recovered the situation so well that he was offered further paid work. By offering to clean the carpet free of charge, showing that he is much more than just a reasonable man, he may yet avoid the cost of repairing the arm.