I agree broadly with this however in many cases that I have been dealing with I don't think that there can be a type system that would be rich enough to encode the validation laws.
For example how would you encode "This purchase request must be made before the closing date for the purchase"?