IMO if they don't like the job or pay then they must fucoff and get another job!
I tip - but only cash and only if it's earned!
most restaurants I frequent they know me now and they know not to fuc around.
take Alberto's in Durbanville - those waitresses are on the ball!! barely finished my beer and she's there waiting to take my empty and bring me another one. they are very friendly and will chat whenever they can. I don't mind tipping them R50 - R100 cause they earned it.
But some waiters / waitresses are so unfriendly / so incompetent they deserve fucall!!
case in point:
I ordered breakfast (2 x eggs & bacon etc.) at the BOSA in burgundy estates - it arrived without the eggs?!!

my waitress just slapped the plate down on the table and walked away. I tried to call her back but she disappeared inside - I had to called another waiter - he brought the eggs on a side plate and said they won't charge me for the breakfast - which was nice of them.
however my waitress got no tip.
she was unfriendly / slapped the plate down on the table and walked away. then disappeared
I had to call another waiter about the missing eggs.
a tip is earned - not a right!