The vast majority of transactional documents which come packaged with KFS are "Accounting Documents": documents that, in some way, create accounting lines as an essential part of the document. (the Labor Expense Transfer documents, Labor Journal Voucher document, and several Purchasing/Accounts Payable documents also include accounting lines, and they build on the Accounting Document framework as well. This document will concentrate, though, upon Financial Documents as the easiest starting off point.) Given this, it makes sense that KFS provides a lot of functionality for dealing with documents with accounting lines. Implementing new financial documents is made much easier by having a full idea of what functionality exists for us to build upon.
...
- overrideFields: As seen above, these fields allow the value in the field to override the fact that, for some reason or another, it normally wouldn't be used.
- hidden: true or false, this forces the field to be rendered as a hidden value
- dynamicLabelProperty: the maintenance field definition includes two properties, webUILeaveFieldFunction and webUILeaveFieldCallbackFunction, which allow labels to be added through AJAX - ie, once a user enters the account number, the name of the account shows up. That's also available for AccountingLineView-field but one of two extra properties must be added: either dynamicLabelProperty or dynamicNameLabelGeneratorBeanName. The dynamicLabelProperty property works withe webUILeaveFieldFunction and allows the setting of what field should be displayed as the dynamic label (account.name, for instance, is the label for accountNumber).
- dynamicNameLabelGeneratorBeanName: some AJAX functions - notably Object Code's - cannot be called through simple webUILeaveFieldFunctions with dynamicLabelProperty properties set. For this instance, one simply specifies the name of an implementation of org.kuali.kfs.sys.document.service.DynamicNameLabelGenerator exposed through Spring. This interface provides all the methods needed so the accounting line renderer can construct the AJAX call properly; webUILeaveFieldFunction, webUILeaveFieldFunctionCallback, and dynamicLabelProperty are no longer needed.
...