I was talking to several contractors at lunch during a recent trip to Minneapolis. One of the guys said he noticed that since he tightened up the payment schedule on his contracts and started getting paid at the start of a function on a job, that he seemed to have much happier customers.
Prior to that time, he had played the game of letting his customers pay him sometime after he had completed some portion of the job. He was essentially financing their jobs. So he had changed that and noticed, almost immediately, that he was driving the wagon.
Get more payments on your jobs but make them smaller. Schedule them at the start of some function and you will quickly see a turn around in not only your customer's attitude toward you, because there isn't a question of when a payment is due, and see an improvement in your cash flow.