Notifications
Clear all
Sep 23, 2023 8:11 am
Symptom
When a marketing document is created, there is a difference between the tax amount at the document header level and the tax amount at the line level. How does the system allocate the rounding difference back to the line item rows?
Environment
SAP Business One
Reproducing the Issue
Scenario:
Add a document with:
- Item A - Quantity: 1 Unit Price: $4
- Item B - Quantity: 1 Unit Price: $3
- Item C - Quantity: 1 Unit Price: $3
- The tax rate is 17.5%.
Actual behavior:
- Calculate line tax:
- Item A - 1 x $4 x 17.5% = $0.70
- Item B - 1 x $3 x 17.5% = $0.53 (rounded from 0.525)
- Item C - 1 x $3 x 17.5% = $0.53 (rounded from 0.525)
- Total line tax = $1.76
- Calculate document header tax:
- Header tax = (sum of all prices before tax) x tax rate
- Header tax = ($4 + $3 + $3) x 17.5%
- Header tax = $10 x 17.5%
- Header tax = $1.75
- Calculate the tax difference:
- Tax difference = header tax - line total tax
- Tax difference = $1.75 - $1.76
- Tax difference = $0.01
- Allocate the $0.01 Tax Difference:
- Item weight = (prices before tax / sum of all (remaining item) prices before tax) x tax difference
- Check for Item A
- Item A = [$4/($4 + $3 + $3)] x $0.01
- Item A = [$4/$10] x $0.01 = 0.004
- Note: When $0.004 is rounded off, it will be rounded to $0.00. Hence, the $0.01 is still available for other line item rows.
- Check for Item B
- Item B = [$3/($3 + $3)] x $0.01
- Item B = [$3/$6] x $0.01 = 0.005
- Note: When $0.005 is rounded off, it will be rounded to $0.01. Hence, the $0.01 tax difference is now used up. The final tax of line item B is now reduced by $0.01. Thus, $0.52.
- Check for Item C
- There will be no checks made for Item C because at this stage, the $0.01 tax difference has been allocated to Item B.
- Check for Item A
- Item weight = (prices before tax / sum of all (remaining item) prices before tax) x tax difference
- Final line item taxes:
- Item A - $0.70
- Item B - $0.53 - $0.01 = $0.52
- Item C - $0.53
- Total Line Tax = $1.75
Resolution
The tax rounding difference is distributed to line item rows based on the weight of each line item. This weight is calculated as row total / total of all rows.