In my report produced with Tibco Jaspersoft 6.3 I am facing a strange issue. I have a datasource as follows:
order_number - fiscal code - price - region_id
records can have the same order_number, as follows:
1 - xxyyzz - 10$ - 001
1 - mmnnxx - 5$ - 001
2 - kkhhff - 6$ - 001
3 - ppookk - 7$ - 001
1 - aayyzz - 10$ - 002
2 - llnnxx - 5$ - 002
2 - oohhff - 6$ - 002
2 - vvookk - 7$ - 002
for each group of records with the same order_number
, I have a variable that calculates a value called ticket_value
with an expression. This calculation works correctly, I see the right values for each order_number
.
I have sum variables for price
and ticket_value
based on region.
I've created two groups, one for the region_id
and one for order_number
. I perform the calculation of the single ticket_value
in footer of order_number
group and the sums of prices and ticket_values
for each region in the region_id footer.
The price sum value is correct for each region_id
, but I don't have the correct value of the sum of ticket_value
for each region_id
and I don't understand where is the error in the variables configuration.
Here is the definition of variables used:
<variable name="ticket_somma_numero_ordine" class="java.lang.Double" resetType="Group" resetGroup="Gruppo_NUMERO_ORDINE">
<variableExpression><![CDATA[$V{totale_importo_numero_ordine}.compareTo(new BigDecimal(36.15)) > 0 ? 36.15 : $V{totale_importo_numero_ordine}.doubleValue()]]></variableExpression>
<variable name="sommatoria_ticket" class="java.lang.Double" resetType="Group" resetGroup="Gruppo_REGIONE" incrementType="Group" incrementGroup="Gruppo_NUMERO_ORDINE">
<variableExpression><![CDATA[$V{sommatoria_ticket} + $V{ticket_somma_numero_ordine}]]></variableExpression>
<initialValueExpression><![CDATA[0.0]]></initialValueExpression>
</variable>
EDIT:
I've noticed that the sum variable sommatoria_ticket
is wrong with this logic: looking at data example above, there are two records with order_number
= 1 for the region_id
= 1; in that case the value of sommatoria_ticket
is doubled; if the records are 3, the value is x3...
It seems that the ticket_value
calculation is shown just once per subgroup but it is taken for each row of the subgroup when the sommatoria_ticket
variable is calculated.
I've tried to change increment type and reset type of variables, and also the evaluation time of the text fields, but the issue is not solved
I've solved it on my own this way:
ticket_value
is calculated with an expression, but I set the increment type and reset type to the same group (order_number
)ticket_value
variable has an evaluation time set to the group order_number
, and it is positioned in the group footerpartial_ticket_sum
that sums the variable ticket_value
, with initial value set to 0.0, increment type set to order_number
group and reset type set toregion_id
grouppartial_ticket_sum
has an evaluation time set to order_number
group