Yes indeed, this is similar (in essence) to what Scott proposed for the "tracking code logic" at
> RateAmount is not found when the level is 'WorkEffort'
> ------------------------------------------------------
>
> Key: OFBIZ-7957
> URL:
https://issues.apache.org/jira/browse/OFBIZ-7957> Project: OFBiz
> Issue Type: Bug
> Components: accounting
> Affects Versions: Trunk
> Reporter: Montalbano Florian
> Labels: accounting, level, rate, rateAmount, workeffort
>
> When you create a RateAmount, you can determine for which WorkEffort it should apply. But when this RateAmount is retrieved for a specific WorkEffort, it fails to find the good RateAmount.
> The problem comes from the check done to retrieve the RateAmount at a WorkEffort level. This is the used check :
> {code}
> <entity-and entity-name="RateAmount" list="amounts" filter-by-date="true">
> <field-map field-name="rateTypeId" from-field="parameters.rateTypeId"/>
> <field-map field-name="partyId" from-field="parameters.partyId"/>
> <field-map field-name="workEffortId" from-field="parameters.workEffortId"/>
> <field-map field-name="periodTypeId" from-field="parameters.periodTypeId"/>
> <field-map field-name="rateCurrencyUomId" from-field="parameters.rateCurrencyUomId"/>
> </entity-and>
> <if-empty field="amounts">
> {code}
> In this 'entity-and', the partyId is set as a constraint. But it is possible to enable a special RateAmount only for a WorkEffort without regarding the partyId.
> I think we have 2 options here :
> - Remove the partyId constraint but then the retrieving may be less accurate
> - Make the retrieving more accurate by checking first the WorkEffort, then from the retrieved list, check if the partyId matches and finally from this second retrieval, check if the emplPositionTypeId match. At the end, we would have the most accurate RateAmount.
> What do you think of it ?