InfraBilling is enterprise billing and rating system with real-time rating capabilities and cyclical billing and invoice generation process functions.
The user manual contains a list of application modules and instructions on how to properly use them. The most relevant part of this manual is the General rules list because it's being referenced throughout the manual.
Menu entry: System administration -> User accounts
Mainly used to administer user accounts. General rules apply here with exceptions to the following:
Menu entry: Clients -> Administration
General rules apply with no exceptions. Note that address fields on client form are used for invoice generation and are displayed as the client's billing address on generated PDF invoice.
Menu entry: Tariffs
The system works with billing categories. Categories are managed in the left category tree. When a category is selected, controls for editing, adding a child category, cloning selected category and deleting selected category show up. When creating or editing a category, the category name can be specified. When cloning category, simply pick under which category you wish to create this new cloned category. Cloned category names are suffixed with '*' to distinguish them from the original category. You can edit the name of the cloned category as you would edit any other category.
Each of these categories can contain multiple tariffs and these tariffs are used in the rating process. The rating process is done based on billing events. Billing events are generated automatically by the system and each billing event has a value. During the rating process, billing event value is compared against tariffs and when match is found tariff is applied and calculation is done.
The main part of each tariff is the value table which contains ranges and values for each defined range. The range is used when comparing billing event value and if the billing event value is within one of the ranges, the tariff's value for that range is used in the rating process.
Tariffs can have nested (dependent) child tariffs. When tariff has children (dependent tariffs) we call this hierarchy a tariff tree. Tariff trees are manipulated with positive/negative flags mentioned below. One of the examples of tariff tree usage would be:
"I want the system to use a certain tariff with negative values only if another tariff generated a positive value. Basically I want to penalize a client only if another tariff generated a positive value, otherwise, no penalty should be issued."
To achieve this requirement we would create one tariff (a parent) and another dependent tariff (a child). On the parent tariff, we would check a flag Calculation can have positive results only. By setting this flag we are telling the system that this whole tariff tree (parent and all the children) can only have a total positive result and if this parent tariff generated 0 and child tariff generated -50 total would be -50 but since they are dependent and we said that our tariff tree can only have positive total result final result in the calculation would be 0 instead of -50.
A tariff is defined by:
Each tariff value table consists of billing event value range and value. When billing event value is compared against a tariff to rate that event a range that contains billing event value is determined and the value for that range from the tariff value table is taken into calculation. Each tariff value table always covers all the possible ranges from 0 to maximum allowed value for billing unit (e.g. infinity for decimal values, 23:59 for time values with 1 minute precision, 23:59:59 for time values with 1 second precision, etc.).
To add an entry to the tariff value table click on the Add entry button in the table footer. A new editable row appears. From field represents the left boundary of the new value range (the right boundary is set automatically and can be infinity or left boundary of existing range). The value field represents the calculation value for that range.
To edit an entry in the tariff value table click on the pencil button.
To delete an entry in the tariff value table click on the garbage bin button.
Operations module is used for billing cycle administration and month to date rated data display.
Menu entry: Operations -> Billing cycles
To create a new billing cycle simply click on the + button in the bottom right corner of the screen. When the billing cycle is created all the calculations for all clients are triggered and are done in the background. The billing cycle details screen contains a data grid with all the clients and indicators for the status of their calculations.
Once the calculation for the client is done you can click on a row in the aforementioned data grid and invoice details are loaded and displayed.
One-off bonuses (or maluses) can then be applied for each client for this billing cycle by clicking on the Add bonus/malus button in the footer of the invoice details grid.
By clicking on each of the invoice items a calculation specification is displayed containing all the tariffs that were applied while calculating the selected invoice item.
You can trigger recalculation for a particular client by clicking a button with circular arrows in the data grid.
When all the calculations are done and all the bonuses are applied billing cycle can be locked by clicking on the button above the data grid. When the billing cycle is locked it can not be recalculated. Lock action is used to stop all the other users to modify the billing cycle data so the actions to finalize the billing cycle can be performed. Once the cycle is locked new action buttons above the data grid appear:
Menu entry: Operations -> Month to date
Month to date calculation screen shows rolling calculation for all the clients. Please note that this data does not contain one off bonuses that are applied during the billing cycle creation so the numbers here can be different from final billing cycle calculation numbers.