This would be too restrictive, and cause problem sooner or later for many users, however, IF some client requests such functionality it can be easily coded, as Matt already said.
In my practice there have been many cases, when user requests to implement some strict & non-overridable rule --not only this one under question, different ones-- and then asks to how to remove it just for this one particular case…. Common cause - this exception happens once or twice a year, we didn’t mean it to be absolutely forbidden, just want to have full control over that one rare case when we still need it. Problems start, if the system is not so easy customizable as Navision - if it is hard-coded rule, it takes time to redesign - that for I always try to avoid highly restrictive business rules whenever possible and explain to customer the consequences which may arise.
Returning to main subject - Periods. Those are needed in paralel with date, because there are at least 2 “fictitious” periods, which can’t be squeezed into a date-type value, and they are:
FY_CLOSE - here goes not only Income statement closing transactions, but many more - e.g. FA & Inventory revaluations to current market values, write-offs of hopeless customer debts, etc etc. Navision’s “C-dates” solves only the first type…
AUDIT - everything that is changed on the request of auditors AFTER unaudited balance sheet is prepared. In many countries legal regulations demand easy reproduction of both balances - “raw” and audited. Navision does not meet this requirement at all.
A modification to include Periods and their correct handling throughout the system is possible, but is a HUGE, read expensive, redesign. Moreover, later upgrade of such mod to next Navision version will be much more complicated job, as with any highly modificated system, and here core functionality is modified, not just added some new functionality.
BTW - do you know, how “C-dates” are stored in SQL base? Normal have time part 00:00:000, C-dates - 23:59:999 [:)]
And “empty” dates actually contain 1753-01-01, as ALL fields in ALL tables have NOT NULL constraint…