如何避免刺激中的总和问题

时间:2014-01-15 10:48:36

标签: c# sum report stimulsoft

我使用'Stimulsoft Reports.Net'来计算基于具有不同价格,数额和税率的多个项目的总价。这是我的代码:

{
    Sum
    (
        DataBandTax,
        (
            Positions.UnitPrice *
            Positions.Amount *
            (
                Positions.Article.TaxRate +
                100
            )
        ) /
        100
    )
}

Positions是一个Bussines-Object,Positions的每个对象都只有一篇文章。 当Positions.UnitPrice和Positions.Amount正确相乘时,Stimulsoft会为每个计算使用相同的Positions.Article.TaxRate,而不是适合其位置的TaxRate。例如:

Position | UnitPrice | Amount | TaxRate
1        |    100    |    3   |    5
2        |     50    |   10   |   10
3        |     20    |    5   |    3

所以计算应该是:

  ((100 * 3 * (5 + 100)) / 100)
+ ((50 * 10 * (10 + 100)) / 100)
+ ((20 * 5 * (3 + 100)) / 100)
= 315 + 550 + 103
= 968

相反,stimulsoft会计算:(在此示例中,它仅使用位置1的TaxRate)

  ((100 * 3) + (50 * 10) + (20 * 5)) 
* (1+(5/100))
= (300 + 200 + 100) * 1.05
= 600 * 1.05
= 630

如何阻止stimulsoft这样做?

1 个答案:

答案 0 :(得分:0)

我能够通过将TaxRate放在Positions(而不是Positions.Article)中来解决这个问题。似乎Stimulsoft在一个sum包含对象值和子对象值的同时有问题。

{
    Sum
    (
        DataBandTax,
        (
            Positions.UnitPrice *
            Positions.Amount *
            (
                Positions.TaxRate +
                100
            )
        ) /
        100
    )
}