28 Configuring Balance Impact Rounding

Learn how to configure balance impact rounding rules in Oracle Communications Billing and Revenue Management (BRM) product offerings.

Topics in this document:

About Balance Impact Rounding

BRM enables you to create various rounding rules for different balance elements, events, and processes such as rating and discounting. You create rounding rules for several reasons:

  • To increase the accuracy of rating and discounting results.

  • To process usage fees more efficiently. For example, an infinite number such as 5.333... is more easily processed when it is rounded.

  • To round for various currencies that use a different number of digits to the right of the decimal (for example, 10.25 dollars and 10 yen).

  • To comply with currency conversion rules.

  • To bill customers an amount that they can actually pay.

About Rounding Rules

You can configure balance impact rounding based on the following rounding criteria:

  • The rounding scale is the number of significant digits to the right of the decimal point. For example, a scale of 2 applied to 10.321111 rounds to 10.32.

  • The rounding mode defines whether the number is rounded up, down, or not at all, based on the value of the digit following the last significant digit. See "About Rounding Modes".

  • The process to which the rounding configuration applies. You can specify one of these processes: rating, discounting, taxation, and accounts receivable (A/R). A/R includes actions such as billing, payments, adjustments, cancellations, and G/L reporting.

    Specifying the process enables you to round differently based on the operation. For example, you can round up using six decimal places for rating and round down using two decimal places for billing.

  • The event type to which the rounding configuration applies. This enables you to round differently for events that represent specific types of usage, cycle fees, discounts, and rollovers. For example, US dollars and purchase events (/event/purchase).

Table 28-1 show how a US dollars balance element and purchase event combination can be rounded various ways for various processes:

Table 28-1 Currency Balance Element and Event Type

For a US Dollars Balance Element For This Process Use This Rounding Scale Use This Rounding Mode

Event type = /event/billing/product/fee/purchase

Rating

6

Down

Event type = /event/billing/product/fee/purchase

Discounting

6

Up

Event type = /event/billing/product/fee/purchase

A/R

2

Nearest

Event type = /event/billing/product/fee/purchase

Taxation

2

Nearest

You can specify any combination of scale and mode for balance element, event, and process combinations.

After each process that performs rounding (rating, discounting, and so forth), the balance impact of the event contains the rounded amount.

How BRM Applies Rounding

Rating, discounting, and taxation produce balance impacts, which are rounded and applied to the customer's account balance. The balance impacts are rounded to the scale and mode configured for the event, balance element, and process combination.

Balance impacts for an account are stored in bill items, which are associated with the customer's bill. When you run billing, the item totals are rounded according to the A/R rounding rule. Item totals are rounded before being added to the bill so that the bill itself never needs rounding. Before billing, item totals are unrounded and their amounts reflect the scale configured for the associated events.

Figure 28-1 shows the general process of balance impact rounding.

Figure 28-1 BRM Balance Impact Rounding

Description of Figure 28-1 follows
Description of "Figure 28-1 BRM Balance Impact Rounding"

Assuming that rounding is configured for all events and all processes (rating, discounting, taxation, and A/R), rounding is performed in the following order:

  1. Purchase and cycle fees. When a package is purchased, the purchase and cycle fees are rounded, if necessary, and a balance impact is generated with the rounded amount. Purchase and cycle fees typically only need rounding when a user purchases or cancels an offer in the middle of the billing cycle. In this case, cycle fees and noncurrency grant amounts are prorated, if necessary, and then rounded.

  2. Usage fees. As customers use their services, the usage events are rated, the usage fees are rounded, and balance impacts are generated with the rounded amounts.

  3. Discount fees. If a usage discount applies, the discount is calculated on the rounded usage fee, and then the discount is rounded and a discount balance impact is generated with the rounded amount. If there are multiple usage discounts, each discount is rounded in sequence.

  4. Taxes. If tax should be applied to the event, the tax is calculated on the rounded fee, and then the tax is rounded and a balance impact is generated with the rounded amount.

  5. Billing discounts. When you run billing, if a billing-time discount applies, it is applied to the total of the rounded usage items, and then the discount is rounded and a discount balance impact is generated with the rounded amount.

  6. Bills. When the bill is generated, the total amount in each item is rounded, and then all item totals are summed and included in the bill.

  7. Rollover. If there are any rollover amounts, the rollover is calculated on the total rounded usage, and then the rollover amount is rounded and applied to the next billing cycle. For example, if 100 minutes can be rolled over and the customer used 60.4 minutes, the unused amount of 39.6 minutes is rounded and then added to the account balance for the next cycle.

    To round for rollover, you configure a rounding rule for the noncurrency balance element and cycle forward event combination. Rollovers are typically rounded up.

About Rounding and A/R Actions

When entering amounts for A/R actions such as adjustments and refunds, customer service representatives (CSRs) typically use a natural scale: that is, the scale commonly used in the marketplace for that balance element. For example, a person who purchases a book using US dollars cannot make change smaller than one cent (.01 dollars), making 2 the natural scale for US dollars. However, if a CSR reverses or adjusts an event before billing, the scale used is the one in the event's balance impact. By default, this is the natural scale, unless you change this to use a scale other than natural.

About Rounding Billed and Unbilled Items

The balance impacts of events associated with items can have a high scale. Before billing, item totals reflect the scale of their associated events. During billing, item totals are rounded using the A/R rounding configuration so that customers' bills display the natural scale for the balance element. However, the events associated with billed items still retain their pre-billing scale.

If any operation is performed on billed items: for example, event and item adjustments, BRM rounds the balance impact of the operation according to the A/R rounding rule to maintain G/L integrity. Because actions on billed items are rounded when they occur, only pending items are rounded when billing is run.

About Rounding for Specific Event Types

When you configure a rounding rule for a specific event type, such as cycle or session events, that rounding rule applies to those events only for the process specified. If you do not configure a rule for every process, all other processes for that event type use the default rounding rule. The default rounding rule specifies natural scale for all events and the rounding mode most commonly used for the process. A rule for all events is specified by using an asterisk (*) as the default event type.

For example, given the configuration in Table 28-2, during rating, session events are rounded down and have a scale of 6. During taxation, however, session events use the default rule of rounding to the nearest with a scale of 2:

Table 28-2 Rounding for Specific Event Types

Balance Element Event Type Process Rounding Scale Rounding Mode

US dollars

/event/session

Rating

6

Down

US dollars

 * (all events)

Taxation

2

Nearest

About Rounding Counter Balances for Discounting

For discount rounding, the rounding configurations are used to round only the balance impacts of discounting, not input balances, such as counters. To configure counter rounding, see "Configuring Rounding Rules for Counter Balances".

About G/L Report Rounding

G/L report rounding uses the rounding rule configured for A/R actions. The rounded totals in G/L reports might differ slightly from the total of the rounded bills. This is because item totals are rounded for billing, and journal entries are rounded for G/L reports. Also, G/L reports are rounded differently before and after billing. For more information, see "About Rounding and G/L Reports" in BRM Collecting General Ledger Data.

If there is any difference between the rounded journal entries in G/L reports and the rounded bill items, BRM records the difference in the G/L. You configure a G/L ID for the rounding difference and configure BRM to record the differences. See "Configuring to Record Rounding Differences in the G/L".

About Rounding Modes

A rounding mode defines whether a number is rounded up, down, or not at all. The rounding mode rounds to the specified scale. For example, using a scale of 2, rounding up 10.2369 results in 10.24. If the scale is 3, rounding up results in 10.237.

The following rounding mode values that you can use are defined in the BRM_home/include/pin_bill.h file:

  • 0: PIN_BEID_ROUND_NEAREST

    This mode rounds up or down depending on the value of the digit following the last significant digit. If the additional digit is 0-4, the last significant digit remains the same. If the additional digit is 5-9, the last significant digit is rounded up. For example, if the scale is 2, 10.144 rounds to 10.14 and 10.145 rounds to 10.15. This is the most common rounding method.

  • 1: PIN_BEID_ROUND_UP

    This mode rounds up when the digit following the last significant digit is greater than 0. For example, If the scale is 2, 10.151 rounds to 10.16. If the scale is 1, it rounds to 10.2.

  • 2: PIN_BEID_ROUND_DOWN

    This mode truncates all digits following the last significant digit. For example, if the scale is 2, 10.159 rounds to 10.15. If the scale is 1, it rounds to 10.1.

  • 3: PIN_BEID_ROUND_EVEN

    This mode rounds one of three ways depending on the value of the digit following the last significant digit:

    • If it is less than 5, truncate all digits following the last significant digit.

    • If it is greater than 5, round up.

    • If it is 5, round to the nearest even digit. For example, if the scale is 2, 10.155 and 10.165 both round to 10.16 because 6 is an even number.

  • 4: PIN_BEID_ROUND_FLOOR

    This mode rounds numbers toward a negative value (that is, the rounded number is always less than the unrounded number). This enables you to round balance impacts so that customers always benefit. For example, if the scale is 2, a credit to a customer of -7.999 is rounded to -8.00, and a debit of 7.999 is rounded to 7.99.

  • The following two modes perform the same rounding as their nonalternative counterparts (ROUND_FLOOR and ROUND_DOWN), except that they compensate for possible loss of precision when rounding down by first rounding with a mode of NEAREST using a scale that is two digits greater than the scale you configure.

    • 5: PIN_BEID_ROUND_FLOOR_ALT

    • 6: PIN_BEID_ROUND_DOWN_ALT

    For more information, see "About Rounding Modes That Correct for Loss of Precision".

About Rounding Modes That Correct for Loss of Precision

Some calculations produce results that are slightly less than expected when a value is rounded down. For example, when BRM prorates a $60.00 cycle fee for 20 out of 30 active days, the calculation is (20/30) * $60.00. The expected result is a fee of $40.00. However, because 20/30 evaluates to 0.666, when this is multiplied by 60 and rounded down, the actual result is a fee of $39.99.

BRM provides two alternative rounding modes that compensate for possible precision loss when rounding down: ROUND_DOWN_ALT and ROUND_FLOOR_ALT. These modes perform the same rounding as their nonalternative counterparts (ROUND_DOWN and ROUND_FLOOR) after first compensating for loss of precision.

Note:

ROUND_DOWN_ALT and ROUND_FLOOR_ALT are not supported in the BRM PCM Java API and in discount expressions.

When these modes are used, if a decimal should be rounded down, BRM performs two rounding functions: The decimal is rounded by using the ROUND_NEAREST rounding mode and a scale that is two more than the scale that you request. It is then rounded down.

For example, if you configure the rounding mode as ROUND_DOWN_ALT and a rounding scale of 2, and the decimal to round is 7.999..., BRM truncates the infinite decimal to the system maximum and then rounds this decimal to the nearest using a scale of 4 (2 more than the configured scale of 2), which results in 8.0000. This decimal is then rounded down using the configured scale of 2, resulting in 8.00 as shown in Table 28-3:

Table 28-3 Rounding Modes That Correct for Precision

Do This Why

7.999...

Original decimal

7.99999999999999

Truncated to the system max

8.0000

ROUND_NEAREST, using requested scale + 2

8.00

ROUND_DOWN to the requested scale of 2

Had the original decimal of 7.999... not been rounded to the nearest first and only rounded down, the result would be 7.99.

To compensate for possible loss of precision, the alternative rounding modes consider two decimal places more than the nonalternative rounding modes. Therefore, the greatest amount that will be modified by using the alternative rounding modes, and still compensate for loss of precision, is less than the greatest amount that will be modified by using the nonalternative rounding modes.

When Rounding Is Not Applied

When the requested rounding scale is greater than the scale of the number being processed, rounding is not required. This occurs when:

  • You configure a rounding scale equal to or greater than the maximum number of digits allowed by the system. For example, if the system allows 15 digits and you set the rounding scale to 15 or greater, rounding has no effect.

  • You call a rounding function and request a scale that is equal to or greater than the current scale of the decimal: for example, when the decimal is 10.89766 and the scale requested is 5 or greater.

  • A computation or expression results in a decimal with a scale that is equal to or less than the configured or requested scale: for example, when a computation results in the decimal 1.98 and the configured scale is 2 or greater.

Configuring Balance Impact Rounding

To set up rounding, perform the following tasks:

About Configuring Rounding Rules

You configure rounding for balance element and event type combinations (for example, US dollars and /event/session/telco/gsm events). For each balance element and event combination, you specify a rounding scale, a rounding mode, and the process for which this rule applies.

Note:

You do not need to configure rounding for all of the processes. However, you must configure rounding for every balance element and event type that has a balance impact.

About Rounding Mode Values in the BRM API

The rounding modes you specify have corresponding modes in the BRM API. When BRM invokes a decimal data type function, it converts the rounding mode in the /config/beid object into the corresponding rounding parameter used by the decimal data type function. If you call decimal data type functions in custom applications, specify the function's rounding mode, not the BEID rounding mode.

Table 28-4 shows the BEID rounding modes and the corresponding rounding parameters for the decimal data type functions:

Table 28-4 BEID Rounding Modes

BEID Rounding Mode (specified in pin_bill.h) Rounding Mode Parameter for pbo_decimal functions

0: PIN_BEID_ROUND_NEAREST

5: ROUND_HALF_UP

1: PIN_BEID_ROUND_UP

1: ROUND_UP

2: PIN_BEID_ROUND_DOWN

2: ROUND_DOWN

3: PIN_BEID_ROUND_EVEN

7: ROUND_HALF_EVEN

4: PIN_BEID_ROUND_FLOOR

4: ROUND_FLOOR

5: PIN_BEID_ROUND_FLOOR_ALT

8: ROUND_FLOOR_ALT

6:PIN_BEID_ROUND_DOWN_ALT

9: ROUND_DOWN_ALT

N/A

3: ROUND_CEILING

N/A

6: ROUND_HALF_DOWN

N/A

10: ROUND_UNNECESSARY

Configuring Rounding Rules for Counter Balances

You use Oracle Communications Pricing Design Center (PDC) to configure rounding rules for counter balances. When you configure discounts, use discount expressions to specify how to round the balance. Use the following discount expression syntax:

round(expression, rounding_scale, rounding_mode)

where expression defines the balance to round. This can be any discount expression. To round a counter balance, use the Balance expression. For more information, see the discussion about configuring discounts in PDC Help.

For example, to round a counter balance down to two decimal places for balance element ID 100099, use the following expression:

round( Balance(1000099), 2, ROUND_DOWN )
About Rounding Modes for Discount Expressions

Rounding modes for discount expressions have slightly different names. Table 28-5 lists the rounding mode values you can specify.

Table 28-5 Rounding Modes for Discount Expressions

Discount Expression Rounding Mode Rounding Mode

ROUND_PLAIN

Nearest

ROUND_UP

Up

ROUND_DOWN

Down

ROUND_BANKERS

Even

For a definition of what these modes represent, see "About Rounding Modes".

Configuring to Record Rounding Differences in the G/L

To record any difference between rounded bill items and the rounded total in the G/L, perform the following tasks:

For information about how rounding is performed in G/L reports, see "About Rounding and G/L Reports" in BRM Collecting General Ledger Data.

Defining a G/L ID for Rounding Differences

You define a G/L ID for rounding to include the rounding difference in G/L reports so that they can be accurately reconciled.

To define G/L IDs, you edit the G/L ID configuration file and then run the load_pin_glid utility to load the contents of the file into the /config/glid object in the BRM database.

Note:

The load_pin_glid utility needs a configuration (pin.conf) file in the directory from which you run the utility.

To define a rounding G/L ID:

  1. If necessary, edit the G/L ID configuration file in BRM_home/sys/data/pricing/example/pin_glid. If the following entry is not present, add it:

    #=================================================================
    # G/L ID for rounding adjustments 
    #=================================================================
    glid 
    id 1512 
    descr Rounding Epsilon
    gl_acct billed         gross    rounding.debit    rounding.credit
    gl_acct billed         net      rounding.debit    rounding.credit
    gl_acct billed         disc     rounding.credit   rounding.debit
    gl_acct billed_earned  gross    rounding.debit    rounding.credit
    gl_acct billed_earned  net      rounding.debit    rounding.credit
    gl_acct billed_earned  disc     rounding.credit   rounding.debit
    gl_acct unbilled       gross    rounding.debit    rounding.credit
    gl_acct unbilled       net      rounding.debit    rounding.credit
    gl_acct unbilled       disc     rounding.credit   rounding.debit 
    gl_acct unbilled_earned gross   rounding.debit    rounding.credit
    gl_acct unbilled_earned net     rounding.debit    rounding.credit
    gl_acct unbilled_earned disc    rounding.credit   rounding.debit
    )

    Note:

    The load_pin_glid utility overwrites existing G/L IDs. If you are updating G/L IDs, you cannot load new G/L IDs only. You must load complete sets of G/L IDs each time you run the load_pin_glid utility.

  2. Save and close the file.

  3. Use the following command to run the load_pin_glid utility:

    load_pin_glid pin_glid_file 
Mapping the Rounding G/L ID to an Event

Because the rounding difference is not a rated event, you must map the G/L ID to an event type. G/L ID mapping is defined in the reasons.locale file. You can find a sample of this file in the BRM_home/sys/msgs/reasoncodes directory. The sample file is named reasons.en_US and contains the following default entry for the rounding G/L ID mapping:

DOMAIN = "Others" ;
STR
     EVENT-GLID
          . . . 
          /event/journal/epsilon"        1512 ;
     EVENT-GLID-END

Note:

/event/journal/epsilon is a dummy event type used for reference only.

To change the G/L ID for rounding, you must edit and reload the file. The G/L ID you define in the reasons.locale and pin_glid files must match. See "Configuring to Record Rounding Differences in the G/L".

To map the G/L ID for rounding to an event, you use the load_localized_strings utility to load the contents of the file into the /config/map_glid object. When you run the load_localized_strings utility, use this command:

load_localized_strings reasons.locale

Note:

  • If you are loading a localized version of this file, use the correct file extension for your locale.

  • The load_localized_strings utility overwrites the existing G/L ID maps. If you are updating this object, you cannot load new G/L ID maps only. You must load complete sets of G/L ID maps each time you run the load_localized_strings utility.

For information on loading the reasons.locale file, see "Creating a Localized Version of BRM" in BRM Developer's Guide.

Configuring BRM to Record Rounding Differences

By default, rounding differences are not recorded in G/L reports. You can enable recording the difference between rounded bill items and the rounded total by running the pin_bus_params utility to change the GenerateJournalEpsilon business parameter. For information about this utility, see BRM Developer's Guide.

To enable BRM to record rounding differences:

  1. Go to BRM_home/sys/data/config.

  2. Create an XML file from the /config/business_params object:

    pin_bus_params -r BusParamsBilling bus_params_billing.xml
    
  3. In the file, change disabled to enabled:

    <GenerateJournalEpsilon>enabled</GenerateJournalEpsilon>
    
  4. Save the file as bus_params_billing.xml.

  5. Load the XML file into the BRM database:

    pin_bus_params bus_params_billing.xml
    
  6. Stop and restart the CM.

Rounding Examples

Rounding is performed after rating, discounting, taxation, and A/R actions such as billing and adjustments.

Table 28-6 shows the resulting balance impacts of rounded charges for rating, discounting, taxation, and billing. This example rounds to the nearest mode and uses these scales:

  • 2 for purchase events, taxation, and A/R

  • 5 for rating and discounting

    Table 28-6 Rounding Examples

    Action / Process Calculated Charge Rounded Charge & Balance Impact Account Balance

    Purchase package

    Rate cycle fee

    9.95

    9.95

    9.95

    Use service

    Rate usage

    5.23456789

    5.23457

    15.18456

    Discount usage fee 10%

    0.523456789

    0.52346

    14.66111

    Tax usage event 3% (after discount)

    0.1413333

    = 3% * (rounded usage fee - rounded discount)

    0.14

    14.80111

    Run billing

    Apply billing-time discount of 5% off total usage

    0.24250...

    = 5% * usage item total after A/R rounding

    (The usage total does not include the cycle fee.)

    0.2425

    14.55861

    Create bill

    14.55861

    = Total of all items

    14.56

    (No balance impact)

    14.56

Correcting for Precision Loss When Rounding Down

This example shows the results of rounding when you use the ROUND_DOWN_ALT and ROUND_FLOOR_ALT modes. For more information, see "About Rounding Modes That Correct for Loss of Precision".

The ROUND_DOWN_ALT and ROUND_FLOOR_ALT modes produce different results than ROUND_DOWN and ROUND_FLOOR only when the three digits following the last significant digit are 995 or greater. (The last significant digit is the digit in the decimal place corresponding to the scale: If the scale is 2, the last significant digit in the number 1.23456 is 3.)

For example:

Table 28-7 shows some rounding results of the ROUND_DOWN_ALT and ROUND_FLOOR_ALT modes as compared to their nonalternative rounding counterparts (ROUND_DOWN and ROUND_FLOOR) for various decimal values and rounding scales.

Table 28-7 Rounding Results

Decimal Scale Rounding Mode Rounding Mode Rounding Mode Rounding Mode
NA NA DOWN DOWN_ALT FLOOR FLOOR_ALT

1.5256

2

1.52

1.52

1.52

1.52

-1.5256

0

-1

-1

-2

-2

12.8999...

0

12

12

12

12

12.8999...

1

12.8

12.9

12.8

12.9

12.8999...

2

12.89

12.90

12.89

12.90

-12.8999...

1

-12.8

-12.9

-12.8

-12.9

-12.8999...

2

-12.89

-12.900

-12.89

-12.90

-6.9990

2

-6.99

-6.99

-7.00

-7.00

-6.9990

3

-6.999

-6.999

-6.999

-6.999

7.999...

0

7

8

7

8

7.999...

1

7.9

8.0

7.9

8.0

7.999...

2

7.99

8.00

7.99

8.00

-7.999...

0

-7

-8

-8

-8

-7.999...

2

-7.99

-8.00

-8.00

-8.00

Rounding Using Different Modes

The aggregated effects of rounding on the final balance impact is determined by the mode and scale that you configure. The higher the scale, the less effect the rounding mode has on the final balance impact.

For example, Table 28-8 shows the impact of various rounding mode combinations for rating a usage fee of $1.1234567 that includes a 10% discount. Both rating and discounting use a scale of 6:

Table 28-8 Rounding Modes

Processing Stage (Rating and Discounting) Rating: Round DownDiscounting: Round Down Rating: Round DownDiscounting: Round Up Rating: Round UpDiscounting: Round Down Rating: Round UpDiscounting: Round Up

Round for rating

1.123456

1.123456

1.123457

1.123457

Calculate 10% discount

.1123456

.1123456

.1123457

.1123457

Round discounted amount

.112345

.112346

.112345

.112346

Apply discount to usage fee to get final balance impact

1.011111

1.011110

1.011112

1.011111

In this example, the difference in the final balance impacts is small because the scale is high and probably will not change the final amount on the bill. However, when many events are summed in an item, or the scale is small, such as 2 or 3, the differences become greater.

Note:

If you calculate the discount without rounding the event, the configuration where rating is rounded down and discounting is rounded up returns the most accurate result. Therefore, this is the best mode configuration to use when you discount events.

Configuring Balance Impact Rounding in ECE

You can configure rounding for a currency and noncurrency balance impact by specifying rules for how Oracle Communications Elastic Charging Engine (ECE) rounds the rating impact amounts it calculates. The rules you specify are applied at the system level so the rounding of the rating impact amounts apply across all charges, discounts, and chargeshares. The rounding is also applied to reverse rating calculations and taxation calculations.

The rules you can specify for rounding are as follows:

  • Scale

    You can specify a rule for how many digits to the right of the decimal point to allow. The default scale is 2.

  • Rounding mode

    You can specify a rule for the rounding behavior according to the Java math rounding enum. The default is HALF_UP.

    See the Java SE API Reference documentation for information about using the Java math rounding enum.

For information about configuring rounding for currency and noncurrency balance impacts, see "Configuring Rounding for a Currency Balance Impact" and "Configuring Rounding for a Noncurrency Balance Impact".

Example of Currency Rounding for a Charge

If you allow two digits to the right of the decimal point and you round down towards zero (DOWN rounding mode), ECE takes a calculated charge of 0.509 USD and rounds it to 0.50 USD.

Example of Noncurrency Rounding for a Charge

If you allow zero digits to the right of the decimal point and you round towards positive infinity (UP rounding mode), ECE takes a charge of 0.509 bonus point and rounds the value to 1 bonus point.

Examples of Currency Rounding for Discounts

If you allow zero digits to the right of the decimal point and you round down towards zero (DOWN rounding mode), ECE takes a discount of -2.5 USD and rounds the value to -2 USD.

If you allow zero digits to the right of the decimal point and you round towards negative infinity (FLOOR rounding mode), ECE takes a discount of -2.5 USD and rounds the value to -3 USD.

If you allow two digits to the right of the decimal point and you round down towards zero (DOWN rounding mode), ECE takes a discount of -0.075 USD and rounds the value to -0.07 USD.

Configuring Rounding for a Currency Balance Impact

You can configure rounding for a currency balance impact by specifying rules for how ECE rounds the rating impact amounts it calculates.

The rules you specify are applied as a systemwide configuration for rounding the rating impact amounts of all charges, discounts and chargeshares. The rounding is also applied to all reverse rating calculations and taxation calculations.

See "Configuring Rounding for a Noncurrency Balance Impact" for information about configuring rounding for noncurrency balance impacts.

To configure rounding for a currency balance impact:

  1. Access the ECE configuration MBeans:

    1. Log on to the driver machine.

    2. Start the ECE charging servers (if they are not started).

    3. Connect to the ECE charging server node enabled for JMX management.

      This is the charging server node set to start CohMgt = true in the ECE_home/oceceserver/config/eceTopology.conf file.

    4. Start a JMX editor that enables you to edit MBean attributes, such as JConsole.

    5. In the editor's MBean hierarchy, find the ECE configuration MBeans.

  2. Expand the ECE Configuration node.

  3. Expand charging.server.

  4. Expand Attributes.

  5. Specify values for the following attributes:

    • currencyScale: Enter the number of digits you allow to the right of the decimal point for a calculated impact amount.

      For example, enter 2 if you allow two digits to the right of the decimal point.

      The default is 2.

    • currencyRoundingMode: Enter the rounding mode that determines the rounding behavior by entering the string representation of the Java math rounding enum.

      See the Java SE API Reference documentation for information about using the Java math rounding enum.

      For example, enter UP to round up away from zero or DOWN to round down towards zero.

      The default is HALF_UP.

  6. Save your changes.

Configuring Rounding for a Noncurrency Balance Impact

You can configure rounding for a noncurrency balance impact. The rules you specify are applied as a systemwide setting and apply for rounding the rating impact amounts of all charges, discounts, and chargeshares. The rounding is also applied to all reverse rating calculations and taxation calculations.

To configure rounding for a noncurrency balance impact:

  1. Access the ECE configuration MBeans:

    1. Log on to the driver machine.

    2. Start the ECE charging servers (if they are not started).

    3. Connect to the ECE charging server node enabled for JMX management.

      This is the charging server node set to start CohMgt = true in the ECE_home/oceceserver/config/eceTopology.conf file.

    4. Start a JMX editor that enables you to edit MBean attributes, such as JConsole.

    5. In the editor's MBean hierarchy, find the ECE configuration MBeans.

  2. Expand the ECE Configuration node.

  3. Expand charging.server.

  4. Expand Attributes.

  5. Specify values for the following attributes:

    • nonCurrencyScale: Enter the number of digits you allow to the right of the decimal point for a calculated impact amount.

      For example, enter 2 if you allow two digits to the right of the decimal point.

      The default is 2.

    • nonCurrencyRoundingMode: Enter the rounding mode that determines the rounding behavior by entering the string representation of the Java math rounding enum.

      See the Java SE API Reference documentation for information about using the Java math rounding enum.

      For example, enter UP to round up away from zero or DOWN to round down towards zero.

      The default is HALF_UP.

  6. Save your changes.

For information about configuring rounding for currency balance impacts, see "Configuring Rounding for a Currency Balance Impact".

Configuring Rounding When Authorizing Multiple RUMs

When ECE receives an online charging request for a specified amount of usage, ECE uses the customers product offerings to determine if the customer's balance amount is sufficient for the requested amount. If the request applies to multiple RUMs; for example, occurrence and duration, fractional values of the authorized balance quantity might result. You can enable ECE to round up the authorized balance quantities to the nearest whole number.

If your business requires that your customers must be able to use all of their balances, configure ECE to round up the authorized balance quantity. However, rounding up the authorized balance quantity may result in customers exceeding their credit limits.

You configure whether to round up the fractional value of the impacted balance quantity as a systemwide setting. ECE authorizes an additional RUM unit when the quantity is a fraction.

To configure rounding when authorizing multiple RUMs:

  1. Access the ECE configuration MBeans:

    1. Log on to the driver machine.

    2. Start the ECE charging servers (if they are not started).

    3. Connect to the ECE charging server node enabled for JMX management.

      This is the charging server node set to start CohMgt = true in the ECE_home/oceceserver/config/eceTopology.conf file.

    4. Start a JMX editor that enables you to edit MBean attributes, such as JConsole.

    5. In the editor's MBean hierarchy, find the ECE configuration MBeans.

  2. Expand the ECE Configuration node.

  3. Expand charging.server.

  4. Expand Attributes.

  5. Set the reverseRateUseAllBalances attribute to one of the following values:

    • To round up the fractional value of the authorized balance quantity, enter true.

      This option allows customers to use all balances even if they might exceed their credit limits by a small amount.

    • To disallow the fractional value of the authorized balance quantity to be rounded up, enter false.

      This option does not allow customers to exceed their credit limits.

    The default is false.

  6. Save your changes.