We import product data using a feed we get from a wholesaler - one full import a week that merges product data and a daily import that only updates price and stock data. I have created a custom attribute called price_incvat and I want this to be populated with the price plus 20% once the product data is updated by the import.

I tried to do this by creating an observer that would update the attribute on the catalog_product_save_before event (see here) without realising that this event would not be triggered by the import. I have tried to use the same code with various other events as listed here but without success. I feel I have been barking up the wrong tree?

Can anyone suggest a better tree to bark up?

  • are you using magmi or the default magento import? – NathanielR Jun 19 '15 at 11:05
  • I am using a module supplied by Stock in the Channel that imports their own datafeed. – Alistair67 Jun 19 '15 at 11:06
  • Check for events fired by their module if they fire any and attach your observer there. another possible solution would be to modify their extension to update your attribute after it updates the price – NathanielR Jun 19 '15 at 11:21
  • Thanks. In their config.xml they attach an observer to sinchimport_model_import_after so I attached mine to that too. Doesn't seem to work. Is there a problem with my observer (see link to previous post above)? – Alistair67 Jun 19 '15 at 12:02
  • Actually, thinking about it, would that event only happen after the entire import, meaning that my observer would be useless at that point? Is there anywhere other than config.xml I could check for events? – Alistair67 Jun 19 '15 at 12:32

Try with one of these events

catalog_product_attribute_update_before //when attribut is updated
catalog_product_prepare_save //when product is saved
| improve this answer | |
  • Thanks for the suggestion. I've tried them now but no dice. – Alistair67 Jun 19 '15 at 13:05
  • I doubt these two events would fire as the module is using SQL code to update the Database – NathanielR Jun 21 '15 at 7:06

I think there are two ways to go -

  1. Extend the module from Stock in the Channel to calculate price_incvat and save that value in the SQL call.

  2. Run a script after the import that calculates price_incvat and saves it.

If Stock in the Channel fires an event once at the end of the import, you could use an observer to handle triggering a script that would set price_incvat.

Extending the module and adding price_incvat to the SQL would probably be the least amount of code, and you get the performance benefit of SQL.

| improve this answer | |
  • Ideally the SQL option would be the way to go but I am finding it hard to understand the code in the relevant functions (see comment above posted today) – Alistair67 Jun 25 '15 at 13:21
  • Pursuing option 2, I found a script elsewhere that I could modify to do the job and it works. I have my observer, now I just need the no doubt simple piece of code that it can use to fire the script. Tried googling it but no joy. Can you help? – Alistair67 Jun 26 '15 at 9:58
  • Guess what. I just found the extremely simple way of exporting the inc VAT price through Simple Google Shopping that I completely missed in the documentation. I didn't need to do any of this. None of it. Deeply embarrassing. Thanks for all your help though, you and @NathanielR both. – Alistair67 Jun 26 '15 at 12:52
  • Well, sometimes that happens! We have all been there. If you think the solution can be used by others, put it here as an answer and mark it accepted please. – AreDubya Jun 26 '15 at 18:51

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.