INET-Complexity / Core-ESL

Open-source, distributed, economic simulation libraries for Java and Scala
7 stars 6 forks source link

Inventories and Accounting #13

Open rafabap opened 7 years ago

rafabap commented 7 years ago

@DavoudTaghawiNejad and I have been discussing and decided that Inventory and Accounting are different services.

Inventory is a collection of Items which can be Good or Contract (as in the original design of the ESL).

Accounting is a way to keep track of balances. The link between an inventory and an accounting system is valuation. For example, a Balance Sheet should be part of an accounting system, but not of an inventory.

InventoryAPI will include operations to add and remove items, and queries to obtain items. AccountingAPI will include queries only, such as get asset value, get equity value, get value of items according to predicate P, etc.

The main technical challenge is how to keep the accounting and inventory systems coherent. They are coherent when all valuations of items are up to date. One option is to have every accounting system provide a function consolidate which will somehow iterate through the inventory and update the balances according to the potentially modified valuations of all items.

Any discussion on inventories, accounting and valuation here please!

davidrpugh commented 7 years ago

@rafabap I think the idea of separating Inventories and Accounting is a good idea. Is it possible to extract coherent APIs using the terminology from a Double Entry System?