I worked in a Sear Hardware one summer during college. There was a loudmouthed old man that started coming in maybe once a week to buy one or 2 small things, and would make a scene over prices each time with whichever cashier he got. I don't recall if people gave him a discount or if he just liked the attention or what. Then he made the mistake of seeing me at customer service one day.
He started going off about he could go down the street to Lowes or whatever and get his drill bit set for $3 cheaper or whatever it was. In a polite and professional but firm way I told him: I see you come in here and every time you harass the cashiers and make a scene to where I have other customers apologizing for you. If you take your money to Lowes, me, my staff, and every other one of my customers will be better off and you can save your $3 so we all win.
I don't remember if he bought anything that day or not. What I do remember is that I did see him back repeatedly after that. He would greet me each time, as you entered past the service desk, and he'd usually come to me to check out and be very friendly and cordial. Never a grumpy peep out of him for the rest of the summer I worked there.
Not sure what changed his mood exactly, if it was just I was the only guy working up front, or if it was just someone finally telling him to cut the crap, but I hope that positive change carried over to other places he patronized. Seemed a legitimately decent guy afterwards. I'm sure this is not the usual way this would have played out, but for the whole $6.50/hr I was making, I wasn't much concerned, and I did handle him calmly and other customers told me they loved how I handled him professionally but sternly.