Modern business solutions software provides businesses with a vast array of powerful tools. Such solutions are known to provide integrated capabilities for financial management, distribution, manufacturing, project accounting, human resource management, field service management, and business analytics. Within such solutions, one aspect often provides automated business accounting functions.
Whether provided as a module in an integrated business solutions application, or as a stand-alone system, corporate accounting is configured to support conformance with some level of standardized accounting practices. Such software supports the use of balance sheets that provide a snapshot of a business' financial condition at a specific moment in time, usually at the close of an accounting period. Most accounting software also includes revenue, expense, and/or capital withdrawal accounts in the form of temporary accounts that are reset at the end of an accounting period so that they will have zero balances at the start of the next period.
Recently, accounting software has begun to provide user-definable transaction dimensions for improved tracking and business analytics. A user-definable transaction dimension is similar to a variable that contains additional information relative to a transaction. These user-definable transaction dimensions are used to classify, report, and analyze financial transactions based upon a user's specific business needs. The number of transaction dimensions that can be defined by a user are essentially unlimited and include such dimensions as cost center, profit center, region, and hours, as well as predefined system transaction dimensions such as customer, vendor, item, and site. These user-defined transaction dimension codes are attached to ledger transactions which eliminates the need to analyze transactions on the basis of account segments.
The use of financial dimensions to essentially augment or capture relevant business information in a given ledger transaction is highly desirable. Thus, users can now enter a host of additional information relative to a given ledger transaction. However, this feature can also be a limitation if data accuracy is not addressed. For example, a user who erroneously indicates that a ledger transaction is related to a given cost center, when, in fact, the transaction is not so related, runs the risk of generating a chain of errors. First, the erroneously indicated cost center will show the transaction, while the proper cost center will not. Thus, it becomes vitally important that data accuracy is achieved and maintained. To date, enforcement of data entry for ledger transactions has been done by restricting data entry based on the ledger account with which a user is interacting. This approach suffers from a number of drawbacks, which will become apparent after reading the specification below.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A computer-implemented accounting system supports generation of a dimension validation rule that incorporates a wildcard. The wildcard provides means for limiting application of the dimension validation rule.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with various embodiments include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, telephony systems, distributed computing environments that include any of the above systems or devices, and the like.
Embodiments may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Some embodiments are designed to be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules are located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 110 through input devices such as a keyboard 162, a microphone 163, and a pointing device 161, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
The computer 110 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110. The logical connections depicted in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
System 200 also includes a plurality of sub-ledgers 204 that track specific items such as cash, accounts receivable, accounts payable, payroll, inventory and the like. All entries posted to sub-ledgers 204 will transact through general ledger 201. For example, when a customer pays off a bill with cash, the transaction will be posted to the general ledger and the two appropriate sub-ledgers 204 (i.e., cash and accounts receivable).
Balance sheet 206 and income statement (sometime referred to as a “profit and loss” statement) 208 are financial documents that are drawn directly from general ledger 201. More specifically, general ledger 201 will contain the balances that make up line items on reports 206 and 208.
Balance sheet 206 is typically configured to provide an overview of financial condition at a given point in time such as at the close of an accounting period. The overview generally includes at least assets (anything the business owns) and liabilities (claims of creditors against assets of the business). In contrast, income statement 208 provides a profit/loss summary during a predetermined period of time, such as a month, quarter or one-year. The summary will generally include revenues and operating expenses for the business during the relevant time period.
It is common for system 200 to be implemented in the specific context of a software application. It should be noted that, for the purpose of illustrating basic components, system 200 is very simply presented. When actually applied in the context of real-world businesses, the structure of such a system can become quite complex, particularly when applied in the context of a large company having a sophisticated enterprise-oriented organization scheme.
Generally accounting software helps a business to conform to standardized accounting practices. Most applications include reporting functionality in the form of support for balance sheets and/or income statements. In addition, most applications also include revenue, expense, and/or capital withdrawal accounts in the form of temporary accounts that are reset at the end of an accounting period so that they will have zero balances at the start of the next period (commonly one year). Closing entries are the journal entries used to transfer balances of temporary accounts to permanent accounts. After the closing entries have been made, the temporary account balances will be reflected in a more permanent account such as a retained earnings account. A retained earnings account 210 is indicated in
GUI 500 is configured to help a user generate and/or modify dimension set rules. GUI 500 includes dimension set drop-down 502 which, when activated, displays a list of available dimension sets. In the example illustrated in
Thus, it is conceivable that a system could be configured to enable documentation of business activity through entry of any dimension combinations and values. Under the circumstances, for several reasons, such as user error, there is much potential for entry of improper dimension data. Dimension validation rules, such as those described herein, provide a means to specify certain dimension combinations and/or values as valid or invalid. The entry of dimension information can then be policed accordingly in order to lessen or eliminate the possibility that invalid dimension data will be entered. In one embodiment, a user is provided with access to a limited listing of valid dimension data from which to choose or select. In another embodiment, dimension validation rules can be implemented on an account-specific basis (e.g., for a given account or accounts, certain dimensions or dimension values are defined as valid or invalid).
Thus, as has been described, it is beneficial to enable a user to define the rules or restrictions upon which the determination of validity or invalidity is based. In one embodiment, a system is configured to default to a setting in which all dimension code combinations and values are considered valid, thus eliminating the necessity for validation rules or restrictions to be established. However, if there is a desire to control which dimensions or dimension values can or cannot be used in certain circumstances (e.g., with certain account numbers, etc.), then validation rules can be defined and applied.
For example, it may be desirable for a user to specify that a Department dimension code “Field Sales” is valid in combination with a Functional Area dimension code “Sales and Marketing.” In another example, the same user may desire to restrict the Department dimension code “Documentation” to never be valid with the Functional Area dimension code “General and Administrative.” Restrictions can be placed not just on the combination of dimensions in a given set but also or alternatively on the values that can be entered for given dimension. The restriction of values may be context specific (e.g., if a particular dimension is included in a set, then the values that are valid for a different dimension in the set may be specifically limited).
Validation rules can be defined so that specific dimension values are required, optional or never allowed. Specific values can also be used when defining whether a particular combination of dimensions is allowed (or a particular combination of dimensions together with a particular account, etc.). Unlimited validation rules can be defined. In one embodiment, the system is configured to enforce entry of acceptable dimension data. In another embodiment, it is possible to specify that one or more additional pieces of information may or must be entered when a particular validation rule is invoked.
In one embodiment, to simplify rule definition, wildcards are supported. Wildcards are used to specify all, a range, or a list of values applicable to a validation rule. Wildcards can be used to specify all, a range or a list of accounts applicable to a validation rule. In this latter case, as compared to defining rules on an account-by-account basis, wildcards allow for the definition of fewer rules that need to be maintained and enforced. For example, it may be desirable to specify that, for an account range from 4000 to 4040 (4000:4040), Project 100 and Department 500 are valid entries. In another example, it may be desirable to configure all Departments that start with the number 5 (5*) are invalid with Division 1. All system-supported wildcards are illustratively available when defining a validation rule.
In one embodiment, valid combinations are configured to provide valid values to a calling subsystem based on information provided. For example, a valid combination rule might state that for account 11*, Division 01:04 (i.e., divisions one through four) and all Departments are valid. The same rule might state that if Division 01 is entered, then the Department must be 500. In this case, the system is illustratively configured to return the values of 01, 02, 03 and 04 for Division when account 1103 is known. If account 1103 and Division 01 are known, the system will only return 500 for the Department.
In accordance with one embodiment, dimension validation rules are made applicable to a relational chart of accounts. For a given relational chart of accounts, a user illustratively has the ability to select dimensions they want to validate against a given account number (alternatively, the account number itself can be implemented as a dimension or, alternatively, wildcarding can be used to specify a range of accounts). In one embodiment, by default, any dimension not selected to be validated with an account number will always be valid. The user illustratively has the option to configure the system such that if a matching validation rule cannot be found, then the combination is invalid.
It is to be understood that, when defining validation rules, wildcarding is not limited to defining applicable accounts. Also, wildcarding is not limited to defining applicability by defining a range from a first value to a second value. A system could just as easily be configured to support other wildcarding operators such as, but not limited to, greater than, less than, equal or not equal to. In fact, wildcarding can include any means of defining applicability based on a characteristic instead of identity. Other examples include an ‘in between’ operator, a ‘contains’ operator or an ‘all’ operator. Wildcarding can also be implemented based on the result of an operation (e.g., a certain validation rule is applicable if the sum of two dimension values is greater than a predetermined value n, or if a calculated sales percentage is greater than a predetermined value n, etc.). These are just a few of many potential examples that, given the present description, are obviously within the scope of the present invention.
It is also to be understood that a wildcard can be configured to operate on data that is inside or outside of a dimension context. In other words, when a data source is examined to determine whether a wildcard limitation is applicable, that data source isn't necessarily, but could be, a dimension value. Reference could potentially be made to any data source.
Once a user has selected dimensions that they want to validate, the user can define unlimited rules (e.g., rules for different general ledger Distribution types, such as Sales, Accounts Payable, Purchasing, etc.). If a rule is not defined for a particular general ledger Distribution type, then all combinations are illustratively valid and optional. The validation rules can be defined using specific values or by using wildcards, for example, to define an applicable range. For each element of a validation rule, the user can illustratively define whether the element is required, optional or not allowed.
The system is then illustratively configured to validate a prescribed account and dimension combination as it is entered, for example entered into the general ledger distribution line, for any transaction. Information from the transaction will illustratively be used to determine which rules(s) to validate against. The system is also illustratively configured to provide valid value lists for a given dimension based on known information from the calling transaction. If one dimension code is valid for a specific dimension, then that dimension code will illustratively default onto the general ledger distribution line.
The manner in which a user is able to define valid combinations is very flexible. In most cases, there is likely to be more than one way to define the same rule.
An example will now be provided. For the purpose of the example, it will be assumed that a company has two dimensions, namely, Store and Product Category. It will also be assumed that a user wants to validate against all dimensions. The data for the example is as follows:
As part of the example, three different scenarios will be provided. In a first scenario, the user wants to specify that only the Pet Services Store can sell the Product Categories that are services. The Product Categories that are Services include 004—Boarding, 005—Grooming and 006—Aquarium Cleaning. Department codes are not entered against Sales. The user also wants to specify that when the Product Categories that are services are used, the number of Hours must be entered. Note that Hours will be considered additional information. One way to accomplish the noted goals is as follows:
In a second scenario, the same desired restrictions apply as in the first scenario but the user instead creates the rules using wildcards. Thus, another way to accomplish the same goals is as follows:
In a third scenario, the same desired restrictions apply as in the first scenario but “not allowed” is utilized instead of required. Thus, yet another way to accomplish the same goals is as follows:
If the user enters an account and dimension combination of 4000 for Store G and Product Category of 006, the system will illustratively prompt the user for the Hours. Once the user has entered the quantity of hours, the system will illustratively pass or accept the combination. If the user enters an account dimension combination of 4000 for Store A and Product Category of 006, the system will fail the combination. If the user enters an account dimension combination of 4000 and Product Category of 005, the system will illustratively return G as the store value automatically because the validation rule has defined that store G is the only store that can use Product Category of 005 with account 4000. The system will then illustratively prompt the user for hours.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.