2

Magento EE have the Reward module but the problem is that it's designed for the client to use all of his points everytime, if he have more than quote total, it uses all the necessary points and stay in the remaining points linked to the client. Example:

(To illustrate, 1000 points = U$ 15)

Client points: 11000 Current quote Subtotal: U$ 50 If client opt to use the rewards will be 4000 points used (U$ 60) quote subtotal 0 remaining points 7000

What i need is to make able for the client to choose how many points to use in the case he could use: 1000=15,2000=30,3000=45, 4000=60(turns the order free)

I made some tests and in the Reward module, CartController, added an addAction() (reward/cart/add) where i call something like this:

 $quote->setUseRewardPoints(true)
                ->collectTotals()
                ->save();

And i edited the totals from reward in a test purpose Enterprise_Reward_Model_Total_Quote_Reward forcing in the collect method this:

        $amount = 15;
        $points = $reward->getPointsEquivalent($amount);

        $quote->setRewardPointsBalance($points);
        $quote->setRewardCurrencyAmount($amount);
        $quote->setBaseRewardCurrencyAmount($amount);

        $address->setRewardPointsBalance($points);
        $address->setRewardCurrencyAmount($amount);
        $address->setBaseRewardCurrencyAmount($amount);


        $address->setGrandTotal($address->getGrandTotal() - $amount);
        $address->setBaseGrandTotal($address->getBaseGrandTotal() - $amount);

This works great in cart and saves correctly in sales_flat_quote table: use_reward_points: 1 reward_points_balance: 1000 base_reward_currency_amount: 15.0000 reward_currency_amount: 15.0000

The problem is that in checkout(checkout/onepage native in CE and EE) after i choose the payment method(generally check money order for test purpose) my total is not there anymore with the rewards and the grand total is 55 (50 + 5 from the fixed flat rate) normally...

I was looking in the Observer to see if is there any "shenanigans" that maipulates the quote final value...

But in the end what i really need is to have a way to the client use partially his reward ponits...

1

I figured out where the "shenanigan" for me was. Here in this event, removing it makes it all work correctly:

           <sales_quote_payment_import_data_before>
            <observers>
                <enterprise_reward>
                    <class>enterprise_reward/observer</class>
                    <method>paymentDataImport</method>
                </enterprise_reward>
            </observers>
        </sales_quote_payment_import_data_before>
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.