2014-01-15 47 views
0

我使用'Stimulsoft Reports.Net'来计算总价格基于多个项目与不同的价格,金额和税率。这是我的代码:如何避免在stimulsoft总和问题

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

职位是一个Bussines对象,职位的每个对象都只有一个文章。 虽然Positions.UnitPrice和Positions.Amount正确地相乘,但Stimulsoft使用相同的Positions.Article.TaxRate的每个计算,而不是适合其Position的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 

怎么办我停止刺激软件这样做?

回答

0

我能够解决这个问题,将TaxRate放在职位(而不是Positions.Article)内。似乎Stimulsoft在同时包含对象值和子对象值时存在问题。

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