Breakback with rounded integer numbers
Hi,
Is it possible to set a Breakback function with auto-rounding?
We're working on a project where exploiting breakback is useful.
Product units should be integer, never fractional, but we can't find how to auto round numbers derived from breakback function without setting a process.
Is there a way to let user insert a number at Product Family (ex. 100 units) and force the breakback function to compute integer numbers at Product level (ex. Product 1: 33 units, Product 2: 33 units, Product 3: 34 units)?
Thank you for your kind help,
Michele
Answers
-
Hi @MicheleVendemini,
I have come up with something, is this what you are looking for?
what this module does is that, first the decimals (the difference) are separated from the units input (Unit IP line item) and take the summary of it (Unit Deci) and then add that summary to the last child of the product family list, in the example I have given its "prod 3".
0 -
Hi @Rajat26 ,
First of all, thank you for your help and patience.
The proposed solution gets problematic when the decimals are 0.5, as for a total of 102 divided by prod 1, prod 2, prod 3 and prod 4 (25.5 considering decimals).
Your result, if I understand it correctly, will lead to:
Total: 102
Prod 1: 25
Prod 2: 25
Prod 3: 25
Prod 4: 27.
A desired result in this case would be an array of values like 25,26,25,26, minimizing the differences in splitting values.
Our workaround to overcome this problem is:
Format
Formula
Summary
Applies To
Time Scale
Time Range
SYS01 Child
Child list
Not Applicable
Not Applicable
Parent
Parent list
None
-
Not Applicable
Not Applicable
Counter
Number
1
Sum
Not Applicable
Not Applicable
Rank
Number
RANK(Counter, ASCENDING, SEQUENTIAL, TRUE, Child)
None
-
Not Applicable
Not Applicable
Formula
Applies To
Breakback
CALC01 Sales Plan
Child List
Sales Plan
Format: NUMBER
Summary: Sum
-
TRUE
▼ Rounding Line Items ▼
-
FALSE
Round Nearest
Format: NUMBER
Summary: None
ROUND(Sales Plan, 0, NEAREST, NORMAL)
-
FALSE
Round Down
Format: NUMBER
Summary: None
ROUND(Sales Plan, 0, DOWN, NORMAL)
-
FALSE
Round Up
Format: NUMBER
Summary: None
ROUND(Sales Plan, 0, UP, NORMAL)
-
FALSE
Δ Round Down - Input Value
Format: NUMBER
Summary: None
Sales Plan[SUM: 'SYS01 Child'.Parent] - 'Round Down'[SUM: 'SYS01 Child'.Parent]
Parent List
FALSE
Receive units for rounding?
Format: BOOLEAN
Summary: None
IF
'Counter Round Up = Round Nearest'[LOOKUP:'SYS01 Child'.Parent] >= 'Δ Round Down - Input Value'[LOOKUP: 'SYS01 Child'.Parent]
THEN
'Counter Round Down = Round Nearest' = 0
AND
'SYS01 Child'.Rank <= ROUND('Δ Round Down - Input Value'[LOOKUP: 'SYS01 Child'.Parent], 0, NEAREST) + 'Counter Round Down = Round Nearest'[LOOKUP: 'SYS01 Child'.Parent]
ELSE
'SYS01 Child'.Rank <= ROUND('Δ Round Down - Input Value'[LOOKUP: 'SYS01 Child'.Parent], 0, NEAREST)-
FALSE
Rounding Breakback
Format: NUMBER
Summary: Sum
IF NOT 'Receive units for rounding?' THEN 'Round Down' ELSE 'Round Down' + 1
-
FALSE
Counter Round Down = Round Nearest
Format: NUMBER
Summary: Sum
IF 'Round Down' <> 'Round Nearest' THEN 0 ELSE 1
-
FALSE
Counter Round Up = Round Nearest
Format: NUMBER
Summary: Sum
IF 'Round Up' <> 'Round Nearest' THEN 0 ELSE 1
-
FALSE
Anyway, we need to use breakback with integer numbers all across the model.
Our workaround would result in a lot of occupied RAM and an uneasy maintenance and bug fixing situation.
Thank you anyway for the effort and for the help!
Michele
0