我正在按月计算付款额,但在获取正确的过滤器时遇到问题。这是我正在寻找的书面逻辑:
总和(当plannedPaymentDate满足条件X和Y并且不存在executionDate或executionDate满足条件X和Y时支付的款项)
我认为关于过滤器内括号的操作顺序存在问题。这是我目前拥有的过滤器:
<xsl:value-of select="sum(payments[(((plannedPaymentDate/@year = $year and plannedPaymentDate/@month = $month) and not(executionDate/@date)) or (executionDate/@year = $year and executionDate/@month = $month))]/amount/co_costprice/@anglosaxon_amount)"/>
我知道它很大且很笨拙的事实,但是我要遍历的每个项目都有可能具有多个日期的多次付款,因此我试图对所有符合此条件的付款进行汇总。
问题是我有2019年9月的付款,当时有计划的日期,但执行日期为2019年12月,所以9月应该是空白,但不是,它显示了付款金额计划的日期。
答案 0 :(得分:1)
你写了
<xsl:value-of select="sum(payments[
( ( ( plannedPaymentDate/@year = $year
and plannedPaymentDate/@month = $month
)
and not(executionDate/@date)
)
or ( executionDate/@year = $year
and executionDate/@month = $month
)
)
]/amount/co_costprice/@anglosaxon_amount)"/>
您尚未显示XML来源,但您说存在“多个付款日期”,这向我建议,在前两个条件中,您并没有指定必须通过相同的{ {1}}。所以我怀疑应该是
plannedPaymentDate
(我喜欢以盎格鲁撒克逊货币计算成本价格的想法...)