Transaction category
Transaction category is a property of all Activities and Transmutations providing a user specified label that is reported with all transactions arising from the component. This detail is provided in addition to the columns reported in the Resource ledger report to help identify, group and summarise similar transactions across multiple resources and activities during analysis of output.
Rather than provide a strict protocol, the Transaction Category management is generic allowing the user to customise to their needs.
All overhead expenses could be flagged as "overhead" in the Transaction Category allowing the summary of overheads reported across a number of activities to be analysed after the simulation.

The Transaction Category label format supports the inclusion of levels. This is achieved by using a full stop (".") to delineate all level labels for a given transaction.
Imagine a simulation with an irrigation task (Crop task activity) and a fertilising task with associated costs and labour and timers, both associated with producing a crop product. Rather than rely on the activity name being a good identifier for reporting a Transaction Category property with the level-based form CROPS.[Task].[CropName] could be assigned for these activities (e.g. Crop.Irrigation.Wheat and Crop.Fertilise.Wheat). Summarised model output can then be reported by Crop vs Livestock, All irrigation tasks across all crops etc.
The Resource ledger report provides properties to assist with the reporting of Transaction Categories based on levels.

This parameter defines the number of levels of a transaction category, with levels delineated by a full stop ".", to be reported as separate columns in the output
A value of 0 will report the label as provided (no levels)
A value >0 will report the specified number of levels as columns
Blank entries will be provided if the label does not supply the number of levels required.

This parameter provides the names of the output columns to be used for each level. This is provided as a comma (",") delimited list with no spaces allowed in the names (spaces will be stripped).
A default format of Category[level] (e.g. Category1) will be used as the column name if any level name is blank or insufficient names are provided for the number of levels reported

The following special values can be used as labels

Each transaction can contain additional information such as the RelatesTo field. This is used by activities to report a Resource Type that the transaction relates to but it not the resource being handled.
This approach is frequently used in Ruminant activities to provide the Ruminant type. For example in a herd with multiple types this will record which individuals are being fed a particular Animal food store type during Feed ruminants. This allows the user to identify feeding based on the types of animals fed (sheep, cattle) in a mixed herd and account for expense and labour by type.
Setting the label to @RelatesTo will substitute the label with the RelatesTo value of the transaction. Note, this is case sensitive.

Setting the label to @Name will substitute the label with the component name. Note, this is case sensitive.

The following general parameters are provided in the parent CLEM component to assist with automatically generating level-based Transaction Categories and reduing the need for duplication of entering details and taking advantage of the Simulation tree structure.

This switch enables the use of the component name as the Transaction Category label.
Setting the Transaction Category of a component to the underscore character "_" will provide a blank entry rather than the component name.

This switch will enable the automatic building of the Transaction Category based on the value determines an upper limit to female breeders where the simulation will stop and report an error. This value is multiplied by the Maximum number of breeders kept to define the critical number and Simulation tree structure. This allows the user to supply the single level category label (or use the component name) and reduces duplication of entering nested level labels.
Blank labels will be ignored