Programmatically apply a discount price in product list - magento

I would like to programmatically display a discounted price on the product list/page so that each customer as a personal price shown based on a customer attribute (like gender for instance, and of course let it be assigned as new price for the user session) but I can't see a viable option via the magento catalog price rules involving customer attributes other than the assigned group.
I'm using the group to do different kind of discounts and categorization of the customers, so the path of "split the customers on the gender" (or similar) is not an option unfortunately, since I can't assign more than 1 group per customer.
At the moment I was thinking about setting up a custom observer to check for calls to the price generation and then let it consider my customer attributes when calculating the price.
Is that possible? if so, any pointers about?
Would you suggest something different?
Thanks a lot to everyone for your time.

As I was thinking before, I solved my issue creating a custom module with an observer looking for catalog_product_get_final_price calls, getting the customer details from the current customer session.
It works great, I just need to let it display the correct price in the catalog product list, but is minimal, as the price seems to be calculated correctly inside the product page and the cart

Related

How to handle price dynamic

We have requirement to handle price dynamic (referring external system).
We would like to know, what is the best way to handle dynamic pricing among below :
Approach 1 :
Creating Price factory extension and overriding getBasePrice() method of customPricefactoryManager. Please confirm if it uses jalo layer.
Approach 2 :
In DefaultSLFindPriceStrategy we can customize getBasePrice() method.
If any other way too, please lets know.
We would like to know which approach can help to handle prices in addtocart operation, checkout and product page details pricing.
It is not good getting price in another system with integration online. ERP system used by few sales people but ecommerce site can be used by hundred customer in same time. ERP cannot be handle huge amount of connections. I prefer pushing price from ERP not pulling them from hybris side. On the other hand customer will be hate changing price while surfing between hybris pages. You need to plan correct time for updating price and re-calculating existing carts.
It is highly unlikely that you would need to override the above classes to get dynamic prices.
Hybris already provides OTB functionality to get prices for different-
Users
User groups
Currencies
Time range
If you are trying to get different prices based on above criterions then you can simply use the OTB price row model.Getting dynamic prices on different pages has many caveats-
The price on different pages i.e. Homepage, PDP, Cart, Checkout,
etc. might show different values confusing the customer.
It cannot
be indexed so the PLP page will almost always show a different price
value.

How do I find a Magento products primary category

I am using Magento 1.6.2.
I need to find an easy way of checking which category is the "default" category for any given product, where multiple categories have been assigned to that product.
The reason for this is as follows:
I have different discount amounts available on different categories in my store.
Where a product falls into two categories with different discounts applied, the highest discount should be applied to that product, but if that product has been added to the system (created) with a default category that has a lower discount, and then afterwards added into the higher discount category as well, the higher discount level is not being applied when that product is purchased.
If, however, I add the product to the higher discount category first, and then to the lower discount category afterwards (so the product appears on my website in all the right places), the correct (higher) discount level applies to that product.
I can only assume, therefore, that the default (or primary, or first, however you want to label it) category is the one that determines the outcome of the discount level to be applied to it. If this is wrong, then I need a lesson in understanding the mechanics behind this to see where I have gone wrong in the overall setup of this system...
If my assumption is correct, then I need a way to determine which category any given product (using the SKU) has been assigned to first, to ensure that the correct discount can be applied to that product.
I hope I have explained that clearly enough!
Does anyone have any suggestions. I have been unable to find information on this regardless of guessing specific search terms. The only things I can find are related to general category retrieval, and not this very specific task I need.
Cheers!
Im afraid your assumption is incorrect. Magento has no concept of a 'primary' category for a product. It only knows the product is in category id(s);
1, 12, 234
etc. The id's are stored numercially with no idea of which category might be more important than another.
What you could do instead is create a custom attribute and enter the id of the category you want to treat as 'primary' and retreive this attribute value when working out whether to give more discount or not.

How to apply "20% Discount" to specific Customers of a Customer Group in Magento 1.7.2?

I have products with a normal price(let's say product A costs 20e) and a group price(lets product A costs 15e) assigned to my customer group
that I call it "Resellers".
I want to apply an extra 20% discount to specific Resellers (not to the whole Reseller group)
in the group price(meaning the 15e)
I tried to solve it by creating a "Shoping Cart Price Rule" (I called it "20% Extra Discount") it applies to the whole Customer Group
How Can I apply 20% it only to specific Resellers and not to the whole Reseller Group for the group price only?
What you are asking is not possible with Magento out of the box.
You can overcome this by generating a coupon that you can send out by e-mail to your specific customers.
or you can try to use an extension like this.
It's not free, but from the looks of it it might get you what you need.
I'm in no way associated to the extension provider. I just found it on a simple search on the web.
You need to do some coding in order to achieve above said, following is the way it should happen.
You would need to hook into an event, ex :
Changing the price in quote while adding product to cart: magento
Also in the observer created above you need to do something like
Add custom discount order in total with button
Now whats above will do :
Let us suppose you create a general rule for 20% discount but do not relate it to any customer group.
What happen is once a product is added to a cart you can check into an Observer whether you want to provide discount to this particular customer.
If yes programmatically add coupon to the quote or order else not.
Please note : there are various other type of event for ex: after moving to checkout etc, in case you do not want to use on adding of product to cart.
hope above helps.

Magento extend IsSaleable with custom stock value

I’m looking to accomplish the following. My shop only has products online which I actually have. I would like to add my suppliers stock to my site, so customers can see and buy the product, but they will receive notice about a delay in shipping.
I have used the shipping days option mentioned in this thread (http://www.magentocommerce.com/boards/viewthread/59143/P0/). This works perfectly.
I would like to extend this line.
getData('days_to_ship')): ?>
to
getData('days_to_ship') && $_product->getData('bu_qty')>1):?>
The attribute name bu_qty is the stock value of my supplier. I would like to use this value to specify if the product is available at my supplier or not. So, if I do not use this field (smaller than 1), the product is supposed to be Out of stock.
If I do use this bu_qty value and set is to the number 1 or higher with also the Days to ship it is supposed to show a message that the item is available for purchase and that it will ship in x days.
Anybody can help me out with this one ?

how to get id of product in shipping method

Is there anyway to get product Id of product in Shipping module, so that for different category I can charge Additional amount.
for eg: i have to two product in carts. One is in phone category and other is in computer category. for shipment I have to add $5 for phone and $25 for computer . so shipment charge should be $30 dollars in frontend. Is there anyway I can get product Id and corresponding product's category Id in Shipping method collect rates method??
Please help me, I am in a deep trouble....I hope Eg that I provided , explains what I need.
Thanks in advance.
You can get the products from quote
Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
or
Mage::getSingleton('checkout/type_onepage')->getQuote()->getAllItems();
and iterating over those items (be aware of grouped and bundled parents and so on) will give you the category(s) they might belong to and you can make your conditions against those
This is only a tenable option if products belong to only one category. Unless something has changed in the last couple of versions, there is no data for quote items that shows the category context from which they were added.
WebShopApps.com has several already-developed solutions for shipping scenarios. Depending on development contract & budget, it may be more cost-effective to use one of their well-tested extensions, e.g. Shipping Override Matrix.

Resources