BusinessAccounts are duals of BusinessTransaction''''''s. Transactions show the flow of money, goods and services, and even commitments. Accounts show the state of the business, i.e. the amount of money available, the goods available to be used, and the outstanding commitments. Sometimes an attribute of an account seems concrete and tangible, such as the quantity on-hand in an inventory account. Other attributes, such as the quantity sold this year, seems much less tangible. However, all of them are part of the user's model. The attributes of an account change over time. They are functions of the transactions that have occurred up to that time. The amount of inventory today is different from what it was yesterday depending on how much was bought or sold. It is theoretically possible to define an account as a set of functions, one for each of its attributes. You could read the value of an attribute of an account at a particular point in time by applying this function to all the transactions up to that time. However, this is too expensive if there are a lot of transactions. ''A lot'' is clearly context-sensitive. If you are running your business with paper and ink than ten transactions per day is a lot by the end of the month. If you are running it using a RDBMS then ten transactions per day is very little, and you could calculate almost anything you wanted in a few seconds using SQL queries. But if you have enough data to computerize, you probably have enough that it is too expensive to repeatedly compute the state of the business. So, you need to cache the state at various points in time. '''Therefore:''' keep a set of accounts that keep track of the current state of the business. The state variables are attributes of the accounts. In a payroll system, there is an account for each employee. An employee's attributes include hours worked this pay period, accrued vacation, and taxes withdrawn for the year. In an inventory system, there is an account for each kind of inventory. An inventory account's attributes include the amount on-hand, month-to-date sales, and cost of goods sold. In an accounts payable system, there is an account for each vendor. A vendor's attributes include how much you owe him and how much you've bought from him this year. ---- Intel has a business accounts maintenance system implemented in Smalltalk, designed primarily by JerzyBilchuk and RussHeinsen. It has all the rules for how accounts are created, changed, related to one another, etc. It apparently is one of the most successful IT systems developed at Intel and has gained acceptance for further use of Smalltalk at Intel. Subsequent systems developed in Smalltalk include an "allocations" system that has most if not all the rules for allocating portions of accounts to other accounts. (e.g. the accounts for a building and utilities, etc. may be shared by the accounts for the businesses that share the building and utilities.) Another system just going into production is a "transaction translator" that connects one business system's transactions to another. In this case, SAP R3 and D&B general ledger among others. -- PatrickLogan