Categorie
Blog

Aggiornamento prezzi dei prodotti in magento

  1. A quanti di voi sarà capitato di chiedersi: Come posso aggiornare i prezzi dei prodotti in modo che questi siano diversi da una store view all’altra?.

Molti clienti hanno la necessità di offrere un catalogo con prezzi personalizzati a seconda della lingua; questo può accadere perchè questi vogliono mantenere delle politiche di marketing al di fuori dell’italia o perchè vogliono fare in modo che il prezzo dei prodotti sia allineato a quello che viene fatto agli agenti per quel territorio così da non avere problematiche relative al fatto che nell’ecommerce i prezzi sono più bassi o alti.
Vi farò un esempio: il prodotto A viene venduto a 100 euro in tutta la comunità europea, mentre in america viene venduto in dollari ma con un sovrapprezzo di 10 euro; questo significa che il prezzo in dollari americani non è $ 141,8951 (come il cambio di 100 euro in dollari ci dice) ma bensi di $ 156,0846.

Chiaramente per prima cosa dovremo impostare il nostro magento in modo da avere due vetrine:

  • Vetrina italiana – lingua italian – valuta euro
  • Vetrina usa – lingua usa – valuta dollari

Non entrerò nel merito di come si può fare ad impostare lingue e valute, perchè la cosa è già stata affrontata in alcuni post precedenti, ma vi mostrerò come aggiorare i prezzi in modo che voi possiate applicare un prezzo custom ad una qualunque vetrina.

La tabella che andreamo ad aggiornare con una query SQL sarà la tabella catalog_product_entity_decimal perchè il prezzo viene salvato in questa. Prima di poter eseguire la query è però necessario andare a trovare l’ID dell’attributo prezzo.

Questo lo si fa accedendo al database del nostro magento (con un client mysql oppure con phpmyadmin) per cercare l’attributo con attribute_code uguale a  “price“:
[sourcecode language=”sql”]
select * from eav_attribute where attribute_code =’price’
[/sourcecode]

Con la precedente query abbiamo scoperto che il risulta è 64, ovvero che almeno in magento 1.4.2 il prezzo ha id (attribute_id) uguale a 64.
L’ultima cosa di cui abbiamo bisogno per poter effettuare l’aggiornamento è l’id dello store che lo andiamo a trovare nella tabella core_store con la query:
[sourcecode language=”sql”]
select * from core_store
[/sourcecode]

Se vogliamo aggiornare i prezzi per tutti gli store andremo a prendere lo store Admin (che ha store_id = 0) altrimenti scegliete quello che vi interessa e eseguite la seguente query di aggiornamento prezzi:

[sourcecode language=”sql”]
update `catalog_product_entity_decimal` prezzi, `catalog_product_entity` prodotti set prezzi.value= WHERE attribute_id =64 and store_id=0 and prezzi.entity_id=prodotti.entity_id
[/sourcecode]

Se poi volete aggiornare solamente alcuni prodotti identificati da un certo sku:
[sourcecode language=”sql”]
update `catalog_product_entity_decimal` prezzi, `catalog_product_entity` prodotti set prezzi.value= WHERE attribute_id =64 and store_id=0 and prezzi.entity_id=prodotti.entity_id and prodotti.sku=”
[/sourcecode]