How will this affect customer relationships and the competitive situation of our company? what is the best strategy for preventing this condition?
If I understand you correctly, you're saying a customer agreed to pay you for services (product and/or support), either through posted prices and a shrink-wrapped license or through a written contract, and then you provided those services, and then they didn't pay?
And you're asking whether it's "OK" that they didn't pay?
Of course it's not OK! Is there any business who could operate in that fashion?
The way it affects the customer relationship is you don't have a customer relationship. You have a situation where they are taking advantage of you. A relationship goes in two directions.
I agree with Jason. Of course, it's not OK. You provided a service/support and deserve to pay. Only in the situation when an organization, regardless of industry, doesn't deliver on their promises would this be a question.
The best strategy is to agree on a (free) post production support period prior starting the contract with client. Our company, for example, is providing a free one week post production support after deploying the software product in the market! For future services/support including bug fixing and enhancements you can continue with hourly based cost model!
We can schedule a call for specific cases for your convenience and would be glad to give a feedback/suggestion!