[hidden email] wrote:
> Author: jleroux
> Date: Fri Mar 12 08:27:42 2010
> New Revision: 922177
>
> URL:
http://svn.apache.org/viewvc?rev=922177&view=rev> Log:
> A slightly modified patch from Geir Ove Grønmo "Calculation of promotions and price rules should support multi-level GROUP_ROLLUP" (
https://issues.apache.org/jira/browse/OFBIZ-3440) - OFBIZ-3440
>
> The calculation of product prices given promotion and price rules do not currently take multi-level GROUP_ROLLUP party relations into account.
> The calculation of price rules consider two levels of GROUP_ROLLUP only, while the calculation of promotions take just a single level of GROUP_ROLLUP into account.
> The attached patch will calculate price rules and promotions for GROUP_ROLLUPs for an arbitrary number of GROUP_ROLLUPs. This is essential in the situation where there are hierarchies of parties.
>
> Modified:
> ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/product/ProductPromoWorker.java
> ofbiz/trunk/applications/product/src/org/ofbiz/product/price/PriceServices.java
>
> + private static int checkConditionPartyHierarchy(Delegator delegator, Timestamp nowTimestamp, String groupPartyId, String partyId) throws GenericEntityException{
> + List<GenericValue> partyRelationshipList = delegator.findByAndCache("PartyRelationship", UtilMisc.toMap("partyIdTo", partyId, "partyRelationshipTypeId", "GROUP_ROLLUP"));
> + partyRelationshipList = EntityUtil.filterByDate(partyRelationshipList, nowTimestamp, null, null, true);
> + for (GenericValue genericValue : partyRelationshipList) {
> + String partyIdFrom = (String)genericValue.get("partyIdFrom");
> + if (partyIdFrom.equals(groupPartyId)) {
> + return 0;
> + }
> + if (0 == checkConditionPartyHierarchy(delegator, nowTimestamp, groupPartyId, partyIdFrom)) {
> + return 0;
> + }
> + }
> +
> + return 1;
> + }
> +
It would be nice to have this method in the party component. My guy
wants to say there might already been a method to do this.